Files
xboct-flow/src/dashboard/buildDashboardView.ts
T

33 lines
857 B
TypeScript

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 };
}