2020-07-10 17:05:27 +08:00
|
|
|
/* global I18n animateSpinner HelperModule
|
|
|
|
DataTableHelpers DataTableCheckboxes notTurbolinksPreview */
|
2023-06-01 15:52:58 +08:00
|
|
|
/* eslint-disable no-param-reassign */
|
2020-06-19 21:54:45 +08:00
|
|
|
(function() {
|
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-19 21:54:45 +08:00
|
|
|
function updateActionButtons() {
|
2023-05-24 15:57:06 +08:00
|
|
|
if (window.actionToolbarComponent) {
|
|
|
|
window.actionToolbarComponent.fetchActions({ repository_ids: CHECKBOX_SELECTOR.selectedRows });
|
|
|
|
$('.dataTables_scrollBody').css('padding-bottom', `${CHECKBOX_SELECTOR.selectedRows.length > 0 ? 68 : 0}px`);
|
|
|
|
}
|
|
|
|
|
2020-06-19 21:54:45 +08:00
|
|
|
var rowsCount = CHECKBOX_SELECTOR.selectedRows.length;
|
|
|
|
var row;
|
|
|
|
$('#renameRepoBtn').attr('href', '#');
|
|
|
|
$('#deleteRepoBtn').attr('href', '#');
|
|
|
|
$('#copyRepoBtn').attr('href', '#');
|
|
|
|
switch (rowsCount) {
|
|
|
|
case 0:
|
2020-07-07 19:53:31 +08:00
|
|
|
$('.main-actions [data-action-mode="single"]').addClass('disabled hidden');
|
|
|
|
$('.main-actions [data-action-mode="multiple"]').addClass('disabled hidden');
|
2020-06-19 21:54:45 +08:00
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
row = $('#repositoriesList').find('tr#' + CHECKBOX_SELECTOR.selectedRows[0]);
|
2020-07-07 19:53:31 +08:00
|
|
|
$('.main-actions [data-action-mode="single"]').removeClass('disabled hidden');
|
|
|
|
$('.main-actions [data-action-mode="multiple"]').removeClass('disabled hidden');
|
2020-06-19 21:54:45 +08:00
|
|
|
$('#renameRepoBtn').attr('href', row.data('rename-modal-url'));
|
|
|
|
$('#deleteRepoBtn').attr('href', row.data('delete-modal-url'));
|
|
|
|
$('#copyRepoBtn').attr('href', row.data('copy-modal-url'));
|
|
|
|
break;
|
|
|
|
default:
|
2020-07-07 19:53:31 +08:00
|
|
|
$('.main-actions [data-action-mode="single"]').removeClass('hidden').addClass('disabled');
|
|
|
|
$('.main-actions [data-action-mode="multiple"]').removeClass('disabled hidden');
|
2020-06-19 21:54:45 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-03 19:42:09 +08:00
|
|
|
function initRepositoriesDataTable(tableContainer, archived = false) {
|
2020-07-02 20:35:48 +08:00
|
|
|
var tableTemplate = $('#RepositoriesListTable').html();
|
2020-07-10 17:05:27 +08:00
|
|
|
$.get($(tableTemplate).data('source'), { archived: archived }, function(data) {
|
2020-06-05 01:07:10 +08:00
|
|
|
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,
|
2023-01-27 21:44:39 +08:00
|
|
|
stateSave: true,
|
2020-06-01 16:24:03 +08:00
|
|
|
pageLength: 25,
|
2020-07-02 17:50:40 +08:00
|
|
|
colReorder: {
|
|
|
|
enable: false
|
|
|
|
},
|
2020-06-01 16:24:03 +08:00
|
|
|
sScrollX: '100%',
|
|
|
|
sScrollXInner: '100%',
|
|
|
|
order: [[1, 'asc']],
|
|
|
|
destroy: true,
|
2020-07-02 21:51:07 +08:00
|
|
|
language: {
|
|
|
|
emptyTable: archived ? I18n.t('repositories.index.no_archived_inventories') : I18n.t('repositories.index.no_inventories'),
|
|
|
|
zeroRecords: archived ? I18n.t('repositories.index.no_archived_inventories_matched') : I18n.t('repositories.index.no_inventories_matched')
|
|
|
|
},
|
2020-06-01 16:24:03 +08:00
|
|
|
columnDefs: [{
|
|
|
|
targets: 0,
|
2020-07-02 20:29:18 +08:00
|
|
|
visible: !$('.repositories-index').data('readonly'),
|
2020-06-01 16:24:03 +08:00
|
|
|
searchable: false,
|
|
|
|
orderable: false,
|
|
|
|
render: function() {
|
|
|
|
return `<div class="sci-checkbox-container">
|
2023-10-20 16:05:42 +08:00
|
|
|
<input class='repository-row-selector sci-checkbox' type='checkbox' data-e2e="e2e-CB-inventory">
|
2020-06-01 16:24:03 +08:00
|
|
|
<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,
|
2020-06-24 19:41:00 +08:00
|
|
|
className: 'item-name',
|
2020-06-01 16:24:03 +08:00
|
|
|
render: function(value, type, row) {
|
2023-10-20 16:05:42 +08:00
|
|
|
return `<a href="${row.repositoryUrl}" data-e2e="e2e-TL-inventories-${value}">${value}</a>`;
|
2020-06-01 16:24:03 +08:00
|
|
|
}
|
2020-07-02 20:35:48 +08:00
|
|
|
}, {
|
|
|
|
targets: 5,
|
|
|
|
render: {
|
|
|
|
_: 'display',
|
|
|
|
sort: 'sort'
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
targets: 7,
|
|
|
|
visible: archived,
|
|
|
|
render: {
|
|
|
|
_: 'display',
|
|
|
|
sort: 'sort'
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
targets: 8,
|
|
|
|
visible: archived
|
2022-03-08 21:52:45 +08:00
|
|
|
},
|
|
|
|
{
|
|
|
|
visible: true,
|
|
|
|
searchable: false,
|
|
|
|
data: 'stock',
|
|
|
|
render: {
|
|
|
|
_: 'display',
|
|
|
|
sort: 'sort'
|
|
|
|
}
|
2020-06-01 16:24:03 +08:00
|
|
|
}],
|
2020-06-09 19:16:50 +08:00
|
|
|
fnInitComplete: function(e) {
|
2023-05-24 15:57:06 +08:00
|
|
|
initActionToolbar();
|
2023-05-29 17:48:13 +08:00
|
|
|
window.actionToolbarComponent.setReloadCallback(() =>
|
|
|
|
initRepositoriesDataTable('#repositoriesList', archived));
|
|
|
|
window.actionToolbarComponent.setBottomOffset(68);
|
2023-05-24 15:57:06 +08:00
|
|
|
|
2020-06-09 19:16:50 +08:00
|
|
|
var dataTableWrapper = $(e.nTableWrapper);
|
|
|
|
CHECKBOX_SELECTOR = new DataTableCheckboxes(dataTableWrapper, {
|
|
|
|
checkboxSelector: '.repository-row-selector',
|
2020-06-19 21:54:45 +08:00
|
|
|
selectAllSelector: '.select-all-checkbox',
|
|
|
|
onChanged: function() {
|
|
|
|
updateActionButtons();
|
|
|
|
}
|
2020-06-09 19:16:50 +08:00
|
|
|
});
|
2023-05-29 17:48:13 +08:00
|
|
|
|
|
|
|
updateActionButtons();
|
2022-02-02 17:41:29 +08:00
|
|
|
DataTableHelpers.initLengthAppearance(dataTableWrapper);
|
2020-07-15 16:52:47 +08:00
|
|
|
DataTableHelpers.initSearchField(dataTableWrapper, I18n.t('repositories.index.filter_inventory'));
|
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');
|
2023-05-03 04:58:11 +08:00
|
|
|
|
2020-12-01 16:59:08 +08:00
|
|
|
$('#createRepoBtn').initSubmitModal('#create-repo-modal', 'repository');
|
|
|
|
$('#deleteRepoBtn').initSubmitModal('#delete-repo-modal', 'repository');
|
|
|
|
$('#renameRepoBtn').initSubmitModal('#rename-repo-modal', 'repository');
|
|
|
|
$('#copyRepoBtn').initSubmitModal('#copy-repo-modal', 'repository');
|
2020-06-09 19:16:50 +08:00
|
|
|
},
|
|
|
|
drawCallback: function() {
|
|
|
|
if (CHECKBOX_SELECTOR) CHECKBOX_SELECTOR.checkSelectAllStatus();
|
|
|
|
},
|
|
|
|
rowCallback: function(row) {
|
2020-06-24 19:41:00 +08:00
|
|
|
let $row = $(row);
|
|
|
|
let checkbox = $row.find('.repository-row-selector');
|
|
|
|
|
|
|
|
if ($row.attr('data-shared') === 'true') {
|
|
|
|
checkbox.attr('disabled', 'disabled');
|
|
|
|
}
|
|
|
|
|
2020-06-09 19:16:50 +08:00
|
|
|
if (CHECKBOX_SELECTOR) CHECKBOX_SELECTOR.checkRowStatus(row);
|
2023-06-01 15:52:58 +08:00
|
|
|
},
|
|
|
|
stateLoadParams: function(_, state) {
|
|
|
|
state.search.search = '';
|
2019-08-06 21:17:13 +08:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2019-08-05 19:07:29 +08:00
|
|
|
}
|
|
|
|
|
2020-07-07 15:48:59 +08:00
|
|
|
$('#wrapper').on('sideBar::hidden sideBar::shown', function() {
|
|
|
|
if (REPOSITORIES_TABLE) {
|
|
|
|
REPOSITORIES_TABLE.columns.adjust();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2023-05-26 07:14:27 +08:00
|
|
|
$(document).on('shown.bs.modal', function() {
|
|
|
|
var inputField = $('#repository_name');
|
|
|
|
var value = inputField.val();
|
|
|
|
inputField.focus().val('').val(value);
|
2023-06-16 16:48:39 +08:00
|
|
|
}).on('shown.bs.modal', '#export-repositories-modal', function() {
|
2023-06-23 18:41:37 +08:00
|
|
|
if (!CHECKBOX_SELECTOR) return;
|
|
|
|
|
2023-06-16 16:48:39 +08:00
|
|
|
const exportButton = $(this).find('#export-repositories-modal-submit');
|
|
|
|
const exportURL = exportButton.data('export-url');
|
2023-06-19 20:16:55 +08:00
|
|
|
|
2023-06-16 16:48:39 +08:00
|
|
|
exportButton.on('click', function() {
|
|
|
|
$.ajax({
|
|
|
|
url: exportURL,
|
|
|
|
method: 'POST',
|
|
|
|
data: { repository_ids: CHECKBOX_SELECTOR.selectedRows },
|
|
|
|
success: function(data) {
|
|
|
|
HelperModule.flashAlertMsg(data.message, 'success');
|
|
|
|
CHECKBOX_SELECTOR.clearSelection();
|
|
|
|
$('#export-repositories-modal').modal('hide');
|
|
|
|
},
|
|
|
|
error: function(data) {
|
|
|
|
HelperModule.flashAlertMsg(data.responseJSON.message, 'danger');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2023-05-26 07:14:27 +08:00
|
|
|
});
|
2023-06-16 16:48:39 +08:00
|
|
|
|
2020-12-01 16:59:08 +08:00
|
|
|
$('.create-new-repository').initSubmitModal('#create-repo-modal', 'repository');
|
2020-07-10 17:05:27 +08:00
|
|
|
if (notTurbolinksPreview()) {
|
|
|
|
initRepositoriesDataTable('#repositoriesList', $('.repositories-index').hasClass('archived'));
|
|
|
|
}
|
2023-05-24 17:48:32 +08:00
|
|
|
}());
|