Zum Hauptinhalt springen

Integration mit Svelte

Tipp

Diese Anleitung setzt Kenntnisse der Svelte-Konzepte und -Muster voraus. Zur Einführung siehe die Svelte documentation.

DHTMLX Kanban ist mit Svelte kompatibel. Das vollständige Codebeispiel ist auf GitHub verfügbar.

Projekt erstellen​

Info

Installieren Sie Vite (optional) und Node.js, bevor Sie das Projekt erstellen.

Richten Sie ein Svelte-Projekt auf eine der folgenden Arten ein:

  • mit SvelteKit - empfohlen
  • mit Svelte und Vite (ohne SvelteKit) - führen Sie aus:
npm create vite@latest

Weitere Details finden Sie in der Svelte documentation.

Abhängigkeiten installieren​

Nennen Sie das Projekt my-svelte-kanban-app. Wechseln Sie in das App-Verzeichnis:

cd my-svelte-kanban-app

Installieren Sie die Abhängigkeiten und starten Sie den Entwicklungsserver mit einem der folgenden Paketmanager:

yarn
yarn start
npm install
npm run dev

Die App läuft unter einer localhost-Adresse (zum Beispiel http://localhost:3000).

Kanban erstellen​

Stoppen Sie den Entwicklungsserver und installieren Sie das Kanban-Paket.

Schritt 1. Paket installieren​

Laden Sie das trial Kanban package herunter und folgen Sie den im README aufgeführten Schritten. Die Testversion ist 30 Tage lang verfügbar.

Schritt 2. Komponente erstellen​

Erstellen Sie eine Svelte-Komponente, die Kanban und die Toolbar einbindet. Fügen Sie eine neue Datei Kanban.svelte im Verzeichnis src/ hinzu.

Quelldateien importieren​

Öffnen Sie Kanban.svelte und importieren Sie die Kanban-Quelldateien. Die Importpfade hängen von der Paketversion ab:

  • Für die PRO-Version, die aus einem lokalen Ordner installiert wird:
Kanban.svelte
<script>
import { Kanban, Toolbar } from 'dhx-kanban-package';
import 'dhx-kanban-package/dist/kanban.css';
</script>

Wenn das Paket minifizierte Quelldateien enthält, importieren Sie die CSS-Datei als kanban.min.css.

  • Für die Testversion:
Kanban.svelte
<script>
import { Kanban, Toolbar } from '@dhx/trial-kanban';
import '@dhx/trial-kanban/dist/kanban.css';
</script>

In diesem Tutorial wird die Testversion von Kanban verwendet.

Container einrichten und Kanban initialisieren​

Um Kanban mit der Toolbar anzuzeigen, erstellen Sie zwei Container und rufen Sie die Konstruktoren auf. Der folgende Code-Ausschnitt bindet die Container und instanziiert die Komponenten innerhalb von onMount():

Kanban.svelte
<script>
import { onMount, onDestroy } from "svelte";
import { Kanban, Toolbar } from "@dhx/trial-kanban";
import "@dhx/trial-kanban/dist/kanban.css";

let toolbar_container, kanban_container; // Container für Kanban und Toolbar initialisieren
let kanban, toolbar;

onMount(() => {
// Kanban-Komponente initialisieren
kanban = new Kanban(kanban_container, {})

// Toolbar-Komponente initialisieren
toolbar = new Toolbar(toolbar_container, {
api: kanban.api, // interne Kanban-API bereitstellen
// weitere Konfigurationseigenschaften
})
});

onDestroy(() => {
kanban.destructor(); // Kanban zerstören
toolbar.destructor(); // Toolbar zerstören
});
</script>

<div class="component_container">
<div bind:this={toolbar_container}></div>
<div bind:this={kanban_container} style="height: calc(100% - 56px);"></div>
</div>

Daten laden​

Um Kanban mit Daten zu befüllen, stellen Sie einen Datensatz bereit. Erstellen Sie die Datei data.js im Verzeichnis src/:

data.js
export function getData() {
const columns = [
{
label: "Backlog",
id: "backlog"
},
{
label: "In progress",
id: "inprogress"
},
// ...
];

const cards = [
{
id: 1,
label: "Integration with Angular/React",
priority: 1,
color: "#65D3B3",
start_date: new Date("01/07/2021"),
users: [3, 2],
column: "backlog",
type: "feature",
},
{
label: "Archive the cards/boards",
priority: 3,
color: "#58C3FE",
users: [4],
progress: 1,
column: "backlog",
type: "feature",
},
// ...
];

const rows = [
{
label: "Feature",
id: "feature",
},
{
label: "Task",
id: "task",
}
];

return { columns, cards, rows };
}

Öffnen Sie App.svelte, importieren Sie den Datensatz und übergeben Sie die Werte als props an die neue <Kanban/>-Komponente:

App.svelte
<script>
import Kanban from "./Kanban.svelte";
import { getData } from "./data.js";

const { cards, columns, rows } = getData();
</script>

<Kanban {cards} {columns} {rows} />

Öffnen Sie Kanban.svelte und wenden Sie die props auf das Kanban-Konfigurationsobjekt an:

Kanban.svelte
<script>
import { onMount, onDestroy } from "svelte";
import { Kanban, Toolbar, defaultEditorShape } from "@dhx/trial-kanban";
import "@dhx/trial-kanban/dist/kanban.css";

export let columns;
export let cards;
export let rows;

let toolbar_container, kanban_container;
let kanban, toolbar;

onMount(() => {
kanban = new Kanban(kanban_container, {
columns,
cards,
rows,
rowKey: "type",
// weitere Konfigurationseigenschaften
})

toolbar = new Toolbar(toolbar_container, {
api: kanban.api, // interne Kanban-API bereitstellen
// weitere Konfigurationseigenschaften
})
});

onDestroy(() => {
kanban.destructor();
toolbar.destructor();
});
</script>

<div class="component_container">
<div bind:this={toolbar_container}></div>
<div bind:this={kanban_container} style="height: calc(100% - 56px);"></div>
</div>

Alternativ können Sie Daten nach der Erstellung der Instanz mit setConfig() oder parse() innerhalb von onMount() laden:

Kanban.svelte
<script>
import { onMount, onDestroy } from "svelte";
import { Kanban, Toolbar} from "@dhx/trial-kanban";
import "@dhx/trial-kanban/dist/kanban.css";

export let columns;
export let cards;
export let rows;

let toolbar_container, kanban_container;
let kanban, toolbar;

onMount(() => {
kanban = new Kanban(kanban_container, {
columns: [],
cards: [],
rows: [],
rowKey: "type",
// weitere Konfigurationseigenschaften
})

toolbar = new Toolbar(toolbar_container, {
api: kanban.api, // interne Kanban-API bereitstellen
// weitere Konfigurationseigenschaften
})

kanban.setConfig({ columns, cards, rows });
// oder kanban.parse({ columns, cards, rows });
});

onDestroy(() => {
kanban.destructor();
toolbar.destructor();
});
</script>

<div class="component_container">
<div bind:this={toolbar_container}></div>
<div bind:this={kanban_container} style="height: calc(100% - 56px);"></div>
</div>

Die Kanban-Komponente ist nun einsatzbereit. Sobald das Element gerendert wird, initialisiert Kanban sich mit den Daten. Die vollständige Liste der unterstützten Konfigurationseigenschaften finden Sie in der Kanban API-Referenz.

Ereignisse verarbeiten​

Benutzeraktionen in Kanban lösen Ereignisse aus. Hören Sie auf Ereignisse, um auf bestimmte Aktionen zu reagieren. Die vollständige Liste finden Sie in der Kanban-Ereignisreferenz.

Öffnen Sie Kanban.svelte und erweitern Sie den onMount()-Callback:

Kanban.svelte
<script>
// ...
let kanban;

onMount(() => {
kanban = new Kanban(kanban_container, {})

kanban.api.on("add-card", (obj) => {
console.log(obj.columnId);
});
});

onDestroy(() => {
kanban.destructor();
});
</script>

// ...

Schritt 3. Kanban zur App hinzufügen​

Um die Komponente zu registrieren, öffnen Sie App.svelte und ersetzen Sie den Standardcode:

App.svelte
<script>
import Kanban from "./Kanban.svelte";
import { getData } from "./data.js";

const { columns, cards, rows } = getData();
</script>

<Kanban {cards} {columns} {rows} />

Starten Sie die App, um das befüllte Kanban-Board auf der Seite anzuzeigen.

DHTMLX Kanban-Board, das in einer Svelte-Anwendung initialisiert wurde, mit gefüllten Spalten und Karten

Das vollständige Projekt finden Sie auf GitHub.