BaseDataSource¶
Функция-конструктор, определяющий базовый тип источников данных.
Description¶
Источники данных, представленные в InfinniUI, являются потомками BaseDataSource. В BaseDataSource реализованы базовые API, которые предоставлят все источники данных InfinniUI.
Syntax¶
new BaseDataSource(parameters)
Parameters¶
Name | Type | Description |
---|---|---|
parameters | Object |
Объект с параметрами представления. Один из параметров обязательный: parameters.view - родительское представление источника данных |
Properties¶
Name | Type | Description |
---|---|---|
name | String |
Содержит наименование источника данных |
onProviderErrorHandler | Script | Содержит обработчик события о том, что поставщик данных вернул ошибку |
Specific Properties¶
Для работы с данными свойствами используйте методы getProperty и setProperty. Обратите внимание, что для работы с данными свойствами необходимо указывать точку в названии.
Name | Description |
---|---|
items | Список элементов источника данных |
selectedItem | Выделенный элемент |
filter | Правило фильтрации документов |
filterParams | Параметры фильтра |
search | Строка полнотекстового поиска |
Methods¶
Name | Description |
---|---|
getView | Возвращает родительское представление |
getContext | Возвращает контекст родительского представления |
getName | Возвращает наименование источника данных |
setName | Устанавливает наименование источника данных |
suspendUpdate | Запрещает обновление списка элементов |
resumeUpdate | Разрешает обновление списка элементов |
isUpdateSuspended | Возвращает значение, указывающее, запрещено ли обновление списка элементов |
updateItems | Обновляет список элементов источника данных |
tryInitData | Пытается обновить список элементов источника. Делает это только в случае, если до этого источник не был прогружен данными |
isDataReady | Возвращает значение, указывающее, загрузились ли данные в источник или нет |
getItems | Возвращает список элементов источника данных |
createItem | Создает новый элемент в источнике данных |
saveItem | Сохраняет элемент в источнике данных |
deleteItem | Удаляет элемент из источника данных |
getSelectedItem | Возвращает выделенный элемент |
setSelectedItem | Устанавливает выделенный элемент |
getProperty | Возвращает значение указанного свойства источника |
setProperty | Устанавливает значение указанного свойства источника |
isLazy | Возвращает значение, является ли прогрузка данных в источнике “ленивой” или нет |
setIsLazy | Устанавливает значение, является ли прогрузка данных в источнике “ленивой” или нет |
isModified | Проверяет, является ли элемент несохраненным |
isModifiedItems | Проверяет, есть ли несохраненные элементы |
getFilter | Возвращает правило фильтрации документов |
setFilter | Устанавливает правило фильтрации документов |
getFilterParams | Возвращает параметры фильтра |
setFilterParams | Устанавливает параметры фильтра |
getSearch | Возвращает строку полнотекстового поиска |
setSearch | Устанавливает строку полнотекстового поиска |
getIdProperty | Возвращает наименование свойства с идентификатором элемента (по умолчанию Id) |
setIdProperty | Устанавливает наименование свойства с идентификатором элемента |
idOfItem | Возвращает значение идентификатора по переданному элементу item |
getFillCreatedItem | Возвращает, нужно ли предзаполнение новых элементов на сервере |
setFillCreatedItem | Устанавливает, нужно ли предзаполнение новых элементов на сервере |
getErrorValidator | Возвращает функцию проверки элемента на ошибки |
setErrorValidator | Устанавливает функцию проверки элемента на ошибки |
getValidationResult | Возвращает результат проверки на ошибки |
initDataProvider | Определяет обязательное свойство dataProvider. Наследники BaseDataSource должны переопределять этот метод! |
beforeDeleteItem | Вы можете переопределить этот метод в наследнике BaseDataSource, если есть необходимость выполнять некие действия перед удалением элемента |
Events¶
Name | Description |
---|---|
onSelectedItemChanged | станавливает обработчик события о том, что выделенный элемент изменился |
onPropertyChanged | Устанавливает обработчик события о том, что одно из свойств источника изменилось |
onItemCreated | Устанавливает обработчик события о том, что элемент создан |
onItemSaved | Устанавливает обработчик события о том, что элемент сохранен |
onItemDeleted | Устанавливает обработчик события о том, что элемент удален |
onItemsUpdated | Устанавливает обработчик события о том, что список элементов обновлен |
onErrorValidator | Устанавливает обработчик события о том, что произошла ошибка валидации |
onProviderError | Устанавливает обработчик события о том, что поставщик данных вернул ошибку |
BaseDataSource.metadata¶
Метаданные базового типа источников данных представления.
Properties¶
Name | Type | Default | Description |
---|---|---|---|
Name | String |
– | Наименование источника данных |
SuspendUpdate | String |
– | Причина запрета на обновление списка элементов. Для снятия запрета необходимо воспользоваться методом resumeUpdate(). |
Filter | String 1 |
– | Правило фильтрации документов |
FilterParams | Object |
– | Объект со значениями параметров. Параметр может быть задан как DataBinding. |
Search | String |
– | Строка полнотекстового поиска |
IdProperty | String |
‘_id’ | Свойство с идентификатором элемента |
FillCreatedItem | Boolean |
true | Логическое значение, указывающее, нужно ли предзаполнение новых элементов на сервере |
IsLazy | Boolean |
true | Логическое значение, определяющее, будет ли прогрузка данных в источнике “ленивой” или нет |
ResolvePriority | Integer |
0 | Приоритет прогрузки источника данных. Чем выше приоритет, тем раньше источник будет прогружен |
ValidationErrors | Script | – | Функция проверки элемента на ошибки |
CustomProperties | Object |
– | Вспомогательные параметры. Могут пригодиться, например, для настройки взаимодействия DataNavigation и RestDataSource. Объект является ассоциативным массивом, в котором key - это название свойства, а value - значение. |
OnErrorValidator | Script | – | Обработчик события о том, что проверка на ошибки завершена |
OnSelectedItemChanged | Script | – | Обработчик события о том, что выделенный элемент изменился |
OnPropertyChanged | Script | – | Обработчик события о том, что одно из свойств источника изменилось |
OnItemDeleted | Script | – | Обработчик события о том, что элемент удален |
OnItemsUpdated | Script | – | Обработчик события о том, что список элементов обновлен |
OnProviderError | Script | – | Обработчик события о том, что поставщик данных вернул ошибку |
1 Шаблонизируемая величина. Заполняется значениями из FilterParams.
Exampes¶
Создать экземпляр BaseDataSource нельзя (это абстрактный класс), однако можно создать ObjectDataSource, который наследуется от BaseDataSource.
{
"ObjectDataSource": {
"Name": "DocumentTypes",
"IdProperty": "guid",
"IsLazy": false,
"ValidationErrors": "{ return { IsValid: (args.Name != null), Items: [{Message: 'Name is required'}] }; }",
"OnPropertyChanged": "{ alert('Property ' + args.property + ' is changed!'); }"
}
}
Допустим возникла зависимость между источниками данных, и для корректной работы MainDataSource необходим загруженный TerminologyDataSource. Для решения этой проблемы достаточно указать ResolvePriority для TerminologyDataSource выше, чем для MainDataSource.
{
"DataSources": [
{
"DocumentDataSource": {
"Name": "MainDataSource",
"ConfigId": "configuration",
"DocumentId": "patients",
"SuspendUpdate": "SomeReason",
"Filter": "gt(Birthday,<%startDate%>)",
"FilterParams": {
"startDate": "date('1985-01-01')"
}
}
},
{
"DocumentDataSource": {
"Name": "TerminologyDataSource",
"ConfigId": "configuration",
"DocumentId": "diseases",
"Search": "Иванов Иван Иванович",
"ResolvePriority": 1
}
}
]
}
Реализация фильтра.
{
"DataSources": [
{
"ObjectDataSource": {
"Name": "ObjectDataSource",
"Items": [
{"_id": 1, "Name": "Mobile small", "currency": 1100, "Display": "480x320"},
{"_id": 2, "Name": "Mobile middle", "currency": 1200, "Display": "640x320"},
{"_id": 3, "Name": "Mobile large", "currency": 1300, "Display": "771x375"},
{"_id": 4, "Name": "Tablet", "currency": 1400, "Display": "960x480"},
{"_id": 5, "Name": "Desktop small", "currency": 1500, "Display": "1024x768"},
{"_id": 6, "Name": "Desktop middle", "currency": 1600, "Display": "1600x900"},
{"_id": 7, "Name": "Desktop", "currency": 2000, "Display": "1920x1080"}
],
"Filter": "and(contains(Name, <%filterName%>),contains(currency, <%filterPrice%>),contains(Display, <%filterDisplay%>))",
"FilterParams": {
"filterName": {
"Source": "ObjectDataSource2",
"Property": "$.FilterName"
},
"filterPrice": {
"Source": "ObjectDataSource2",
"Property": "$.FilterPrice"
},
"filterDisplay": {
"Source": "ObjectDataSource2",
"Property": "$.FilterDisplay"
}
}
}
},
{
"ObjectDataSource": {
"Name": "ObjectDataSource2",
"Items": [
{"_id": 1, "FilterName": "", "FilterPrice": "", "FilterDisplay": ""}
]
}
}
]
}
Пример заморозки DataSource из метаданных
{
"DataSources": [
{
"ObjectDataSource": {
"Name": "ObjectDataSource",
"SuspendUpdate": "SomeReason",
"Items": []
}
}
]
}
Пример настройки RestDataSource для работы с DataNavigation
{
"RestDataSource": {
"Name": "MainDataSource",
"CustomProperties": {
"pageNumber": 0,
"pageSize": 20
},
"GettingParams": {
"Origin": "http://localhost:9900",
"Method": "post",
"Params": {
"skip": {
"Source": "MainDataSource",
"Property": ".pageNumber",
"Converter": {
"ToElement": "{return args.source.getProperty('.pageSize') * args.value;}"
},
"DefaultValue": 0
},
"take": {
"Source": "MainDataSource",
"Property": ".pageSize",
"DefaultValue": 20
}
},
"Path": "/documents/PublicationInfo?skip=<%skip%>&take=<%take%>&count=true",
"Data": {}
},
"UpdatingItemsConverter": "{args.source.setProperty('.totalCount', args.value.Result.Count); return args.value.Result.Items;}"
}
}