From be0435db1bfa2c12c11cbb0976ab9946e2693065 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 25 Jul 2025 20:11:19 +0200 Subject: [PATCH] working on form to add subtask --- frontend/src/Components/MarkdownEditor.svelte | 2 +- frontend/src/routes/project/List.svelte | 2 +- frontend/src/routes/task/Add.svelte | 17 +++++------ frontend/src/routes/task/View.svelte | 28 +++++++++++++++++-- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/frontend/src/Components/MarkdownEditor.svelte b/frontend/src/Components/MarkdownEditor.svelte index bc16266..d3619e7 100644 --- a/frontend/src/Components/MarkdownEditor.svelte +++ b/frontend/src/Components/MarkdownEditor.svelte @@ -74,6 +74,6 @@ {#if editing} - + {/if}
{@html editValue.rendered}
diff --git a/frontend/src/routes/project/List.svelte b/frontend/src/routes/project/List.svelte index 5f13f8b..03a498d 100644 --- a/frontend/src/routes/project/List.svelte +++ b/frontend/src/routes/project/List.svelte @@ -91,7 +91,7 @@ {companies[project.company_id].name} {/if} - + show(project.id)} > {t("state_"+project.status.name.toLowerCase())} show(project.id)} > diff --git a/frontend/src/routes/task/Add.svelte b/frontend/src/routes/task/Add.svelte index 4af30f4..2780dd3 100644 --- a/frontend/src/routes/task/Add.svelte +++ b/frontend/src/routes/task/Add.svelte @@ -25,11 +25,6 @@ }); let router = useTinyRouter(); - async function load(){ - if (parent_task_id) await loadParent(); - if (project_id) loadProject(); - } - function addMember(member){ for (let uid of Object.keys(member)) task.members[uid] = project.members[uid]; } @@ -39,6 +34,11 @@ console.log({drop:member.user.id}); } + async function load(){ + if (parent_task_id) await loadParent(); + if (project_id) loadProject(); + } + async function loadParent(){ const url = api(`task/${parent_task_id}`); const resp = await fetch(url,{credentials:'include'}); @@ -60,7 +60,7 @@ if (resp.ok){ project = await resp.json(); task.project_id = +project_id; - task.members = JSON.parse(JSON.stringify(project.members)); // deep copy + task.members = JSON.parse(JSON.stringify(parent_task?parent_task.members:project.members)); // deep copy error = null; } else { error = await resp.text(); @@ -68,7 +68,8 @@ } async function getCandidates(text){ - const candidates = Object.values(project.members) + 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); @@ -107,7 +108,7 @@ {t('name')} - + {#if project} diff --git a/frontend/src/routes/task/View.svelte b/frontend/src/routes/task/View.svelte index 0c74333..6b45eac 100644 --- a/frontend/src/routes/task/View.svelte +++ b/frontend/src/routes/task/View.svelte @@ -55,6 +55,16 @@ } } + async function loadParent(){ + const url = api(`task/${task.parent_task_id}`); + const resp = await fetch(url,{credentials:'include'}); + if (resp.ok){ + task.parent = await resp.json(); + } else { + error = await resp.text(); + } + } + async function loadTask(){ const url = api(`task/${id}`); const resp = await fetch(url,{credentials:'include'}); @@ -65,6 +75,7 @@ children = null; loadChildren(); if (task.project_id) loadProject(); + if (task.parent_task_id) loadParent(); } else { error = await resp.text(); } @@ -74,6 +85,11 @@ if (!project) return; router.navigate(`/project/${project.id}/view`) } + + function gotoParent(){ + if (!task.parent_task_id) return; + router.navigate(`/task/${task.parent_task_id}/view`) + } {#if error} @@ -88,9 +104,15 @@ {project.name} {/if} + {#if task.parent} + + {t('parent_task')} + {task.parent.name} + + {/if} {t('task')} - {task.name} + {task.name} {#if task.description.rendered} @@ -127,15 +149,15 @@ - {#if children} {t('subtasks')} + {#if children} + {/if} - {/if} {/if} \ No newline at end of file