Для работы с этим руководством будет полезно иметь базовое понимание концепций и шаблонов Svelte. Если вы новичок в Svelte, возможно, вам стоит ознакомиться с документацией Svelte для быстрого старта.
DHTMLX Gantt безупречно работает с Svelte. Подготовлены некоторые примеры, показывающие, как интегрировать DHTMLX Gantt с Svelte. Вы можете просмотреть онлайн-примеры на Replit.
Для более подробной демонстрации, посмотрите репозиторий на GitHub.
Перед началом убедитесь, что у вас установлены Vite (опционально) и Node.js.
Чтобы начать проект Svelte, вы можете использовать Svelte с Vite, выполнив команду:
npm create vite@latest
Более подробную информацию о запуске нового проекта можно найти в документации Svelte.
Перейдите в каталог приложения. В этом примере проект называется gantt-svelte, и опция svelte выбрана во время настройки. Используйте следующие команды:
cd gantt-svelte
Далее установите зависимости и запустите приложение, используя предпочитаемый менеджер пакетов:
yarn install
yarn dev
npm install
npm run dev
После выполнения этих действий проект Svelte должен быть запущен по адресу http://localhost:5173.
Теперь пришло время включить код DHTMLX Gantt. Начните с остановки приложения с помощью Ctrl+C в командной строке. Затем перейдите к установке пакета Gantt.
PRO версии библиотеки могут быть установлены через npm/yarn из частного репозитория. Инструкции по доступу к репозиторию доступны здесь.
После получения Evaluation версии Gantt, установите её с помощью:
npm install @dhx/trial-gantt
yarn add @dhx/trial-gantt
В качестве альтернативы, вы можете установить библиотеку из локальной папки, если у вас есть zip-пакет. Инструкции доступны здесь.
Необходим новый компонент Svelte для встраивания диаграммы Gantt в приложение. Создайте файл с именем Gantt.svelte в каталоге src/.
Откройте Gantt.svelte и импортируйте необходимые файлы Gantt. В зависимости от метода установки пути импорта различаются:
import { Gantt } from "dhtmlx-gantt";
import "dhtmlx-gantt/codebase/dhtmlxgantt.css";
import { Gantt } from "@dhx/trial-gantt";
import "@dhx/trial-gantt/codebase/dhtmlxgantt.css";
В этом руководстве используется trial версия Gantt.
Для отображения диаграммы Gantt необходим контейнер. Вот код:
<script> import "@dhx/trial-gantt/codebase/dhtmlxgantt.css";
import { onMount } from "svelte";
import { Gantt } from "@dhx/trial-gantt";
let container;
onMount(() => {
let gantt = Gantt.getGanttInstance();
gantt.init(container);
return () => {
gantt.destructor();
};
});
</script>
<div bind:this={container} style="width: 100%; height: 100%;"></div>
Чтобы контейнер Gantt использовал все пространство тела, удалите стандартные стили в app.css (находится в src/) и замените их на:
body, #app {
margin: 0;
padding: 0;
height: 100vh;
width: 100%;
}
Добавьте компонент Gantt в приложение, изменив src/App.svelte. Замените стандартное содержимое на:
<script> import Gantt from "./Gantt.svelte";
</script>
<Gantt/>
Когда приложение будет перезапущено, должна появиться пустая диаграмма Gantt:
Чтобы заполнить диаграмму Gantt, создайте файл data.js в каталоге src/ и добавьте пример данных:
export function getData() {
const tasks = {
data: [
{
id: "10",
text: "Project #1",
start_date: "01-04-2025",
duration: 3,
order: 10,
progress: 0.4,
open: true,
},
{
id: "1",
text: "Task #1",
start_date: "01-04-2025",
duration: 1,
order: 10,
progress: 0.6,
parent: "10",
},
{
id: "2",
text: "Task #2",
start_date: "02-04-2025",
duration: 2,
order: 20,
progress: 0.6,
parent: "10",
},
],
links: [{ id: 1, source: 1, target: 2, type: "0" }],
};
return tasks;
}
Передайте эти данные в компонент Gantt в App.svelte:
<script> import Gantt from "./Gantt.svelte";
import { getData } from "./data.js";
</script>
<Gantt tasks={getData()} />
В компоненте Gantt используйте метод gantt.parse()
, чтобы обработать данные:
<script> import "@dhx/trial-gantt/codebase/dhtmlxgantt.css";
import { onMount } from "svelte";
import { Gantt } from "@dhx/trial-gantt";
export let tasks;
let container;
onMount(() => {
let gantt = Gantt.getGanttInstance();
gantt.init(container);
gantt.parse(tasks);
return () => {
gantt.destructor();
};
});
</script>
<div bind:this={container} style="width: 100%; height: 100%;"></div>
После обновления приложения диаграмма Gantt должна отобразить задачи:
Чтобы отслеживать изменения в диаграмме Gantt, используйте обработчик dataProcessor. Этот обработчик взаимодействует с сервером и обрабатывает ответы серверной стороны.
Вот как создать DataProcessor:
gantt.createDataProcessor(function(entity, action, data, id) {
gantt.message(`${entity} ${action}`);
});
Если сервер изменяет ID задачи после создания новой записи, убедитесь, что Promise возвращает объект вида {id: databaseId} или {tid: databaseId}. Это позволит Gantt обновить запись с новым ID. Для получения дополнительной информации ознакомьтесь с документацией серверной стороны.
Настройка Svelte Gantt завершена. Вы можете изучить полную демонстрацию на GitHub.
Имейте в виду, что Gantt не обрабатывает безопасность приложения, такую как предотвращение SQL-инъекций, XSS или CSRF-атак. Разработчики несут ответственность за защиту серверной стороны. Для получения советов по улучшению безопасности приложения обратитесь к руководству Безопасность приложения.
К началу