Die Bibliothek enthält die Quick Info-Erweiterung, die ein Popup mit Aufgabendetails anzeigt, wenn ein Benutzer auf eine Aufgabe auf dem Bildschirm tippt.
Related sample: QuickInfo extension
Um mit der Erweiterung zu starten, aktivieren Sie einfach das "Quick Info" Plugin mit der gantt.plugins Methode.
gantt.plugins({
quick_info: true
});
Wenn Sie die quick_info-Erweiterung deaktivieren möchten, setzen Sie die Eigenschaft show_quick_info auf false:
gantt.config.show_quick_info = false;
gantt.init("gantt_here");
Die Quick Info-Erweiterung bietet eine Reihe von APIs, um ihre Einstellungen anzupassen, ihr Verhalten zu steuern oder das Aussehen des Popups zu individualisieren.
Sie können entweder die API des gantt.ext.quickInfo Objekts oder die unten aufgeführte öffentliche dhtmlxGantt API verwenden:
Methoden
Events
Eigenschaften
Templates
Standardmäßig zeigt die Quick Info-Erweiterung automatisch ein Popup über der ausgewählten Aufgabe an.
Ab Version 7.0 wurde die Quick Info-Funktionalität mit dem gantt.ext.quickInfo Objekt erweitert, das Methoden zur manuellen Steuerung des Popups bereitstellt.
Das gantt.ext.quickInfo Objekt bietet folgende Methoden:
Das Popup kann für eine bestimmte Aufgabe, Verknüpfung, Ressourcenpanel oder an einer benutzerdefinierten Position auf dem Bildschirm mit der gantt.ext.quickInfo.show() Methode angezeigt werden:
// Popup für eine bestimmte Aufgabe anzeigen
var task = gantt.getTask(10);
gantt.ext.quickInfo.show(task.id);
// Popup an bestimmten Koordinaten anzeigen
gantt.ext.quickInfo.show(100, 200);
Hier ein Beispiel, wie das Popup für eine Ressource angezeigt wird:
const quickInfo = gantt.ext.quickInfo;
gantt.attachEvent("onGanttReady", function(){
quickInfo.setContainer(document.body);
})
gantt.attachEvent("onEmptyClick", function (e) {
const domHelpers = gantt.utils.dom;
const resourceElement = domHelpers.closest(e.target, "[data-resource-id]");
if(resourceElement){
const resourceId = resourceElement.getAttribute("data-resource-id");
const resource = gantt.$resourcesStore.getItem(resourceId);
const position = resourceElement.getBoundingClientRect();
quickInfo.show(position.right, position.top);
const assignedTasks = gantt.getResourceAssignments(resourceId).map(function(assign){
return gantt.getTask(assign.task_id).text;
});
quickInfo.setContent({
header: {
title: resource.text,
date: ""
},
content: "Assigned tasks: " + assignedTasks.join(", "),
buttons: []
});
}
});
Und so zeigen Sie das Popup für eine bestimmte Verknüpfung an:
const quickInfo = gantt.ext.quickInfo;
gantt.attachEvent("onLinkClick", function(id,e){
// individuelle Logik hier
const link = gantt.getLink(id);
const linksFormatter = gantt.ext.formatters.linkFormatter();
const domHelpers = gantt.utils.dom;
const position = domHelpers.getRelativeEventPosition(e, gantt.$task_data);
const sourceTask = gantt.getTask(link.source);
const targetTask = gantt.getTask(link.target);
quickInfo.show(position.x, position.y);
let linkDescr = "";
if (link.type === gantt.config.links.start_to_start){
linkDescr = "Start zu Start";
} else if (link.type === gantt.config.links.start_to_finish){
linkDescr = "Start zu Ende";
} else if (link.type === gantt.config.links.finish_to_finish){
linkDescr = "Ende zu Ende";
} else {
linkDescr = "Ende zu Start";
}
quickInfo.setContent({
header: {
title: `${linkDescr} link`,
date: ""
},
content: `Source: ${sourceTask.text}<br>
Target: ${targetTask.text}`,
buttons: []
});
});
Um das Popup zu schließen, verwenden Sie die gantt.ext.quickInfo.hide() Methode. Das Verhalten hängt von der Einstellung gantt.config.quick_info_detached ab, mit zwei Möglichkeiten:
gantt.config.quick_info_detached = false;
gantt.init("gantt_here");
// Popup mit Animation ausblenden
gantt.ext.quickInfo.hide();
gantt.config.quick_info_detached = false;
gantt.init("gantt_here");
// Popup sofort ausblenden
gantt.ext.quickInfo.hide(true);
Beachten Sie, dass wenn gantt.config.quick_info_detached auf true gesetzt ist, das Popup immer sofort geschlossen wird.
Standardmäßig enthält das Quick Info-Popup einen Titel, ein Datum, Inhalt und Buttons und sieht so aus:
Wenn Sie das Aussehen des Popups anpassen oder Ihr eigenes erstellen möchten, können Sie den HTML-Inhalt mit gantt.ext.quickInfo.setContent() definieren:
gantt.locale.labels.custom_button = "Mein Button"
gantt.ext.quickInfo.setContent({
header:{
title: "Mein benutzerdefinierter Header",
date: "18. Februar 2020"
},
content: "Hier steht ein Inhalt",
buttons: ["custom_button"]
})
Dies erzeugt ein Quick Info-Popup wie dieses:
Mit dem $click Objekt können Sie benutzerdefinierte Aktionen für Buttons im Popup hinzufügen:
gantt.config.quickinfo_buttons=["icon_delete","icon_edit","advanced_details_button"];
gantt.locale.labels["advanced_details_button"] = "Erweiterte Infos";
gantt.init("gantt_here");
gantt.$click.buttons.advanced_details_button=function(id){
gantt.message("Dies sind erweiterte Informationen");
return false; // blockiert das Standardverhalten
};
Verwenden Sie gantt.ext.quickInfo.setContainer(), um das Quick Info-Popup in einem benutzerdefinierten Container anzuzeigen:
const quickInfo = gantt.ext.quickInfo;
quickInfo.setContainer(document.body); gantt.ext.quickInfo.show(1300,100);
gantt.locale.labels.custom_button = "Mein Button"
gantt.ext.quickInfo.setContent({
header:{
title: "Mein benutzerdefinierter Header",
date: "18. Februar 2020"
},
content: "Hier steht ein Inhalt",
buttons: ["custom_button"]
});
Jetzt erscheint das Popup mit benutzerdefiniertem Inhalt im document.body, außerhalb des Gantt-Containers: