Webix Gantt ожидает общий URL для загрузки и сохранения задач и ссылок:
view:"gantt", url:"remote/data"
Более подробную информацию о роутах и параметрах читайте в статье Работа с сервером.
Если у вас нет бэкенд сервера или ваш проект требует нестандартной логики, вы можете кастомизировать сервис Backend.
Информацию о структурах данных ресурсов, категорий и назначений, а также о том, как работать с этими сущностями на клиенте читайте здесь.
Gantt ожидает JSON данные, где каждый элемент массива - объект со следующими полями:
Пример JSON
[
{
"text":"Project A","start_date":"2018-06-13 00:00:00",
"duration":"1","parent":"0","progress":0.5,"open":1,
"notes":"Weekly meeting required", "type": "project",
"end_date":"2018-06-14 00:00:00","id":"1","planned_start": "2018-06-13 00:00:00",
"planned_duration": 2,"planned_end": "2018-06-15 00:00:00"
},
// другие задачи
]
Gantt ожидает JSON данные, где каждый элемент массива - объект со следующими полями:
Пример JSON
[
{"source":"1.2","target":"2","type":1},
// другие ссылки
]
У Gantt есть следующие сервисы для работы с данными:
1. Local
const local = $$("gantt").getService("local");
const scales = local.getScales(); // возвращает текущие шкалы
2. Operations
const ops = $$("gantt").getService("operations");
ops.addTask(obj, index, parent); // добавляет новую задачу
3. Helpers
const helpers = $$("gantt").getService("helpers");
// указываем темплейт для картинок ресурсов
helpers.resourceAvatar(resource, cssClass, withTooltip);
4. Grouping
5. Backend
const back = $$("gantt").getService("backend");
back.tasks().then((data) => console.log(data));
Смотрите папку models исходного кода, чтобы познакомиться с сигнатурами методов.
Все задачи хранятся в TreeCollection. Коллекция доступна через метод tasks() сервиса Local.
const tasks = $$("gantt").getService("local").tasks();
Чтобы убедиться в том, что данные загружены, используйте waitData для получения промиса с данными.
Получаем конкретную задачу
const tasks = $$("gantt").getService("local").tasks();
tasks.waitData.then(function(){
tasks.getItem(tasks.getFirstId()); // возвращаем первую задачу
});
С помощью сериализации коллекции можно получить массив всех задач:
Сериализация коллекции задач
const tasks = $$("gantt").getService("local").tasks();
tasks.waitData.then(function(){
const arr = tasks.serialize(); // получаем массив задач
/*[
{
"text":"Task A1","start_date":"2018-06-12 00:00:00",
"duration":"2","progress":31,"parent":"1",
"notes":"Contact Rob for details", "type": "task",
"end_date":"2018-06-14 00:00:00","id":"1.1"
},
// ...
]*/
});
Все ссылки хранятся в DataCollection. Коллекция доступна через метод links() сервиса Local.
const links = $$("gantt").getService("local").links();
Чтобы убедиться в том, что данные загружены, используйте waitData для получения промиса с данными.
Получаем конкретную ссылку
const links = $$("gantt").getService("local").links();
links.waitData.then(function(){
links.getItem(links.getFirstId()); // возвращаем первую ссылку
});
С помощью сериализации коллекции можно получить массив всех ссылок:
Сериализация коллекции ссылок
const links = $$("gantt").getService("local").links();
links.waitData.then(function(){
const arr = links.serialize(); // получаем массив ссылок
/*[
{"source":"1.2","target":"2","type":1},
...
]*/
});
Чтобы получить ссылку (входящую или выходящую), используйте метод getLinks() сервиса Local. Метод принимает 2 параметра:
Получаем выходящие ссылки конкретной задачи
const link = $$("gantt").getService("local").getLinks(1.2, "source");
Related sample: Gantt: Data Operations
Метод возвращает объект со следующими полями:
Пример JSON
{
id: "5", text: "Project B",
ttype: "source", type: "1"
}
Вызовите метод clearAll для очистки всех коллекций.
$$("$gantt").clearAll();
Чтобы очистить данные и загрузить их заново, вызовите reload.
$$("$gantt").reload();
Вы также можете перезагрузить все коллекции вручную после вызова clearAll.
Наверх