provide-data
Description
Provides new data for a branchYou should call this action to provide data for a branch.
Usage
"provide-data": ({
id: string | number,
data: {
tasks?: ITask[],
links?: ILInk[],
assignments?: IAssignment[]
};
}) => boolean|void;
Parameters
id- (required) the ID of the task for which data should be provideddata- (required) new data provided for a branch:tasks- (optional) array of child taskslinks- (optional) array of links belonging to the branchassignments- (optional) array of assignments for child tasks; merged into the existing assignments collection. Only takes effect when Gantt has been initialised with anassignmentsarray (PRO Edition).
info
For handling the actions you can use the Event Bus methods
Example
In the example below we listen to the request-data action with the help of the api.on() method, fetch the tasks branch data from the server and parse to the component calling the provide-data action.
import { useState, useEffect } from "react";
import { Gantt } from "@svar-ui/react-gantt";
const server = "https://some-server";
export default function App() {
const [tasks, setTasks] = useState([]);
const [links, setLinks] = useState([]);
useEffect(() => {
Promise.all([
fetch(server + "/tasks").then(res => res.json()),
fetch(server + "/links").then(res => res.json()),
]).then(([t, l]) => {
setTasks(t);
setLinks(l);
});
}, []);
function init(api) {
api.on("request-data", ev => {
Promise.all([
fetch(`${server}/tasks/${ev.id}`).then(res => res.json()),
fetch(`${server}/links/${ev.id}`).then(res => res.json()),
]).then(([tasks, links]) => {
api.exec("provide-data", {
id: ev.id,
data: {
tasks,
links,
},
});
});
});
}
return <Gantt init={init} tasks={tasks} links={links} />;
}
When the project uses resources, forward the matching assignments alongside the tasks and links so that resource columns and resource-load reflect the newly loaded branch:
api.on("request-data", ev => {
restProvider
.getData(ev.id, { assignments: true })
.then(({ tasks, links, assignments }) => {
api.exec("provide-data", {
id: ev.id,
data: { tasks, links, assignments },
});
});
});
Related articles: