feat: add dashboard and commands
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { Task } from "@/model/task";
|
||||
import { filterTasks, type TaskFilter } from "./filterTasks";
|
||||
import { groupTasks, type GroupBy, 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 ?? "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 };
|
||||
}
|
||||
Reference in New Issue
Block a user