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

Особенности экземпляра Gantt

Эта статья освещает основные особенности использования экземпляра Gantt.

Рассмотрим наиболее распространённый сценарий — создание приложения с несколькими страницами/вкладками/представлениями.

Ниже приведённый подход может применяться к приложениям на Angular (или на React). Начиная с версии v10, он доступен во всех изданиях dhtmlxGantt (бесплатном Community-издании и PRO-изданиях); в устаревших версиях (GPL-издание в v9.x и ранее) он недоступен:

  • когда вы открываете страницу/вкладку/вид с Gantt, вам нужно создать новый экземпляр Gantt;
  • когда вы переключаетесь на другую страницу/вкладку/вид, вам нужно уничтожить экземпляр Gantt.

Альтернативный подход (который будет работать во всех версиях) — выполнить сброс всего вручную.

заметка

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

Когда вы нажимаете кнопку Recreate Gantt, Gantt инициализируется, загружает задачи и прикрепляет события. Если вы уничтожите Gantt, события будут отсоединены.

Ниже приведён список вещей, которые нужно учитывать при использовании этого способа:

Пользовательские события​

При загрузке страницы с Gantt необходимо вручную сохранить идентификаторы событий в массив до их добавления:

const onTaskClick = gantt.attachEvent('onTaskClick', (id) => {
gantt.message(`onTaskClick: Task ID: ${id}`);
return true;
}, '');
eventIDs.push(onTaskClick);

Когда вы переходите на другую страницу, необходимо вручную отсоединить события, используя сохранённые вами идентификаторы:

eventIDs.forEach(event => gantt.detachEvent(event));
eventIDs = [];

Для получения дополнительных сведений смотрите раздел Отсоединение событий.

Data Processor​

Необходимо вручную уничтожить dataProcessor:

dp.destructor();

Пожалуйста, учтите, что нужно уничтожать только dataProcessor, а не Gantt. В противном случае вы не сможете использовать Gantt до перезагрузки страницы.

Задачи, связи, данные ресурсов, маркеры, пользовательские горячие клавиши​

Вы можете безопасно удалить эти данные из экземпляра Gantt, используя метод clearAll().

Конфигурация Gantt​

Нет встроенного способа сохранить её или вернуть конфигурацию Gantt к значениям по умолчанию. Большая часть конфигурации Gantt сохраняется внутри объекта gantt.config.

CSS​

Если вы добавили пользовательский CSS, его нужно удалить вручную, если он вызывает проблемы.

Настройки календаря​

Необходимо вручную удалить их с помощью метода gantt.deleteCalendar().

Другие случаи​

Помимо перечисленных выше пунктов, возможно, вам потребуется реализовать и другие варианты, но мы ещё не тестировали все возможные сценарии этого подхода.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.