Beim Arbeiten mit Daten in der Gantt-Diagramm ist es wichtig zu verstehen, wie man das Objekt oder die ID eines Datenpunktes abruft. Viele Methoden erfordern das Datenobjekt oder die ID als Parameter, und die meisten Szenarien, die Datenmanipulationen betreffen, hängen davon ab, auf diese zu verweisen.
Weitere Details zu aufgabenbezogenen Methoden finden Sie im Artikel Aufgabe Eltern/Kind.
Um ein Task-Objekt abzurufen, verwenden Sie die Methode gantt.getTask
:
gantt.getTask("t1");
//->{id:"t1", text:"Task #5", start_date:"02-09-2020", duration:28,
// progress:0.6, parent:"pr_2", $source:[3,5], $target:[2,1], ...}
Um die Elternaufgabe einer Task zu finden, können Sie entweder die Methode gantt.getParent
verwenden oder auf die parent-Eigenschaft des Task-Objekts zugreifen:
gantt.getParent("t1"); //->"pr_2". Wenn kein Elternteil existiert, gibt die Methode die root id zurück
//oder
var taskObj = gantt.getTask("t1"); //-> {id:"t1", text:"Task #5", parent:"pr_2", ...}
var taskParent = taskObj.parent; //-> "pr_2"
Siehe den Artikel Aufgabe Eltern/Kind für eine vollständige Liste der baumbezogenen Methoden.
Für Informationen zum Abrufen von Verknüpfungen, die mit einer bestimmten Aufgabe verbunden sind, lesen Sie den Artikel Abrufen des Link-Objekts/der Link-ID.
Um die Dauer einer Aufgabe zu berechnen, verwenden Sie die Methode gantt.calculateDuration
:
gantt.calculateDuration(new Date(2020,03,30),new Date (2020,04,02)); // ->16
Beachten Sie, dass das einfache Aktualisieren der duration-Eigenschaft im Task-Objekt diese Methode nicht funktionieren lässt. Sie müssen auch die end_date-Eigenschaft mit der Methode calculateEndDate aktualisieren. Beispiel ansehen.
Wenn die Option gantt_work_time_config
aktiviert ist, berechnet diese Methode die Dauer in Arbeitszeit.
Um die Höhe des DOM-Elements einer Aufgabe zu bestimmen, verwenden Sie die Methode gantt.getTaskBarHeight
:
gantt.config.bar_height = 45;
gantt.render();
gantt.getTaskBarHeight(1); // -> 45
Die Methode kann auch den Wert zurückgeben, der in der bar_height-Eigenschaft des Task-Objekts angegeben ist:
var tasks = {
data:[
{ id: 1, text: "Project #2", start_date: "01-04-2018", duration: 18,
progress: 0.4, open: true, bar_height: "full", row:height: 50 },
{ id: 2, text: "Task #1", start_date: "02-04-2018", duration: 8,
progress: 0.6, parent: 1, bar_height: 25, row:height: 50 },
]
};
gantt.init("gantt_here");
gantt.parse(tasks);
gantt.getTaskBarHeight(1); // -> 45
gantt.getTaskBarHeight(2); // -> 25
Wenn die bar_height-Eigenschaft auf "full" gesetzt ist, wird die Höhe der Task-Leiste in Pixeln berechnet.
Um das Enddatum einer Aufgabe zu berechnen, verwenden Sie die Methode gantt.calculateEndDate
:
gantt.calculateEndDate(new Date(2020,03,30),48,"hour"); //-> Thu May 07 2020 17:00:00
Wenn die Option gantt_work_time_config
aktiviert ist, interpretiert diese Methode die Dauer als Arbeitszeit.
Um die aktuell ausgewählte Aufgabe zu erhalten, verwenden Sie die Methode gantt.getSelectedId
:
gantt.selectTask("t_1");
gantt.getSelectedId(); //-> "t_1" - die ID der ausgewählten Aufgabe
Um Aufgaben innerhalb eines bestimmten Zeitraums abzurufen, verwenden Sie die Methode gantt.getTaskByTime
:
var tasks = gantt.getTaskByTime(new Date(2020,03,05),new Date(2020,03,15));
// tasks ist ein Array von Task-Objekten
Um alle Aufgaben im Gantt-Diagramm abzurufen, verwenden Sie die Methode gantt.getTaskByTime
ohne Parameter:
var tasks = gantt.getTaskByTime(); //gibt alle Aufgaben als Array von Objekten zurück
Alternativ kann auch die Methode gantt.serialize
verwendet werden.
Um auf Verknüpfungen zu einer Aufgabe zuzugreifen, verwenden Sie die Eigenschaften $source und $target. Diese Eigenschaften werden automatisch generiert und enthalten die IDs der zugehörigen Verknüpfungen:
var taskObj = gantt.getTask("t1");
var sourceLinks = taskObj.$source; //-> ["l1","l4"] - IDs ausgehender Verknüpfungen
var targetLinks = taskObj.$target; //-> ["l5","l8"] - IDs eingehender Verknüpfungen
Um die nächste bevorstehende Aufgabe zu finden, verwenden Sie die Methode gantt.getTaskByTime
:
var tasks = gantt.getTaskByTime(new Date(), new Date(9999,1,1));
// tasks - die Liste aller bevorstehenden Aufgaben
tasks.sort(function(a,b){ return (a.start_date > b.start_date ? 1 : -1); });
// tasks[0] - das nächstgelegene bevorstehende Ereignis
Normalerweise kann die Task-ID aus dem "data"-Objekt im Datensatz abgerufen werden:
{
tasks:[
{id:1, text:"Task #1", start_date:"01-04-2020", duration:18, progress:0.4},
{id:2, text:"Task #2", start_date:"02-04-2020", duration:8, progress:0.6}
],
links:[...]
}
Wenn die Task-ID nicht direkt zugänglich ist, verwenden Sie die Methode gantt.getTaskByTime
:
var tasks = gantt.getTaskByTime(); //gibt alle Aufgaben zurück
for(var i=0;i < tasks.length; i++){ //iteriert durch Aufgaben, um die gewünschte zu finden
if (tasks[i].text == "Task #3")
var taskId = tasks[i].id;
};
Um die Leistung zu verbessern, begrenzen Sie die zurückgegebene Sammlung von Aufgaben, wenn Sie einen ungefähren Zeitbereich kennen:
var tasks = gantt.getTaskByTime(new Date(2020,05,01),new Date(2020,05,10));
for(var i=0;i < tasks.length; i++){
if (tasks[i].text == "Task #3")
var taskId = tasks[i].id;
};
Um die ID einer Aufgabe zu ändern, verwenden Sie die Methode gantt.changeTaskId
:
gantt.changeTaskId("t1", "t11"); //ändert die Task-ID von "t1" in "t11"
Der offene Zustand eines Aufgabenastes wird durch die Eigenschaft task.$open gesteuert. Diese Eigenschaft wird verfügbar, sobald Aufgaben in Gantt geladen sind. Nach dem Ändern des Wertes erscheinen die Änderungen nach dem nächsten Rendering:
// alle Äste erweitern
gantt.eachTask(function(task){
task.$open = true;
});
gantt.render();
// alle Äste einklappen
gantt.eachTask(function(task){
task.$open = false;
});
gantt.render();
Um eine einzelne Aufgabe zu öffnen oder zu schließen, verwenden Sie die Methoden gantt.open
oder gantt.close
. Diese aktualisieren den Zustand der Aufgabe und lösen ein Neuzeichnen aus. Für Massenoperationen ist das direkte Ändern der task.$open-Eigenschaft effizienter.
Siehe den Abschnitt How to copy and paste tasks für Beispiele.
Zurück nach oben