68 lines
2.4 KiB
JavaScript

$(document).ready(async function() {
initSubscriptionTable();
initFiltersTable();
$("#subscriptionsTab").click();
bindTableCheckboxes("#subTable", subTable, "#deleteSelectedSubscriptionsBtn");
bindTableCheckboxes("#filtersTable", filtersTable, "#deleteSelectedFiltersBtn");
await loadSavedGuilds();
await loadServerOptions();
});
$('#serverTabs [data-bs-toggle="tab"]').on("show.bs.tab", function(event) {
const activeTab = $(event.target);
$(".tab-pane-buttons .tab-pane-buttons-item").hide();
$(`.tab-pane-buttons .tab-pane-buttons-item[data-tab="${activeTab.attr("id")}"]`).show();
});
$(document).on("selectedServerChange", function() {
$("#subscriptionsTab").click();
});
function bindTableCheckboxes(tableSelector, tableObject, deleteButtonSelector) {
// Select a row via checkbox
$(tableSelector).on("change", "tbody tr .table-select-row", function() {
var selected = $(this).prop("checked");
rowIndex = $(this).closest("tr").index();
row = tableObject.row(rowIndex);
if (selected) row.select();
else row.deselect();
determineSelectAllState(tableSelector, tableObject, deleteButtonSelector);
});
// Select all rows checkbox
$(tableSelector).on("change", "thead .table-select-all", function() {
var selected = $(this).prop("checked");
$(`${tableSelector} tbody tr`).each(function(rowIndex) {
var row = tableObject.row(rowIndex);
if (selected) row.select();
else row.deselect();
$(this).find('.table-select-row').prop("checked", selected);
});
determineSelectAllState(tableSelector, tableObject, deleteButtonSelector);
});
}
function determineSelectAllState(tableSelector, tableObject, deleteButtonSelector) {
var selectedRowsCount = tableObject.rows(".selected").data().toArray().length;
allRowsCount = tableObject.rows().data().toArray().length;
selectAllCheckbox = $(`${tableSelector} thead .table-select-all`);
checked = selectedRowsCount === allRowsCount;
indeterminate = !checked && selectedRowsCount > 0;
selectAllCheckbox.prop("checked", checked);
selectAllCheckbox.prop("indeterminate", indeterminate);
$(deleteButtonSelector).prop("disabled", !(checked || indeterminate) || !(allRowsCount > 0));
}