Available only in PRO Edition
Diese Funktion ist nur in der Scheduler PRO-Version verfügbar (kommerziell seit dem 6. Oktober 2021, Enterprise- und Ultimate-Lizenzen).
Zu Beginn der Arbeit mit der Bibliothek ist Ihnen vielleicht aufgefallen, dass dhtmlxScheduler ein statisches Objekt ist. Das bedeutet, dass nur eine Instanz von dhtmlxScheduler auf der Seite existieren kann.
Mit der PRO-Version ändert sich das jedoch: mehrere Instanzen von dhtmlxScheduler können nun auf derselben Seite koexistieren. Es gibt weiterhin die Standard-Scheduler-Instanz, die über das globale scheduler-Objekt zugänglich ist, aber Sie können zusätzlich weitere Scheduler-Objekte erstellen.
Um eine neue dhtmlxScheduler-Instanz zu erstellen, verwenden Sie die Methode Scheduler.getSchedulerInstance():
// Beachten Sie, dass 'Scheduler' mit einem Großbuchstaben beginnt
const scheduler = Scheduler.getSchedulerInstance();
Diese Methode kann ein Konfigurationsobjekt als Argument entgegennehmen:
const scheduler = Scheduler.getSchedulerInstance({
plugins: {
recurring: true,
},
container: "scheduler_here",
config: {
hour_date: "%h:%i",
details_on_create: true
},
data: {
events: [
{ id:1, start_date: "2022-04-18 09:00", end_date: "2022-04-18 12:00",
text:"English lesson", subject: 'english' },
{ id:2, start_date: "2022-04-20 10:00", end_date: "2022-04-21 16:00",
text:"Math exam", subject: 'math' },
{ id:3, start_date: "2022-04-21 10:00", end_date: "2022-04-21 14:00",
text:"Science lesson", subject: 'science' },
{ id:4, start_date: "2022-04-23 16:00", end_date: "2022-04-23 17:00",
text:"English lesson", subject: 'english' },
{ id:5, start_date: "2022-04-22 09:00", end_date: "2022-04-22 17:00",
text:"Usual event" }
]
}
});
Das Konfigurationsobjekt kann folgende Eigenschaften enthalten:
const scheduler = Scheduler.getSchedulerInstance({
events: {
onEventCreated: function(id, e){
var task = scheduler.getEvent(id);
task.owner = null;
return true;
},
onClick: function(id, e){
alert(scheduler.getEvent(id).text);
return true;
}
}
});
Hinweis: Wenn Sie Scheduler.getSchedulerInstance() ohne Parameter aufrufen, erhalten Sie ein Scheduler-Objekt mit den Standard-Einstellungen. Sie müssen Ihre neue Instanz wie gewohnt konfigurieren, initialisieren und mit Daten befüllen.
Hier ein einfaches Beispiel mit zwei untereinander angeordneten Schedulern:
window.addEventListener("DOMContentLoaded", function(){
var scheduler1 = Scheduler.getSchedulerInstance();
scheduler1.init('scheduler_here',new Date(2019,5,30),"week");
scheduler1.load("/data/events");
var scheduler2 = Scheduler.getSchedulerInstance();
scheduler2.init('scheduler_here_2',new Date(2019,5,30),"month");
scheduler2.load("/data/events");
});
<body>
<div id="scheduler_here" style="width:100%; height: 50%;"></div>
<div id="scheduler_here_2" style="width:100%; height: 50%;"></div>
</body>
Ab Version 6.0 stellt dhtmlxScheduler eine destructor bereit, um nicht mehr benötigte Scheduler-Instanzen zu entfernen.
Sie können den Destruktor einer Scheduler-Instanz wie folgt verwenden:
var myScheduler = Scheduler.getSchedulerInstance();
// Scheduler-Instanz zerstören
myScheduler.destructor();
Der Destruktor führt folgende Aktionen aus:
So können Sie den Destruktor verwenden, um eine Scheduler-Instanz bei der Arbeit mit Angular aufzuräumen:
@Component({selector: 'app-scheduler', template: `...`})
class MySchedulerComponent implements OnDestroy {
ngOnInit() {
this.$gantt = Scheduler.getSchedulerInstance();
// konfigurieren und initialisieren
}
ngOnDestroy() {
this.$scheduler.destructor();
this.$scheduler = null;
}
}
Der Aufruf des Destruktors eines DataProcessors entfernt die Instanz und trennt sie vom Scheduler. Beispiel:
var scheduler = Scheduler.getSchedulerInstance();
var dp = new scheduler.DataProcessor("url");
dp.init(scheduler);
// zerstört den DataProcessor und trennt ihn vom Scheduler
dp.destructor();
Wenn Sie ein Paket verwenden, das keine mehreren Scheduler-Instanzen unterstützt (wie GPL- oder Commercial-Editionen), wird der Scheduler nach dem Aufruf des Destruktors nicht mehr verfügbar sein, bis die Seite neu geladen wird.