From c37df2ddeccf8309fc6101368490bfdded1bf343 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Wed, 26 Nov 2025 08:47:23 +0100 Subject: [PATCH] added priority colors for tasks in custom state Signed-off-by: Stephan Richter --- frontend/src/routes/project/Kanban.svelte | 6 +++++- web/src/main/resources/web/css/bloodshed-color.css | 14 +++++++++++--- web/src/main/resources/web/css/default-color.css | 11 ++++++++++- web/src/main/resources/web/css/winter-color.css | 12 +++++++++++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/frontend/src/routes/project/Kanban.svelte b/frontend/src/routes/project/Kanban.svelte index 61f622f..ca7f44e 100644 --- a/frontend/src/routes/project/Kanban.svelte +++ b/frontend/src/routes/project/Kanban.svelte @@ -185,6 +185,10 @@ highlight.archive = true; } + function is_custom(state){ + return [10,20,40,60,100].includes(state); + } + function openTask(task_id){ window.open(`/task/${task_id}/view`, '_blank').focus(); } @@ -244,7 +248,7 @@ {#each users as u}
{u.name}
{#each Object.entries(project.allowed_states) as [state,name]} -
hover(ev,u.id,state)} ondragleave={e => delete highlight.user} ondrop={ev => drop(u.id,state)} > +
hover(ev,u.id,state)} ondragleave={e => delete highlight.user} ondrop={ev => drop(u.id,state)} > {#each Object.values(tasks[u.id][state]).sort(byName) as task} {#if !filter || task.name.toLowerCase().includes(filter) || (task.tags && task.tags.filter(tag => tag.toLowerCase().includes(filter)).length)} openTask(task.id)} ondragstart={ev => dragged=task} {task} tag_colors={project.tag_colors} /> diff --git a/web/src/main/resources/web/css/bloodshed-color.css b/web/src/main/resources/web/css/bloodshed-color.css index f5397fb..39a5cd6 100644 --- a/web/src/main/resources/web/css/bloodshed-color.css +++ b/web/src/main/resources/web/css/bloodshed-color.css @@ -186,8 +186,6 @@ tr:hover .taglist .tag button { border-color: 1px solid; } - - .warn { background-color: yellow; color: black; @@ -201,6 +199,7 @@ tr:hover .taglist .tag button { .task.p10 .name{ color: #ffa736; } +.kanban .state_custom .box.p10, .kanban .state_20 .box.p10, .kanban .state_40 .box.p10{ border: 5px solid #ffa736; @@ -209,6 +208,7 @@ tr:hover .taglist .tag button { .task.p20 .name{ color: #ff8f00; } +.kanban .state_custom .box.p20, .kanban .state_20 .box.p20, .kanban .state_40 .box.p20{ border: 5px solid #ff8f00; @@ -217,6 +217,7 @@ tr:hover .taglist .tag button { .task.p30 .name{ color: #ff7b06; } +.kanban .state_custom .box.p30, .kanban .state_20 .box.p30, .kanban .state_40 .box.p30{ border: 5px solid #ff7b06; @@ -225,6 +226,7 @@ tr:hover .taglist .tag button { .task.p40 .name{ color: #ff6306; } +.kanban .state_custom .box.p40, .kanban .state_20 .box.p40, .kanban .state_40 .box.p40{ border: 5px solid #ff6306; @@ -233,6 +235,7 @@ tr:hover .taglist .tag button { .task.p50 .name{ color: #ff4c06; } +.kanban .state_custom .box.p50, .kanban .state_20 .box.p50, .kanban .state_40 .box.p50{ border: 5px solid #ff4c06; @@ -241,6 +244,7 @@ tr:hover .taglist .tag button { .task.p60 .name{ color: #ff3506; } +.kanban .state_custom .box.p60, .kanban .state_20 .box.p60, .kanban .state_40 .box.p60{ border: 5px solid #ff3506; @@ -249,6 +253,7 @@ tr:hover .taglist .tag button { .task.p70 .name{ color: #ff0000; } +.kanban .state_custom .box.p70, .kanban .state_20 .box.p70, .kanban .state_40 .box.p70{ border: 5px solid #ff0000; @@ -257,6 +262,7 @@ tr:hover .taglist .tag button { .task.p80 .name{ color: #df153b; } +.kanban .state_custom .box.p80, .kanban .state_20 .box.p80, .kanban .state_40 .box.p80{ border: 5px solid #df153b; @@ -266,6 +272,7 @@ tr:hover .taglist .tag button { background-color: #991c34; color: #ffff00; } +.kanban .state_custom .box.p90, .kanban .state_20 .box.p90, .kanban .state_40 .box.p90{ border: 5px solid #991c34; @@ -275,6 +282,7 @@ tr:hover .taglist .tag button { background-color: #733440; color: #ffff00; } +.kanban .state_custom .box.p100, .kanban .state_20 .box.p100, .kanban .state_40 .box.p100{ border: 5px solid #733440; @@ -282,4 +290,4 @@ tr:hover .taglist .tag button { .vcard span.inactive{ color: #222200; -} \ No newline at end of file +} diff --git a/web/src/main/resources/web/css/default-color.css b/web/src/main/resources/web/css/default-color.css index ad58214..62599e4 100644 --- a/web/src/main/resources/web/css/default-color.css +++ b/web/src/main/resources/web/css/default-color.css @@ -176,7 +176,6 @@ tr:hover .taglist .tag button { background: black; } - .version a.selected{ border-color: orange; } @@ -194,6 +193,7 @@ tr:hover .taglist .tag button { .task.p10 .name{ color: #fff066; } +.kanban .state_custom .box.p10, .kanban .state_20 .box.p10, .kanban .state_40 .box.p10{ border: 5px solid #fff066; @@ -202,6 +202,7 @@ tr:hover .taglist .tag button { .task.p20 .name{ color: #ffe706; } +.kanban .state_custom .box.p20, .kanban .state_20 .box.p20, .kanban .state_40 .box.p20{ border: 5px solid #ffe706; @@ -210,6 +211,7 @@ tr:hover .taglist .tag button { .task.p30 .name{ color: #ffa906; } +.kanban .state_custom .box.p30, .kanban .state_20 .box.p30, .kanban .state_40 .box.p30{ border: 5px solid #ffa906; @@ -218,6 +220,7 @@ tr:hover .taglist .tag button { .task.p40 .name{ color: #ff8606; } +.kanban .state_custom .box.p40, .kanban .state_20 .box.p40, .kanban .state_40 .box.p40{ border: 5px solid #ff8606; @@ -226,6 +229,7 @@ tr:hover .taglist .tag button { .task.p50 .name{ color: #ff4c06; } +.kanban .state_custom .box.p50, .kanban .state_20 .box.p50, .kanban .state_40 .box.p50{ border: 5px solid #ff4c06; @@ -234,6 +238,7 @@ tr:hover .taglist .tag button { .task.p60 .name{ color: #ff3506; } +.kanban .state_custom .box.p60, .kanban .state_20 .box.p60, .kanban .state_40 .box.p60{ border: 5px solid #ff3506; @@ -242,6 +247,7 @@ tr:hover .taglist .tag button { .task.p70 .name{ color: #ff0000; } +.kanban .state_custom .box.p70, .kanban .state_20 .box.p70, .kanban .state_40 .box.p70{ border: 5px solid #ff0000; @@ -250,6 +256,7 @@ tr:hover .taglist .tag button { .task.p80 .name{ color: #df153b; } +.kanban .state_custom .box.p80, .kanban .state_20 .box.p80, .kanban .state_40 .box.p80{ border: 5px solid #df153b; @@ -259,6 +266,7 @@ tr:hover .taglist .tag button { background-color: #991c34; color: #ffff00; } +.kanban .state_custom .box.p90, .kanban .state_20 .box.p90, .kanban .state_40 .box.p90{ border: 5px solid #991c34; @@ -268,6 +276,7 @@ tr:hover .taglist .tag button { background-color: #733440; color: #ffff00; } +.kanban .state_custom .box.p100, .kanban .state_20 .box.p100, .kanban .state_40 .box.p100{ border: 5px solid #733440; diff --git a/web/src/main/resources/web/css/winter-color.css b/web/src/main/resources/web/css/winter-color.css index 34a367b..1cf6c74 100644 --- a/web/src/main/resources/web/css/winter-color.css +++ b/web/src/main/resources/web/css/winter-color.css @@ -179,6 +179,7 @@ tr:hover .taglist .tag button { .task.p10 .name{ color: #c9fbb2; } +.kanban .state_custom .box.p10, .kanban .state_20 .box.p10, .kanban .state_40 .box.p10{ border: 5px solid #c9fbb2; @@ -187,6 +188,7 @@ tr:hover .taglist .tag button { .task.p20 .name{ color: #cbff57; } +.kanban .state_custom .box.p20, .kanban .state_20 .box.p20, .kanban .state_40 .box.p20{ border: 5px solid #cbff57; @@ -195,6 +197,7 @@ tr:hover .taglist .tag button { .task.p30 .name{ color: #dfff44; } +.kanban .state_custom .box.p30, .kanban .state_20 .box.p30, .kanban .state_40 .box.p30{ border: 5px solid #dfff44; @@ -203,6 +206,7 @@ tr:hover .taglist .tag button { .task.p40 .name{ color: #f8ff29; } +.kanban .state_custom .box.p40, .kanban .state_20 .box.p40, .kanban .state_40 .box.p40{ border: 5px solid #f8ff29; @@ -211,6 +215,7 @@ tr:hover .taglist .tag button { .task.p50 .name{ color: #ffdb1b; } +.kanban .state_custom .box.p50, .kanban .state_20 .box.p50, .kanban .state_40 .box.p50{ border: 5px solid #ffdb1b; @@ -219,6 +224,7 @@ tr:hover .taglist .tag button { .task.p60 .name{ color: #ff9309; } +.kanban .state_custom .box.p60, .kanban .state_20 .box.p60, .kanban .state_40 .box.p60{ border: 5px solid #ff9309; @@ -227,6 +233,7 @@ tr:hover .taglist .tag button { .task.p70 .name{ color: #ff6c00; } +.kanban .state_custom .box.p70, .kanban .state_20 .box.p70, .kanban .state_40 .box.p70{ border: 5px solid #ff6c00; @@ -235,6 +242,7 @@ tr:hover .taglist .tag button { .task.p80 .name{ color: #ff3c00; } +.kanban .state_custom .box.p80, .kanban .state_20 .box.p80, .kanban .state_40 .box.p80{ border: 5px solid #ff3c00; @@ -243,6 +251,7 @@ tr:hover .taglist .tag button { .task.p90 .name{ color: #ff0000; } +.kanban .state_custom .box.p90, .kanban .state_20 .box.p90, .kanban .state_40 .box.p90{ border: 5px solid #ff0000; @@ -251,6 +260,7 @@ tr:hover .taglist .tag button { .task.p100 .name{ color: #ff0048; } +.kanban .state_custom .box.p100, .kanban .state_20 .box.p100, .kanban .state_40 .box.p100{ border: 5px solid #ff0048; @@ -258,4 +268,4 @@ tr:hover .taglist .tag button { .vcard span.inactive{ color: #bbb; -} \ No newline at end of file +}