From 08a286db133269b329fc37055a4fbc12208f6e55 Mon Sep 17 00:00:00 2001 From: Corban-Lee Date: Tue, 11 Feb 2025 21:54:40 +0000 Subject: [PATCH] sub deletion --- src/client/public/js/guild/subscriptions.js | 85 ++++++++++++------- src/client/views/guild/subscriptions.ejs | 6 +- src/client/views/layout.ejs | 12 +-- .../controllers/guild/sub.api.controller.ts | 18 ++-- 4 files changed, 76 insertions(+), 45 deletions(-) diff --git a/src/client/public/js/guild/subscriptions.js b/src/client/public/js/guild/subscriptions.js index ef9714f..b2c82be 100644 --- a/src/client/public/js/guild/subscriptions.js +++ b/src/client/public/js/guild/subscriptions.js @@ -17,6 +17,30 @@ const formatTimestamp = timestamp => { : `${d.getDate()} ${d.toLocaleString("en-GB", { month: "short" })} ${d.getFullYear()}`; } +const emptyTableHtml = ` +
+
+ +
+

+ No results found +

+

+ Create a subscription and it will appear here. +

+ +
+ + +
+
+ `; + var table; const defineTable = () => { table = new HSDataTable("#table", { @@ -24,8 +48,9 @@ const defineTable = () => { url: `/guild/${guildId}/subscriptions/api/datatable`, dataSrc: "data", data: (d) => { - d.filters = {}; + if (d === undefined) { return ;} + d.filters = {}; const active = $("input[name='filterActive']:checked").val(); d.filters.active = active; } @@ -40,32 +65,12 @@ const defineTable = () => { selectAllSelector: "#selectAllBox" }, language: { - zeroRecords: ` -
-
- -
-

- No results found -

-

- Create a subscription and it will appear here. -

- -
- - -
-
- ` + zeroRecords: emptyTableHtml, + emptyTable: emptyTableHtml, + loading: "Placeholder Loading Message...", }, rowCallback: (row, data, index) => { - $(row).addClass("bg-white hover:bg-gray-50 dark:bg-neutral-900 dark:hover:bg-neutral-800"); + $(row).addClass("bg-white hover:bg-gray-50 dark:bg-neutral-800 dark:hover:bg-neutral-700"); }, drawCallback: () => { HSDropdown.autoInit(); @@ -248,7 +253,10 @@ const defineTable = () => { ] }) - table.dataTable.on("select", onTableSelectChange).on("deselect", onTableSelectChange); + table.dataTable + .on("select", onTableSelectChange) + .on("deselect", onTableSelectChange) + .on("draw", onTableSelectChange); } // Ensure the datatable recognises when all rows are selected, otherwise rows are only visually selected @@ -265,6 +273,24 @@ const onTableSelectChange = () => { selectedRowCount === 0 ? $elem.hide() : $elem.show(); } +$("#deleteRowsBtn").on("click", async () => { + const rowIds = table.dataTable.rows({ selected: true }).data().toArray().map(row => row.id); + console.log(JSON.stringify(rowIds)) + await $.ajax({ + url: `/guild/${guildId}/subscriptions/api`, + method: "delete", + dataType: "json", + data: { ids: rowIds }, + success: () => { + table.dataTable.draw(); + table.dataTable.rows().deselect(); + }, + error: error => { + alert(typeof error === "object" ? JSON.stringify(error, null, 4) : error); + } + }); +}); + $(window).ready(() => { setTimeout(defineTable, 500); }); @@ -275,6 +301,8 @@ $("input[name='filterActive']").on("change", () => { const openSubForm = () => { $("#subForm").removeClass("submitted"); + $("#formPublishedThreshold").val(new Date().toISOString().slice(0, 16)); + $("#formActive").prop("checked", true); HSOverlay.open($("#subModal").get(0)) } @@ -291,10 +319,7 @@ const submitForm = async event => { const form = $("#subForm").get(0); $(form).addClass("submitted"); - if (!form.checkValidity()) { - alert("form invalid"); - return; - } + if (!form.checkValidity()) { return; } await $.ajax({ url: `/guild/${guildId}/subscriptions/api`, diff --git a/src/client/views/guild/subscriptions.ejs b/src/client/views/guild/subscriptions.ejs index cc7d42b..318e382 100644 --- a/src/client/views/guild/subscriptions.ejs +++ b/src/client/views/guild/subscriptions.ejs @@ -8,7 +8,7 @@
-
+
@@ -333,7 +333,7 @@

- Ignore content older than this date. + Send content to these channels.

@@ -357,7 +357,7 @@

- Ignore content older than this date. + Filter out unwanted content.