'use client'
import React from 'react'
import { Toast } from './_components/Toast'
import { CompleteModal } from './_components/CompleteModal'
import { SkipModal } from './_components/SkipModal'
import { TaskFormModal } from './_components/TaskFormModal'
import { TaskDetailModal } from './_components/TaskDetailModal'
import { CalendarView } from './_components/CalendarView'
import {
CATEGORY_LABELS, CATEGORY_COLORS, STATUS_LABELS, STATUS_COLORS,
STATUS_ICONS, FREQUENCY_LABELS, formatDate, dueLabel, dueLabelColor,
} from './_components/types'
import { useProcessTasks } from './_hooks/useProcessTasks'
export default function ProcessTasksPage() {
const p = useProcessTasks()
return (
Compliance Process Manager
Wiederkehrende Compliance-Aufgaben verwalten und nachverfolgen
{[{ key: 'overview' as const, label: 'Uebersicht' }, { key: 'all' as const, label: 'Alle Aufgaben' }, { key: 'calendar' as const, label: 'Kalender' }].map(tab => (
))}
{p.activeTab === 'overview' && (
{p.stats ? (
Ueberfaellig
{p.stats.overdue_count}
Sofortiger Handlungsbedarf
Diese Woche
{p.stats.due_7_days}
Naechste 7 Tage
Diesen Monat
{p.stats.due_30_days}
Naechste 30 Tage
Erledigt
{p.stats.by_status.completed || 0}
von {p.stats.total} Aufgaben
) : (
{[1, 2, 3, 4].map(i => (
))}
)}
{p.stats && Object.keys(p.stats.by_category).length > 0 && (
Nach Kategorie
{Object.entries(p.stats.by_category).map(([cat, count]) => (
{CATEGORY_LABELS[cat] || cat}: {count}
))}
)}
Naechste faellige Aufgaben
{p.upcomingTasks.length === 0 ? (
Keine Aufgaben in den naechsten 30 Tagen faellig.
{p.stats && p.stats.total === 0 && (
)}
) : (
{p.upcomingTasks.slice(0, 5).map(t => (
p.setDetailTask(t)}>
{STATUS_ICONS[t.status]}
{t.title}
{CATEGORY_LABELS[t.category]}
{FREQUENCY_LABELS[t.frequency]}
{dueLabel(t.next_due_date)}
{formatDate(t.next_due_date)}
))}
)}
)}
{p.activeTab === 'all' && (
{p.totalTasks} Aufgaben
{p.loading ? (
{[1, 2, 3, 4, 5].map(i => (
))}
) : p.tasks.length === 0 ? (
Keine Aufgaben gefunden
Erstellen Sie eine neue Aufgabe oder laden Sie die Standard-Aufgaben.
) : (
| Status |
Titel |
Kategorie |
Frequenz |
Faellig am |
Zustaendig |
Aktionen |
{p.tasks.map(t => (
p.setDetailTask(t)}>
|
{STATUS_ICONS[t.status]}
|
{t.title}
{t.task_code}
|
{CATEGORY_LABELS[t.category] || t.category}
|
{FREQUENCY_LABELS[t.frequency] || t.frequency} |
{formatDate(t.next_due_date)}
{dueLabel(t.next_due_date)}
|
{t.assigned_to || '\u2014'} |
e.stopPropagation()}>
{t.status !== 'completed' && (
)}
{t.status !== 'completed' && (
)}
|
))}
)}
{p.totalPages > 1 && (
Seite {p.page + 1} von {p.totalPages}
)}
)}
{p.activeTab === 'calendar' && (
arr.findIndex(x => x.id === t.id) === i)} />
)}
{p.showForm &&
p.setShowForm(false)} onSave={p.handleCreate} />}
{p.editTask && (
p.setEditTask(null)} onSave={p.handleUpdate} />
)}
{p.detailTask && (
p.setDetailTask(null)}
onComplete={t => { p.setDetailTask(null); p.setCompleteTask(t) }}
onSkip={t => { p.setDetailTask(null); p.setSkipTask(t) }}
onEdit={t => { p.setDetailTask(null); p.setEditTask(t) }}
onDelete={p.handleDelete} />
)}
{p.completeTask && (
p.setCompleteTask(null)} onComplete={p.handleComplete} />
)}
{p.skipTask && (
p.setSkipTask(null)} onSkip={p.handleSkip} />
)}
{p.toast && p.setToast(null)} />}
)
}