diff --git a/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java b/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java index 6312c9d2..535d8e69 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java @@ -42,8 +42,8 @@ public class Path { public static final String PROPERTY = "property"; public static final String PURPOSES = "purposes"; - public static final String READ = "read"; - public static final String REDIRECT = "redirect"; + public static final String READ = "read"; + public static final String REDIRECT = "redirect"; public static final String SEARCH = "search"; public static final String SELECT = "select"; diff --git a/frontend/src/routes/task/View.svelte b/frontend/src/routes/task/View.svelte index 5a7f1602..c9aabaad 100644 --- a/frontend/src/routes/task/View.svelte +++ b/frontend/src/routes/task/View.svelte @@ -81,6 +81,10 @@ router.navigate(`/project/${project.id}/view`) } + function gotoTask(tid){ + if (id) router.navigate(`/task/${tid}/view`) + } + function handleUpdateEvent(evt){ let json = JSON.parse(evt.data); if (json.task) { @@ -119,7 +123,8 @@ if (task.show_closed) show_closed = true; loadChildren(); if (task.project_id) loadProject(); - if (task.parent_task_id) loadParent(); + if (task.parent_task_id) await loadParent(); + loadSiblings(); } else error(resp); } @@ -129,13 +134,36 @@ if (resp.ok){ project = await resp.json(); yikes(); - } else error(await resp.text()); + } else error(resp); + } + + async function loadSiblings(){ + const url = api(`task/list`); + const select = task.parent_task_id ? {parent_task_id:task.parent_task_id} : {project_id: task.project_id}; + select.show_closed = false; + const res = await post(url,select); + if (res.ok){ + task.siblings = await res.json(); + let last = null; + let before = undefined; + let after = null; + for (let [sid, t] of Object.entries(task.siblings).toSorted((a,b) => a[1].name.localeCompare(b[1].name))){ + if (before !== undefined) { + after = +sid; + break; + } + if (id == sid) before = last; + last = +sid; + } + task.before = before; + task.after = after; + } else error(res) } function parentClick(ev){ ev.preventDefault(); if (!task.parent_task_id) return; - router.navigate(`/task/${task.parent_task_id}/view`); + gotoTask(task.parent_task_id); return false; } @@ -232,10 +260,17 @@ {/if} {/if} +
{t('task')}
update({name:val})} /> + {#if task.before} + + {/if} + {#if task.after} + + {/if}