scinote-web/app/assets/javascripts/repositories/index.js

116 lines
4.1 KiB
JavaScript
Raw Normal View History

/* global HelperModule DataTableHelpers DataTableCheckboxes */
(function(global) {
'use strict';
2020-06-01 16:24:03 +08:00
var REPOSITORIES_TABLE;
2020-06-09 19:16:50 +08:00
var CHECKBOX_SELECTOR;
2020-06-01 16:24:03 +08:00
function initRepositoriesDataTable(tableContainer, archived = false) {
2020-06-05 01:07:10 +08:00
var tableTemplate = archived ? $('#archivedRepositoriesListTable').html() : $('#activeRepositoriesListTable').html();
$.get($(tableTemplate).data('source'), function(data) {
if (REPOSITORIES_TABLE) REPOSITORIES_TABLE.destroy();
2020-06-09 19:16:50 +08:00
CHECKBOX_SELECTOR = null;
2020-06-05 01:07:10 +08:00
$('.content-body').html(tableTemplate);
2020-06-01 16:24:03 +08:00
REPOSITORIES_TABLE = $(tableContainer).DataTable({
aaData: data,
dom: "R<'main-actions hidden'<'toolbar'><'filter-container'f>>t<'pagination-row hidden'<'pagination-info'li><'pagination-actions'p>>",
processing: true,
pageLength: 25,
sScrollX: '100%',
sScrollXInner: '100%',
order: [[1, 'asc']],
destroy: true,
columnDefs: [{
targets: 0,
visible: true,
searchable: false,
orderable: false,
render: function() {
return `<div class="sci-checkbox-container">
<input class='repository-row-selector sci-checkbox' type='checkbox'>
<span class='sci-checkbox-label'></span>
</div>`;
}
2020-06-01 16:24:03 +08:00
}, {
targets: 1,
render: function(value, type, row) {
return `<a href="${row.repositoryUrl}">${value}</a>`;
}
}],
2020-06-09 19:16:50 +08:00
fnInitComplete: function(e) {
var dataTableWrapper = $(e.nTableWrapper);
CHECKBOX_SELECTOR = new DataTableCheckboxes(dataTableWrapper, {
checkboxSelector: '.repository-row-selector',
selectAllSelector: '.select-all-checkbox'
});
2020-06-01 16:24:03 +08:00
DataTableHelpers.initLengthApearance(dataTableWrapper);
DataTableHelpers.initSearchField(dataTableWrapper);
$('.content-body .toolbar').html($('#repositoriesListButtons').html());
2020-06-01 16:24:03 +08:00
dataTableWrapper.find('.main-actions, .pagination-row').removeClass('hidden');
$('.create-new-repository').initializeModal('#create-repo-modal');
2020-06-09 19:16:50 +08:00
},
drawCallback: function() {
if (CHECKBOX_SELECTOR) CHECKBOX_SELECTOR.checkSelectAllStatus();
},
rowCallback: function(row) {
if (CHECKBOX_SELECTOR) CHECKBOX_SELECTOR.checkRowStatus(row);
}
});
});
2019-08-05 19:07:29 +08:00
}
2020-06-04 20:39:56 +08:00
function reloadSidebar() {
var slidePanel = $('#slide-panel');
var archived;
if ($('.repositories-index').hasClass('archived')) archived = true;
$.get(slidePanel.data('sidebar-url'), { archived: archived }, function(data) {
slidePanel.html(data.html);
});
}
function initRepositoryViewSwitcher() {
var viewSwitch = $('.view-switch');
viewSwitch.on('click', '.view-switch-archived', function() {
$('.repositories-index').toggleClass('archived active');
initRepositoriesDataTable('#repositoriesList', true);
2020-06-04 20:39:56 +08:00
reloadSidebar();
});
viewSwitch.on('click', '.view-switch-active', function() {
$('.repositories-index').toggleClass('archived active');
initRepositoriesDataTable('#repositoriesList');
2020-06-04 20:39:56 +08:00
reloadSidebar();
});
}
global.onClickArchiveRepositories = function() {
$.ajax({
url: $('#archiveRepoBtn').data('archive-repositories'),
type: 'POST',
dataType: 'json',
data: { selected_repos: CHECKBOX_SELECTOR.selectedRows },
success: function(data) {
HelperModule.flashAlertMsg(data.flash, 'success');
initRepositoriesDataTable('#repositoriesList');
reloadSidebar();
}
});
};
global.onClickRestoreRepositories = function() {
$.ajax({
url: $('#restoreRepoBtn').data('restore-repositories'),
type: 'POST',
dataType: 'json',
data: { selected_repos: CHECKBOX_SELECTOR.selectedRows },
success: function(data) {
HelperModule.flashAlertMsg(data.flash, 'success');
initRepositoriesDataTable('#repositoriesList', true);
reloadSidebar();
}
});
};
2020-06-01 16:24:03 +08:00
initRepositoriesDataTable('#repositoriesList');
initRepositoryViewSwitcher();
}(window));