first kanban view working

This commit is contained in:
2025-07-27 00:12:26 +02:00
parent 6599b08990
commit 880fed250b

View File

@@ -53,7 +53,23 @@
}); });
if (resp.ok){ if (resp.ok){
var json = await resp.json(); var json = await resp.json();
for (var task_id of Object.keys(json)) tasks[task_id] = json[task_id]; console.clear();
for (var task_id of Object.keys(json)) {
let task = json[task_id];
let state = task.status.name;
let owner = null;
let assignee = null;
for (var uid of Object.keys(task.members)){
var member = task.members[uid];
if (member.permission.name == 'OWNER') owner = member.user.name;
if (member.permission.name == 'ASSIGNEE') assignee = member.user.name;
}
if (!assignee) assignee = owner;
if (!tasks[assignee]) tasks[assignee] = {};
if (!tasks[assignee][state]) tasks[assignee][state] = {};
tasks[assignee][state][task_id] = task;
}
console.log(tasks);
} else { } else {
error = await resp.text(); error = await resp.text();
} }
@@ -63,17 +79,25 @@
</script> </script>
<style> <style>
.grid > *{ .box,
min-height: 50px; .head,
.user{
border-radius: 5px; border-radius: 5px;
margin: 2px; margin: 2px;
padding: 2px; min-height: 50px;
background: orange;
color: black; color: black;
padding: 2px;
} }
.head{ .box{
background: orange;
}
.head,
.user{
background: lime; background: lime;
} }
.empty{
background: repeating-linear-gradient(45deg,transparent,transparent 10px,#ccc 10px,#ccc 20px),linear-gradient(to bottom,#eee,#999);
}
</style> </style>
{#if project} {#if project}
@@ -83,8 +107,6 @@
<span class="error">{error}</span> <span class="error">{error}</span>
{/if} {/if}
<p>Columns: {columns}</p>
<div class="grid" style="display: grid; grid-template-columns: {`repeat(${columns}, auto)`}"> <div class="grid" style="display: grid; grid-template-columns: {`repeat(${columns}, auto)`}">
<div class="head">{t('user')}</div> <div class="head">{t('user')}</div>
{#if states} {#if states}
@@ -92,18 +114,15 @@
<div class="head">{t(state)}</div> <div class="head">{t(state)}</div>
{/each} {/each}
{/if} {/if}
{#each Object.entries(tasks) as [tid,task]} {#each Object.entries(tasks) as [user,states]}
<div onclick={() => router.navigate(`/task/${tid}/view`)}> <div class="user">{user}</div>
<p> {#each Object.entries(states) as [state,list]}
{task.name} <div>
</p> {#each Object.entries(list) as [tid,task]}
<p> <div class="box" onclick={() => router.navigate(`/task/${task.id}/view`)}>{task.name}</div>
{#each Object.entries(task.members) as [uid,member]}
{#if member.permission.name=='OWNER'}
{member.user.name}
{/if}
{/each} {/each}
</p> <div class="empty box"></div>
</div> </div>
{/each}
{/each} {/each}
</div> </div>