From 9a27a501a8992c23af3093041d4d6ddc1661a230 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 3 Feb 2026 14:05:48 +0100 Subject: [PATCH] implemented storing of data entered into a task form in localstore Signed-off-by: Stephan Richter --- frontend/src/Components/MarkdownEditor.svelte | 4 ++- frontend/src/routes/task/Add.svelte | 33 +++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/frontend/src/Components/MarkdownEditor.svelte b/frontend/src/Components/MarkdownEditor.svelte index 429744b0..53eea6c5 100644 --- a/frontend/src/Components/MarkdownEditor.svelte +++ b/frontend/src/Components/MarkdownEditor.svelte @@ -6,6 +6,7 @@ let { editable = true, onclick = evt => {}, + onRender = src => {}, onSet = newVal => {return true;}, simple = false, type = 'div', @@ -50,6 +51,7 @@ body : editValue.source }); editValue.rendered = await resp.text(); + onRender(editValue.source); } function typed(ev){ @@ -118,4 +120,4 @@ {:else} {@html target(value.rendered)} {/if} - \ No newline at end of file + diff --git a/frontend/src/routes/task/Add.svelte b/frontend/src/routes/task/Add.svelte index 05f89b30..3931497f 100644 --- a/frontend/src/routes/task/Add.svelte +++ b/frontend/src/routes/task/Add.svelte @@ -16,8 +16,8 @@ let extendedSettings = $state(false); let parent_task = $state(null); let task = $state({ - name : '', - description : { source : '', rendered : '' }, + name : localStorage.getItem('task.name'), + description : { source : localStorage.getItem('task.markdown'), rendered : '' }, due_date : null, est_time : null, members : {}, @@ -42,6 +42,14 @@ /// TODO: ? } + async function getCandidates(text){ + const origin = parent_task ? parent_task.members : project.members; + const candidates = Object.values(origin) + .filter(member => member.user.name.toLowerCase().includes(text.toLowerCase())) + .map(member => [member.user.id,member.user.name]); + return Object.fromEntries(candidates); + } + async function load(){ if (parent_task_id) await loadParent(); if (project_id) loadProject(); @@ -87,16 +95,7 @@ } } - async function getCandidates(text){ - const origin = parent_task ? parent_task.members : project.members; - const candidates = Object.values(origin) - .filter(member => member.user.name.toLowerCase().includes(text.toLowerCase())) - .map(member => [member.user.id,member.user.name]); - return Object.fromEntries(candidates); - } - - - function onkeydown(e){ + function onkeydown(e){ if (e.ctrlKey && e.keyCode === 83) { e.preventDefault(); saveTask(); @@ -111,6 +110,8 @@ body : JSON.stringify(task) }); if (resp.ok) { + localStorage.removeItem('task.markdown'); + localStorage.removeItem('task.name'); if (!assignee) { // if assignee is set, this form was opened within an external context. hence we don`t want to navigate somewhere else! task = await resp.json(); if (task.parent_task_id){ @@ -123,6 +124,12 @@ } } + function storeSource(markdown){ + if (markdown) localStorage.setItem('task.markdown',markdown); + localStorage.setItem('task.name',task.name); + } + + function toggleSettings(){ extendedSettings = !extendedSettings; } @@ -172,7 +179,7 @@ {t('description')} - +