diff --git a/src/lib/components/ExpandableForm.svelte b/src/lib/components/ExpandableForm.svelte
index 45b333e..e5a55f5 100644
--- a/src/lib/components/ExpandableForm.svelte
+++ b/src/lib/components/ExpandableForm.svelte
@@ -22,6 +22,7 @@
-
+ {#if onDelete}
+
+ {/if}
{/if}
diff --git a/src/lib/server/vorgangService.ts b/src/lib/server/vorgangService.ts
index 3cf016e..1b0d366 100644
--- a/src/lib/server/vorgangService.ts
+++ b/src/lib/server/vorgangService.ts
@@ -234,3 +234,27 @@ export const vorgangPINValidation = function (vorgangToken: string, vorgangPIN:
return true;
};
+
+/**
+ * Change VorgangName or VorgangPIN
+ * @param vorgangToken
+ * @param newValue
+ * @returns {int} number of affected lines
+ */
+export const updateVorgangAttrByToken = function (vorgangToken: string,
+ newValue: string,
+ column: string) {
+ const renameSQLStmt = `UPDATE cases set ${column} = ? WHERE token = ?`;
+ const statement = db.prepare(renameSQLStmt);
+
+ let info;
+
+ try {
+ info = statement.run(newValue, vorgangToken);
+ } catch (err) {
+ console.log(`error: ${err}`)
+ return 0;
+ }
+
+ return info.changes;
+};
\ No newline at end of file
diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte
index 59bbe55..ca9cc6d 100644
--- a/src/routes/(angemeldet)/list/+page.svelte
+++ b/src/routes/(angemeldet)/list/+page.svelte
@@ -3,12 +3,35 @@
import Trash from '$lib/icons/Trash.svelte';
import Folder from '$lib/icons/Folder.svelte';
import EmptyList from '$lib/components/EmptyList.svelte';
+ import NameItemEditor from '$lib/components/NameItemEditor.svelte';
+ import Alert from '$lib/components/Alert.svelte';
+ import Button from '$lib/components/Button.svelte';
+ import Modal from '$lib/components/Modal/Modal.svelte';
+ import ModalTitle from '$lib/components/Modal/ModalTitle.svelte';
+ import ModalContent from '$lib/components/Modal/ModalContent.svelte';
+ import ModalFooter from '$lib/components/Modal/ModalFooter.svelte';
import { API_ROUTES, ROUTE_NAMES } from '../../index.js';
+ import { invalidateAll } from '$app/navigation';
let { data, form } = $props();
- let vorgangList = data.vorgangList;
-
+ let vorgangList = $state(data.vorgangList);
+
+ // same as `vorgangList` but with one different property to be used
+ // with ´NameItemEditor`
+ const derivedList = $derived.by(
+ () => {
+ return vorgangList.map(
+ ({ vorgangName, ...rest }) => (
+ {
+ name: vorgangName,
+ ...rest
+ }
+ )
+ )
+ }
+ );
+
let isEmptyList = vorgangList.length === 0;
let vorgangName = $state('');
@@ -61,16 +84,12 @@
return true;
}
- async function delete_item(ev: Event) {
+ async function deleteVorgang(vorgangToken: string) {
let delete_item = window.confirm('Bist du sicher?');
if (delete_item) {
- const target = ev.currentTarget as HTMLElement | null;
- if (!target) return;
- let filename = target.id.split('del__')[1];
-
- let url = API_ROUTES.VORGANG(filename);
-
+ let url = API_ROUTES.VORGANG(vorgangToken);
+
try {
const response = await fetch(url, { method: 'DELETE' });
if (response.status == 204) {
@@ -87,6 +106,46 @@
}
}
}
+
+ //Variablen für Modal
+ let open = $state(false);
+ let inProgress = $state(false);
+ let isError = $state(false);
+
+ async function handleSave(newName: string, oldName: string, vorgangToken: string) {
+ open = true;
+ inProgress = true;
+ isError = false;
+ try {
+ const res = await fetch(API_ROUTES.VORGANG(vorgangToken), {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ vorgangToken, oldName, newName })
+ });
+
+ if (!res.ok) {
+ throw new Error('Fehler beim Speichern');
+ }
+ await invalidateAll();
+ vorgangList = data.vorgangList;
+ open = false;
+ } catch (err) {
+ console.error('⚠️ Netzwerkfehler beim Speichern', err);
+ isError = true;
+ } finally {
+ inProgress = false;
+ }
+ }
+
+
+
+ async function closeModal() {
+ open = false;
+ isError = false;
+ }
+
@@ -100,27 +159,21 @@
{:else}
{#each vorgangList as vorgangItem}
+
{/each}
{/if}
@@ -190,6 +243,19 @@
+
Umbenennen
+ {#if inProgress}
+ Vorgang läuft...
+ {:else if isError}
+ Fehler beim Umbenennen
+ {:else}
+ Umbenennen erfolgreich
+ {/if}
+
+
+
+