Работа с сервером

Загрузка данных

Gantt ожидает бэкенд сервер для загрузки задач и ссылок. Также виджет подгрузит ресурсы, категории и назначения, если выставлено свойсто resources: true Передайте ссылку на сервер через параметр url:

webix.ui({
    view: "gantt",
    url:"http://localhost:3200/"
});

Gantt загружает и сохраняет данные, используя следующие URL:

  • tasks (e.g. http://localhost:3200/tasks) - получение и сохранение задач
  • links (e.g. http://localhost:3200/links) - получение и сохранение ссылок.
  • resources (e.g. http://localhost:3200/resources) - получение ресурсов
  • categories (e.g. http://localhost:3200/categories) - получение категорий
  • assignments (e.g. http://localhost:3200/assignments) - получение и сохранение назначений

Вы можете скачать готовый бэкенд для Gantt.

Если у вас нет бэкенд сервера, вы можете кастомизировать методы сервиса Backend и предоставлять клиентские данные в виде промиса.

Сервис Backend

Сервис Backend это серверная модель, у которой есть методы для запросов на сервер. Они вызываются сервисом Operations при необходимости загрузки или сохранения данных.

Ниже вы найдёте полный список методов.

Как кастомизировать модель Backend

Чтобы менять запросы, получать и обрабатывать ответные данные вы можете:

  • создать свой бэкенд сервис и наследовать его от сервиса по умолчанию;
  • определять и переопределять методы;
  • использовать произвольный бэкенд сервис через свойство override.
class MyBackend extends gantt.services.Backend {
    // новые методы 
}
 
webix.ui({
    view: "gantt",
    url:"http://localhost:3200/",
    override: new Map([[gantt.services.Backend, MyBackend]]),
});

Как изменить запрос на сервер

Чвы можете отправлять AJAX запросы на ваш сервер с помощью необходимых URL, напр.:

Добавляем ссылку

class MyBackend extends gantt.services.Backend {
  addLink(link) {
    return webix.ajax("//localhost:3200/links", link)
      .then(res => res.json());
  }
}

Обработка клиентских данных

Если вы хотите передать в Gantt клиентские данные, вам необходимо вернуть промис внутри следующих методов:

Client-side data

class MyBackend extends gantt.services.Backend {
    tasks() {
        return webix.promise.resolve(tasks);
    }
    links() {
        return webix.promise.resolve(links);
    }
}

Related sample:  Gantt:Local Data

Смотрите требуемый формат входящих данных.

Методы сервиса Backend

В этой секции вы найдёте детальное описание следующих методов:

url(path)

Используется другими методами для подготовки URL к запросам.

Parameters:

  • path (string) - относительный путь.

Returns: абсолютный путь.

tasks()

Вызывается при инициализации и запрашивает задачи.

Returns: промис с массивом задач.

Request:

GET http://localhost:3000/tasks

Содержит сегмент URL.

Response:

Сервер возвращает массив объектов задач.

[
  {
    "text":"Project A","start_date":"2018-06-13 00:00:00",
    "duration":"1","parent":"0","progress":0.5,
    "notes":"Weekly meeting required", "type": "project",
    "open":true,"end_date":"2018-06-14 00:00:00","id":"1"
  },
  // ...
]

Вызывается при инициализации и запрашивает ссылки.

Returns: промис с массивом ссылок.

Request:

GET http://localhost:3000/links

Response:

Сервер возвращает массив с объектами ссылок.

[
  {"source":"1.2","target":"2","type":1},
  // ...
]

addTask(obj, index, parent)

Добавляет новую задачу.

Parameters:

  • obj (object) - объект данных задачи
  • index (number) - позиция узла в ветке/корне
  • parent (number) - ID родительской задачи.

Returns: промис с объектом ID новой задачи.

Request:

POST http://localhost:3200/tasks
Form Data
text: Server intergration
start_date: 2018-06-12 00:00:00
end_date: 2018-06-13 00:00:00
duration: 1
progress: 0
index: 0
parent: 2

Response:

Сервер возвращает объект с ID новой задачи:

{ "id": "thfd8ghfdhtr1"}

updateTask(id, obj, split)

Обновляет указанную задачу.

Parameters:

  • id (number, string) - ID задачи
  • obj (object) - объект с новыми данными.
  • split (boolean) - определяет, разделена ли задача.

Returns: промис с пустым объектом.

Request:

PUT http://localhost:3200/tasks/0Nm5SeYIM0qUfmRv
Form Data
progress: 0
parent: 2
text: DB implementation
start_date: 2018-06-12 00:00:00
end_date: 2018-06-14 00:00:00
duration: 2
id: 0Nm5SeYIM0qUfmRv
 
// если пользователи помечает задачу как разделённую
PUT http://localhost:3200/tasks/{id}/split

Если параметр split установлен в значении true, то данные параметра obj передаются новому дочернему элементу а не обновляемой задаче. Обновляемая зада помечается как split ( {type:"split"} ). Стоит учесть, что если разделенная таким образом задача была до этого "Вехой", необходимо указать значение 1 для ее прогресса и продолжительности.

Response:

Сервер возвращает пустой объект.

removeTask(id)

Удаляет указанную задачу.

Parameters:

  • id (number, string) - ID задачи.

Returns: промис с пустым объектом.

Request:

DELETE
http://localhost:3200/tasks/0Nm5SeYIM0qUfmRv

Response:

Сервер возвращает пустой объект.

reorderTask(id, config)

Вызывается, когда пользователь перемещает задачу в дереве.

Parameters

  • id (number, string) - ID задачи
  • config (object) - объект конфигурации операции перемещения со следующими полями:
    • parent (string, number) - ID родительской ветки
    • target (string, number) - ID элемента, на место которого перемещаем
    • mode (string) - режим перемещения. Возможные значения:
      • "first" - если задача перемещена на первую позицию (внутри родителя)
      • "before" - если задача помещена перед той, с которой она поменялась местами
      • "after" - если задача помещена после той, с которой она поменялась местами
      • "last" - если задача перемещена на последнюю позицию (внутри родителя).

Returns: промис с объектом ID перемещаемой задачи.

Request:

PUT http://localhost:3200/tasks/1.5/position
Form data
parent: 0
mode: after
target: 1.2

URL содержит URL сегменты и ID перемещаемой задачи.

Response:

Сервер возвращает объект с ID перемещаемой задачи:

{
  id:"1.5"
}

Добавляет новую ссылку.

Parameters:

  • obj (object) - объект данных ссылки.

Returns: промис с объектом ID новой ссылки.

Request:

POST http://localhost:3200/links
Form Data
source: 1.2
target: zA4TuVPD3p7DwckO
type: 0

Response:

Сервер возвращает объект ID новой ссылки:

{"id":"4znqxJbxGpA8x0U6"}

Обновляет указанную ссылку.

Parameters:

  • id (number, string) - ID ссылки
  • obj (object) - объект с новыми данными.

Returns: промис с пустым объектом.

Request:

PUT http://localhost:3200/links/3i3A6zpV07hpeKeY
Form Data
type: 1

Response:

Сервер возвращает пустой объект.

Удаляет указанную ссылку.

Parameters:

  • id (number, string) - ID ссылки.

Returns: промис с пустым объектом.

Request:

DELETE
http://localhost:3200/links/3i3A6zpV07hpeKeY

Response:

Сервер возвращает пустой объект.

addAssignment(obj)

Добавляет ресурс задаче.

Parameters:

  • obj (object) - объект с полями "task", "resource" и "unit".

Returns: промис с объектом ID ресурса задачи.

Request:

POST
http://localhost:3200/assignments
Form Data
resource: 3
value: 8
task: 1.5

Response:

Сервер возвращает объект с ID ресурса задачи.

updateAssignment(id, obj)

Обновляет указанный ресурс задачи.

Parameters:

  • id (string, number) - ID ресурса задачи
  • obj (object) - объект с полями записи.

Returns: промис с пустым объектом.

Request:

PUT
http://localhost:3200/assignments/KTGxFOOho2JLBTJt
Form Data
resource: 2

Response:

Сервер возвращает пустой объект.

removeAssignment(id)

Удаляет указанный ресурс задачи.

Parameters:

  • id (string, number) - ID ресурса задачи.

Returns: промис с пустым объектом.

Request:

DELETE
http://localhost:3200/assignments/KTGxFOOho2JLBTJt

Response:

Сервер возвращает пустой объект.

Наверх