From dda5461a0d167b1a4b9e2be33756e977245b99cf Mon Sep 17 00:00:00 2001 From: Corban-Lee Date: Thu, 1 May 2025 19:33:46 +0100 Subject: [PATCH] working on delete button --- src/client/src/ts/guild/feeds.ts | 43 +++++++++++++++++++++++++++++--- src/client/views/guild/feeds.ejs | 7 ++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/client/src/ts/guild/feeds.ts b/src/client/src/ts/guild/feeds.ts index 54fcf04..d608a93 100644 --- a/src/client/src/ts/guild/feeds.ts +++ b/src/client/src/ts/guild/feeds.ts @@ -1,5 +1,6 @@ import $ from "jquery"; -import DataTable from "datatables.net"; +// import DataTable from "datatables.net"; +import DataTable from "datatables.net-dt" import HSDropdown from "@preline/dropdown"; import HSOverlay, { IOverlayOptions } from "@preline/overlay"; import HSSelect, { ISelectOptions } from "@preline/select"; @@ -54,7 +55,7 @@ const columnDefs: ConfigColumnDefs[] = [ render: (_data: unknown, _type: unknown, row: prisma.Feed) => { return `
@@ -216,10 +217,15 @@ const ajaxSettings: AjaxSettings = { } }; -const tableOptions: IDataTableOptions = { +const tableOptions: any = { ajax: ajaxSettings, serverSide: true, processing: true, + selecting: true, + select: { + style: "multi", + selector: "td:first-child input[type='checkbox']" + }, columnDefs: columnDefs, pagingOptions: { pageBtnClasses: "hidden" }, rowSelectingOptions: { selectAllSelector: "#selectAllBox" }, @@ -239,6 +245,37 @@ const table: HSDataTable = new HSDataTable( tableOptions ); +const onTableSelectChange = () => { + console.log("table select change") + const rows = (table as any).dataTable.rows(); + debugger; + const selectedRowsCount = (table as any).dataTable.rows({ selected: true }).count(); + // const selectedRowsCount = $("#table tbody input[data-hs-datatable-row-selecting-individual]:checked").length; + $("#deleteRowsBtn").prop("disabled", selectedRowsCount === 0); + $(".rows-selected-count-js").text(selectedRowsCount); + + const $elem = $(".rows-selected-count-js.zero-empty-js"); + selectedRowsCount === 0 ? $elem.hide() : $elem.show(); +}; + +(table as any).dataTable + .on("select", onTableSelectChange) + .on("deselect", onTableSelectChange) + .on("draw", onTableSelectChange); + +$("#selectAllBox").on("change", function() { + debugger; + // TODO: debug why the select and deselect methods don't exist + (this as HTMLInputElement).checked + ? (table as any).dataTable.rows().select() + : (table as any).dataTable.rows().deselect(); +}); + +$("#deleteRowsBtn").on("click", () => { + const rowIds = (table as any).dataTable.rows({ selected: true }).data().toArray().map((row: any) => row.id); + alert(JSON.stringify(rowIds, null, 4)); +}); + // #endregion // #region Page Size Select diff --git a/src/client/views/guild/feeds.ejs b/src/client/views/guild/feeds.ejs index 496be13..be34441 100644 --- a/src/client/views/guild/feeds.ejs +++ b/src/client/views/guild/feeds.ejs @@ -22,6 +22,13 @@
+