Schreibgeschützter Modus

In diesem Artikel betrachten wir den schreibgeschützten Modus in zwei Szenarien:

  1. Schreibgeschützter Modus für das gesamte Gantt-Diagramm
  2. Schreibgeschützter Modus für bestimmte Aufgaben

Schreibgeschützter Modus für das gesamte Gantt-Diagramm

Um das gesamte Gantt-Diagramm schreibgeschützt zu machen, setzen Sie einfach die Option readonly auf true.

gantt.config.readonly = true;
 
gantt.init("gantt_here");

Beachten Sie, dass der schreibgeschützte Modus nur die integrierten Aktionen deaktiviert, die Benutzer über die Benutzeroberfläche ausführen können. Das bedeutet, wenn das gesamte Gantt-Diagramm gesperrt ist, können Benutzer weder das Lightbox-Formular noch den Inline-Editor öffnen, Aufgaben verschieben oder deren Größe ändern.

Die readonly-Eigenschaft blockiert jedoch keine Aktionen, die durch API-Aufrufe durchgeführt werden. Wenn Sie also die Gantt-API verwenden, sollten Sie in Ihren Callback-Funktionen manuell prüfen, ob der schreibgeschützte Modus aktiviert ist. Hier ein Beispiel, wie Sie das Hinzufügen von Aufgaben über einen benutzerdefinierten Button verhindern können:

gantt.config.readonly = true;
 
gantt.config.columns = [
    { name: "text", label: "Task name", width: "*", tree: true },
    { name: "start_date", label: "Start time", align: "center" },
    { name: "duration", label: "Duration", align: "center" },
    { name: "add", label: "1", width: 44 },
    {
        name: "add_custom", label: "2", width: 44, template: function (task) {
          return "<div class='custom_add' onclick='customAdd(" + task.id + ")';></div>"
        }
    }
];
 
function customAdd(parentId) {     if (gantt.config.readonly){         return;     }}

Um bestimmte Aufgaben oder Verknüpfungen weiterhin bearbeitbar zu lassen, auch wenn das Gantt-Diagramm schreibgeschützt ist, fügen Sie deren Datenobjekt die Eigenschaft 'editable' hinzu und setzen Sie sie auf true:

gantt.config.readonly = true;
var task = gantt.getTask(id).editable = true;

Standardmäßig ist dieses Verhalten an die Eigenschaft 'editable' einer Aufgabe oder Verknüpfung gebunden. Wenn Sie eine andere Eigenschaft verwenden möchten, können Sie dies mit der Option editable_property ändern:

gantt.config.editable_property = "property_name";

Schreibgeschützter Modus für bestimmte Aufgaben/Verknüpfungen

Um bestimmte Aufgaben oder Verknüpfungen schreibgeschützt zu machen, fügen Sie deren Datenobjekt die Eigenschaft 'readonly' hinzu und setzen Sie sie auf true:

gantt.getTask(id).readonly = true;
gantt.getLink(id).readonly = true;

Standardmäßig prüft das Gantt-Diagramm, ob eine Aufgabe oder Verknüpfung diese Eigenschaft auf einen "truthy"-Wert gesetzt hat und macht sie dann schreibgeschützt. Andernfalls bleibt sie bearbeitbar.

Wenn eine Aufgabe oder Verknüpfung schreibgeschützt ist, reagiert sie weder auf Klicks noch auf Doppelklicks und kann nicht verschoben oder bearbeitet werden.

Wenn Sie das Lightbox-Formular für schreibgeschützte Aufgaben anzeigen möchten, können Sie es manuell mit gantt.showLightbox(id) aufrufen:

gantt.attachEvent("onTaskDblClick", function(id,e){
    gantt.showLightbox(id)
    return true;
});

Standardmäßig ist das schreibgeschützte Verhalten mit der Eigenschaft 'readonly' einer Aufgabe oder Verknüpfung verbunden. Sie können diese Eigenschaft jedoch mit der Option readonly_property ändern:

gantt.config.readonly_property = "property_name";

Details zur "editable_property" Konfigurationsoption

Die 'editable_property' verweist auf eine Eigenschaft direkt im Aufgaben-Datenobjekt, nicht auf einen Lightbox-Abschnitt oder eine Spalte im linken Gitter:

{
    tasks:[
        {id:1, text:"Project #2", start_date:"01-04-2020", duration:18,order:10, 
            progress:0.4, parent:0, editable:false},
        {id:2, text:"Task #1", start_date:"02-04-2020", duration:8, order:10, 
            progress:0.6, parent:1, editable:true},
        {id:3, text:"Task #2", start_date:"11-04-2020", duration:8, order:20, 
            progress:0.6, parent:1, editable:true}
    ],
    links:[...]
}

Wenn Sie diese Eigenschaft über das Lightbox-Formular bearbeitbar machen möchten, setzen Sie 'editable_property' auf die Eigenschaft, auf die das Steuerelement abgebildet ist:

gantt.config.lightbox.sections = [ 
    {
        name:"description", 
        height:38, 
        map_to:"some_property", 
        type:"textarea", 
        focus:true
    },
    ....
]
gantt.config.editable_property = "some_property";

Setzen von schreibgeschützt/bearbeitbar auf Basis mehrerer Eigenschaften

Um die Bearbeitbarkeit von Ereignissen auf Grundlage mehrerer Bedingungen zu steuern, können Sie:

gantt.attachEvent("onTaskLoading", function(task){
    task.editable = task.has_owner && task.editable && task.text;
    return true;
});
Zurück nach oben