createDataProcessor

сreates a new dataProcessor instance and attaches it to gantt

object createDataProcessor(string|object config);

Parameters

configstring|objectdataProcessor configuration object

Returns

objectthe dataProcessor object

Example

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

Related samples

Details

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

1. {url:string, mode:string} object specifying one of the predefined modes of sending data

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

where:

  • url - the URL to the server side
  • mode - the mode of sending data to the server: "JSON" | "REST-JSON" | "JSON" | "POST" | "GET"

2. Or a custom router object:

var dp = gantt.createDataProcessor(router);

where the router is either a function:

// entity - "task"|"link"
// 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;
   }
});

or an object of the following structure:

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.

See also
Back to top