Arbeiten mit Gantt-Stilen
dhtmlxGantt bietet Ihnen eine breite Palette an Optionen zur Anpassung des Erscheinungsbilds. Sie können sowohl das allgemeine Erscheinungsbild des Gantt-Diagramms durch die Verwendung einer der vordefinierten Skins ändern als auch die Stile einzelner Elemente (Aufgaben, Verknüpfungen, Zeitskala, Raster usw.) der Komponente anpassen.
In diesem Leitfaden sind allgemeine Hinweise zum Arbeiten mit Stilen der Gantt-Teile zusammengefasst, um Ihnen die Navigation durch die Dokumentation zu erleichtern. Detaillierte Informationen zu jedem einzelnen Element finden Sie in den jeweiligen Artikeln.
Styling des Gitters (Grid)
Sie können den Stil des Grid-Bereichs über die entsprechenden Vorlagen des Grid ändern.
Kopfzeilen der Grid-Spalten
Es gibt eine grid_header_class Vorlage, die es Ihnen ermöglicht, einen benutzerdefinierten Stil auf die Kopfzeilen der Grid-Spalten anzuwenden. Beispielsweise können Sie die Hintergrundfarbe bestimmter Kopfzeilen der Grid-Spalten wie folgt ändern:
<style>
.gantt-grid__header--highlighted {
background-color: #ffeb8a !important;
}
</style>
gantt.templates.grid_header_class = (columnName) =>
(columnName === 'duration' || columnName === 'text')
? 'gantt-grid__header--highlighted'
: '';

Related sample: Styling Headers of Grid Columns
Benutzerdefinierte Elemente in der Grid-Kopfzeile
Es ist möglich, benutzerdefinierte Elemente (wie Buttons, Icons, Eingaben usw.) in die Kopfzeile des Grids einzufügen. Um ein Element hinzuzufügen, müssen Sie dessen HTML-Code als Wert der label-Eigenschaft innerhalb der gantt.config.columns Konfigurationsoption setzen:
gantt.config.columns = [
{
name: "text",
label: `<div className="gantt-grid__header-search-wrapper">Task name
<input id="task-search" type="text" placeholder="Search tasks..."/>
</div>`,
width: 250, tree: true
},
// other columns
];
Die Implementierung der Suchfunktion sieht so aus:
const taskSearchInput = document.getElementById('task-search');
taskSearchInput.addEventListener('input', () => {
gantt.refreshData();
});
function hasSubstring(parentId, searchValue) {
const task = gantt.getTask(parentId);
if (!task) return false;
if (task.text.toLowerCase().includes(searchValue)) {
return true;
}
const children = gantt.getChildren(parentId);
for (let i = 0; i < children.length; i++) {
if (hasSubstring(children[i], searchValue)) {
return true;
}
}
return false;
}
gantt.attachEvent('onBeforeTaskDisplay', (id) => {
const searchValue = taskSearchInput.value.toLowerCase().trim();
if (!searchValue) return true;
return hasSubstring(id, searchValue);
});

Related sample: Custom Elements in Grid Header
Icons und Bilder in der Grid-Kopfzeile
Um ein Bild oder Symbol in die Kopfzeile einzufügen, können Sie es auch in das innere HTML der Zelle über die label-Eigenschaft setzen:
const textLabel = `
<div className="gantt-grid__header-label">
<img src="http://docs.dhtmlx.com/scheduler/assets/index/icon1.png" alt="icon">
<span>Text</span>
</div>
`;
gantt.config.columns = [
{ name: "text", label: textLabel, tree: true, width: "*", resize: true },
{ name: "start_date", align: "center", resize: true },
{ name: "duration", align: "center" },
{ name: "add", width: 44 }
];
Related sample: Images in Grid Header: Columns Config
Alternativ können Sie eine Kopfzeilenzelle auch per CSS mit dem Selektor .gantt_grid_head_
.gantt_grid_head_text {
background-image: url("http://docs.dhtmlx.com/scheduler/assets/index/icon1.png");
background-repeat: no-repeat;
}

Related sample: Images in Grid Header:CSS
Mehrzeiliger Text in der Grid-Kopfzeile
Folgen Sie dem im Abschnitt How to display several lines in the grid cell/header gezeigten Beispiel.
Hintergrundfarbe der Grid-Reihen
Sie können eine benutzerdefinierte Farbe für alle oder einzelne Grid-Reihen mit Aufgaben über die grid_row_class Vorlage anwenden. Zum Beispiel können Sie die Hintergrundfarbe einer bestimmten Zeile so ändern:
<style>
.gantt-grid__row--highlight {
background-color: #ffeb8a !important;
}
</style>
gantt.templates.grid_row_class = (start, end, task) =>
task.id === 3 ? "gantt-grid__row--highlight" : "";

Related sample: Coloring Grid Rows
Farbe der Grid-Reihen beim Überfahren mit der Maus
Sie können die Grid-Reihe beim Überfahren mithilfe der folgenden Stilregeln hervorheben:
.gantt_grid_data .gantt_row.odd:hover, .gantt_grid_data .gantt_row:hover,
.gantt_grid_data .gantt_row.gantt_selected,
.gantt_grid_data .gantt_row.odd.gantt_selected,
.gantt_task_row.gantt_selected {
background-color: cyan;
}

Related sample: Coloring Grid Rows on Hover
Anpassung der Grid-Spalten
dhtmlxGantt bietet die Möglichkeit, das Standardaussehen der Grid-Spalten über das template-Attribut der gantt.config.columns Konfigurationsoption zu modifizieren.
Das template-Attribut ist eine Funktion, die ein Datenobjekt als Parameter übernimmt und die endgültige Datenvorlage zurückgibt. Die Funktionsdefinition ermöglicht es, nahezu jeden Inhalt darzustellen. Zum Beispiel können Sie die Standardfarbe des Textes in Grid-Reihen ändern oder benutzerdefinierte Elemente in Grid-Spalten verwenden.
Textfarbe in Grid-Reihen
Sie können eine spezielle Farbe für den Text der Aufgaben je nach Priorität definieren, wie in:
gantt.config.columns = [
{ name: "text", label: "Task name", tree: true, width: 230,
template: gridTaskTextTemplate
},
{ name: "start_date", label: "Start time", align: "center" },
{ name: "duration", label: "Duration", align: "center" }
];
function gridTaskTextTemplate (task) {
const text = `${task.text} (${task.users})`;
if (task.priority === 1) {
return `<div className="gantt-grid__text--important">${text}</div>`;
}
return text;
}

Related sample: Template for tree nodes
Benutzerdefinierte Elemente in den Grid-Spalten
Um ein benutzerdefiniertes Element, z. B. eine Schaltfläche, ein Eingabefeld usw., in die Grid-Spalten einzufügen, sollten Sie den HTML-Code des Elements als Wert des template-Attributs der Spalte setzen:
function gridColumnTemplate (task) {
return `
<i className="fa fa-pencil" onclick="clickGridButton(${task.id}, 'edit')"></i>
<i className="fa fa-plus" onclick="clickGridButton(${task.id}, 'add')"></i>
<i className="fa fa-times" onclick="clickGridButton(${task.id}, 'delete')"></i>
`;
}
gantt.config.columns = [
{ name: "text", tree: true, width: "*", resize: true },
{ name: "start_date", align: "center", resize: true },
{ name: "duration", align: "center" },
{ name: "buttons", width: 75, label: gridColumnHeaderTemplate,
template: gridColumnTemplate /*!*/
}
];

Related sample: Custom Buttons in a Grid
Mehrzeiliger Text in Grid-Zellen
Folgen Sie dem im Abschnitt How to display several lines in the grid cell/header gezeigten Beispiel.
Styling der Zeitskala (Scale)
Der Stil der Zeitskala wird durch die entsprechenden Vorlagen des Timeline-Bereichs gesteuert.
Skalenzeile
Sie können die Zeile der Skala mithilfe der [scale_row_class]-Vorlage stylen. Beispielsweise definieren Sie die Hintergrundfarbe:
<style>
.gantt-scale__row--highlight {
background-color: #ffeb8a !important;
}
</style>
gantt.templates.scale_row_class = (scale) => "gantt-scale__row--highlight";

Related sample: Styling Row of the Scale
Skalenzellen
Es ist auch möglich, bestimmte Zellen der Skala über die scale_cell_class-Vorlage zu gestalten. Zum Beispiel können Sie bestimmte Tage des Timeline-Bereichs einfärben:
gantt.templates.scale_cell_class = date =>
date.getDay() === 0 || date.getDay() === 6 ? "gantt-scale__cell--highlight" : "";

Related sample: Styling Separate Cells on the Scale
Lesen Sie mehr zu diesem Thema in den verwandten Artikeln: Setting up Scale und Highlighting Time Slots.
Subscale
Sie können einen neuen Stil für eine Skala über das css-Attribut der scales-Eigenschaft festlegen. Zum Beispiel können Sie die Wochenenden wie folgt farblich kennzeichnen:
<style type="text/css">
.weekend{
background: #F0DFE5 !important;
}
</style>
const isWeekendStyle = (date) => {
const day = gantt.date.day_start(date).getDay();
return (day === 0 || day === 6) ? "gantt-scale__cell--weekend" : "";
};
gantt.config.scales = [
// other scales
{ unit: "day", format: "%D", css: isWeekendStyle }
];

Related sample: Multiple scales
Styling der Aufgaben (Tasks)
Sie können das Styling von Aufgaben über die entsprechenden Vorlagen des Timeline-Bereichs ändern.
Task-Balken
Sie können die task_class-Vorlage neu definieren, um die Stile einer Aufgabe zu aktualisieren. Die Details finden Sie im Artikel Tasks Coloring.
gantt.templates.task_class = (start, end, task) => "";

Related sample: Task styles
Vorlagen ermöglichen es, Stile dynamisch anzuwenden. Beispielsweise können Sie Farben je nach Fortschritt der Aufgabe ändern:
gantt.templates.task_class = (start, end, task) =>
task.progress > 0.5 ? "" : "task--low-progress";

Related sample: Styling task bars with events
Text der Task-Balken
Die task_text-Vorlage erlaubt die Verwendung von Inline-Stilen, um den Stil des Textes im Task-Balken zu ändern:
gantt.templates.task_text = (start, end, task) =>
task.id === 12 ? `<span style={{color: 'red'}}>${task.text}</span>` : task.text;

Related sample: Inline Styling of the Task Text
Mehrzeiliger Text
Folgen Sie dem im Abschnitt How to display several lines in the grid cell/header gezeigten Beispiel.