diff --git a/frontend/src/routes/project/Kanban.svelte b/frontend/src/routes/project/Kanban.svelte index a447966..b4522b6 100644 --- a/frontend/src/routes/project/Kanban.svelte +++ b/frontend/src/routes/project/Kanban.svelte @@ -22,6 +22,8 @@ let tasks = $state({}); let users = {}; let columns = $derived(project.allowed_states?Object.keys(project.allowed_states).length+1:1); + const controller = new AbortController(); + const signal = controller.signal; $effect(() => updateUrl(filter_input)); @@ -91,15 +93,20 @@ } async function load(){ - await loadProject(); - await loadTasks({project_id:+id,parent_task_id:0}); - ready = true; - loadTags(); + try { + await loadProject(); + await loadTasks({project_id:+id,parent_task_id:0}); + ready = true; + loadTags(); + } catch (ignored) {} } async function loadProject(){ const url = api(`project/${id}`); - const resp = await fetch(url,{credentials:'include'}); + const resp = await fetch(url,{ + credentials:'include', + signal: signal + }); if (resp.ok){ project = await resp.json(); for (var uid of Object.keys(project.members)){ @@ -114,12 +121,17 @@ } async function loadTag(task){ - const url = api(`tags/task/${task.id}`); - const resp = await fetch(url,{credentials:'include'}); - if (resp.ok) { - const tags = await resp.json(); - if (tags.length) task.tags = tags.sort(); - } + try { + const url = api(`tags/task/${task.id}`); + const resp = await fetch(url,{ + credentials:'include', + signal: signal + }); + if (resp.ok) { + const tags = await resp.json(); + if (tags.length) task.tags = tags.sort(); + } + } catch (ignored) {} } function loadTags(){ @@ -138,7 +150,8 @@ selector.show_closed = true; selector.no_index = true; var resp = await fetch(url,{ - credentials : 'include', + credentials :'include', + signal : signal, method : 'POST', body : JSON.stringify(selector) }); @@ -172,6 +185,11 @@ highlight = {user:user_id,state:state}; } + function openTask(task_id){ + controller.abort(); + router.navigate(`/task/${task_id}/view`) + } + onMount(load); @@ -201,12 +219,12 @@ {#if stateList[state]} {#each Object.values(stateList[state]).sort((a,b) => a.name.localeCompare(b.name)) as task} {#if !filter || task.name.toLowerCase().includes(filter) || (task.tags && task.tags.filter(tag => tag.toLowerCase().includes(filter)).length)} - router.navigate(`/task/${task.id}/view`)} ondragstart={ev => dragged=task} {task} /> + openTask(task.id)} ondragstart={ev => dragged=task} {task} /> {/if} {/each} {/if}
- create(name,uid,state)}/> + create(name,uid,state)}/>
{/each} diff --git a/frontend/src/routes/task/View.svelte b/frontend/src/routes/task/View.svelte index e889c88..822d8fb 100644 --- a/frontend/src/routes/task/View.svelte +++ b/frontend/src/routes/task/View.svelte @@ -46,7 +46,6 @@ function updateOn(id){ task = null; loadTask(); - console.log(router); } function addChild(){