createDataProcessor

Создаёт новый экземпляр dataProcessor и связывает его с gantt chart

object createDataProcessor(DataProcessorConfig | RouterFunction | RouterConfig config);
configDataProcessorConfig | RouterFunction | RouterConfigобъект конфигурации для dataProcessor
objectсозданный экземпляр dataProcessor

Example

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

Related samples

Details

Этот метод принимает один из следующих типов параметров:

  • DataProcessorConfig - (object) - объект, задающий один из предустановленных режимов отправки данных
    • url - (string) - URL сервера
    • mode? - (string) - необязательный параметр, определяет способ отправки данных: "JSON" | "REST-JSON" | "JSON" | "POST" | "GET"
    • deleteAfterConfirmation? - (boolean) - необязательный параметр, определяет, будет ли задача удалена из gantt только после подтверждения удаления сервером. Зависимости и подзадачи удаляются после подтверждения удаления родительской задачи.
var dp = gantt.createDataProcessor({
   url: "/api",
   mode: "REST",
   deleteAfterConfirmation: true
});
  • RouterFunction (entity, action, data, id): Promise | object | void - функция роутинга для обработки изменений в Gantt chart
    • entity - (string) - имя сущности, например "task", "link", "resource" или "assignment"
    • action - (string) - тип действия: "create", "update" или "delete"
    • data - (Task | Link | ResourceAssignment | CustomObject) - обрабатываемый объект
    • id - (string | number) - id обрабатываемого объекта
// entity - "task"|"link"|"resource"|"assignment"
// action - "create"|"update"|"delete"
// data - объект с данными задачи или связи
// id – id обрабатываемого объекта (задачи или связи)
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) - объект конфигурации роутеров для разных сущностей
    • task? - (RouterForEntity) - роутер для задач
    • link? - (RouterForEntity) - роутер для связей
    • resource? - (RouterForEntity) - роутер для ресурсов
    • assignment? - (RouterForEntity) - роутер для назначений

Объект RouterForEntity включает следующие методы:

  • create (data): Promise - функция для обработки добавления элементов
    • data - (Task | Link | ResourceAssignment | CustomObject) - добавляемый элемент
  • update (data, id): Promise - функция для обработки обновления элементов
    • data - (Task | Link | ResourceAssignment | CustomObject) - обновляемый элемент
    • id - (string | number) - id элемента
  • delete (id): Promise - функция для обработки удаления элементов
    • id - (string | number) - id элемента
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) {}
   }
});

Все функции роутеров должны возвращать либо Promise, либо объект с ответом данных. Это позволяет dataProcessor обновлять id в базе данных и вызывать событие onAfterUpdate.

router = function(entity, action, data, id) {
    return new gantt.Promise(function(resolve, reject) {
        // … некоторая логика
        return resolve({tid: databaseId});
    });
}

Такой подход позволяет использовать DataProcessor для сохранения данных в localStorage или другое хранилище, не привязанное к конкретному URL, либо когда разные серверы обрабатывают создание и удаление объектов.

Сохранение ресурсов и назначений ресурсов

По умолчанию DataProcessor не обрабатывает обновления ресурсов и назначений ресурсов. Вы можете включить эту возможность с помощью отдельной конфигурации.

See also
Change log

опция deleteAfterConfirmation была добавлена в v8.0

К началу