Перейти к основному содержимому

createDataProcessor

Description

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

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

Parameters

  • config - (required) DataProcessorConfig | RouterFunction | RouterConfig - объект конфигурации для dataProcessor

Returns

  • dataProcessor - (object) - созданный экземпляр dataProcessor

Example

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

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 не обрабатывает обновления ресурсов и назначений ресурсов. Вы можете включить эту возможность с помощью отдельной конфигурации.

Change log

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