Files
react-gantt/demos/cases/GanttProvider.jsx
Marta Kowalska a34aa9ad0a v2.4.5
2026-01-15 09:02:59 +00:00

52 lines
1.2 KiB
JavaScript

import { useState, useEffect, useCallback, useMemo } from 'react';
import { RestDataProvider } from '@svar-ui/gantt-data-provider';
import { Gantt, ContextMenu, Editor } from '../../src';
export default function GanttProvider() {
const restProvider = useMemo(
() => new RestDataProvider('https://master--svar-gantt-go--dev.webix.io'),
[],
);
const [api, setApi] = useState();
const [tasks, setTasks] = useState();
const [links, setLinks] = useState();
useEffect(() => {
restProvider.getData().then(({ tasks: t, links: l }) => {
setTasks(t);
setLinks(l);
});
}, [restProvider]);
const init = useCallback(
(api) => {
setApi(api);
api.setNext(restProvider);
api.on('request-data', (ev) => {
restProvider.getData(ev.id).then(({ tasks, links }) => {
api.exec('provide-data', {
id: ev.id,
data: {
tasks,
links,
},
});
});
});
},
[restProvider],
);
return (
<>
<ContextMenu api={api}>
<Gantt init={init} tasks={tasks} links={links} />
</ContextMenu>
{api && <Editor api={api} />}
</>
);
}