Skip to main content

Источники данных

Виды источников данных

<datasource>

Стандартный источник данных

Атрибуты

НаименованиеТипОписаниеЗначение по умолчаниюОбязательность
idСтрокаИдентификатор источника данных!
query-idСсылка на выборкуИдентификатор выборки, на основе которой происходит получение данных
object-idСсылка на объектИдентификатор объекта
default-values-modedefaults 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СтрокаКлюч, под которым будут хранится данныеГлобальный идентификатор источника
typesessionStorage localStorageТип хранилища в браузереsessionStorage
sizeЧислоРазмер выборки10

Настройки

#Тип хранилища в браузере
n2o.api.datasource.browser.storage_type = sessionStorage

Тело

<submit> - Сохранение данных при их изменении
<dependencies> - Зависимости источника данных

<submit>

Сохранение данных при их изменении

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
keyСтрокаКлюч, под которым будут записываться данныеКлюч источника данных
typesessionStorage localStorageТип хранилища браузера, в которое будут записываться данныеТип хранилища источника данных
autotrue falseАвтоматически записывать в хранилище при изменении данныхtrue
modelresolve 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>

<inherited-datasource>

Источник, получающий данные из другого источника

Атрибуты

НаименованиеТипОписаниеЗначение по умолчаниюОбязательность
idСтрокаИдентификатор источника данных!
source-datasourceСсылка на источник данныхИдентификатор источника данных, из которого будут скопированы данные!
source-modelresolve edit filter multi datasourceМодель источника данных, из которой будут скопированы данныеresolve
source-field-idСтрокаИдентификатор поля, из которого будут скопированы данныеВся модель
sizeЧислоРазмер выборки10

Тело

<submit> - Сохранение данных при их изменении
<dependencies> - Зависимости источника данных
<fetch-value> - Изменения целевой модели при копировании
<filters> - Предустановленная клиентская фильтрация

note

Клиентская фильтрация поддерживает только фильтрацию типа <eq>

<submit>

Сохранение данных при их изменении

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
modelresolve edit filter multi datasourceМодель текущего источника данных, которая будет сохраненаresolve
autotrue falseАвтоматически записывать при изменении данныхtrue
target-datasourceСсылка на источник данныхИдентификатор источника данных, в который производится сохранениеЗначение source-datasource источника
target-modelresolve 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Ссылка на источник данныхИдентификатор зависимого источника данных!
modelresolve edit filter multi datasourceМодель зависимого источника данныхresolve

Пример

<dependencies>
<fetch on="ds" model="filter"/>
</dependencies>

<copy>

Копирование части модели из другого источника

Атрибуты

НаименованиеТипОписаниеЗначение по умолчаниюОбязательность
onСсылка на источник данныхИдентификатор источника данных, из которого копируются данные!
source-modelresolve edit filter multi datasourceМодель источника данных, из которой будут скопированы данныеresolve
target-modelresolve edit filter multi datasourceМодель текущего источника, в которую будут скопированы данныеresolve
source-field-idСтрокаИдентификатор поля, из которого будут скопированы данныеВся модель
target-field-idСтрокаИдентификатор поля текущего источника, в которое будут скопированы данныеВся модель
submittrue falseВызов сохранения данных сразу после копированияfalse
apply-on-inittrue 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>