createDataProcessor

creates a new dataProcessor instance and attaches it to gantt

object createDataProcessor(DataProcessorConfig | RouterFunction | RouterConfig config);
configDataProcessorConfig | RouterFunction | RouterConfigdataProcessor configuration object
objectthe dataProcessor object

Example

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

Related samples

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 - 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.

See also
Change log

the deleteAfterConfirmation parameter is added in v8.0

Back to top