Ab Version 3.2 enthält die Bibliothek die multiselect-Erweiterung, die es ermöglicht, mehrere Aufgaben gleichzeitig auszuwählen.
Um die Mehrfachauswahl für Aufgaben zu aktivieren, müssen Sie sie lediglich mit der gantt.plugins Methode einschalten:
<!DOCTYPE html>
<html>
<head>
<script src="codebase/dhtmlxgantt.js"></script>
<link href="codebase/dhtmlxgantt.css" rel="stylesheet">
</head>
<body>
gantt.plugins({ multiselect: true }); //Ihr Code wird hier sein
</body>
</html>
Related sample: Multiselection and Indent/Outdent tasks
Sobald sie aktiviert ist, ist die Mehrfachauswahl von Aufgaben automatisch aktiviert.
Falls Sie sie jemals deaktivieren müssen, können Sie dies mit der Option gantt.config.multiselect
tun:
Deaktivierung der Mehrfachauswahl von Aufgaben
gantt.config.multiselect = false;
Um Änderungen an mehreren Aufgaben oder Verknüpfungen gleichzeitig vorzunehmen, können Sie die gantt.batchUpdate
Methode verwenden:
gantt.batchUpdate(function () {
var tasks = gantt.getTaskByTime();
for(var i = 0; i < tasks.length; i++){
var task = tasks[i];
task.start_date = gantt.date.add(task.start_date, 1, "day");
task.end_date = gantt.calculateEndDate(task.start_date, task.duration);
gantt.updateTask(task.id);
}
});
Diese Methode ermöglicht es Ihnen, mehrere Aufgaben oder Verknüpfungen gleichzeitig zu aktualisieren, während das Diagramm nur einmal neu gerendert wird, was effizienter ist als jede Aufgabe einzeln zu aktualisieren.
Related sample: Multiselection and Indent/Outdent tasks
Um alle ausgewählten Aufgaben im Gantt-Diagramm zu durchlaufen, können Sie die gantt.eachSelectedTask
Methode verwenden:
gantt.batchUpdate(function () {
gantt.eachSelectedTask(function(task_id){
if(gantt.isTaskExists(task_id))
gantt.deleteTask(task_id);
});
});
Related sample: Multiselection and Indent/Outdent tasks
Mit der Mehrfachauswahl können Sie Aktionen wie das Einrücken oder Ausrücken durchführen, um Aufgaben in Teilaufgaben zu verwandeln oder sie zurückzusetzen.
Related sample: Multiselection and Indent/Outdent tasks
Wenn Sie sehen möchten, ob eine bestimmte Aufgabe ausgewählt ist, können Sie die gantt.isSelectedTask
Methode verwenden:
gantt.templates.task_class =
gantt.templates.grid_row_class =
gantt.templates.task_row_class = function (start, end, task) {
if (gantt.isSelectedTask(task.id))
return "gantt_selected";
};
Related sample: Multiselection and Indent/Outdent tasks
Um den Auswahlstatus einer Aufgabe umzuschalten, können Sie die gantt.toggleTaskSelection
Methode verwenden:
gantt.toggleTaskSelection("t_1"); //"t_1" ist die ID der Aufgabe
gantt.render();
Um alle aktuell ausgewählten Aufgaben abzurufen, können Sie die gantt.getSelectedTasks
Methode verwenden:
gantt.getSelectedTasks();
Wenn Sie nur die zuletzt ausgewählte Aufgabe benötigen, steht die Methode gantt.getLastSelectedTask
zur Verfügung:
gantt.getLastSelectedTask();
Wenn Sie die Auswahl auf Aufgaben innerhalb derselben Ebene beschränken möchten, können Sie die Option gantt.config.multiselect_one_level
aktivieren:
gantt.config.multiselect_one_level = true;
gantt.init('gantt_here');
Wenn die multiselect.js-Erweiterung aktiv ist, können Sie mehrere Aufgaben auswählen, indem Sie Strg oder Umschalt gedrückt halten und sie dann horizontal als Gruppe ziehen.
Wenn Sie dies lieber deaktivieren möchten, können Sie die Option gantt.config.drag_multiple
auf false setzen:
gantt.config.drag_multiple = true;
Related sample: Multiselection and Indent/Outdent tasks
Im Einzel-Auswahlmodus öffnet ein Klick auf eine Aufgabe den Inline-Editor.
Im Mehrfachauswahl-Modus wird durch Klicken auf eine nicht ausgewählte Aufgabe diese zuerst ausgewählt. Der Inline-Editor wird erst nach einem zweiten Klick geöffnet. Wenn Sie möchten, dass der Editor beim ersten Klick geöffnet wird, aktivieren Sie die Option gantt.config.inline_editors_multiselect_open
.
gantt.plugins({
multiselect: true
});
...
gantt.config.inline_editors_multiselect_open = true;
Wenn die Mehrfachauswahl aktiv ist, lösen das Auswählen oder Deselektieren von Aufgaben sowohl die allgemeinen gantt.onTaskSelected
/ gantt.onTaskUnselected
Ereignisse als auch ereignisspezifische für die multiselect Erweiterung aus.
Hier ist der Ereignisablauf für die Mehrfachauswahl:
gantt.onBeforeMultiSelect
- wird ausgelöst, bevor eine Aufgabe oder ein Aufgabenbereich ausgewählt wird und kann blockiert werdengantt.onBeforeTaskMultiSelect
- wird ausgelöst, bevor sich der Auswahlstatus einer Aufgabe ändert (Auswahl oder Deselektion) und kann blockiert werdengantt.onTaskMultiSelect
- wird ausgelöst, nachdem sich der Auswahlstatus einer Aufgabe geändert hat (ausgewählt oder deselectiert)gantt.onTaskUnselected
- wird für jede Aufgabe im Mehrfachauswahlbereich aufgerufengantt.onTaskSelected
- wird für jede Aufgabe im Mehrfachauswahlbereich aufgerufengantt.onMultiSelect
- wird ausgelöst, nachdem die Auswahl einer Aufgabe oder eines Aufgabenbereichs abgeschlossen ist