Nachrichten im Gantt-Diagramm dienen als Benachrichtigungen für verschiedene Zwecke, wie Fehler, Bestätigungen oder das Auswählen von Optionen. Diese Nachrichten basieren auf einem Fork des dhtmlxMessage-Repositories, sodass alle dessen Funktionen hier ebenfalls gelten.
Es gibt zwei Haupttypen von Nachrichten: eine einfache Popup-Nachricht und eine modale Nachrichtenbox mit Schaltflächen, die den Arbeitsablauf der Anwendung unterbrechen.
Modale Nachrichtenboxen gibt es in drei Typen:
Um eine einfache Popup-Nachricht zu erstellen, wird die Methode gantt.message verwendet. Der erforderliche Parameter für diese Methode ist der Nachrichtentext:
gantt.message("Die Aufgabe wurde aktualisiert");
Es gibt drei Stile von Nachrichtenboxen:
Um den Typ der Nachrichtenbox anzugeben, verwenden Sie die type-Eigenschaft mit dem gewünschten Wert:
// Erstellen einer Fehlermeldungsbox
gantt.message({type:"error", text:"Ungültiges Datenformat"});
Related sample: Gantt message types
Um benutzerdefinierte Stile auf eine Nachrichtenbox anzuwenden, kann eine CSS-Klasse mit dem type-Parameter zugewiesen werden, wie hier erklärt.
Standardmäßig erscheinen Popup-Nachrichten in der oberen rechten Ecke des Fensters und unterbrechen die übergeordnete Anwendung nicht, im Gegensatz zu modalen Nachrichtenboxen, die die App überlagern und blockieren. Die Position einer Nachrichtenbox kann über die Eigenschaft gantt.message.position angepasst werden:
gantt.message.position = 'bottom';
Related sample: Message position
Die verfügbaren Positionsoptionen sind:
Die Zeit, die eine Nachrichtenbox sichtbar bleibt, kann mit dem expire-Parameter angepasst werden, der in Millisekunden festgelegt wird. Standardmäßig beträgt das Ablaufintervall 4000 Millisekunden.
Das Intervall kann angepasst oder vollständig deaktiviert werden, indem der expire-Parameter auf "-1" gesetzt wird. In diesem Fall verschwindet die Nachricht nur, wenn sie angeklickt wird.
gantt.message({
type:"error",
text:"Ungültiges Datenformat",
expire:10000
});
Um eine Nachrichtenbox manuell auszublenden, ohne auf ihr automatisches Verschwinden zu warten, kann die Methode gantt.message.hide(boxId) verwendet werden. Die Methode erfordert:
gantt.message({
id:"myBox",
text:"Seite ist geladen"
});
gantt.message.hide("myBox");
Modale Nachrichtenboxen unterbrechen den Arbeitsablauf der Anwendung, bis eine bestimmte Aktion durchgeführt wird, in der Regel durch Klicken auf eine Schaltfläche. Sie schließen sich, wenn eine Schaltfläche geklickt wird, und eine Rückruffunktion (falls bereitgestellt) wird ausgeführt.
Es gibt drei Arten von modalen Nachrichtenboxen:
Gemeinsame Eigenschaften für diese Boxen umfassen:
Eine Alarmbox enthält eine "OK"-Schaltfläche. Der Text für diese Schaltfläche kann über den ok-Parameter festgelegt werden.
gantt.alert("Text");
gantt.alert({
text:"einige Texte",
title:"Fehler!",
ok:"Ja",
callback:function(){...}
});
Eine Bestätigungsbox hat zwei Schaltflächen: "OK" und "Abbrechen". Ihre Beschriftungen können mit den entsprechenden Eigenschaften angepasst werden.
gantt.confirm("BestätigenText");
gantt.confirm({
text: "Fortfahren?",
ok:"Ja",
cancel:"Nein",
callback: function(result){
gantt.message("Ergebnis: "+result);
}
});
Eine Modalbox hat einige einzigartige Funktionen:
gantt.modalbox({
title:"Einstellungen",
text: " ... html code here... ",
buttons:["Speichern", "Standard", "Abbrechen"],
callback: function(result){
gantt.alert(result);
}
});
Schaltflächen in einer Modalbox können auf zwei Arten eingerichtet werden:
gantt.modalbox({
// andere Einstellungen
buttons:["Speichern", "Löschen", "Abbrechen"],
callback: function(result){
switch(result){
case "0":
//Speichern
break;
case "1":
//Löschen
break;
case "2":
//Abbrechen
break;
}
}
});
Die Rückruffunktion erhält den in Zeichenketten umgewandelten Index der geklickten Schaltfläche ("0", "1", "2", usw.). Jede Schaltfläche erhält eine CSS-Klasse basierend auf ihrem Etikett, in Kleinbuchstaben umgewandelt (z. B. gantt_save_button, gantt_delete_button, gantt_cancel_button). Diese Klassen können gestylt werden:
.gantt_delete_button div{
background:red;
}
Wenn mehrere Popups denselben Schaltflächennamen verwenden, aber unterschiedliche Stile benötigen, kann die type-Konfiguration verwendet werden:
gantt.modalbox({
// andere Einstellungen
type:"special_popup",
buttons:["Speichern", "Löschen", "Abbrechen"]
});
Der type wird mit "gantt_" vorangestellt und als Klassenname dem Popup hinzugefügt:
.gantt_special_popup .gantt_delete_button div{
background:red;
}
Dieser Ansatz ermöglicht die explizite Konfiguration von CSS-Klassen und Rückgabewerten der Schaltflächen:
gantt.modalbox({
// andere Einstellungen
buttons: [
{ label:"Speichern", css:"link_save_btn", value:"speichern" },
{ label:"Abbrechen", css:"link_cancel_btn", value:"abbrechen" },
{ label:"Löschen", css:"link_delete_btn", value:"löschen" }
],
callback: function(result){
switch(result){
case "speichern":
//Speichern
break;
case "abbrechen":
//Abbrechen
break;
case "löschen":
//Löschen
break;
}
}
});
Der label-Parameter ist erforderlich, während css und value optional sind. Wenn sie weggelassen werden, wird das CSS aus dem Kleinbuchstaben-Etikett abgeleitet, und der Button-Index wird als Wert verwendet.
Das css wird mit "gantt_" vorangestellt und als Klassenname der Schaltfläche hinzugefügt:
.gantt_link_delete_btn div{
background:red;
}
Um eine modale Nachrichtenbox manuell auszublenden, verwenden Sie die Methode gantt.modalbox.hide(). Sie erfordert den div-Container der Modalbox:
var box = gantt.modalbox({
title:"Einstellungen",
text: " ... html code here... ",
buttons:["Speichern", "Standard", "Abbrechen"],
callback: function(result){
gantt.alert(result);
}
});
gantt.modalbox.hide(box);
Für alarm und confirm modale Boxen wird dieselbe Methode verwendet:
var box = gantt.confirm({
text: "Fortfahren?",
ok:"Ja",
cancel:"Nein",
callback: function(result){
gantt.message("Ergebnis: "+result);
}
});
gantt.modalbox.hide(box);
Standardmäßig werden Schaltflächen in Gantt mit einfachem Text benannt. Wenn Sie ein HTML-Element als Schaltflächennamen verwenden (wie das Text fett machen oder ein Symbol hinzufügen), gibt die Rückruffunktion, die durch das Klicken auf die Schaltfläche ausgelöst wird, null zurück.
Dies geschieht, weil Gantt spezifische Attribute im übergeordneten Element des angeklickten Elements überprüft. Wenn diese Attribute fehlen, ist das Ergebnis null. Darüber hinaus umschließt Gantt alle definierten Schaltflächenelemente in <div>
-Tags.
Wenn Sie also auf ein Textelement klicken, ist sein übergeordnetes Element ein leeres <div>
ohne die erforderlichen Attribute, was zu null
führt. Wenn Sie jedoch außerhalb des Textes auf die Schaltfläche selbst klicken, wird ein übergeordnetes Element mit den erwarteten Attributen ausgelöst, und das Ergebnis ist bedeutungsvoller:
value
-Parameters (für die vollständige Form)Um ein HTML-Element als Schaltflächennamen zu verwenden, müssen Sie es innerhalb von zwei <div>
-Elementen umschließen, die beide das data-result
-Attribut haben. Hier ist ein Beispiel:
gantt.confirm({
ok:`<div data-result="ja"><div data-result="ja"><i>Ja</i></div></div>`,
cancel:`<div data-result="nein"><div data-result="nein"><i>Nein</i></div></div>`,
});
gantt.modalbox({
buttons: [
{ label:`<div data-result="ja">
<div data-result="ja"><i>Ja</i></div>
</div>`,
css:"link_save_btn", value:"ja" },
{ label:`<div data-result="nein">
<div data-result="nein"><i>Nein</i></div>
</div>`,
css:"link_cancel_btn", value:"nein" },
{ label:`<div data-result="abbrechen">
<div data-result="abbrechen"><i>Abbrechen</i></div>
</div>`,
css:"link_cancel_btn", value:"abbrechen" },
],
});
Wenn Sie andere Elemente als Schaltflächennamen verwenden möchten, stellen Sie sicher, dass alle übergeordneten Elemente ebenfalls das data-result
-Attribut haben. Im Beispiel unten werden <u>
-Tags für den Schaltflächennamen verwendet. Diese sowie die beiden <div>
-übergeordneten Elemente enthalten das data-result
-Attribut:
gantt.confirm({
ok:`<div data-result="ja">
<div data-result="ja"><u data-result="ja"><i>Ja</i></u></div>
</div>`,
cancel:`<div data-result="nein">
<div data-result="nein"><u data-result="nein"><i>Nein</i></u></div>
</div>`,
});
gantt.modalbox({
buttons: [
{ label:`<div data-result="ja">
<div data-result="ja">
<u data-result="ja"><i>Ja</i></u>
</div>
</div>`,
css:"link_save_btn", value:"ja" },
{ label:`<div data-result="nein">
<div data-result="nein">
<u data-result="nein"><i>Nein</i></u>
</div>
</div>`,
css:"link_cancel_btn", value:"nein" },
{ label:`<div data-result="abbrechen">
<div data-result="abbrechen">
<u data-result="abbrechen"><i>Abbrechen</i></u>
</div>
</div>`,
css:"link_cancel_btn", value:"abbrechen" },
],
});
Sie können das Erscheinungsbild einer Nachrichtenbox anpassen, indem Sie Ihre eigenen Stile anwenden. Typischerweise wird eine CSS-Klasse über den type-Parameter angegeben. Diese Klasse definiert das gewünschte Aussehen der Nachrichtenbox.
Beachten Sie beim Festlegen des type
-Parameters folgende Punkte:
alert
und confirm
Boxen müssen Sie sie mit der 'fensterbezogenen' Methode initialisieren, um eine CSS-Klasse anzuwenden.message
Boxen müssen Sie sie mit der 'allgemeinen' Methode initialisieren, um eine CSS-Klasse anzuwenden.gantt-
beginnen.Hier ist ein Beispiel:
<style type="text/css">
.gantt-myCss div{
font-weight:bold;
color:wheat;
background-color:crimson;
}
</style>
gantt.message({ type:"myCss", text:"einige Texte" });
Related sample: Styling message boxes
Die Tastaturfunktionalität für modale Boxen wird durch die Eigenschaft gantt.message.keyboard gesteuert, die standardmäßig auf true gesetzt ist.
Standardmäßig blockieren modale Boxen die meisten Tastaturereignisse auf der Seite. Nur wenige Tasten sind funktional:
Wenn Sie die keyboard-Eigenschaft auf false setzen, werden alle Tastaturereignisse aktiviert, und die oben genannten Tasten haben nicht mehr ihr Standardverhalten:
gantt.message.keyboard = false;
gantt.modalbox({...});
Dies ist besonders nützlich, wenn Sie die vollständige Tastaturnutzung erlauben müssen, z. B. um Werte in Eingabefelder innerhalb von Modalboxen einzugeben.
Zurück nach oben