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

62 lines
1.7 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[]) {
2021-08-11 11:28:19 +03:00
const groupedTasks = tasks.filter(
t => t.hideChildren && t.type === "project"
);
2021-08-09 22:21:18 +03:00
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);
}
2022-07-01 10:01:25 +02:00
var taskChildren: Task[] = [];
tasks.forEach(t => {
taskChildren.push(...getChildren(taskList, t));
})
2021-08-09 22:21:18 +03:00
tasks = tasks.concat(tasks, taskChildren);
return tasks;
}
2022-02-13 20:35:30 +01:00
export const sortTasks = (taskA: Task, taskB: Task) => {
const orderA = taskA.displayOrder || Number.MAX_VALUE;
const orderB = taskB.displayOrder || Number.MAX_VALUE;
if (orderA > orderB) {
return 1;
} else if (orderA < orderB) {
return -1;
} else {
return 0;
}
};