From 3fc89f565d7db5e27099b9b28e45af53f7f972fe Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:55:18 +0100 Subject: [PATCH] feat(calendar): add tasks page for todo management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add dedicated tasks route with navigation entry and todo detail modal. đŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../components/todo/TodoDetailModal.svelte | 625 ++++++++++++++++++ .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../web/src/routes/(app)/tasks/+page.svelte | 486 ++++++++++++++ 3 files changed, 1113 insertions(+) create mode 100644 apps/calendar/apps/web/src/lib/components/todo/TodoDetailModal.svelte create mode 100644 apps/calendar/apps/web/src/routes/(app)/tasks/+page.svelte diff --git a/apps/calendar/apps/web/src/lib/components/todo/TodoDetailModal.svelte b/apps/calendar/apps/web/src/lib/components/todo/TodoDetailModal.svelte new file mode 100644 index 000000000..59b0e6ddb --- /dev/null +++ b/apps/calendar/apps/web/src/lib/components/todo/TodoDetailModal.svelte @@ -0,0 +1,625 @@ + + + + + + + + diff --git a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte index 62e8f1aab..d97272905 100644 --- a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte @@ -60,6 +60,7 @@ onclick: () => viewStore.goToToday(), }, { id: 'agenda', label: 'Agenda anzeigen', icon: 'list', href: '/agenda' }, + { id: 'tasks', label: 'Aufgaben anzeigen', icon: 'check-square', href: '/tasks' }, { id: 'settings', label: 'Einstellungen', icon: 'settings', href: '/settings' }, ]; @@ -183,6 +184,7 @@ const baseNavItems: PillNavItem[] = [ { href: '/', label: 'Kalender', icon: 'calendar' }, { href: '/agenda', label: 'Agenda', icon: 'list' }, + { href: '/tasks', label: 'Aufgaben', icon: 'check-square' }, { href: '/tags', label: 'Tags', icon: 'tag' }, { href: '/statistics', label: 'Statistiken', icon: 'bar-chart-3' }, { href: '/network', label: 'Netzwerk', icon: 'share-2' }, diff --git a/apps/calendar/apps/web/src/routes/(app)/tasks/+page.svelte b/apps/calendar/apps/web/src/routes/(app)/tasks/+page.svelte new file mode 100644 index 000000000..403dbd875 --- /dev/null +++ b/apps/calendar/apps/web/src/routes/(app)/tasks/+page.svelte @@ -0,0 +1,486 @@ + + + + Aufgaben | Kalender + + +
+ + + + + + +
+ {#if showQuickAdd} + (showQuickAdd = false)} + oncancel={() => (showQuickAdd = false)} + /> + {:else} + + {/if} +
+ + + {#if loading} + + {:else if !todosStore.serviceAvailable} +
+ +

Todo-Service ist nicht erreichbar

+

Bitte versuchen Sie es spÀter erneut

+
+ {:else if groupedItems.length === 0} +
+ +

Keine EintrÀge gefunden

+

+ {#if !showEvents && !showTodos} + Aktivieren Sie mindestens einen Filter + {:else} + Erstellen Sie eine neue Aufgabe oder Àndern Sie den Zeitraum + {/if} +

+
+ {:else} +
+ {#each groupedItems as group} +
+

+ {formatDateHeader(group.date)} + ({group.items.length}) +

+ +
+ {#each group.items as item} + {#if item.type === 'event' && item.event} + handleEventClick(item.event!.id)} + /> + {:else if item.type === 'todo' && item.todo} + handleTodoClick(item.todo!)} + /> + {/if} + {/each} +
+
+ {/each} +
+ {/if} +
+ + +{#if selectedTask} + +{/if} + +