import { Task } from "@/model/task"; import { filterTasks, type TaskFilter } from "./filterTasks"; import { GroupBy } from "./groupBy"; import { groupTasks, type TaskGroup } from "./groupTasks"; export type DashboardViewOptions = { filter?: TaskFilter; groupBy?: GroupBy; selectedId?: string; }; export type DashboardView = { visibleTasks: Task[]; groups: TaskGroup[]; selected: Task | undefined; }; export function buildDashboardView( tasks: Task[], options: DashboardViewOptions = {}, ): DashboardView { const filter = options.filter ?? {}; const groupBy = options.groupBy ?? GroupBy.NONE; const visibleTasks = filterTasks(tasks, filter); const groups = groupTasks(visibleTasks, groupBy); const selected = options.selectedId ? tasks.find((t) => t.id === options.selectedId) : undefined; return { visibleTasks, groups, selected }; }