solved issues when moving tasks

This commit is contained in:
2025-07-31 08:41:40 +02:00
parent bad323b7cc
commit 6b6e5f60bc
4 changed files with 29 additions and 22 deletions

View File

@@ -12,6 +12,7 @@
let {
estimated_time,
show_closed,
siblings,
task
} = $props();
let children = $state(null);
@@ -39,34 +40,25 @@
}
}
function drag(ev,task){
function ondragstart(ev){
ev.stopPropagation();
task.new_parent = false;
dragged.element = task;
dragged.element = task;
dragged.siblings = siblings;
}
function dragend(ev,task){
ev.stopPropagation();
setTimeout(() => {
if (dragged.moved){
console.log("removing",ev.target);
ev.target.remove();
}
},500);
}
async function dropAt(ev,target){
async function ondrop(ev){
ev.stopPropagation();
if (dragged.element.id == target.id) return;
if (dragged.element.id == task.id) return;
const url = api(`task/${dragged.element.id}`);
const resp = await fetch(url,{
credentials : 'include',
method : 'PATCH',
body : JSON.stringify({ parent_task_id : target.id})
body : JSON.stringify({ parent_task_id : task.id})
});
if (resp.ok) {
dragged.moved = true;
children[dragged.element.id]=dragged.element;
if (dragged.siblings[dragged.element.id]) delete dragged.siblings[dragged.element.id];
} else {
error = await resp.text();
}
@@ -125,7 +117,7 @@
</script>
{#if !deleted}
<li draggable="true" ondrop={ev => dropAt(ev, task)} ondragover={e => e.preventDefault()} ondragend={e => dragend(e,task)} ondragstart={e => drag(e,task)} class="task {task.status.name.toLowerCase()}">
<li draggable="true" {ondrop} ondragover={e => e.preventDefault()} {ondragstart} class="task {task.status.name.toLowerCase()}">
<LineEditor bind:value={task.name} onclick={openTask} editable={true} onSet={setName} type="a" />
{#if task.estimated_time}
<span class="estimated_time">({+task.estimated_time}&nbsp;h)</span>

View File

@@ -10,6 +10,6 @@
<ul>
{#each sortedTasks as task}
<ListTask {task} {estimated_time} show_closed={show_closed || task.show_closed} />
<ListTask {task} siblings={tasks} {estimated_time} show_closed={show_closed || task.show_closed} />
{/each}
</ul>