Spreadsheet позволяет добавлять чарты, изображения, а также другие Webix компоненты прямо поверх ячеек. Пользователь может перемещать элементы в любое место таблицы с помощью драг-н-дроп.
Добавить чарты и/или изображения в Spreadsheet можно тремя способами:
Пользователь может редактировать чарты и изображения с помощью специального окна:
Для чартов:
Добавить компонент можно с помощью метода add(), вызвав его у модуля views:
Добавление чарта и изображения
ssheet.views.add(750, 50, "chart", "B2:E7", {
type:"line", legend:1, xAxis:1, width:550, height:400,
yAxis:{start:-10000, end:50000, step:5000},
series:[{tooltip:1, label:1, marker:"triangle", range:"C2:C7",color:"red"},
// другие шкалы
]
});
ssheet.views.add(50,400,"image","path/to/image005.jpg");
Related sample: Spreadsheet: Adding images and charts
Метод принимает следующие параметры:
config (object) - объект со следующими свойствами:
Общие свойства:
Специфичные для чарта свойства:
Можно загрузить компонент, передав массив с его параметрами в массив views внутри свойства таблицы data. Подробнее о параметрах выше.
webix.ready(function(){
webix.ui({
view:"spreadsheet",
data: {
data:[ /*data array*/ ],
// ...
views:[
[ 750, 50, "chart", "B2:E7", {type:"line", legend:1, xAxis:1,
yAxis:{start:-50000, end:500000, step:25000}}
],
[ 50, 400, "image", "path/to/image005.jpg" ]
]
}
});
});
Related sample: Spreadsheet: Loading images and charts
Помимо встроенных чартов и изображений, вы можете добавить любой Webix компонент.
Процесс состоит из двух шагов:
Прежде всего новый компонент нужно зарегистрировать, вызвав метод register() у модуля views. Метод принимает следующие параметры:
Регистрация нового компонента
ssheet.views.register("table", (node, conf, data) => {
// объект конфигурации и отображение компонента
const config = { view:"datatable", autoConfig:true, autoheight:true };
return webix.ui(config, node);
}, (view, data) => {
// обновление данных
view.clearAll();
if(webix.isArray(data))
view.parse(data);
}
);
После регистрации компонента, его можно добавить в Spreadsheet с помощью метода add():
Добавление компонента
ssheet.views.add(50, 50, "table", "B3:E7", {width:550});
Related sample: Spreadsheet: Adding Webix view
У встроенных типов "chart" и "image" есть диалоговые окна для редактирования. Чтобы у конечного пользователя была возможность редактирования других типов компонентов, диалоговые окна нужно добавлять вручную.
Для этих целей мы рекомендуем использовать ssheet-dialog. Для примера мы добавили только одно поле для данных. Вы вправе помещать столько контролов сколько требуется.
Настройка диалогового окна
var dialog = webix.ui({
view: "ssheet-dialog",
head: "Edit data",
position: "center",
body: {
view: "form",
elements:[
{view: "text", name:"data", label: "Data", placeholder: "Enter data"}
]
}
});
Подробнее о стилизации диалоговых окон.
Чтобы открыть диалоговое окно,необходимо задать событие onCommand для Spreadsheet:
Показ диалогового окна
ssheet.attachEvent("onCommand", function(obj){
obj.data = obj.config.data;
dialog.getBody().setValues(obj);
dialog.show();
});
Related sample: Spreadsheet: Adding Webix view
Чтобы применить новые значения, используйте событие диалогового окна onSaveClick. Внутри события вызовите метод update у Spreadsheet модуля views:
var dialog = webix.ui({
view: "ssheet-dialog",
body: {
view: "form"
},
on: {
onSaveClick: function () {
var values = this.getBody().getValues();
// обновляет данные в соответствии с данными полей
ssheet.views.update(values.viewid, values.data, values.config)
this.hide();
},
// другие обработчики
}
});
Вы можете кастомизировать добавленные компоненты так же, как другие элементы Spreadsheet.
Например, вы можете добавить фигуры и отдельный редактор для них:
Related sample: Spreadsheet: Add Shapes
Еще один пример - пользовательская палитра для круговых диаграмм:
Related sample: Spreadsheet: Custom palette for Pie charts
Наверх