Интеграция с серверной стороной
Лучший способ связать dhtmlxScheduler с сервером - настроить RESTful API на сервере и использовать dhtmlxDataProcessor на клиентской стороне.
DataProcessor - это клиентская библиотека, включённая в dhtmlxScheduler.js. Она отслеживает изменения данных и управляет серверными запросами с клиента.
Вы можете подключить dhtmlxScheduler к серверу через REST API, используя различные фреймворки и языки программирования. Ниже приведён список серверных реализаций, доступных для интеграции Scheduler с сервером:
- dhtmlxScheduler с PHP: Slim
- dhtmlxScheduler с ASP.NET Core
- dhtmlxScheduler с ASP.NET MVC
- dhtmlxScheduler с Node.js
- dhtmlxScheduler с PHP
- dhtmlxScheduler с PHP:Laravel
- dhtmlxScheduler с Ruby on Rails
- dhtmlxScheduler с PHP: Slim 3
Техника
В общем случае, чтобы загрузить данные с сервера через REST API, необходимо:
Клиентская сторона
-
Использовать метод load, указав URL, который возвращает данные Scheduler в формате JSON.
-
Использовать метод createDataProcessor и передать объект с параметрами конфигурации:
const dp = scheduler.createDataProcessor({
url: "apiUrl",
mode: "REST"
});
В качестве альтернативы вы можете создать dataProcessor с помощью конструктора и привязать его к объекту dhtmlxScheduler. Конструктор scheduler.DataProcessor() принимает путь к серверному скрипту:
scheduler.init("scheduler_here", new Date(), "month");
scheduler.load("apiUrl");
const dp = new scheduler.DataProcessor("apiUrl");
dp.init(scheduler);
Более подробная информация приведена в следующем разделе.
Создание DataProcessor
При создании DataProcessor через API-метод createDataProcessor вы можете передать параметры несколькими способами.
- Использовать один из предопределённых режимов запросов, например:
const dp = scheduler.createDataProcessor({
url: "/api",
mode: "REST"
});
где:
- url - серверный URL
- mode - способ отправки данных на сервер: "JSON" | "REST-JSON" | "JSON" | "POST" | "GET"
- Указать пользовательский объект router:
const dp = scheduler.createDataProcessor(router);
где router может быт ь функцией:
const server = "/api";
// entity - "event"
// action - "create"|"update"|"delete"
// data - объект с данными события
// id – id обрабатываемого объекта (события)
const dp = scheduler.createDataProcessor(function(entity, action, data, id) {
switch(action) {
case "create":
return scheduler.ajax.post(
`${server}/${entity}`,
data
);
break;
case "update":
return scheduler.ajax.put(
`${server}/${entity}/${id}`,
data
);
break;
case "delete":
return scheduler.ajax.del(
`${server}/${entity}/${id}`
);
break;
}
});
или объектом следующей структуры:
const dp = scheduler.createDataProcessor({
event: {
create: function(data) {},
update: function(data, id) {},
delete: function(id) {}
}
});
Все функции router должны возвращать либо Promise, либо объект ответа с данными. Это позволяет dataProcessor назначать id из базы данных и инициировать событие onAfterUpdate.
const router = function(entity, action, data, id) {
return new Promise(function(resolve, reject) {
// … некоторая логика
return resolve({tid: databaseId});
});
}
Таким образом, DataProcessor можно использовать для сохранения данных в localStorage или любом хранилище, не привязанном к определённому URL, либо когда создание и удаление объектов обрабатываются разными серверами (URL).
Детали запросов и ответов
URL строится по следующему шаблону:
- api/eventId
где "api" - это URL, указанный в конфигурации dataProcessor.
Режим REST
Чтобы использовать режим REST, установите свойство mode объекта конфигурации createDataProcessor в значение "REST":
const dp = scheduler.createDataProcessor({
url: "apiUrl",
mode: "REST"
});
Типичные запросы и ответы:
| Действие | HTTP-метод | URL | Ответ |
|---|---|---|---|
| загрузка данных | GET | /apiUrl | JSON format |
| добавить новое событие | POST | /apiUrl | ("action":"inserted","tid":"eventId") |
| обновить событие | PUT | /apiUrl/:id | ("action":"updated") |
| удалить событие | DELETE | /apiUrl/:id | ("action":"deleted") |
Режим REST-JSON
Чтобы использовать режим REST-JSON, установите свойство mode объекта конфигурации createDataProcessor в значение "REST-JSON":
const dp = scheduler.createDataProcessor({
url: "apiUrl",
mode: "REST-JSON"
});
В этом режиме scheduler отправляет запросы POST/PUT/DELETE с типом содержимого application/json.
Запросы и ответы выглядят следующим образом:
| Действие | HTTP-метод | URL | Тело запроса | Ответ |
|---|---|---|---|---|
| загрузка данных | GET | /apiUrl | JSON format | |
| добавить новое событие | POST | /apiUrl | ( "start_date":"2019-12-18 00:00", "end_date":"2019-12-18 00:05", "text":"New event", ... ) | ( "action":"inserted", "tid":"eventId" ) |
| обновить событие | PUT | /apiUrl/:id | ( "start_date":"2024-12-18 00:00", "end_date":"2024-12-18 00:05", "text":"New event", ... ) | ("action":"updated") |
| удалить событие | DELETE | /apiUrl/:id | ("action":"deleted") |
Режим POST
Чтобы использовать режим POST, установите свойство mode объекта конфигурации createDataProcessor в значение "POST":
const dp = scheduler.createDataProcessor({
url: "apiUrl",
mode: "POST"
});
Запросы и ответы в этом режиме:
| Действие | HTTP-метод | URL | Ответ |
|---|---|---|---|
| загрузка данных | GET | /apiUrl | JSON format |
| обновить событие | POST | /apiUrl | ("action":"inserted|updated|deleted", "tid":"eventId") |