Schreibgeschützter Modus

Dieser Abschnitt erklärt, wie man den schreibgeschützten Modus in zwei verschiedenen Szenarien verwendet:

  1. Das gesamte Gantt-Diagramm schreibgeschützt machen
  2. Spezifische Aufgaben schreibgeschützt machen

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

Wenn Sie das gesamte Gantt-Diagramm nicht bearbeitbar machen möchten, können Sie die readonly Konfigurationsoption auf true setzen.

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

Beachten Sie, dass das Aktivieren des schreibgeschützten Modus nur die Standardaktionen einschränkt, die Benutzer über die Benutzeroberfläche ausführen können. Zum Beispiel können Benutzer das Lightbox oder den Inline-Editor nicht öffnen, Aufgaben nicht per Drag & Drop verschieben oder ihre Größe ändern.

Die readonly Eigenschaft beschränkt jedoch nicht die Aktionen, die über die API ausgeführt werden. Wenn Sie die Gantt-API verwenden, müssen Sie in Ihren Callback-Funktionen Überprüfungen hinzufügen, um festzustellen, ob der schreibgeschützte Modus aktiv ist. Hier ist ein Beispiel, wie man das Hinzufügen von Aufgaben über eine benutzerdefinierte Schaltfläche verhindert:

gantt.config.readonly = true;
 
gantt.config.columns = [
    { name: "text", label: "Aufgabenname", width: "*", tree: true },
    { name: "start_date", label: "Startzeit", align: "center" },
    { name: "duration", label: "Dauer", 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;     }}

Wenn Sie möchten, dass bestimmte Aufgaben oder Verbindungen auch im schreibgeschützten Modus bearbeitbar bleiben, können Sie ihren Datenobjekten eine 'editable' Eigenschaft hinzufügen und auf true setzen:

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

Standardmäßig ist dieses Verhalten mit der 'editable' Eigenschaft einer Aufgabe oder Verbindung verknüpft. Bei Bedarf können Sie mit der editable_property Konfigurationsoption den Eigenschaftsnamen ändern:

gantt.config.editable_property = "property_name";

Schreibgeschützter Modus für spezifische Aufgaben/Verbindungen

Um einzelne Aufgaben oder Verbindungen nicht bearbeitbar zu machen, können Sie ihren Datenobjekten eine 'readonly' Eigenschaft hinzufügen und auf true setzen:

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

Standardmäßig überprüft Gantt, ob eine Aufgabe oder Verbindung diese Eigenschaft auf einen nicht-negativen Wert gesetzt hat. Wenn ja, wird die Aufgabe oder Verbindung schreibgeschützt; andernfalls bleibt sie bearbeitbar.

Wenn eine Aufgabe oder Verbindung auf schreibgeschützt gesetzt ist, reagiert sie nicht auf Klicks, Doppelklicks, Ziehen oder jegliche Form der Bearbeitung.

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

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

Standardmäßig ist das schreibgeschützte Verhalten mit der 'readonly' Eigenschaft verknüpft. Falls erforderlich, können Sie diese Eigenschaft mit der readonly_property Konfigurationsoption ändern:

gantt.config.readonly_property = "property_name";

Details der "editable_property" Konfigurationsoption

Die editable_property Option bezieht sich auf eine Eigenschaft im Aufgaben-Datenobjekt, nicht auf einen Lightbox-Abschnitt oder eine Spalte im Raster:

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

Wenn Sie möchten, dass diese Eigenschaft über das Lightbox anpassbar ist, setzen Sie die editable_property, um mit der Eigenschaft übereinzustimmen, die der Steuerung zugeordnet ist:

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

Ereignisse schreibgeschützt machen basierend auf mehreren Eigenschaften

Wenn Sie Ereignisse basierend auf mehreren Bedingungen bearbeitbar oder schreibgeschützt machen müssen, gibt es ein paar Ansätze:

  • Verwalten Sie die Bearbeitbarkeit manuell, indem Sie Ereignisse wie onBeforeLightbox oder onBeforeTaskDrag blockieren.
  • Setzen Sie die editable_property dynamisch, wann immer Aufgaben geladen, erstellt oder aktualisiert werden, durch Ereignisse wie onTaskLoading, onTaskCreated oder onAfterTaskUpdate:
gantt.attachEvent("onTaskLoading", function(task){
    task.editable = task.has_owner && task.editable && task.text;
    return true;
});
Zurück nach oben