diff --git a/apps/home/static/home/js/tabs/subs.js b/apps/home/static/home/js/tabs/subs.js index ca0976f..8fb55a4 100644 --- a/apps/home/static/home/js/tabs/subs.js +++ b/apps/home/static/home/js/tabs/subs.js @@ -154,14 +154,19 @@ getTableFiltersComponent(subTableId).find(".table-del-btn").on("click", async fu // region New/Edit Modal $(subTableId).closest('.js-tableBody').siblings('.js-tableFilters').on("click", ".table-new-btn", async function() { - await openDataModal(subModalId, -1); + await openSubModal(-1); }); $(subTableId).on("click", ".edit-modal", async function() { const id = $(subTableId).DataTable().row($(this).closest("tr")).data().id; - await openDataModal(subModalId, id, `/api/subscriptions/${id}/`); + await openSubModal(id); }) +async function openSubModal(id) { + await loadChannelOptions(); + await openDataModal(subModalId, id, id !== -1 ? `/api/subscriptions/${id}/`: null); +} + $(subModalId).on("submit", async function(event) { event.preventDefault(); await onModalSubmit( @@ -217,3 +222,27 @@ async function loadSubModalOptions($input, url) { // Re-enable input $input.prop("disabled", false); } + +// Channel options aren't loaded from an API, like other options. +function loadChannelOptions() { + $input = $(subModalId).find('[data-field="channels"]'); + + $input.val("").change(); + $input.prop("disabled", true); + + $input.find("option").each(function() { + if ($(this).val()) { + $(this).remove(); + } + }); + + const data = loadedChannels(selectedServer.id); + data.forEach(item => { + $input.append($( + "