gantt-task-react/src/helpers/other-helper.ts

49 lines
1.4 KiB
TypeScript
Raw Normal View History

2020-08-11 01:16:53 +03:00
import { BarTask } from "../types/bar-task";
import { Task } from "../types/public-types";
2020-08-09 10:51:25 +03:00
export function isKeyboardEvent(
event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent
2020-08-09 10:51:25 +03:00
): event is React.KeyboardEvent {
return (event as React.KeyboardEvent).key !== undefined;
}
2020-08-11 01:16:53 +03:00
export function isMouseEvent(
event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent
): event is React.MouseEvent {
return (event as React.MouseEvent).clientX !== undefined;
}
2020-08-11 01:16:53 +03:00
export function isBarTask(task: Task | BarTask): task is BarTask {
return (task as BarTask).x1 !== undefined;
}
2021-08-09 22:21:18 +03:00
export function removeHiddenTasks(tasks: Task[]) {
const groupedTasks = tasks.filter(t => t.hideChildren);
if (groupedTasks.length > 0) {
for (let i = 0; groupedTasks.length > i; i++) {
const groupedTask = groupedTasks[i];
const children = getChildren(tasks, groupedTask);
tasks = tasks.filter(t => children.indexOf(t) === -1);
}
}
return tasks;
}
function getChildren(taskList: Task[], task: Task) {
let tasks: Task[] = [];
if (task.type !== "project") {
tasks = taskList.filter(
t => t.dependencies && t.dependencies.indexOf(task.id) !== -1
);
} else {
tasks = taskList.filter(t => t.project && t.project === task.id);
}
const taskChildren = tasks.reduce(
(children: Task[], t) =>
children.concat(children, getChildren(taskList, t)),
[]
);
tasks = tasks.concat(tasks, taskChildren);
return tasks;
}