From f335f7a13f2e457712e58148206c9be09ad19c46 Mon Sep 17 00:00:00 2001 From: mina Date: Tue, 8 Jul 2025 09:32:19 +0200 Subject: [PATCH] hochladen --- src/lib/components/EditableItem.svelte | 175 ++++++++---------- src/routes/(angemeldet)/list/+page.svelte | 102 +++++++--- .../(token-based)/list/[vorgang]/+page.svelte | 77 ++++---- src/routes/api/list/[[vorgang]]/+server.ts | 91 +++++++-- 4 files changed, 262 insertions(+), 183 deletions(-) diff --git a/src/lib/components/EditableItem.svelte b/src/lib/components/EditableItem.svelte index b55ba2a..e5405d8 100644 --- a/src/lib/components/EditableItem.svelte +++ b/src/lib/components/EditableItem.svelte @@ -1,126 +1,101 @@ -
-
- {#if editing} - - {:else} - {inputValue} - {#if !editing && editable} - - - {/if} - {/if} -
- {#if editing && errors} -

{errors[0]}

+
+ + + + {#if manualError || error} +

{manualError || error}

{/if}
diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index 5912182..e6b27b9 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -2,17 +2,23 @@ import Folder from '$lib/icons/Folder.svelte'; import EditableItem from '$lib/components/EditableItem.svelte'; - export let data; - export let editingId: number; - interface ListItem { name: string; token?: string; // add other properties as needed } + let { data } = $props(); + const caseList: ListItem[] = data.caseList; + //Variabeln für EditableItem + let names: string[] = $state(caseList.map((l) => l.name)); + let editedName: string = $state(''); + + function getNameById(list: ListItem[], id: number) { + return list[id].name; + } async function delete_item(ev: Event) { let delete_item = window.confirm('Bist du sicher?'); @@ -42,6 +48,51 @@ } } } + + async function handleSave(newName: string, oldName: string) { + console.log('Eltern, speichern erfolgreich', newName, oldName); + try { + const res = await fetch(`/api/list/${oldName}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ oldName, newName }) + }); + + if (!res.ok) { + const msg = await res.text(); + console.error('❌ Fehler beim Speichern:', msg); + } else { + console.log('✅ Erfolgreich gespeichert:', newName); + } + } catch (err) { + console.error('⚠️ Netzwerkfehler:', err); + } + } + + async function handleDelete(name: string) { + try { + const res = await fetch(`/api/list/${name}`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ name }) + }); + + if (!res.ok) { + const msg = await res.text(); + console.error('❌ Fehler beim Löschen:', msg); + } else { + console.log('🗑️ Erfolgreich gelöscht:', name); + // Optional: Lokale Liste aktualisieren + //S items = items.filter((item) => item.name !== name); + } + } catch (err) { + console.error('⚠️ Netzwerkfehler beim Löschen:', err); + } + }
@@ -52,33 +103,28 @@ diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index 83ff4dd..239d683 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -122,49 +122,48 @@ diff --git a/src/routes/api/list/[[vorgang]]/+server.ts b/src/routes/api/list/[[vorgang]]/+server.ts index 5a76090..dcd9078 100644 --- a/src/routes/api/list/[[vorgang]]/+server.ts +++ b/src/routes/api/list/[[vorgang]]/+server.ts @@ -1,24 +1,83 @@ import { client } from '$lib/minio'; +import type { RequestHandler } from '@sveltejs/kit'; +import { json } from '@sveltejs/kit'; -export async function DELETE({ params }) { - const vorgang = params.vorgang; - const object_list = await new Promise((resolve, reject) => { - const res = []; - const items_str = client.listObjects('tatort', vorgang, true); - items_str.on('data', (obj) => { - res.push(obj.name); - }); +// Beispiel-Datenquelle (ersetzen durch echte DB oder Datei) +let mockList = [ "202505-test-se", "Minas-TestVorgang", "Testing-Mina", "xyz-123" ]; - items_str.on('error', reject); +export const GET: RequestHandler = async ({ params }) => { + const { filename } = params; - items_str.on('end', async () => { - resolve(res); - }); - }); + // TODO: Datei lesen oder Datenbankabfrage + return json({ filename, list: mockList }); +}; - await client.removeObjects('tatort', object_list); +export const PUT: RequestHandler = async ({ request, params }) => { + const { filename } = params; + const { oldName, newName } = await request.json(); - return new Response(null, { status: 204 }); -} + if (!newName || !newName.trim()) { + return new Response('Ungültiger Name', { status: 400 }); + } + + const index = mockList.findIndex((name) => name === oldName); + if (index === -1) { + return new Response('Name nicht gefunden', { status: 404 }); + } + + if (mockList.includes(newName)) { + return new Response('Name existiert bereits', { status: 409 }); + } + + + console.log('📥 PUT-Request empfangen:', mockList); + mockList[index] = newName; + console.log('📄 Datei:', filename); + console.log('🔁 Umbenennen:', oldName, '→', newName, mockList); + +// return new Response(JSON.stringify({ success: true }), { status: 200 }); + + return json({ success: true, updated: newName }); +}; + +export const DELETE: RequestHandler = async ({ request, params }) => { + const { filename } = params; + const { name } = await request.json(); + + const index = mockList.findIndex((n) => n === name); + if (index === -1) { + return new Response('Name nicht gefunden', { status: 404 }); + } + + + console.log('📥 DELETE-Request empfangen:', mockList); + mockList.splice(index, 1); + console.log('📄 Datei:', filename); + console.log('🔁 gelöscht', mockList); + return json({ success: true, deleted: name }); +}; + +// export async function DELETE({ params }) { +// const vorgang = params.vorgang; + +// const object_list = await new Promise((resolve, reject) => { +// const res = []; +// const items_str = client.listObjects('tatort', vorgang, true); + +// items_str.on('data', (obj) => { +// res.push(obj.name); +// }); + +// items_str.on('error', reject); + +// items_str.on('end', async () => { +// resolve(res); +// }); +// }); + +// await client.removeObjects('tatort', object_list); + +// return new Response(null, { status: 204 }); +// }