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

dataprocessor

Description

Набор методов dataprocessor

Details

Вы можете создать новый экземпляр DataProcessor с помощью метода createDataProcessor. Также существует более старый способ создания экземпляра через конструктор dataProcessor.
Объект dataprocessor включает следующие методы и события:

Методы

  • attachEvent (name, handler, settings): string - добавляет обработчик к событию API DataProcessor

    • name - (string) - имя события, регистронезависимое
    • handler - (Function) - функция, обрабатывающая событие
    • settings? - (object) - необязательный объект настроек для обработчика события
    const dp = gantt.createDataProcessor({
    url: "/api",
    mode: "REST",
    });

    dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
    console.log("Обновленная задача:", id);
    });
  • detachEvent (id): void - удаляет ранее добавленный обработчик события по его ID

    • id - (string) - ID обработчика события
    const dp = gantt.createDataProcessor({
    url: "/api",
    mode: "REST",
    });

    const handlerId = dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
    console.log("Обновленная задача:", id);
    });

    // удаляем обработчик события
    dp.detachEvent(handlerId);
  • getState (id): string - получает состояние конкретного элемента (обновлен или нет)

    • id - (string | number) - ID элемента
    const status = dp.getState(id);
  • ignore (code): void - выполняет блок кода без вызова действий DataProcessor

    • code - (Function) - функция, изменяющая данные
    dp.ignore(() => {
    // изменения здесь не будут сохранены
    gantt.addTask({
    id: 10,
    text: "Задача #5",
    start_date: "03-02-2025",
    duration: 5
    });
    });

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

    Метод dp.ignore() работает аналогично gantt.silent().
  • setTransactionMode (mode, total): void - задает способ отправки данных на сервер

    • mode - (string) - метод отправки, варианты: "GET", "POST", "REST", "JSON" или "REST-JSON"
    • total - (boolean) - определяет, отправлять ли все данные сразу или по отдельности для каждой записи
    dp.setTransactionMode("POST", true);

    Если вы хотите отправлять кастомные HTTP-заголовки или дополнительные данные с запросами, можно передать объект в качестве первого параметра с такими свойствами:

    • mode - (string) - режим отправки данных, например "GET", "POST", "REST", "JSON" или "REST-JSON"
    • headers - (object) - пары ключ-значение заголовков для включения в запрос
    • payload - (object) - дополнительные пары ключ-значение, отправляемые вместе с заголовками
    dp.setTransactionMode({
    mode: "POST",
    headers: {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept-Language": "fr-FR"
    },
    payload: {
    "user_id": "12"
    }
    }, true);
  • setUpdated (rowId, [mode, state]): void - помечает элемент как обновленный или нет

    • rowId - (string | number) - ID элемента
    • mode? - (boolean) - необязательный параметр, true (по умолчанию) для пометки как обновленного, false для снятия пометки
    • state? - (string) - необязательный, имя состояния обновления, по умолчанию "updated"
    dp.setUpdated(1);
    dp.setUpdated(2, true, "deleted");

События

  • onAfterUpdate (id, action, tid, response): void - срабатывает после получения и обработки ответа сервера

    • id - (string | number) - ID обновленного элемента
    • action - (string) - статус ответа (тип операции)
    • tid - (string) - новый ID (только для операций вставки)
    • response - (mixed) - разобранный ответ, либо XML-узел, либо JSON-объект
    dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
    if (action === "error") {
    alert(`Ошибка сервера: ${response.message}`);
    }
    });

    Возможные статусы ответа:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onBeforeDataSending (id, state, data): void - срабатывает непосредственно перед отправкой данных на сервер

    • id - (string | number) - ID элемента
    • state - (string) - текущее состояние элемента (тип операции)
    • data - (object) - сериализованные данные, которые будут отправлены
    dp.attachEvent("onBeforeDataSending", (id, state, data) => {
    // Пользовательская логика перед отправкой данных
    return true;
    });

    Это событие вызывается для каждого запроса обновления данных (после onBeforeUpdate).

    Если обработчик возвращает false, данные не будут отправлены на сервер.

    Возможные статусы ответа:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onBeforeUpdate (id, state, data): void - срабатывает перед обновлением записи (или записей)

    • id - (string | number) - ID элемента
    • state - (string) - состояние элемента (тип операции)
    • data - (object) - данные, которые будут отправлены на сервер
    dp.attachEvent("onBeforeUpdate", (id, state, data) => {
    // Пользовательская логика перед обновлением
    return true;
    });

    Это событие вызывается для каждой обновляемой записи и перед onBeforeDataSending.

    Возврат false здесь остановит отправку данных.

    Возможные статусы ответа:

    • updated
    • inserted
    • deleted
    • invalid
    • error
  • onRowMark (id, state, mode, invalid): void - срабатывает перед пометкой обновленного элемента

    • id - (string | number) - ID элемента, связанного с ошибкой
    • state - (string) - состояние элемента (тип операции)
    • mode - (boolean) - true для добавления пометки, false для удаления
    • invalid - (object) - детали ошибки, если есть
    dp.attachEvent("onRowMark", (id, state, mode, invalid) => {
    // Пользовательская логика перед пометкой элемента
    return true;
    });

    Это событие можно заблокировать. Возврат false остановит пометку элемента.