diff --git a/frontend/src/routes/project/Kanban.svelte b/frontend/src/routes/project/Kanban.svelte index bf1687e..e83f87b 100644 --- a/frontend/src/routes/project/Kanban.svelte +++ b/frontend/src/routes/project/Kanban.svelte @@ -19,6 +19,8 @@ let router = useTinyRouter(); let states = $state(null); let tasks = $state({}); + let filter_input = $state(''); + let filter = $derived(filter_input.toLowerCase()); let users = {}; let columns = $derived(states?Object.keys(states).length+1:1); @@ -184,6 +186,10 @@ {#if ready}
+ + + {t('filter')} +
{t('user')}
{#if states} {#each Object.entries(states) as [sid,state]} @@ -196,7 +202,9 @@
hover(ev,uid,state)} ondrop={ev => drop(uid,state)} > {#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} /> + {/if} {/each} {/if}
diff --git a/frontend/src/routes/tags/TagList.svelte b/frontend/src/routes/tags/TagList.svelte index 8dd53b8..6a2e22e 100644 --- a/frontend/src/routes/tags/TagList.svelte +++ b/frontend/src/routes/tags/TagList.svelte @@ -22,6 +22,7 @@ if (resp.ok){ tag = await resp.text(); tags.push(tag); + tags = tags.sort(); } else { error = await resp.text(); } @@ -49,6 +50,7 @@ const resp = await fetch(url,{credentials:'include'}); if (resp.ok) { tags = await resp.json(); + tags = tags.sort(); } else { error = await resp.text(); } diff --git a/translations/src/main/resources/de.json b/translations/src/main/resources/de.json index fa7f793..620fc8e 100644 --- a/translations/src/main/resources/de.json +++ b/translations/src/main/resources/de.json @@ -70,6 +70,7 @@ "failed": "fehlgeschlagen", "files": "Dateien", + "filter": "Filter", "footer": "Fuß-Text", "foreign_id": "externe Kennung", "forgot_pass" : "Password vergessen?", diff --git a/web/src/main/resources/web/css/default.css b/web/src/main/resources/web/css/default.css index f33d3bb..ec7b651 100644 --- a/web/src/main/resources/web/css/default.css +++ b/web/src/main/resources/web/css/default.css @@ -198,6 +198,12 @@ textarea{ z-index: 20; } +.kanban .filter{ + position: absolute; + top: 60px; + right: 20px; +} + .project th, .task th{ text-align: right;