Diese Funktionalität ist veraltet und wird nicht mehr gepflegt.
dhtmlxScheduler funktioniert problemlos in Windows Store Apps, die mit JavaScript und HTML erstellt wurden.
Eine spezielle Version von dhtmlxScheduler steht hier zum Download bereit: https://dhtmlx.com/x/download/regular/dhtmlxScheduler_windows.zip.
Für einen einfachen Einstieg gibt es ein Schritt-für-Schritt-Tutorial – Basic Windows 8 app with dhtmlxScheduler.
Um mit dhtmlxScheduler zu starten, binden Sie diese 4 Dateien ein:
//core files
<script src="/lib/dhtmlxscheduler.js"></script>
<link href="/lib/dhtmlxscheduler.css" rel="stylesheet" />
Beachten Sie, dass dies das minimale Set an Dateien ist, das für den Betrieb einer dhtmlxScheduler-App erforderlich ist. Falls Ihre App Funktionen aus Scheduler-Erweiterungen nutzt, fügen Sie bitte die entsprechenden Erweiterungsdateien hinzu.
Die Einrichtung des Schedulers erfolgt wie gewohnt:
<div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button"> </div>
<div class="dhx_cal_next_button"> </div>
<div class="dhx_cal_today_button"></div>
<div class="dhx_cal_date"></div>
<div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
<div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
<div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
</div>
<div class="dhx_cal_header">
</div>
<div class="dhx_cal_data">
</div>
</div>
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.previousExecutionState !==
activation.ApplicationExecutionState.terminated) {
WinJS.Utilities.ready(function(){
scheduler.init('scheduler_here');
}, true);
} else { }
args.setPromise(WinJS.UI.processAll());
}
};
Auch die Konfiguration des Schedulers erfolgt wie gewohnt:
WinJS.Utilities.ready(function(){
scheduler.config.multi_day = true;
scheduler.config.details_on_create = true;
scheduler.config.details_on_dblclick = true;
scheduler.init('scheduler_here', new Date(2012, 10, 1), "month");
}, true);
Um Daten in den Scheduler zu laden, verwenden Sie die parse-Methode:
var storeItems = [
{ text:"Friday", start_date:"11.04.2012 00:00",end_date:"11.05.2012 17:00" },
{ text:"New Year",start_date:"11.05.2012 14:00",end_date:"10.05.2012 17:00" },
{ text:"Birthday",start_date:"11.06.2012 16:00",end_date:"11.06.2012 17:00" }
];
WinJS.Utilities.ready(function(){
scheduler.init('scheduler_here');
scheduler.parse(storeItems, "json");
}, true);
Jedes Datenelement muss folgende Eigenschaften haben:
Normalerweise übernimmt DataProcessor die CRUD-Operationen im Scheduler, ist aber nicht mit Windows 8 Apps kompatibel. In diesen Apps müssen Sie CRUD-Operationen daher manuell über Events verwalten.
scheduler.attachEvent("onConfirmedBeforeEventDelete", function(id, event){
// Ihr benutzerdefinierter Code
});
scheduler.attachEvent("onEventChanged", function (id, event) {
// Ihr benutzerdefinierter Code
});
scheduler.attachEvent("onEventAdded", function (id, event) {
// Ihr benutzerdefinierter Code
});
Hier sehen Sie ein allgemeines Beispiel für die Implementierung der 'insert'-Operation. Die Operationen 'delete', 'update' und 'read' können auf ähnliche Weise umgesetzt werden.
//Verbindung zu indexedDb herstellen und Callback bei Erfolg ausführen
function connect(callback){
try{
var db = null;
var req = window.indexedDB.open("SchedulerApp", 1);
req.onsuccess = function (ev) {
db = ev.target.result;
if(callback)//Callback bei Verbindung ausführen
callback(db);
}
req.onupgradeneeded = function(e){
//Das Event wird beim Verbinden mit der neuen Datenbank oder
//beim Ändern der Version ausgelöst.
//Hier wird die Datenbankstruktur (object stores) definiert
var db = ev.target.result;
if (!db.objectStoreNames.contains("events")) {
//Datenspeicher erstellen, 'id' als autoincrement Schlüssel setzen
var events = db.createObjectStore(
"events",
{ keyPath: "id", autoIncrement: true }
);
}
}
}catch(e){
}
}
//js-Objekt zur Datenbank hinzufügen und Callback bei Erfolg ausführen
function insertEvent(data, callback) {
connect(function (db) {
var store = db.transaction("events", "readwrite").objectStore("events");
var updated = store.add(data);
updated.onsuccess = function (res) {
callback(res.target.result);
}
});
}
// Verwendet alles oben Definierte mit dhtmlxScheduler
// Wenn der Benutzer ein Ereignis zum Scheduler hinzufügt, wird es in der Datenbank gespeichert
scheduler.attachEvent("onEventAdded", function (id) {
var ev =copyEvent(scheduler.getEvent(id));//copyEvent – Funktion für Deep Copy
delete ev.id;//die echte id wird von der Datenbank vergeben
insertEvent(ev, function (newId) {
scheduler.changeEventId(id, newId);//Ereignis-id in der App aktualisieren
});
return true;
});
Einige Funktionen, die im Standard-Scheduler verfügbar sind, werden in Windows Store Apps nicht unterstützt: