Ab Version 3.2 enthält die Bibliothek die multiselect-Erweiterung, mit der Sie mehrere Aufgaben gleichzeitig auswählen können.
Um die Multi-Task-Auswahl für Aufgaben zu aktivieren, nutzen Sie die Methode gantt.plugins:
<!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 kommt hier hin
</body>
</html>
Related sample: Multiselection and Indent/Outdent tasks
Sobald aktiviert, ist die Multi-Task-Auswahl automatisch aktiv.
Um die Erweiterung zu deaktivieren, verwenden Sie die Option multiselect:
Disabling multi-task selection
gantt.config.multiselect = false;
Um mehrere Aufgaben oder Verknüpfungen gleichzeitig zu bearbeiten, nutzen Sie die Methode batchUpdate:
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);
}
});
Mit dieser Methode können Sie mehrere Aufgaben oder Verknüpfungen mit nur einer einzigen Neudarstellung aktualisieren, anstatt durch mehrere Updates mehrere Neudarstellungen auszulösen.
Related sample: Multiselection and Indent/Outdent tasks
Um alle ausgewählten Aufgaben im Gantt-Diagramm zu durchlaufen, verwenden Sie die Methode eachSelectedTask:
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 Multi-Task-Auswahl können Sie Operationen auf mehrere Aufgaben gleichzeitig anwenden. Zum Beispiel können Sie Aufgaben einrücken oder ausrücken, sie also zu Unteraufgaben machen oder Unteraufgaben wieder zu Hauptaufgaben hochstufen.
Related sample: Multiselection and Indent/Outdent tasks
Um herauszufinden, ob eine Aufgabe aktuell ausgewählt ist, verwenden Sie die Methode isSelectedTask:
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 Auswahlsstatus einer Aufgabe umzuschalten, verwenden Sie die Methode toggleTaskSelection:
gantt.toggleTaskSelection("t_1"); //"t_1" ist die ID der Aufgabe
gantt.render();
Um alle aktuell ausgewählten Aufgaben abzurufen, verwenden Sie die Methode getSelectedTasks:
gantt.getSelectedTasks();
Um die zuletzt ausgewählte Aufgabe zu erhalten, verwenden Sie die Methode getLastSelectedTask:
gantt.getLastSelectedTask();
Wenn Sie die Auswahl auf Aufgaben derselben Ebene beschränken möchten, nutzen Sie die Option multiselect_one_level:
gantt.config.multiselect_one_level = true;
gantt.init('gantt_here');
Mit aktivierter multiselect.js-Erweiterung können Sie durch Halten von Strg oder Shift mehrere Aufgaben auswählen und diese dann gemeinsam horizontal verschieben.
Um diese Funktion zu deaktivieren, setzen Sie die Option drag_multiple auf false:
gantt.config.drag_multiple = true;
Related sample: Multiselection and Indent/Outdent tasks
Im Einzel-Auswahlmodus öffnet ein Klick auf eine Aufgabe sofort den Inline-Editor.
Im Multi-Auswahlmodus wird durch einen Klick auf eine nicht ausgewählte Aufgabe diese zunächst ausgewählt, der Inline-Editor öffnet sich jedoch erst beim zweiten Klick.
Um den Editor auch im Multi-Auswahlmodus bereits beim ersten Klick zu öffnen, aktivieren Sie die Konfiguration inline_editors_multiselect_open.
gantt.plugins({
multiselect: true
});
...
gantt.config.inline_editors_multiselect_open = true;
Wenn die Multi-Task-Auswahl aktiv ist, lösen das Auswählen einer oder mehrerer Aufgaben sowohl die allgemeinen onTaskSelected / onTaskUnselected Events als auch speziell für die Multiselect-Erweiterung vorgesehene Events aus.
Die Multi-Task-Auswahl löst folgende Event-Reihenfolge aus: