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

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

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

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

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

  • tasks (напр. http://localhost:3200/tasks) - получение и сохранение задач
  • links (напр. http://localhost:3200/links) - получение и сохранение ссылок
  • resources (напр. http://localhost:3200/resources) - получение ресурсов
  • categories (напр. http://localhost:3200/categories) - получение категорий
  • assignments (напр. 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 клиентские данные, вам необходимо вернуть промис внутри следующих методов:

Клиентские данные

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 к запросам.

Параметры:

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

Возвращает: абсолютный путь.

tasks()

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

Возвращает: промис с массивом задач.

Запрос:

GET http://localhost:3000/tasks

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

Ответ:

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

[
  {
    "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":1,"end_date":"2018-06-14 00:00:00","id":"1"
  },
  // ...
]

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

Возвращает: промис с массивом ссылок.

Запрос:

GET http://localhost:3000/links

Ответ:

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

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

resources()

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

Возвращает: промис с массивом ресурсов.

Запрос:

GET http://localhost:3000/resources

Ответ:

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

[
  {
    "name": "Leonard", "category_id": "1", "id": "1",
    "avatar": "remote/image", "unit": "hour"
  },
  // ...
]

calendars()

Вызывается при инициализации и запрашивает календари ресурсов, если включена опция resourceCalendars.

Возвращает: промис с массивом календарей ресурсов.

Запрос:

GET http://localhost:3000/calendars

Ответ:

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

[
  { "id": "1", "weekDays": "1,2,3,4", "holidays": "2021-06-07" },
  // ...
]

categories()

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

Возвращает: промис с массивом данных категорий.

Запрос:

GET http://localhost:3000/categories

Ответ:

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

[
  { "name": "Design", "unit": "hour", "id": "1" },
  // ...
]

assignments()

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

Возвращает: промис с массивом назначений ресурсов задачам.

Запрос:

GET http://localhost:3000/assignments

Ответ:

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

[
  { "task": "1.1", "resource": "8", "value": 8, "id": "1" },
  // ...
]

addTask(obj, index, parent)

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

Параметры:

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

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

Запрос:

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

Ответ:

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

{ "id": "thfd8ghfdhtr1"}

updateTask(id, obj, split)

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

Параметры:

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

Возвращает: промис с пустым объектом.

Запрос:

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 для ее прогресса и продолжительности.

Ответ:

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

removeTask(id)

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

Параметры:

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

Возвращает: промис с пустым объектом.

Запрос:

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

Ответ:

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

reorderTask(id, config)

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

Parameters

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

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

Запрос:

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

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

Ответ:

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

{
  id:"1.5"
}

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

Параметры:

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

Возвращает: промис с объектом ID новой ссылки.

Запрос:

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

Ответ:

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

{"id":"4znqxJbxGpA8x0U6"}

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

Параметры:

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

Возвращает: промис с пустым объектом.

Запрос:

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

Ответ:

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

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

Параметры:

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

Возвращает: промис с пустым объектом.

Запрос:

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

Ответ:

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

addAssignment(obj)

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

Параметры:

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

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

Запрос:

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

Ответ:

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

updateAssignment(id, obj)

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

Параметры:

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

Возвращает: промис с пустым объектом.

Запрос:

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

Ответ:

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

removeAssignment(id)

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

Параметры:

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

Возвращает: промис с пустым объектом.

Запрос:

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

Ответ:

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

Наверх