Task-Objekt/ID

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.

Task-Objekt

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], ...}

Elternaufgabe einer Task

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.

Verknüpfungen zu einer Task

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.

Task-Dauer

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.

Task-Höhe

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.

Task-Enddatum

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.

Ausgewählte Task

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

Aufgaben aus einem bestimmten Zeitraum

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

Alle Aufgaben in Gantt

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.

Verknüpfungen einer bestimmten Aufgabe

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:

  • $source - IDs ausgehender Verknüpfungen.
  • $target - IDs eingehender 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

Nächste bevorstehende Aufgabe

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

Task-ID

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;
};

Ändern der Task-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"

Öffnen/Schließen von Aufgabenästen

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.

Kopieren/Einfügen von Aufgaben

Siehe den Abschnitt How to copy and paste tasks für Beispiele.

Zurück nach oben