Данный функционал устарел и больше не поддерживается.
dhtmlxScheduler отлично работает в приложениях Windows Store, созданных с использованием JavaScript и HTML.
Специальная версия dhtmlxScheduler доступна для скачивания здесь: https://dhtmlx.com/x/download/regular/dhtmlxScheduler_windows.zip.
Для простого знакомства доступен пошаговый учебник — Basic Windows 8 app with dhtmlxScheduler.
Чтобы начать работу с dhtmlxScheduler, подключите следующие 4 файла:
//основные файлы
<script src="/lib/dhtmlxscheduler.js"></script>
<link href="/lib/dhtmlxscheduler.css" rel="stylesheet" />
Обратите внимание, что это минимальный набор файлов, необходимый для запуска приложения с dhtmlxScheduler. Если ваше приложение использует возможности расширений scheduler, обязательно добавьте соответствующие файлы расширений.
Настройка scheduler осуществляется стандартным способом:
<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());
}
};
Конфигурирование scheduler также выполняется стандартно:
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);
Для загрузки данных в scheduler используйте метод parse:
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);
Каждый элемент данных должен содержать следующие обязательные свойства:
Обычно за обработку операций CRUD в scheduler отвечает DataProcessor, но он несовместим с приложениями Windows 8. Поэтому в таких приложениях необходимо обрабатывать CRUD-операции вручную через события.
scheduler.attachEvent("onConfirmedBeforeEventDelete", function(id, event){
// ваш код
});
scheduler.attachEvent("onEventChanged", function (id, event) {
// ваш код
});
scheduler.attachEvent("onEventAdded", function (id, event) {
// ваш код
});
Ниже приведён общий пример реализации операции 'insert'. Операции 'delete', 'update' и 'read' реализуются аналогично.
//подключается к indexedDb и вызывает callback при успешном соединении
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 при подключении
callback(db);
}
req.onupgradeneeded = function(e){
//Событие срабатывает при подключении к новой базе данных или
//при изменении версии.
//Это единственное место для определения структуры базы данных (object stores)
var db = ev.target.result;
if (!db.objectStoreNames.contains("events")) {
//создаём хранилище данных, устанавливаем 'id' как автоинкрементируемый ключ
var events = db.createObjectStore(
"events",
{ keyPath: "id", autoIncrement: true }
);
}
}
}catch(e){
}
}
//добавляет js-объект в базу данных и вызывает callback при успехе
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);
}
});
}
// использует всё вышеописанное с dhtmlxScheduler
// когда пользователь добавляет событие в scheduler — оно сохраняется в базе данных
scheduler.attachEvent("onEventAdded", function (id) {
var ev =copyEvent(scheduler.getEvent(id));//copyEvent — функция глубокого копирования
delete ev.id;//реальный id будет назначен базой данных
insertEvent(ev, function (newId) {
scheduler.changeEventId(id, newId);//обновить id события в приложении
});
return true;
});
Некоторые возможности стандартного scheduler недоступны в приложениях Windows Store: