From f105cc0a41972261610d03015ecd5ee492dab8e2 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 12 Apr 2023 20:54:09 +0200 Subject: [PATCH 1/2] wip: delete scans --- src/components/scans/DeleteScansModal.svelte | 104 +++++++++++++++++++ src/components/scans/ScansOverview.svelte | 45 +++++++- 2 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 src/components/scans/DeleteScansModal.svelte diff --git a/src/components/scans/DeleteScansModal.svelte b/src/components/scans/DeleteScansModal.svelte new file mode 100644 index 00000000..9d35c6f0 --- /dev/null +++ b/src/components/scans/DeleteScansModal.svelte @@ -0,0 +1,104 @@ + + +{#if modal_open} +
{ + modal_open = false; + }} + > +
+ +
+{/if} diff --git a/src/components/scans/ScansOverview.svelte b/src/components/scans/ScansOverview.svelte index b8e6af9b..355a8c39 100644 --- a/src/components/scans/ScansOverview.svelte +++ b/src/components/scans/ScansOverview.svelte @@ -22,13 +22,14 @@ import { runnerFilter } from "../shared/tablefilters"; import CardRunner from "../cards/CardRunner.svelte"; import ScanValid from "./ScanValid.svelte"; + import DeleteScansModal from "./DeleteScansModal.svelte"; $: selectedScans = $table?.getSelectedRowModel().rows.map((row) => row.original) || []; $: selected = $table?.getSelectedRowModel().rows.map((row) => row.index) || []; - $: active_delete = undefined; + $: delete_active = false; $: active_deletes = []; export let current_scans = []; const scans_promise = ScanService.scanControllerGetAll().then((val) => { @@ -122,10 +123,12 @@ return renderComponent(TableActions, { detailsLink: `./${info.row.original.id}`, deleteAction: () => { - active_delete = + active_deletes = [ current_scans[ current_scans.findIndex((r) => r.id == info.row.original.id) - ]; + ], + ]; + delete_active = true; }, deleteEnabled: store.state.jwtinfo.userdetails.permissions.includes("SCAN:DELETE"), @@ -153,8 +156,44 @@ getSortedRowModel: getSortedRowModel(), }); const table = createSvelteTable(options); + async function deleteScan(scan_id) { + // await ScanService.scanControllerRemove(scan_id, true); + current_scans = current_scans.filter((r) => r.id !== scan_id); + // options.update((options) => ({ + // ...options, + // data: current_scans, + // })); + // Toastify({ + // text: $_("scans-deleted"), + // duration: 3500, + // backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", + // }).showToast(); + } + async function deleteScans(scan_ids) { + scan_ids.forEach((scan_id) => { + deleteScan(scan_id); + }); + // // await ScanService.scanControllerRemove(scan_id, true); + // current_scans = current_scans.filter((r) => r.id !== scan_id); + // options.update((options) => ({ + // ...options, + // data: current_scans, + // })); + // Toastify({ + // text: $_("scans-deleted"), + // duration: 3500, + // backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", + // }).showToast(); + } + { + deleteScans(event.detail.scans); + }} +/> {#if store.state.jwtinfo.userdetails.permissions.includes("SCAN:GET")} {#await scans_promise}
Date: Wed, 12 Apr 2023 21:10:36 +0200 Subject: [PATCH 2/2] scan delete working --- ...ansModal.svelte => DeleteScanModal.svelte} | 12 ++- src/components/scans/ScansOverview.svelte | 85 +++++++++++-------- src/locales/de.json | 2 + src/locales/en.json | 2 + 4 files changed, 61 insertions(+), 40 deletions(-) rename src/components/scans/{DeleteScansModal.svelte => DeleteScanModal.svelte} (94%) diff --git a/src/components/scans/DeleteScansModal.svelte b/src/components/scans/DeleteScanModal.svelte similarity index 94% rename from src/components/scans/DeleteScansModal.svelte rename to src/components/scans/DeleteScanModal.svelte index 9d35c6f0..45ac2d0c 100644 --- a/src/components/scans/DeleteScansModal.svelte +++ b/src/components/scans/DeleteScanModal.svelte @@ -3,7 +3,13 @@ import { clickOutside } from "../base/outsideclick"; import { createEventDispatcher, onMount } from "svelte"; export let modal_open; - export let delete_scans = []; + export let delete_scan = { + id: 0, + runner: { + firstname: "", + lastname: "", + }, + }; const dispatch = createEventDispatcher(); onMount(() => { document.onkeydown = (e) => { @@ -20,7 +26,7 @@ }; }); async function submit() { - dispatch("delete", { scans: delete_scans }); + dispatch("delete", { id: delete_scan.id }); modal_open = false; } @@ -75,7 +81,7 @@ {$_("confirm-delete")}
- please confirm deletion of {delete_scans.length} scans + {$_("please-confirm-the-deletion-of-scan")} #{delete_scan.id}
diff --git a/src/components/scans/ScansOverview.svelte b/src/components/scans/ScansOverview.svelte index 1f3a6127..52fc0318 100644 --- a/src/components/scans/ScansOverview.svelte +++ b/src/components/scans/ScansOverview.svelte @@ -22,15 +22,14 @@ import { runnerFilter, statusFilter } from "../shared/tablefilters"; import CardRunner from "../cards/CardRunner.svelte"; import ScanValid from "./ScanValid.svelte"; - import DeleteScansModal from "./DeleteScansModal.svelte"; + import DeleteScanModal from "./DeleteScanModal.svelte"; $: selectedScans = $table?.getSelectedRowModel().rows.map((row) => row.original) || []; $: selected = $table?.getSelectedRowModel().rows.map((row) => row.index) || []; - $: delete_active = false; - $: active_deletes = []; + $: active_delete = undefined; export let current_scans = []; const scans_promise = ScanService.scanControllerGetAll().then((val) => { current_scans = val; @@ -123,12 +122,10 @@ return renderComponent(TableActions, { detailsLink: `./${info.row.original.id}`, deleteAction: () => { - active_deletes = [ + active_delete = current_scans[ current_scans.findIndex((r) => r.id == info.row.original.id) - ], - ]; - delete_active = true; + ]; }, deleteEnabled: store.state.jwtinfo.userdetails.permissions.includes("SCAN:DELETE"), @@ -158,41 +155,25 @@ }); const table = createSvelteTable(options); async function deleteScan(scan_id) { - // await ScanService.scanControllerRemove(scan_id, true); + await ScanService.scanControllerRemove(scan_id, true); current_scans = current_scans.filter((r) => r.id !== scan_id); - // options.update((options) => ({ - // ...options, - // data: current_scans, - // })); - // Toastify({ - // text: $_("scans-deleted"), - // duration: 3500, - // backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", - // }).showToast(); - } - async function deleteScans(scan_ids) { - scan_ids.forEach((scan_id) => { - deleteScan(scan_id); - }); - // // await ScanService.scanControllerRemove(scan_id, true); - // current_scans = current_scans.filter((r) => r.id !== scan_id); - // options.update((options) => ({ - // ...options, - // data: current_scans, - // })); - // Toastify({ - // text: $_("scans-deleted"), - // duration: 3500, - // backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", - // }).showToast(); + options.update((options) => ({ + ...options, + data: current_scans, + })); + Toastify({ + text: $_("scan-deleted"), + duration: 3500, + backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", + }).showToast(); } - { - deleteScans(event.detail.scans); + deleteScan(event.detail.id); }} /> {#if store.state.jwtinfo.userdetails.permissions.includes("SCAN:GET")} @@ -208,6 +189,36 @@ {#if current_scans.length === 0} {:else} + {#if selected.length > 0} + + {/if}
diff --git a/src/locales/de.json b/src/locales/de.json index 4c9a5479..c16502c2 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -478,6 +478,8 @@ "cards-deleted": "Karten gelöscht", "please-confirm-the-deletion-of-runner": "Bitte bestätige die Löschung der Läufer:in", "runner-deleted": "Läufer:in gelöscht", + "scan-deleted": "Scan gelöscht", + "please-confirm-the-deletion-of-scan": "Bitte bestätige die Löschung des Scans", "please-confirm-the-deletion-of-card": "Bitte bestätige die Löschung der Karte", "card": "Läuferkarte" } diff --git a/src/locales/en.json b/src/locales/en.json index ea733426..d82784a9 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -478,6 +478,8 @@ "cards-deleted": "Cards deleted", "please-confirm-the-deletion-of-runner": "Please confirm the deletion of this runner", "runner-deleted": "runner deleted", + "scan-deleted": "scan deleted", + "please-confirm-the-deletion-of-scan": "Please confirm the deletion of scan", "please-confirm-the-deletion-of-card": "Please confirm the deletion of this card", "card": "card" }