Так как Desktop - это комплексный виджет, он состоит из множества отдельных Webix компонентов со своим API.
Эти компоненты можно переопределить или же работать с отдельными настройками.
Чтобы настроить общую конфигурацию виджета, используйте следующие свойства:
webix.ui({
view: "desktop",
systemParams: user,
apps: myApps,
...
});
Существуют дополнительные свойства, которые могут быть переопределены, если вам необходимо внести изменения в конфигурацию по умолчанию, например tileAlign, grid, tileLayout и barPosition.
Каждый объект в массиве apps содержит настройки для конкретного приложения:
Метод launch() возвращает объект, содержащий обработчики. Они используются для инициализации приложения и реагирования на изменения состояния:
Related sample: Desktop: App Handlers
Событие "init " срабатывает при создании окна приложения. Обработчик этого события обязателен для корректной работы приложения. Он принимает 2 параметра:
В случае инициализации компонента Webix, обработчик "init" должен вернуть объект с конфигурацией этого компонета:
view: "desktop",
apps: [
{
name: "My App",
icon: "imgs/myapp.png",
launch: () => ({ init: () => ({ template: "My app" }) }),
}
]
Для приложений Webix Jet (например, Scheduler, FileManager) "init " должен возвращать само приложение:
view: "desktop",
apps: [
{
name: "filemanager",
icon: "imgs/fm.png",
launch: () => {
webix.require("//cdn.webix.com/pro/edge/filemanager/skins/material.css");
return webix.require("//cdn.webix.com/site/filemanager/filemanager.js").then(() => ({
init: () =>
new fileManager.App({
url: "https://docs.webix.com/filemanager-backend/",
})
}));
},
}
]
"init" не должен ничего возвращать для сторонних приложений. Первый аргумент используется для инициализации пользовательского приложения внутри контейнера:
view: "desktop",
apps: [
{
name: "TinyMCE",
icon: "imgs/editor.png",
launch: (sysParams) => {
return webix.require(
"https://cdn.tiny.cloud/1/no-api-key/tinymce/4.9.6-54/tinymce.min.js")
.then(() => ({
init: (container, options) =>{
container.innerHTML = "<textarea id='my_editor'></textarea>";
tinymce.init({
selector: "#my_editor",
...
});
...
}
}));
},
}
]
Related sample: Desktop: External App
Событие "destroy " срабатывает перед уничтожением окна приложения. Обработчик этого события принимает один параметр:
view: "desktop",
apps: [
{
name: "MyEditor",
icon: "imgs/editor.png",
launch: (sysParams) => {
return webix.require(
"https://cdn.tiny.cloud/1/no-api-key/tinymce/4.9.6-54/tinymce.min.js")
.then(() => ({
...
destroy: appDataObj =>{
appDataObj.myEditor.remove();
appDataObj.myEditor = null;
},
}));
},
}
]
Есть еще несколько событий, для которых вы можете назначить обработчик:
Обработчики этих событий устанавливаются с помощью метода "on", который принимает 3 параметра:
view: "desktop",
apps: [{
name: "MyApp",
launch: (sParams) => {
...
return {
...
on: (evName, params, appDataObj) => {
if (evName == "resize") {
const {
width,
height
} = params;
...
}
}
},
},
...
],
Вы можете установить компактный режим через свойство compact и указать значение width:
webix.ui({
view: "desktop",
systemParams: user,
apps: myApps,
width: 400,
compact: true
});
Related sample: Desktop: Compact Mode
Наверх