Skip to main content

createDataProcessor

Description​

Creates a new dataProcessor instance and attaches it to gantt

createDataProcessor: (config: DataProcessorConfig | RouterFunction | RouterConfig) => any

Parameters​

  • config - (required) DataProcessorConfig | RouterFunction | RouterConfig - dataProcessor configuration object

Returns​

  • dataProcessor - (object) - the dataProcessor object

Example​

var dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
deleteAfterConfirmation: true
});

Details​

The method can take one of the following types of parameters:

  • DataProcessorConfig - (object) - object specifying one of the predefined modes of sending the data
    • url - (string) - the URL to the server side
    • mode? - (string) - optional, the mode of sending data to the server: "JSON" | "REST-JSON" | "JSON" | "POST" | "GET"
    • deleteAfterConfirmation? - (boolean) - optional, defines whether the task must be deleted from the gantt only after a successful response from the server. Dependency links and subtasks will be deleted after the deletion of the parent task is confirmed.
var dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
deleteAfterConfirmation: true
});
  • RouterFunction (entity, action, data, id): Promise | object | void - the router function to process changes in Gantt
    • entity - (string) - the name of the relevant entity. Possible values are: "task"|"link"|"resource"|"assignment"
    • action - (string) - the name of the relevant action. Possible values are: "create"|"update"|"delete"
    • data - (Task | Link | ResourceAssignment | CustomObject) - the processed object
    • id - (string | number) - the id of a processed object
// entity - "task"|"link"|"resource"|"assignment"
// action - "create"|"update"|"delete"
// data - an object with task or link data
// id – the id of a processed object (task or link)
var dp = gantt.createDataProcessor(function(entity, action, data, id) {
switch(action) {
case "create":
return gantt.ajax.post(
server + "/" + entity,
data
);
break;
case "update":
return gantt.ajax.put(
server + "/" + entity + "/" + id,
data
);
break;
case "delete":
return gantt.ajax.del(
server + "/" + entity + "/" + id
);
break;
}
});
  • RouterConfig - (object) - the router configuration for different entities
    • task? - (RouterForEntity) - the router object for tasks
    • link? - (RouterForEntity) - the router object for links
    • resource? - (RouterForEntity) - the router object for resources
    • assignment? - (RouterForEntity) - the router object for assignments

The RouterForEntity object has the following properties:

  • create (data): Promise - a function to process adding of items
    • data - (Task | Link | ResourceAssignment | CustomObject) - the processed item
  • update (data, id): Promise - a function to process updating of items
    • data - (Task | Link | ResourceAssignment | CustomObject) - the processed item
    • id - (string | number) - the id of a processed item
  • delete (id): Promise - a function to process deleting of items
    • id - (string | number) - the id of a processed item
var dp = gantt.createDataProcessor({ 
task: {
create: function(data) {},
update: function(data, id) {},
delete: function(id) {}
},
link: {
create: function(data) {},
update: function(data, id) {},
delete: function(id) {}
}
});

All the functions of the router object should return either a Promise or a data response object. This is needed for the dataProcessor to apply the database id and to hook onAfterUpdate event of the data processor.

router = function(entity, action, data, id) {
return new gantt.Promise(function(resolve, reject) {
// … some logic
return resolve({tid: databaseId});
});
}

Thus you can use DataProcessor for saving data in localStorage, or any other storage which is not linked to a certain URL, or in case if there are two different servers (URLs) responsible for creation and deletion of objects.

Saving Resources and Resource Assignments​

By default, the DataProcessor doesn't receive updates of resources and resource assignments. However, you can enable this feature via a separate config.

Change log​

  • the deleteAfterConfirmation parameter is added in v8.0
Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.