Dieser Abschnitt erklärt, wie man den schreibgeschützten Modus in zwei verschiedenen Szenarien verwendet:
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";
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";
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";
Wenn Sie Ereignisse basierend auf mehreren Bedingungen bearbeitbar oder schreibgeschützt machen müssen, gibt es ein paar Ansätze:
onBeforeLightbox
oder onBeforeTaskDrag
blockieren.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