feat: add dashboard and commands
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { Task, TaskPriority, TaskStatus } from "@/model/task";
|
||||
|
||||
export type TaskFilter = {
|
||||
statuses?: TaskStatus[];
|
||||
priorities?: TaskPriority[];
|
||||
query?: string;
|
||||
tags?: string[];
|
||||
};
|
||||
|
||||
export function filterTasks(tasks: Task[], filter: TaskFilter): Task[] {
|
||||
const statuses = filter.statuses;
|
||||
const priorities = filter.priorities;
|
||||
const tags = filter.tags;
|
||||
const query = filter.query?.trim().toLowerCase() ?? "";
|
||||
|
||||
return tasks.filter((task) => {
|
||||
if (statuses && statuses.length > 0 && !statuses.includes(task.status)) {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
priorities &&
|
||||
priorities.length > 0 &&
|
||||
!priorities.includes(task.priority)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
if (tags && tags.length > 0) {
|
||||
const hasAll = tags.every((tag) => task.tags.includes(tag));
|
||||
if (!hasAll) return false;
|
||||
}
|
||||
if (query) {
|
||||
const inTitle = task.title.toLowerCase().includes(query);
|
||||
const inDescription = task.description.toLowerCase().includes(query);
|
||||
if (!inTitle && !inDescription) return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user