Источники данных
Виды источников данных
<datasource>
Стандартный источник данных
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор источника данных | ! | |
query-id | Ссылка на выборку | Идентификатор выборки, на основе которой происходит получение данных | ||
object-id | Ссылка на объект | Идентификатор объекта | ||
default-values-mode | defaults query merge | Подстановка значений по умолчанию.defaults - значения по умолчанию заполняются данными прописанными в поляхquery - значения по умолчанию заполняются данными из запросаmerge - значения по умолчанию заполняются путем слияния данных прописанных в полях и полученных из запроса (полученные из запроса в приоритете), id игнорируется | query | |
size | Число | Размер выборки | 10 | |
route | Строка | URL получения данных |
Настройки
#Количество записей в запросе за данными (для всех видов источников)
n2o.api.datasource.size = 10
#Показать сообщение об успешном выполнении действия отправки
n2o.api.datasource.submit.message_on_success = true
#Показать сообщение о неудачном выполнении действия отправки
n2o.api.datasource.submit.message_on_fail = true
Тело
<filters> - Предустановленная фильтрация
<submit> - Отправка полей на сервер при их изменении
<dependencies> - Зависимости источника данных
Пример
<datasource id="ds1">
<filters>
<eq field-id="id" value="{id}"/>
...
</filters>
<submit>
...
</submit>
<dependencies>
<fetch on="ds2"/>
...
</dependencies>
</datasource>
<stomp-datasource>
STOMP-источник данных
Атрибуты
Наименование | Тип | Описание | Обязательность |
---|---|---|---|
id | Строка | Идентификатор источника данных | ! |
destination | Строка | Место назначения | ! |
Тело
<values> - Значения на момент инициализации
<values>
Значения на момент инициализации
Тело
<value> - Инициализирующее значение
<value>
Инициализирующее значение (имя атрибута задается пользователем)
Пример
<?xml version='1.0' encoding='UTF-8'?>
<application xmlns="http://n2oapp.net/framework/config/schema/application-3.0">
<datasources>
<stomp-datasource id="notifCountDs" destination="/notif/count">
<values>
<value count="0"/>
</values>
</stomp-datasource>
</datasources>
</application>
<app-datasource>
Источник данных, ссылающийся на источник из application.xml
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор источника данных | ! | |
source-datasource | Ссылка на источник данных | Идентификатор источника данных из application.xml | Значение id |
Пример
<app-datasource id="app_ds"/>
<browser-storage>
Источник, использующий хранилище браузера
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор источника данных | ! | |
key | Строка | Ключ, под которым будут хранится данные | Глобальный идентификатор источника | |
type | sessionStorage localStorage | Тип хранилища в браузере | sessionStorage | |
size | Число | Размер выборки | 10 |
Настройки
#Тип хранилища в браузере
n2o.api.datasource.browser.storage_type = sessionStorage
Тело
<submit> - Сохранение данных при их изменении
<dependencies> - Зависимости источника данных
<submit>
Сохранение д анных при их изменении
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
key | Строка | Ключ, под которым будут записываться данные | Ключ источника данных |
type | sessionStorage localStorage | Тип хранилища браузера, в которое будут записываться данные | Тип хранилища источника данных |
auto | true false | Автоматически записывать в хранилище при изменении данных | true |
model | resolve edit filter multi datasource | Модель текущего источника данных, которая будет сохранена | resolve |
Настройки
#Автоматически записывать при изменении данных
n2o.api.datasource.browser.submit.auto = true
Пример
<browser-storage id="ds" key="store" type="localStorage">
<submit type="localStorage" auto="false" key="store" model="filter"/>
<dependencies>
<fetch on="ds2"/>
...
</dependencies>
</browser-storage>
<cached-datasource>
Кэширующий источник данных
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор источника данных | ! | |
query-id | Ссылка на выборку | Идентификатор выборки, на основе которой происходит получение данных | ||
object-id | Ссылка на объект | Идентификатор объекта | ||
size | Число | Размер выборки | 10 | |
route | Строка | URL получения данных | ||
storage-type | sessionStorage localStorage | Тип хранилища в браузере | ||
storage-key | Строка | Ключ, под которым будут храниться данные. По умолчанию: глобальный идентификатор источника | ||
cache-expires | Строка | С какой периодичностью необходимо проверять актуальность кэша. Задается в формате 1d 3h 2m | ||
invalidate-cache-path-params | Строка | Path параметры, значения которых сравниваются во время проверки актуальности кэша | ||
invalidate-cache-query-params | Строка | Query параметры, значения которых сравниваются во время проверки актуальности кэша |
Настройки
#Тип хранилища в браузере
n2o.api.datasource.cached.storage_type = sessionStorage
Тело
<submit> - Сохранение данных при их изменении
<filters> - Предустановленная фильтрация
<submit>
Сохранение данных при их изменении
Атрибуты
Аналогичны Отправке полей на сервер при их изменении
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
clear-cache-after-submit | true false | Очищать кэш после submit | false |
Настройки
#Очищать кэш после submit
n2o.api.datasource.cached.clear_cache_after_submit = false
Пример
<cached-datasource id="ds1" storage-key="test_key"
invalidate-cache-path-params="person_id"
query-id="person" >
<filters>
<eq field-id="id" param="person_id"/>
</filters>
<submit clear-cache-after-submit="true"/>
</cached-datasource>
<inherited-datasource>
Источник, получающий данные из другого источника
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор источника данных | ! | |
source-datasource | Ссылка на источник данных | Идентификатор источника данных, из которого будут скопированы данные | ! | |
source-model | resolve edit filter multi datasource | Модель источника данных, из которой будут скопированы данные | resolve | |
source-field-id | Строка | Идентификатор поля, из которого будут скопированы данные | Вся модель | |
size | Число | Размер выборки | 10 |
Тело
<submit> - Сохранение данных при их изменении
<dependencies> - Зависимости источника данных
<fetch-value> - Изменения целевой модели при копировании
<filters> - Предустановленная клиентская фильтрация
Клиентская фильтрация поддерживает только фильтрацию типа <eq>
<submit>
Сохранение данных при их изменении
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
model | resolve edit filter multi datasource | Модель текущего источника данных, которая будет сохранена | resolve |
auto | true false | Автоматически записывать при изменении данных | true |
target-datasource | Ссылка на источник данных | Идентификатор источника данных, в который производится сохранение | Значение source-datasource источника |
target-model | resolve edit filter multi datasource | Модель источника данных, в которую производится сохранение | Значение source-model источника |
target-field-id | Строка | Идентификатор поля, в которое производится сохранение | Значение source-field-id источника, если не задан target-datasource , иначе - вся модель |
Настройки
#Автоматически записывать при изменении данных
n2o.api.datasource.inherited.submit.auto = true
Тело
<submit-value> - Изменения целевой модели при отправке
Пример
<datasources>
<inherited-datasource id="ds" source-datasource="app-ds">
<submit target-model="false" target-field-id="name">
<submit-value>...</submit-value>
</submit>
</inherited-datasource>
</datasources>
<submit-value>
JS выражение, позволяющее производить изменения целевой модели при ее отправке
Пример
<submit-value>
var result = target
result.docGroups = source
result.docs = result.docs.map(obj =>
obj.groups.filter(it =>
source.find(g =>
g.id == it.id
) != null
)
)
return result
</submit-value>
<fetch-value>
JS выражение, позволяющее производить изменения целевой модели при копировании в inherited-datasource
Пример
<fetch-value>
return source.docGroups.map( obj => obj.docsCount =
source.docs.filter(it =>
it.groups.find(g =>
g.id == obj.id
) != null
).length
)
</fetch-value>
<parent-datasource>
Источник, ссылающийся на источник из родительской страницы
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор источника данных | ! | |
source-datasource | Ссылка на источник данных | Идентификатор источника данных родительской страницы | Значение id |
Пример
<datasources>
<parent-datasource id="ds"/>
</datasources>
Зависимости источника данных
<fetch>
Обновление данных при изменении зависимых источников данных
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
on | Ссылка на источник данных | Идентификатор зависимого источника данных | ! | |
model | resolve edit filter multi datasource | Модель зависимого источника данных | resolve |
Пример
<dependencies>
<fetch on="ds" model="filter"/>
</dependencies>
<copy>
Копирование части модели из другого источника
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
on | Ссылка на источник данных | Идентификатор источника данных, из которого копируются данные | ! | |
source-model | resolve edit filter multi datasource | Модель источника данных, из которой будут скопированы данные | resolve | |
target-model | resolve edit filter multi datasource | Модель текущего источника, в которую будут скопированы данные | resolve | |
source-field-id | Строка | Идентификатор поля, из которого будут скопированы данные | Вся модель | |
target-field-id | Строка | Идентификатор поля текущего источника, в которое будут скопированы данные | Вся модель | |
submit | true false | Вызов сохранения данных сразу после копирования | false | |
apply-on-init | true false | Срабатывание копирования при инициализации источника данных | false |
Настройки
#Вызов сохранения данных сразу после копир ования
n2o.api.datasource.dependency.copy.submit = false
#Срабатывание копирования при инициализации источника данных
n2o.api.datasource.dependency.copy.apply_on_init = false
Пример
<dependencies>
<copy on="ds" source-model="resolve" target-model="filter" source-field-id="name" target-field-id="name"/>
</dependencies>