@ -12,6 +12,7 @@
@@ -12,6 +12,7 @@
let {
estimated_time,
show_closed,
siblings,
task
} = $props();
let children = $state(null);
@ -39,34 +40,25 @@
@@ -39,34 +40,25 @@
}
}
function drag(ev,task ){
function on dragstart (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 @@
@@ -125,7 +117,7 @@
< / script >
{ #if ! deleted }
< li draggable = "true" ondrop = { ev => dropAt ( ev , task )} ondragover ={ e => e . preventDefault ()} ondragend = { e => dragend ( e , task )} ond rags tart= { e => drag ( e , task ) } class = "task { task . status . name . toLowerCase ()} " >
< li draggable = "true" { ondrop } ondragover = { e => e . preventDefault ()} { on drags tart} 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 } h)</ span >