Даты загружаются в компонент согласно правилам загрузки дат.
Вы можете хранить даты в базе данных или файлах с данными в двух форматах: как объекты DateTime или как строки.
Только те объекты DateTime, которые созданы с помощью метода new Date(); могут быть отформатированы, т.к. подразумевается строковое форматирование. Строки необходимо отформатировать заранее.
Существует два метода для конвертации строк в объекты:
Конвертация происходит с помощью свойства map, которое применяется к самому столбцу, а не его ID. Map ссылается на необходимый элемент данных и разрешает форматирование:
webix.ui({
view:"datatable",
columns: [
{ map:"(date)#enddate#",editor:"date",header:"End date", width:120}
],
data: [
{id:"1", startdate:"2013-09-26", enddate:"2011-05-15"},
{..}
]
})
Применим ко всем компонентам данным, включая datatable.
Здесь мы создаём необходимый шаблон конвертации и затем определяем его как scheme для загруженный данных.
var my_format = webix.Date.strToDate("%Y-%m-%d");
// значения, разделённый дефисом интерпретируются как объект year-month-date
webix.ui({
view:"datatable",
// конфиг
scheme:{
$init:function(obj){
obj.startdate = my_format(obj.start);
}
}
})
Related sample: Converting Strings to Dates
Теперь наши объекты DateTime готовы к форматированию.
В библиотеке есть два объекта, которые работают с датами - webix.Date и webix.i18n. Обма умеют форматировать и обрабатывать даты, а последний ещё и за локализацию дат (также чисел и валют).
Локализация подразумевает реализацию локалей. Локаль это коллекция методов форматирования и шаблонов данных определённой области. По умолчанию, если вы форматируете даты с помощью объекта i18n, все даты и числа будут отформатированы по правилам, принятым на территории Северной Америки.
Локализация дат и чисел описана в соответствующей статье.
Объект дат позволяет форматировать даты вне зависимости от локалей с помощью метода dateToStr. Метод принимает шаблон формата в качестве параметра.
{
header:"m/d/Y",
sort:"date",
id:"start",
format:webix.Date.dateToStr("%m/%d/%y")
}
Столбец datatable показывают даты в формате "номер месяца/номер дня/год (двухзначное число)"
Возможные форматы собраны в этой статье.
Только у столбцов Datatable есть свойство format, в то время, как другие компоненту требуют темплейт-функцию.
Форматируем данные Datatable
webix.ui({
view:"datatable", columns:{
[
{ header:"WeekDay", id:"start", format:webix.i18n.longdateFormatStr},
{...}
]}
});
Форматируем данные других компонентах
// формат определяется локалью
webix.ui({
view:"list",
template:function(obj){
return webix.i18n.longDateFormatStr(obj.start);
}
});
// указывает формат отдельно
var myformat = webix.Date.dateToStr("%m/%d/%y");
webix.ui({
view:"list",
template:function(obj){
return myformat(obj.start);
}
});
Даты внутри компонентов редактируются с помощью специальных редакторов (читайте Редактирование данных).
Требования к редактированию дат:
Читайте подробнее об этих опциях в справочнике API для миксина EditAbility.
В примере ниже редактор используется как datepicker и вызывает calendar:
webix.ui({
view:"dataview",
// конфиг
editable:true,
editor:"date",
editValue:"start", // ссылается на элемент данных
data:[
{ text:"Joint 2", start:new Date(2011,1,14)},{...}
]
});
Related sample: Dataview Formatting
При работе с сервером, инициализируйте dataProcessor для компонента и изменения будут сохраняться на сервер автоматически.
Несмотря на то, что даты представлены как строки, сортируются они как объекты. Поэтому в случае, если они сортируются как строки, не забудьте конвертировать их в объекты DateTime (читайте выше)
Сортировка может проходит в двух направлениях: "asc" (восходящая) и "desc" (нисходящая).
У Datatable есть специальное свойство sort для столбцов.
Здесь мы можем обратиться к функции sort, которая принимает:
a) темплейт элемента данных для сортировки;
b) направление сортировки;
c) режим сортировки ("int", "date", "string", "string_strict", "text", "server", "raw" или пользовательский).
HTML кнопка, которая вызывает сортировку
<input type='button' value='Sort "Asc"'
onclick='grid.sort("#start#", "asc", "date");'>
Related sample: Using Date Templates
Формы, которые требуют даты от пользователей для удобства должны быть оснащены calendar.
Существует специальный контрол datepicker, который выглядит, как обычное текстовое поле с иконкой календаря.
При клике контрола появляется календарь. После того, как пользователь выбрал необходимую дату, она появится в текстовом поле. По умолчанию формат дат такой "%Y-%m-%d", а хранятся они как DateTime объекты.
Related sample: Date Picker in Calendar
С помощью объекта webix.editors вы можете кастомизировать или локализировать календарь в соответствии с общими правилами.
Дата по умолчанию, которая показывается в календаре - текущая дата. Вы можете изменить шаблон, установив необходимое значение в конструктор datepicker:
{
view:"datepicker",
value:new Date(2011,1,12)
}
Вы также можете изменить форматирование по умолчанию. Правила форматирования описаны выше и могут применятся к контролу как значение свойства format.
{
view:"datepicker",
format: webix.Date.dateToStr("%d/%m/%y")
}
Related sample: Date Picker in Calendar
Если форма привязана к компоненту, она загружает даты в формате, заданном этому компоненту. Например, если для datepicker задан пользовательский формат, форма также получит этот формат.
Наверх