working on project tree update upon task creation/deletion/update

This commit is contained in:
2025-12-20 15:11:18 +01:00
parent 711addd75c
commit 5a1c8e1438
4 changed files with 54 additions and 14 deletions
+32 -4
View File
@@ -1,8 +1,8 @@
<script>
import { onMount } from 'svelte';
import { onMount, onDestroy } 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';
@@ -14,7 +14,9 @@
import Tags from '../tags/TagList.svelte';
import TaskList from '../task/TaskList.svelte';
let eventSource = null;
let { id } = $props();
let lastEvent = $state(null);
let estimated_time = $state({sum:0});
let project = $state(null);
let router = useTinyRouter();
@@ -80,10 +82,33 @@
}
}
function handleCreate(evt){
let json = JSON.parse(evt.data);
json.event = 'create';
lastEvent = json;
}
function handleDelete(evt){
let json = JSON.parse(evt.data);
json.event = 'delete';
lastEvent = json;
}
function handleUpdate(evt){
let json = JSON.parse(evt.data);
json.event = 'update';
lastEvent = json;
}
function kanban(){
router.navigate(`/project/${id}/kanban`);
}
function load(){
eventSource = eventStream(handleCreate,handleUpdate,handleDelete);
loadProject();
}
async function loadProject(){
const url = api(`project/${id}`);
const resp = await fetch(url,{credentials:'include'});
@@ -162,7 +187,10 @@
window.open(`/time?project=${id}`, '_blank').focus();
}
onMount(loadProject);
onMount(load);
onDestroy(() => {
if (eventSource) eventSource.close();
});
</script>
<svelte:head>
@@ -265,7 +293,7 @@
</div>
<div class="tasks">
{#if tasks}
<TaskList {tasks} {estimated_time} states={project?.allowed_states} show_closed={show_closed || project.show_closed} />
<TaskList {tasks} {estimated_time} {lastEvent} states={project?.allowed_states} show_closed={show_closed || project.show_closed} />
{/if}
</div>
</div>