From 74f06d999535efaf955d7572f2acccd0137ece86 Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Tue, 6 May 2025 12:37:26 +0200 Subject: [PATCH 01/10] first version finished --- .../(angemeldet)/list/[vorgang]/+page.svelte | 106 +++++++++++++++++- .../(angemeldet)/list/[vorgang]/+server.js | 26 +++++ 2 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 src/routes/(angemeldet)/list/[vorgang]/+server.js diff --git a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte index 484ff43..3f039f4 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte +++ b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte @@ -5,9 +5,10 @@ @@ -70,7 +79,100 @@ />
-

{item.name}

+ { + let text_field_id = item.name + "-label" + + let text_field = document.getElementById(text_field_id) + text_field.setAttribute("contenteditable", false) + text_field.textContent = item.name; + + // reshow button + item.show_button = true + return; + }} + on:keydown|stopPropagation={async (event) => { + if (event.key == "Escape") { + let text_field_id = item.name + "-label" + + let text_field = document.getElementById(text_field_id) + text_field.setAttribute("contenteditable", false) + text_field.textContent = item.name; + + // reshow button + item.show_button = true + return; + } + if (event.key == "Enter") { + console.log('--- hitted') + let name_field = event.currentTarget + let new_name = name_field.textContent || name_field.innerText || ''; + + + if (new_name == '') { + alert('Bitte einen gültigen Namen eingeben.'); + event.preventDefault(); + return; + } + + // actual upload + // ------------- + + // to prevent from item being selected + event.preventDefault(); + + // construct PUT URL + const url = $page.url + console.log(url); + + let data_obj = {} + data_obj["new_name"] = new_name + data_obj["old_name"] = event.currentTarget.id.split('-')[0] + + const response = await fetch(url, + {method: 'PUT', body: JSON.stringify( data_obj ) + }) + + + if (!response.ok) { + throw new Error(`Fehlgeschlagen: ${response.status}`) + } else { + setTimeout(() => {window.location.reload()}, 500) + } + + // --- upload finished --- + + return; + } + }} + + >{item.name} + + + {#if item.show_button} + + {/if}

{shortenFileSize(item.size)}

diff --git a/src/routes/(angemeldet)/list/[vorgang]/+server.js b/src/routes/(angemeldet)/list/[vorgang]/+server.js new file mode 100644 index 0000000..e32d374 --- /dev/null +++ b/src/routes/(angemeldet)/list/[vorgang]/+server.js @@ -0,0 +1,26 @@ +import { client } from '$lib/minio'; +import { json } from '@sveltejs/kit'; + + + +export async function PUT({ request }) { + const data = await request.json(); + + console.log(`--- ${request.url.split('/').at(-1)} +++ ${JSON.stringify(data)}`); + + // Vorgang + let vorgang = request.url.split('/').at(-1) + + // copy + let old_name = data["old_name"] + let src_full_path = `/tatort/${vorgang}/${old_name}` + let new_name = `${vorgang}/${data["new_name"]}` + await client.copyObject('tatort', new_name, src_full_path) + + // delete + await client.removeObject('tatort', `${vorgang}/${old_name}`) + + // return success or failure + + return json({ success: 'SUCKZESS' }, { status: 200 }); +}; From aa3dcc1a75427ffa08e84cc79c6b6e164e2961b7 Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Thu, 8 May 2025 14:02:17 +0200 Subject: [PATCH 02/10] add delete function --- .../(angemeldet)/list/[vorgang]/+page.svelte | 38 +++++++++++++++++++ .../list/[vorgang]/[tatort]/+server.js | 13 +++++++ 2 files changed, 51 insertions(+) create mode 100644 src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js diff --git a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte index 3f039f4..78e6c78 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte +++ b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte @@ -173,6 +173,44 @@ style="vertical-align: middle" height="20" width="20" xmlns="http://www.w3.org/2000/svg"> {/if} + +

{shortenFileSize(item.size)}

diff --git a/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js b/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js new file mode 100644 index 0000000..76dd05d --- /dev/null +++ b/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.js @@ -0,0 +1,13 @@ +import { client } from '$lib/minio'; +import { json } from '@sveltejs/kit'; + +export async function DELETE({ request }) { + + let url_fragments = request.url.split('/') + let item = url_fragments.at(-1); + let vorgang = url_fragments.at(-2); + + await client.removeObject('tatort', `${vorgang}/${item}`) + + return new Response(null, { status: 204 }); +}; From 49d2ee04f1412c856f9111a7329a61971a85bfd6 Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Thu, 8 May 2025 14:03:21 +0200 Subject: [PATCH 03/10] remove vertical align --- src/routes/(angemeldet)/list/[vorgang]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte index 78e6c78..6b85c2e 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte +++ b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte @@ -170,7 +170,7 @@ }} > + height="20" width="20" xmlns="http://www.w3.org/2000/svg"> {/if} From 9575ef84d4a778fb3beab61a96a5fb70ba36f927 Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Fri, 9 May 2025 09:08:58 +0200 Subject: [PATCH 04/10] fixed issues with dashes in name and id --- .../(angemeldet)/list/[vorgang]/+page.svelte | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte index 6b85c2e..7f6b9aa 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte +++ b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte @@ -81,11 +81,11 @@
{ - let text_field_id = item.name + "-label" + let text_field_id = `label__${item.name}` let text_field = document.getElementById(text_field_id) text_field.setAttribute("contenteditable", false) @@ -97,7 +97,7 @@ }} on:keydown|stopPropagation={async (event) => { if (event.key == "Escape") { - let text_field_id = item.name + "-label" + let text_field_id = `label__${item.name}` let text_field = document.getElementById(text_field_id) text_field.setAttribute("contenteditable", false) @@ -131,7 +131,7 @@ let data_obj = {} data_obj["new_name"] = new_name - data_obj["old_name"] = event.currentTarget.id.split('-')[0] + data_obj["old_name"] = event.currentTarget.id.split('__')[1] const response = await fetch(url, {method: 'PUT', body: JSON.stringify( data_obj ) @@ -156,9 +156,9 @@ {#if item.show_button} + +
From 657fd422bca32c2bbbfb62e2916c1ff0cb794c81 Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Mon, 12 May 2025 13:20:53 +0200 Subject: [PATCH 08/10] refactor event handlers --- src/routes/(angemeldet)/list/+page.svelte | 54 +++--- .../(angemeldet)/list/[vorgang]/+page.svelte | 169 ++++++++++-------- 2 files changed, 119 insertions(+), 104 deletions(-) diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index d59b1ce..d2fdc0b 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -35,6 +35,33 @@ list = list.concat(objs); } }); + + async function delete_item(ev) { + let delete_item = window.confirm("Bist du sicher?"); + + if (delete_item) { + let filename = event.currentTarget.id.split('del__')[1] + + // delete request + // -------------- + + let url = `/api/list/${filename}` + + console.log(`--- ${filename} + ${url}`) + try { + const response = await fetch(url, + {method: 'DELETE'} + ) + if (response.status == 204) { + setTimeout(() => {window.location.reload()}, 500) + } + } catch (error) { + console.log(error.message) + } + + } + + }
@@ -67,32 +94,7 @@