-
Notifications
You must be signed in to change notification settings - Fork 6
/
GanttBackend.js
44 lines (37 loc) · 1.17 KB
/
GanttBackend.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import React, { useEffect, useState, useRef } from "react";
import Gantt from "@dhtmlx/trial-react-gantt";
import { getData } from "./common/data";
import { RestDataProvider } from "@dhtmlx/gantt-data-provider";
const { columns, scales } = getData();
const url = "https://docs.dhtmlx.com/gantt-backend";
// eslint-disable-next-line
const useMount = (fun) => useEffect(fun, []);
export default function GanttBackend({ cellHeight, borders }) {
const [tasks, setTasks] = useState([]);
const [links, setLinks] = useState([]);
const server = useRef(null);
const store = useRef(null);
useMount(() => {
const s = new RestDataProvider(url, {
task: (id, obj) => store.current.updateTask(id, obj, true),
link: (id, obj) => store.current.updateLink(id, obj, true),
});
s.getData().then((data) => {
setTasks(data.tasks);
setLinks(data.links);
});
server.current = s;
});
return (
<Gantt
cellHeight={cellHeight}
borders={borders}
tasks={tasks}
links={links}
scales={scales}
columns={columns}
save={(data) => server.current.saveData(data)}
store={(ev) => (store.current = ev)}
/>
);
}