Previously, the getFormat method of SpreadSheet returned only the name of the format applied to a specific cell. Starting from the 11.2 version, the method returns an object containing both – the format name and the format itself (a string of formatting conditions).
Before v11.2
//returns a string with the format name
const name = $$("ssheet").getFormat(2, 1, "Sheet1");
webix.message(name); // -> "price"
Starting from v11.2
//returns an object with the format name and the format
const name = $$("ssheet").getFormat(2, 1, "Sheet1");
webix.message(JSON.stringify(name));
// -> {"name":"price","format":"[>=0][$$]#,0.00;[<0]-[$$]#,0.00"}
Since v11.2 the GoogleMap widget uses the API of the Google Maps Advanced Markers instead of the Marker API.
To use the functionality of Advanced Markers, it is required to provide the Map ID via the mapId option in the GoogleMap widget configuration.
webix.ui({
// provide your own Google API key
key:"AIzaSyAi0oVNVO-e603aUY8SILdD4v9bVBkmiTg",
// Map ID is required for advanced markers
mapId:"DEMO_MAP_ID",
view:"google-map",
zoom:6,
center:[ 48.724, 8.215 ],
// customizing the default pin element of the marker
template: function(item, PinElement){
return new PinElement({
scale: item.id
}).element;
},
data:[
{ id:1, lat:48.782, lng:9.177 },
{ id:2, lat:47.366, lng:8.55 },
{ id:3, lat: 48.137, lng: 11.575 }
]
});
Use of the Advanced Markers functionality extends customization possibilities of the markers. Check the details.
{ id: "common-row" },
{ id: "price-row" },
{ id: "int-row" },
{ id: "percent-row" },
{ id: "date-row" },
{ id: "string-row" },
{ id: "custom-row" }
{ id: "common-column" },
{ id: "price-column" },
{ id: "int-column" },
{ id: "percent-column" },
{ id: "date-column" },
{ id: "string-column" },
{ id: "custom-column" }
Earlier, the options list with font sizes in toolbar was presented as an array of numbers. Now it is an array of objects of the following type:
function getFontSize(){
return [
{ id: "8px", value: "8", action: "font-size" },
{ id: "9px", value: "9", action: "font-size" },
{ id: "10px", value: "10", action: "font-size" },
// other font size objects
];
}
Since v11.2 all actions are merged in one object with actions, and the menu now uses the same actions as the toolbar does. Some style-related actions ("font-weight", "font-style", "underline", "strike" and "wrap") work as toggles for menu. So, the callback function for the onStyleSet event for these actions can be called only with the name parameter, while the value parameter will be undefined.
Also note that the action property in the menu structure is equal to the parentId one. The action properties are not obligatory to specify, since their values will be taken from the corresponding parentId property of this submenu (if they are equal). However, you can set custom action properties for such style actions as fonts, sizes, alignment, borders and formats. Check the example of setting action properties for font sizes from the default structure in the above section.
Starting from v11.1, the key combinations used to set hotkeys via the addHotKey method of UIManager and the hotkey property of controls should be specified with the use of the Latin keyboard layout.
The hotkeys functionality supports the QWERTY (default), QWERTZ and AZERTY layouts (e.g. Ctrl+Ö will be recognized as a valid hotkey).
Due to the new possibility to limit the amount of items loaded to every folder, there have been several updates:
const Backend = $$("filemanager").getService("backend");
const LocalData = $$("filemanager").getService("local");
Backend.files(id, source); -> Backend.files(id, force, source);
LocalData.refresh(path, source); -> LocalData.refresh(path, force, source);
LocalData.reload(fs, path, source); -> LocalData.reload(fs, path, force, source);
The backward compatibility has been preserved, so the previous data format (an array of objects) works as well. However, the desired format and the obligatory format for the limited data loading is the following:
{
files: [ /* objects like before*/ ],
total: number, // the number of all files and folders if not all contents are loaded
}
the way of specifying the Refresh icon has been updated
![]()
before v11.1 it has been set as view:"icon":
since v11.1 it is set as {view:"button", type:"icon"}:
Since we introduced the possibility to specify the minimal width for a unit and added an automatic horizontal scroll in the Units view, the appearance of Scheduler has changed. The horizontal scroll will appear, if the width of a unit reaches the default size of 300 px (due to resizing or if there are too many units).
You may also need to adjust your existing customizations of the Scheduler configuration. The code parts that were changed are described below:
Before v11.1
config(){
return units.then(data => {
return {
rows: [UnitsHeaderView, multi, days]
}
})
}
From v11.1
config() {
return { rows: [UnitsHeaderView, multi, DaysView], }
}
where DaysView is a new class, a part of the views["modes/units/days"]. The promise from units.config has also been moved to the DaysView.
scrollViewBefore v11.1
config(){
return units.then(data => {
return {
cols: [
{ /* the "more" toggle */ },
{ cols: [ /* days */ ] }
]
}
})
}
From v11.1
config(){
return units.then(data => {
return {
cols: [
{ /* the "more" toggle */ },
{ view: "scrollview", body: { cols: [ /* days */ ] } }
]
}
})
}
Так как мы добавили новые элементы (раскрывающуюся секцию c фильтрами) в тулбар File Manager и Document Manager и изменили его структуру, вам может потребоваться настройка кастомизаций соответствующих view классов (topbar).
Ниже представлен пример, в котором сравнивается то, каким образом можно было добавить новый элемент в тулбар до версии 11.0 и как это можно сделать, начиная с версии 11.0.
class CustomTopBar extends fileManager.views.topbar {
config() {
const ui = super.config();
// 11.0
const mainToolbarRow = ui.cols[1].rows[0];
mainToolbarRow.cols.splice(1, 0, { view: "label", label: "New element" })
// 10.3 and below
ui.cols.splice(3, 0, { view: "label", label: "New element" })
return ui;
}
}
Начиная с версии 11.0 функции, используемые в формулах, разделены на категории (Common, Date, Text, Number и Financial). По умолчанию в параметрах определена категория Common. Это может вызвать ошибки в ячейках, если используемые в них функции не относятся к категории Common.
Для устранения ошибок задайте параметр methods с помощью строки с названием необходимой категории или используйте значение "all" для подключения всех категорий функций:
webix.ui({
view: "spreadsheet",
methods: "date", // or methods: "all"
toolbar: "full",
data: spreadsheet_data
});
Вы должны явно указать, добавлять ли пустую опцию в редактор ячеек, используя свойство empty:
spreadsheet.setCellEditor(1, 1,
{editor: "ss_richselect", options: "B3:B7", empty: true});
Начиная с версии 10.1, для включения и выключения линий осей следует использовать chart.xAxis.lines и chart.yAxis.lines. Свойство chart.lines будет работать только для диаграмм типа Radar.
Кроме того, с этого момента вместо chart.pieInnerText следует использовать chart.labels.
Начиная с версии 10.0, формулы с HYPERLYNK прекратили поддержку браузерных стилей. Если в данных есть ссылки, и вы хотите сохранить их цветными и подчеркнутыми, вам нужно добавить стили для них отдельно.
const baseStyle = ss.getStyle(1, 1);
const urlStyle = ss.addStyle({ color: "#0000ff", underline: "underline" }, baseStyle);
ss.setStyle(1, 1, urlStyle);
Метод hideItem меню был переименован в hideMenuItem. Чтобы отменить скрытие, используйте новый метод showMenuItem вместо showItem. Метод showItem следует использовать для прокрутки компонента, чтобы сделать видимым указанный элемент.
Все методы, которые раньше возвращали any, теперь возвращают тип webix.obj/union. Точный возвращаемый тип зависит от метода.
При работе с отрицательными числами с помощью соответствующих методов, в конфигурационном объекте, который передается в методы, необходимо задать свойства minusSign и minusPosition для корректного отображения отрицательных чисел.
Благодаря новым конфигурационным свойствам, вы можете добавить минус (minusSign) как до, так и после числа, или добавить символы с одной и с другой стороны числа. Пример использования метода format method:
const str1 = webix.Number.format(-10008.999, {
decimalSize: 2, groupSize: 3,
decimalDelimiter: ".", groupDelimiter: "'",
prefix: "abc", sufix: "dfg",
minusPosition:"after",
minusSign:"-",
priceTemplate:"${obj}"
});
// ->"abc$10'009.00-dfg"
Раньше параметрами функции для сортировки были значения указанного поля для двух объектов. Теперь это сами объекты данных и имя поля, по которому вы хотите отсортировать.
table.sort("#fieldName#", "desc", function(a, b, prop) {
return a[prop] - b[prop];
})
Начиная с версии 9.1, событие onEditorChange срабатывает на любые изменения в редакторе (событие "oninput"):
on: {
onEditorChange: function(cellId, value) {
webix.message(value);
}
}
Ранее onEditorChange полагалось на событие "onchange" и некорректно отрабатывало в некоторых браузерах, т.к. редактор разрушался в тот же момент.
Чтобы отследить окончание редактирования, вам необходимы события onBeforeEditStop/onAfterEditStop.
Начиная с версии 9.0 поле svg более недоступно. Используйте template вместо него. Новое поле позволяет определять НЕвекторные фигуры, а также создавать фигуры на основе встроенных темплейтов.
Создание фигуры до 9.0:
shapes: [
{
id: "laptop",
svg: /* svg код */,
},
// ...
]
Создание фигуры после 9.0:
shapes: [
{
id: "laptop",
template: `<img class="custom-image" src="svg/laptop.svg"></img>`,
},
// ...
]
Более подробно о поле template и его использовании читайте на этой странице.
Начиная с версии 9.0 фигуры join и action более недоступны. Какие альтернативы можно использовать:
Использование фигур action и join до 9.0:
webix.ui({
view: "diagram",
data: [/* блоки */],
item: {
// у всех блоков будет фигура "action"
type: "action"
}
});
Использование фигур action и join после 9.0:
webix.ui({
view: "diagram",
data: [/* блоки */],
item: {
// у всех блоков будет фигура "rrect"
type: "rrect" }
});
Начиная с версии 9.0 каждый блок представляет собой контейнер для его внутренних фигуры и текста. Поэтому, чтобы стилизовать блок, вам нужно обращаться его содержимому через соответствующие CSS классы:
Стилизация блока до 9.0:
[
{
id: "1",
value: "Default",
// стили для всего блока
$css: "styles_for_block"
}
]
Стилизация блока после 9.0:
[
{
id: "1",
// добавляем css класс блоку
$css: "styles_for_block"
}
]
Описываем CSS правила для фигуры и текста внутри блока:
/* стили для фигуры */
.styles_for_block .webix_diagram_shape_org { border-color: orange; }
/* стили для текста */
.styles_for_block .webix_diagram_text { font-weight: 500; }
Если блок содержит SVG фигуру, вам необходимо обратить непосредственно к ней (а не к классу):
.styles_for_block svg { stroke: orange; }
Более подробно о классах фигур и текста, а также о том, как их стилизовать читайте на этой странице.
Начиная с версии 9.0 следующие API и компонент более недоступны:
Начиная с версии 8.4 поле name у фигур диаграммы заменено на id. Поле name остаётся валидным, новы полняет другую функцию. Оно хранит текстовое значение, которое будет показано в тултипе, когда пользователь наведёт курсор мыши на соответствующую фигуру в редакторе Diagram.
Добавление своей фигуры до 8.4:
webix.ui({
view: "diagram",
shapes: [
{
name: "internet", svg: "svg_code",
},
]
});
Добавление своей фигуры после 8.4:
webix.ui({
view: "diagram",
shapes: [
{
id: "internet", svg: "svg_code",
// now it is a tooltip text
name: "This is Internet",
},
]
});
Изменение также касается сопутствующих методов API.
In case Webix CDN is included into a project via webix.env.cdn, you need to update the xlsx.core.styles.min.js file from this repository. The update is required starting from Webix 8.3.
Начиная с версии 8.2 методы модуля ranges: getCode, serialize и getRanges) возвращают диапазон с именем листа.
Возвращаемые данные до 8.2:
$$("ssheet").ranges.getRanges("Sheet 1");
/* [
{
"name": "MYRANGE",
"range": "B4:C7"
}
] */
Возвращаемые данные после 8.2:
$$("ssheet").ranges.getRanges("Sheet 1");
/* [
{
"name": "MYRANGE",
"range": "Sheet1!B4:C7", // включает в себя имя листа
"global": true
}
] */
Начиная с версии 8.2 метод сервиса Local isHoliday более недоступен. Используйте одноимённое свойство isHoliday.
Как определяли произвольные выходные до 8.2
class MyLocal extends gantt.services.Local {
isHoliday(date) {
// ваш код
return result;
}
}
Как определять произвольные выходные после 8.2
webix.ui({
view: "gantt",
url: "https://docs.webix.com/gantt-backend/",
isHoliday: date => {
// ваш код
return result;
}
});
Начиная с версии 8.2 свойство parent, которое хранило ID родительской задачи, переименовано в edit и теперь показывает, открыта ли правая панель для редактирования.
Объект состояния Gantt до 8.2:
{
top: 60, left: 250,
selected: 1.2, parent: "1",
readonly: false,
// другие свойства
}
Объект состояния Gantt после 8.2:
{
top: 60, left: 250,
selected: 1.2, edit: true,
readonly: false,
// другие свойства
}
Начиная с версии 8.0 у Scheduler новое API. Если вы использовали старую версию Scheduler лучшим решением будет пока не обновляться. Мы продолжим исправлять критические ошибки Scheduler 7.4
Начиная с версии 8.0 Webix Datatable использует DIV элементы вместо HTML таблиц. Используйте класс.webix_hcolumn для стилизации столбцов и .webix_hcell - для стилизации ячеек.
Стилизация ячеек до 8.0:
.my_style .webix_ss_header td {
border-right: 1px solid #009966;
}
Styling cells после 8.0:
.my_style .webix_ss_header .webix_hcell {
border-right: 1px solid #009966;
}
Начиная с Webix 8.0 хедер Datatable не использет HTML таблицы из-за соображений производительности. Поэтому ячейки хедера больше не находятся в TD элементах и вам не нужно использовать метод node.firstChild при создании фильтров.
Создание пользовательских элементов до 8.0:
webix.ui.datafilter.avgColumn = webix.extend({
refresh:function(master, node, value){
// рассчитываем результат
node.firstChild.innerHTML = Math.round(result/master.count());
}
}, webix.ui.datafilter.summColumn);
Создание пользовательских элементов после 8.0:
webix.ui.datafilter.avgColumn = webix.extend({
refresh:function(master, node, value){
// рассчитываем результат
node.innerHTML = Math.round(result/master.count());
}
}, webix.ui.datafilter.summColumn);
Начиная с Webix 8.0 Colorboard использует новую material-палитру по умолчанию. Если вы хотите использовать старую, передайте свойству type значение "classic":
webix.ui({
view: "colorboard",
type: "classic"
});
Изменено API для экспорта нескольких компонентов с помощью toExcel():
Экспорт нескольких компонентов до 7.3:
webix.toExcel(
[$$("table"), $$("list")],
{ sheets:["Big data", "Small data"]}
);
Экспорт нескольких компонентов после 7.3:
webix.toExcel([
{id:"table", options: {name:"Big data"}},
{id:"list", options: {name:"Small data"}}
]);
Функция "LINK" переименована в "HYPERLINK"
Имя функции до 7.3:
=LINK("https://webix.com")
Имя функции после 7.3:
=HYPERLINK("https://webix.com")
Методы до 7.3:
$$("ssheet").addFilter(rowId,columnId);
$$("ssheet").removeFilter();
Методы после 7.3:
$$("ssheet").setCellFilter(rowId,columnId, filterObject);
$$("ssheet").removeFilters();
The getValues() method of Form returns the ids of options for Multicombo. Before v7.3 when the newValues:true option has been used in Multicombo configuration, the value of the entered item has been used as ID, which could cause issues with non-unique ids. Since v7.3 all added items get unique ids via the webix.uid() method:
Values returned for new Multicombo items before 7.3:
{
"tags": "2,newvalue"
}
Values returned for new Multicombo items after 7.3:
{
"tags": "2,1739959413910"
}
Начиная с версии 7.2 у File Manager новое API. На данный момент нет простого способа миграции старой версии, поэтому если вразработке вы использовали File Manager 7.1, лучшим вариантом для вас будет не обновлять компонент. Мы будем продолжать поддерживать версию 7.1, однако обновления для неё выходить не будут.
Начиная с версии 7.2 свойство mode задаёт тип данных для фильтрации:
webix.ui({
view:"filter",
mode:"text" // было type:"text"
});
Фильтр "Richselect" больше недоступен. Начиная с версии SpreadSheet 7.2 он заменён на на новый инструмент, базирующийся на виджете Filter.
Данные пользователя в виджете Comments при загрузке или парсинге должны соответствовать формату @"Some Name". Теперь нет необходимости добавлять символы "", т.к. они добавляются автоматически.
Упоминания пользователей до 7.1:
"Hi, @Corvo Attano. Let's just do what we are supposed to do."
Упоминания пользователей после 7.1:
"Hi, @\"Corvo Attano\". Let's just do what we are supposed to do."
Мы убрали из библиотеки устаревшее и редко используемое API:
Более подробную информацию читайте в этой статье
Обратите внимание, что устаревшие решения всё ещё доступны на GitHub.
Кнопки с параметрами type:"next" и type:"prev" полностью удалены из Webix. Теперь они имеют вид стандартных прямоугольных кнопок.
Также общее количество типов кнопок сокращено для разделения их содержимого и стилизации. Перейдите по ссылке, чтобы ознакомиться с новой схемой типов и стилизации кнопок.
Устаревшие стили CSS и их замены (необязательны для Webix 6.3):
Устаревшие типы изображений/иконок и их новые параметры (необязательны для Webix 6.3):
По умолчанию кнопки типа "image" и "icon" теперь стилизованы под стандартные кнопки. Чтобы вернуть прозрачный фон, необходимо задать класс кнопкам:
Устаревшие типы будут работать до версии 7.0, и после выхода версии будут полностью удалены.
1. Прокси sync удалён. Вместо этого вы можете создать sync запрос и запарсить ответ с помощью API:
var xhr = webix.ajax().sync().get("data.php");
view.parse(xhr.responseText);
2. Метод proxy.load() принимает только 2 параметра:
callback удалён из списка параметров.
Если из этого метода вы возвращаете промис данных или статические данные, они будут запарсены прямо в компонент:
webix.proxy.loading = {
$proxy:true,
load(view, params){
return webix.ajax().post("/server/data",{ books:params.books });
}
};
3. Метод proxy.save() принимает только 3 параметра:
callback удалён из списка параметров.
Если из этого метода вы возвращаете промис данных или статические данные, они будут применены к компоненту:
webix.proxy.saving = {
$proxy:true,
save(view, params, dp){
var id = params.data.id;
if (params.operation == "insert")
return webix.ajax().post("/samples/server/films", params.data);
// ... другие операции
}
};
4. Метод proxy.saveAll() принимает 3 параметра:
callback удалён из списка параметров.
Если из этого метода вы возвращаете промис данных или статические данные, они будут применены к компоненту:
webix.proxy.saveall = {
$proxy:true,
saveAll:function(view, updates, dp){
//updates - массив изменённых records
return webix.ajax().post(this.source, { data:updates });
}
};
1. Коллбэк-функции метода webix.ajax больше не могут быть массивом;
2. События при ошибках загрузки:
$$("list").attachEvent("onLoadError", function(xhr){
//xhr - объект xmlHttpRequest
// код обработчика
});
и webix.onLoadError принимают XHR и компонент в качестве параметров:
webix.attachEvent("onLoadError", function(xhr,view){
//xhr - объект xmlHttpRequest
//view - компонент, спровоцировавший ошибку
// код обработчика
});
webix.ui({
view:"comments",
scheme:{
$init:(obj) => {
if(obj.date)
obj.date = webix.i18n.parseFormatDate(obj.date);
}
},
// ...данные и конфиг
});
Переименованы файлы исходного кода: webix.js в webix.min.js и webix_debug.js в webix.js (включает опции отладки).
Сокарёщн список Webix тем, включённых в пакет; тема по умолчанию заменена на Material. На данный момент в билиотеке 5 тем: Material (по умочланию), Mini (компактная версия Material), Flat, Compact (компактная версия Flat), и Contrast.
Иконки Font Awesome больше не используются по умолчанию. У билиотеки есть свой набор иконок, который зависит от текущей темы: Material и Mini используют иконки Material Design, а темы Flat, Compact и Contrast используют Font Awesome 5. Пакет содержит только те иконки, которые используются виджетами. Также изменился механизм использования пользовательских иконок. Более подробно читайте в этой статье.
После выхода версии 6.0, глобальные Webix свойства мигрировали в объект env. Поэтому путь к ним теперь выглядит следующим образом:
//webix.cdn = "//cdn.webix.com";
//webix.ui.zIndexBase = 200;
//webix.ui.scrollSize = 17;
//=>
webix.env.cdn = "//cdn.webix.com";
webix.env.scrollSize = 17;
webix.env.zIndexBase = 200;
Файл webix_debug.js удалён. Весь необходимый для отладки код помещён в файл webix.js. Перед отладкой ознакомьтесь со следующими изменениями:
webix.debug = true;
webix.debug_size = true;
необходимо задавать их таким образом:
webix.debug({ events: true, size:true });
Все остальные опции были удалены в силу их несостоятельности.
Начиная с версии 6.0, сторонние библиотеки больше не загружаются автоматически через webix.codebase = "./";. Вы всё ещё можете указать путь к необходимым компонентам через CDN. Существует три варианта, как это можно сделать:
Существует два варианта начала использования последней версии расширений для интеграции:
<script src="https://cdn.webix.com/components/edge/ckeditor/ckeditor.js"></script>
Изменилась логика применения пользовательских локалей для кнопок в Pager. Начиная с версии 6.0, локали для компонента задаются через объект the i18n:
webix.i18n.pager = {
first: "First",
last: "Last",
next: "Next",
prev: "Prev"
};
Важные изменения в компоненте Pivot:
separateLabel; также оно позволяет создавать ярлыки любых размеров.
По умолчанию эта опция включена. Чтобы вернуться к предыдущей конфигурации фильтра, установите значение false свойству separateLabel.Изменён порядок параметров в методе hideColumn. Теперь он принимает 4 параметра: id, options, refresh и mode.
новый параметр options регулирует отношение объединённых столбцов и скрытого столбца: при необходимости они могут быть скрыты вместе со столбцом-мастером.
Начиная с версии, 5.0 заголовок Webix Slider можно перемещать по умолчанию. Чтобы изменить это поведение и зафиксировать заголовок, используйте свойство moveTitle.
Чтобы избежать путанницы, Google-карты были удалены из репозитория компонентов, но их продвинутая версия остаётся в пакете и доступна под обеими лицензиями.
Интеграционные адаптеры для Angular, Backbone и JQuery удалены из файла webix.js. Теперь у них разные репозитории на GitHub, как и у всех остальнх интеграционных решений.
Подробнее о возможностях интеграции Webix с другими фреймворками читайте в этом разделе документации.
Изменилась механика получения объекта сторонних компонентов: Yandex карты, редактор CodeMirror, Sigma chart и GoogleMap (в основном пакете).
Ранее вы могли получить доступ к объекту следующим образом:
var editor = codemirror.editor;
var map = yandexmap.map;
или же используя метод компонента getSome():
var editor = codemirror.getEditor();
var map = yandexmap.getMap();
Начиная с версии 4.2 единственный вариант получения - использование метода getSome().
Чтобы получить объект карты, чарта или планировщика сразу после его загрузки и инициализации, передайте true в этот метод.
codemirror.getEditor(true).then(function(editor){ /* логика */ });
Список изменённых компонентов
Один из сторонних компонентов - NokiaMap - переименован в HereMap
webix.ui({ view:"here-map", id:"map" });
Код обновлённого компонента доступен по этой ссылке.
Важные обновления в комплексном виджете Pivot:
Изменён механизм загрузки файлов PDF компонента PDFViewer. Начиная с версии 4.0 PDF Viewer использует загрузчик данных Webix и "бинарный" прокси. Это позволяет использовать стандартные события.
webix.ui({
view:"pdfviewer",
url:"binary->files/WebixDocs.pdf"
});
Навигация по приложению Webix с помощью клавиши "tab" включена по умолчанию. Она больше не контролируется UIManager.
Раньше tab-навигацию можно было включить такой строкой: webix.UIManager.tabControl = true;. Чтобы лишить какой-либо виджет этой возможности, необходимо было задать false свойству tabFocus.
Начиная с версии Webix 4.0 эта функциональность считается устаревшей.
Начиная с версии 4.0 все виджеты и их активные зоны в стандартном порядке tab-навигации и не могут быть исключены из него. Мы сделали это из-за соображений доступности.
Фильтрация данных в привязанных компонентах: выбранное значение для мастера-компонента устанавливается после загрузки данных
В версии 3.3 было представлено новое свойство конфигурации PDF экспорта - header. Оно используется при настройке внешнего вида хедера экспортируемой таблицы.
Чтобы избежать путанницы, свойства хедера документа header и headerImage были переименованы:
Изменён параметр context в хелпере webix.event. Ранее оно обозначало объект, на который указывало ключевое слово this (мастер). Now it awaits a context object with bind, capture and id properties.
Метод collectValues компонентов DataTable и TreeTable больше не возвращает пустую опцию.
Метод используется фильтрами выбора для сбора массива опций вышеупомянутых компонентов.
До версии 3.3 метод возвращал набор опций и пустую опции для очистик значения фильтра.
Теперь метод не возвращает пустую опции, т.к. фильтры включают её в себя по умолчанию.
В версии 3.2 удалена старая функциональность экспорта в компонентах Datatable и Pivot.
Методы exportToPDF() и exportToExcel() в Datatable так же, как и методы Pivot toPDF() и toExcel() больше недоступны. Используйте webix.toPDF() и webix.toExcel() вместо них.
webix.toPDF($$("myPivot"));
webix.toExcel($$("myDatatable"));
Прокси "excel" удалён.
Используйте "бинарный" прокси для загрузки файлов типа Excel в дата-компоненты и тип данных "excel" для парсинга файлов Excel. Это исходный тип данных для Excel Viewer.
webix.ui({
view:"spreadsheet",
url: "binary->../common/test.xlsx@Data[0-10]",
datatype:"excel"
});
Начиная с версии 3.1, form.validate() не будет валидировать заблокированные поля. Чтобы сохрнить старое поведение метода, используйте его следующим образом:
form.validate({ disabled:true });
Начиная с версии 3.0 применяются трогие правила парсинга JSON. Это означает что Webix не будет обрабатывать некорректные JSON данные.
Версия 3.0 включает в себя новый экспорт API. Старая логика экспорта в Datatable устарела и будет полностью удалена в версии 3.2.
Изменился формат JSON строк, которые возвращаются загрузочным скриптом. Теперь в случае ошибки загрузки, скрипт отвечает со статусом "error".
echo "{ status:'error' }";
Любой другой ответ, например, "{status:'server'}" означает что загрузка выполнена успешно.
В версии 2.2 исходный parseFormat был "%Y-%m-%d". Начиная с версии 2.3 он изменился на "%Y-%m-%d %H:%i".
В текущей локали формат можно изменить следующим образом:
webix.i18n.parseFormat = "%Y-%m-%d";
webix.i18n.setLocate();
В версии Webix 2.2 ширина и высота лейаута включали внешние и внутреннии отступы.
//в Webix 2.2 высота в 100px была 140px ( 20 + 100 + 20)
//в Webix 2.3 высота будет равняться значению свойства (100px)
webix.ui({
view:"layout", padding:20, height:100, rows:[{}]
})
В Webix 2.2 размер лейаута это полный размер, который уже включает в себя внешние и внутренние отступы. Если вам привычно старое поведение, вы можете изменить высоту внутреннего компонента:
// в обеих версиях Webix 2.2 и Webix 2.3 высота будет 140px
webix.ui({
view:"layout", padding:20, rows:[{ height:100 }]
})
В версии 2.1 можно было задать "#value#" в темплейте столбца, чтобы применить значение ID этого столбца.
Версия 2.2 будет поддерживать эту возможность, но с новым синтаксисом: "#$value#". Изменения коснулись только ключевого слова "#value#", а все остальные темплейты ("#some#") буду иметь привычный синтаксис.
Метод ajax.header заменён на ajax.headers
Начиная с версии Webix 2.2, компоненты List, DataView и Template, ширина и высота контейнера будут включать ширину полосы прокрутки. Это значит, что ширина компонента будет иметь то значение, которое задано непосредственно в конфигурации (раньше ширина определялась как "заданное значение + ширина полосы прокрутки").
Свойство "decimalDelimeter" переименовано в "decimalDelimiter".
Наверх