2020-06-19 00:07:23 +08:00
|
|
|
/* global HelperModule DataTableHelpers DataTableCheckboxes */
|
|
|
|
(function(global) {
|
2017-05-30 21:11:28 +08:00
|
|
|
'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
|
|
|
|
2020-06-03 19:42:09 +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>`;
|
2019-08-06 21:17:13 +08:00
|
|
|
}
|
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);
|
2020-06-03 19:42:09 +08:00
|
|
|
$('.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-06 21:17:13 +08:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
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);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-06-03 19:42:09 +08:00
|
|
|
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();
|
2020-06-03 19:42:09 +08:00
|
|
|
});
|
|
|
|
viewSwitch.on('click', '.view-switch-active', function() {
|
|
|
|
$('.repositories-index').toggleClass('archived active');
|
|
|
|
initRepositoriesDataTable('#repositoriesList');
|
2020-06-04 20:39:56 +08:00
|
|
|
reloadSidebar();
|
2020-06-03 19:42:09 +08:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-06-19 00:07:23 +08:00
|
|
|
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');
|
2020-06-03 19:42:09 +08:00
|
|
|
initRepositoryViewSwitcher();
|
2020-06-19 00:07:23 +08:00
|
|
|
}(window));
|