diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Task.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Task.java index 046972e..4b9c4f2 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/Task.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Task.java @@ -164,7 +164,10 @@ public class Task implements Mappable { case NAME: name = json.getString(key); break; case NO_INDEX: noIndex = json.getBoolean(NO_INDEX); break; case PARENT_TASK_ID: parentTaskId = json.getLong(PARENT_TASK_ID); break; - case REQUIRED_TASKS_IDS: requiredTasksIds.addAll(json.getJSONArray(REQUIRED_TASKS_IDS).toList().stream().map(entry -> Long.parseLong(entry.toString())).toList()); break; + case REQUIRED_TASKS_IDS: + requiredTasksIds.clear(); + requiredTasksIds.addAll(json.getJSONArray(REQUIRED_TASKS_IDS).toList().stream().map(entry -> Long.parseLong(entry.toString())).toList()); + break; case SHOW_CLOSED: showClosed = json.getBoolean(SHOW_CLOSED); break; case START_DATE: start = json.isNull(START_DATE) || json.getString(START_DATE).isBlank() ? null : LocalDate.parse(json.getString(START_DATE)); break; case STATUS: status = json.getInt(key); break; diff --git a/frontend/src/routes/task/RequiredTasks.svelte b/frontend/src/routes/task/RequiredTasks.svelte index 24b8b4d..3ad719d 100644 --- a/frontend/src/routes/task/RequiredTasks.svelte +++ b/frontend/src/routes/task/RequiredTasks.svelte @@ -22,20 +22,14 @@ error = null; let newTask = await resp.json(); if (newTask.project_id != task.project_id){ - alert('prject mismatch!'); + alert('project mismatch!'); return; } task.required_tasks_ids.push(new_task_id); requiredTasks[new_task_id] = newTask; - url = api(`task/${task.id}`); - resp = await fetch(url,{ - credentials : 'include', - method : 'PATCH', - body : JSON.stringify({required_tasks_ids:task.required_tasks_ids}) - }); + await patch(); delete candidates[new_task_id]; - } - if (!resp.ok) { + } else { error = await resp.text(); } } @@ -90,6 +84,24 @@ return false; } + async function patch(){ + const url = api(`task/${task.id}`); + const resp = await fetch(url,{ + credentials : 'include', + method : 'PATCH', + body : JSON.stringify({required_tasks_ids:task.required_tasks_ids}) + }); + if (!resp.ok){ + error = await resp.text(); + } + } + + async function unlink(required_task){ + task.required_tasks_ids = task.required_tasks_ids.filter(item => item != required_task.id); + patch(); + delete requiredTasks[required_task.id]; + } + onMount(loadTasks); @@ -97,7 +109,7 @@