finished project tree update on task edit, added update of task view on task edit

This commit is contained in:
2025-12-20 16:29:16 +01:00
parent 5a1c8e1438
commit c05f24cd7c
4 changed files with 34 additions and 13 deletions

View File

@@ -131,7 +131,6 @@
}
function handleDeleteEvent(evt){
console.log('delete task');
handleEvent(evt,'delete');
}

View File

@@ -187,6 +187,16 @@
window.open(`/time?project=${id}`, '_blank').focus();
}
$effect(() => {
if (lastEvent && lastEvent.task) {
if (lastEvent.event == 'delete' || lastEvent.task.parent_task_id){
delete tasks[lastEvent.task.id];
} else {
tasks[lastEvent.task.id] = lastEvent.task;
}
}
});
onMount(load);
onDestroy(() => {
if (eventSource) eventSource.close();

View File

@@ -54,7 +54,7 @@
if (resp.ok){
deleted = true;
} else {
error(resp);
error(resp);
}
}
}
@@ -76,8 +76,7 @@
body : JSON.stringify({ parent_task_id : task.id})
});
if (resp.ok) {
children[dragged.element.id]=dragged.element;
if (dragged.siblings[dragged.element.id]) delete dragged.siblings[dragged.element.id];
yikes();
} else {
error(resp);
}
@@ -143,13 +142,11 @@
}
$effect(() => {
if (lastEvent && lastEvent.task) {
if (children && lastEvent.task.parent_task_id == task.id) {
if (lastEvent.event == 'delete'){
delete children[lastEvent.task.id];
} else {
children[lastEvent.task.id] = lastEvent.task;
}
if (children && lastEvent && lastEvent.task) {
if (lastEvent.event == 'delete' || lastEvent.task.parent_task_id != task.id){
delete children[lastEvent.task.id];
} else {
children[lastEvent.task.id] = lastEvent.task;
}
}
});

View File

@@ -1,8 +1,8 @@
<script>
import { onMount } from 'svelte';
import { onDestroy, onMount } from 'svelte';
import { useTinyRouter } from 'svelte-tiny-router';
import { api } from '../../urls.svelte';
import { api, eventStream } from '../../urls.svelte';
import { error, yikes } from '../../warn.svelte';
import { t } from '../../translations.svelte';
import { timetrack } from '../../user.svelte.js';
@@ -17,6 +17,7 @@
import TagList from '../tags/TagList.svelte';
import TaskList from './TaskList.svelte';
let eventSource = null;
let { id } = $props();
let children = $state(null);
let dummy = $derived(updateOn(id));
@@ -82,6 +83,15 @@
router.navigate(`/project/${project.id}/view`)
}
function handleUpdateEvent(evt){
let json = JSON.parse(evt.data);
if (json.task && json.task.id == id) updateOn(id);
}
function load(){
eventSource = eventStream(null,handleUpdateEvent,null);
}
async function loadChildren(){
const url = api('task/list');
const data = {
@@ -199,6 +209,11 @@
members[user_id] = permission.code;
update({members:members});
}
onDestroy(() => {
if (eventSource) eventSource.close();
});
onMount(load);
</script>
<svelte:head>