Базовая схема, методы, сообщения
Glossary Item Box
Общие сведения
Детали предназначены для отображения дополнительных данных для основного объекта раздела. Детали раздела отображаются на вкладках страницы раздела в контейнере вкладок.
В зависимости от метода ввода и отображения данных различают следующие типы деталей:
- деталь с полями редактирования;
- деталь со страницей добавления;
- деталь с редактируемым реестром;
- деталь с выбором из справочника.
Подробное описание деталей в зависимости от их типа представлено в статье "Деталь".
Создание детали
Для того чтобы мастер деталей мог корректно работать с созданной разработчиком деталью, ее необходимо зарегистрировать. Для регистрации детали необходимо в таблицу SysDetail добавить запись с указанием заголовка детали, идентификатора схемы детали DetailSchemaUid (колонка UId таблицы SysSchema) и идентификатора схемы объекта детали EntitySchemaUId (колонка UId таблицы SysSchema).
Подробно процесс создания деталей разных типов изложен в статье "Работа с деталями".
Базовая схема детали BaseDetailV2
Все схемы деталей должны быть наследниками базовой схемы детали BaseDetailV2. В схеме реализована базовая логика инициализации данных и общения со страницей редактирования.
Класс базовой схемы детали содержит такие свойства:
Сообщения BaseDetailV2
Сообщения предназначены для общения детали со страницей редактирования. Полный перечень сообщений, их режим вещания и направление приведены в таблице 1.
Табл. 1. — Сообщения базовой детали
Название | Режим | Направление | Описание |
---|---|---|---|
GetCardState | Адресное | Публикация | Возвращает состояние страницы редактирования. |
SaveRecord | Адресное | Публикация | Сообщает странице редактирования о необходимости сохранить данные. |
DetailChanged | Адресное | Публикация | Сообщает странице редактирования об изменении данных детали. |
UpdateDetail | Адресное | Подписка | Подписка на обновление страницы редактирования. |
OpenCard | Адресное | Публикация | Открывает страницу редактирования. |
Виды режимов сообщений определены в перечислении Terrasoft.core.enums.MessageMode, а направление сообщений — в перечислении Terrasoft.core.enums.MessageDirectionType. Подробнее о них можно узнать из "Библиотеки классов клиентской части ядра платформы".
Атрибуты BaseDetailV2
Свойство attributes содержит атрибуты модели представления детали. Атрибуты, определенные в классе базовой детали, представлены в таблице 2.
Табл. 2. — Атрибуты базовой детали
Название | Тип | Описание |
---|---|---|
CanAdd | BOOLEAN | Признак возможности добавления данных. |
CanEdit | BOOLEAN | Признак возможности редактирования данных. |
CanDelete | BOOLEAN | Признак возможности удаления данных. |
Collection | COLLECTION | Коллекция данных детали. |
Filter | CUSTOM_OBJECT | Фильтр детали. Используется для фильтрации данных в детали. |
DetailColumnName | STRING | Имя колонки, по которой выполняется фильтрация. |
MasterRecordId | GUID | Значение ключа родительской записи. |
IsDetailCollapsed | BOOLEAN | Признак свернутости детали. |
DefaultValues | CUSTOM_OBJECT | Значения колонок модели по умолчанию. |
Caption | STRING | Заголовок детали. |
Возможные типы данных атрибутов представлены перечислением Terrasoft.DataValueType. Подробнее о типах данных можно узнать из "Библиотеки классов клиентской части ядра платформы".
Методы BaseDetailV2
Методы, определенные в классе базовой детали, представлены в таблице 3.
Табл. 3. — Методы базовой детали
Название | Параметры | Описание |
---|---|---|
init |
{Function} callback —функция обратного вызова. {Object} scope — контекст выполнения метода. |
Инициализирует страницу детали. |
initProfile | Нет | Инициализирует профиль схемы. По умолчанию содержит значение Terrasoft.emptyFn. |
initDefaultCaption | Нет | Устанавливает заголовок детали по умолчанию. |
initDetailOptions | Нет | Инициализирует коллекцию данных представления реестра. |
subscribeSandboxEvents | Нет | Подписывается на сообщения, необходимые для работы детали. |
getUpdateDetailSandboxTags | Нет | Генерирует массив тегов для сообщения UpdateDetail. |
updateDetail | {Object} config — конфигурационный объект, содержащий свойства детали. | Обновляет деталь согласно переданным параметрам. По умолчанию содержит значение Terrasoft.emptyFn. |
initData |
{Function} callback —функция обратного вызова. {Object} scope — контекст выполнения метода. |
Инициализирует коллекцию данных представления реестра. |
getEditPageName | Нет | Возвращает имя страницы редактирования в зависимости от типа выбранной записи (при редактировании) или от выбранного типа записи для добавления (при добавлении). |
onDetailCollapsedChanged | {Boolean} isCollapsed — признак свернутой/развернутой детали. | Обработчик сворачивания или разворачивания детали. |
getToolsVisible | Нет | Возвращает значение свернутости детали. |
getDetailInfo | Нет | Публикует сообщение для получения информации о детали. |
Массив модификаций BaseDetailV2
В массиве модификаций diff базовой детали определен только базовый контейнер для представления детали:
diff: /**SCHEMA_DIFF*/[ // Базовый контейнер для представления детали. { "operation": "insert", "name": "Detail", "values": {...} } ]/**SCHEMA_DIFF*/
Базовый класс детали с реестром BaseGridDetailV2
Является наследником BaseDetailV2. Все детали с реестром должны быть наследниками BaseGridDetailV2. В схеме BaseGridDetailV2 реализована базовая логика работы с реестром (загрузка, фильтрация), удаление, добавление и редактирование записей на детали.
Процесс создания пользовательской детали с реестром подробно изложен в статье "Создание детали с редактируемым реестром".
Сообщения BaseGridDetailV2
Основные сообщения схемы BaseGridDetailV2 приведены в таблице 4.
Табл. 4. — Сообщения базовой детали с реестром
Название | Режим | Направление | Описание |
---|---|---|---|
getCardInfo | Адресное | Подписка | Возвращает информацию о странице редактирования — значения по умолчанию, название колонки типизации, значение колонки типизации. |
CardSaved | Широковещательное | Подписка | Обрабатывает сообщение сохранения страницы редактирования. |
UpdateFilter | Широковещательное | Подписка | Обновляет фильтры в детали. |
GetColumnsValues | Адресное | Публикация |
Получает значения колонок модели страницы редактирования. |
Виды режимов сообщений определены в перечислении Terrasoft.core.enums.MessageMode, а направление сообщений — в перечислении Terrasoft.core.enums.MessageDirectionType. Подробнее о них можно узнать из "Библиотеки классов клиентской части ядра платформы".
Атрибуты BaseGridDetailV2
Основные атрибуты класса BaseGridDetailV2 приведены в таблице 5.
Табл. 5. — Атрибуты базовой детали с реестром
Название | Тип | Описание |
---|---|---|
ActiveRow | GUID | Значение первичной колонки активной записи реестра. |
IsGridEmpty | BOOLEAN | Признак того, что реестр пуст. |
MultiSelect | BOOLEAN | Признак, разрешен ли множественный выбор. |
SelectedRows | COLLECTION | Массив выбранных записей. |
RowCount | INTEGER | Количество строк в реестре. |
IsPageable | BOOLEAN | Признак активности постраничной загрузки. |
SortColumnIndex | INTEGER | Индекс колонки сортировки. |
CardState | TEXT | Режим открытия страницы редактирования записи. |
EditPageUId | GUID | Уникальный идентификатор страницы редактирования. |
ToolsButtonMenu | COLLECTION | Коллекция выпадающего списка функциональной кнопки. |
DetailFilters | COLLECTION | Коллекция фильтров детали. |
IsDetailWizardAvailable | BOOLEAN | Признак, что мастер детали доступен. |
Возможные типы данных атрибутов представлены перечислением Terrasoft.DataValueType. Подробнее о типах данных детали можно узнать из "Библиотеки классов клиентской части ядра платформы".
Миксины BaseGridDetailV2
Основные миксины, используемые классом BaseGridDetailV2, приведены в таблице 6.
Табл. 6. — Миксины базовой детали с реестром
Название | Класс | Описание |
---|---|---|
GridUtilities | Terrasoft.GridUtilities | Миксин для работы с реестром. |
WizardUtilities | Terrasoft.WizardUtilities | Миксин для работы с мастером деталей. |
Подробнее миксин GridUtilities описан ниже.
Методы BaseGridDetailV2
Методы, используемые классом BaseGridDetailV2, приведены в таблице 7.
Табл. 7. — Методы базовой детали с реестром
Название | Параметры | Описание |
---|---|---|
init |
{Function} callback — функция обратного вызова. {Object} scope — контекст выполнения метода. |
Замещает метод класса BaseDetailV2. Вызывает логику метода init родителя, регистрирует сообщения, инициализирует фильтры. |
initData |
{Function} callback — функция обратного вызова. {Object} scope — контекст выполнения метода. |
Замещение метода класса BaseDetailV2. Вызывает логику метода initData родительского класса, инициализирует коллекцию данных представления рееестра. |
loadGridData | Нет | Выполняет загрузку данных реестра. |
initGridData | Нет | Выполняет инициализацию значений по умолчанию для работы со списком. |
getGridData | Нет | Возвращает коллекцию реестра. |
getFilters | Нет | Возвращает коллекцию фильтров детали. |
getActiveRow | Нет | Возвращает идентификатор выбранной записи в реестре. |
addRecord | {String} editPageUId — идентификатор типизированной страницы редактирования. | Добавляет новую запись в реестр. Сохраняет страницу редактирования в случае необходимости. |
copyRecord | {String} editPageUId — идентификатор типизированной страницы редактирования. | Копирует запись и открывает страницу редактирования. |
editRecord | {Object} record — модель записи для редактирования. | Открывает страницу редактирования выбранной записи. |
subscribeSandboxEvents | Нет | Подписывается на сообщения, необходимые для работы детали. |
updateDetail | {Object} config — конфигурационный объект, содержащий свойства детали. | Замещение метода класса BaseDetailV2. Вызывает логику метода updateDetail родителя, обновляет деталь. |
openCard |
{String} operation — тип операции (добавление/редактирование). {String} typeColumnValue — значение колонки типизации записи. {String} recordId — идентификатор записи. |
Открывает страницу редактирования. |
onCardSaved | Нет | Обрабатывает событие сохранения страницы редактирования, в которой находится деталь. |
addToolsButtonMenuItems | {Terrasoft.BaseViewModelCollection} toolsButtonMenu — коллекция выпадающего списка функциональной кнопки. | Добавляет элементы в коллекцию выпадающего списка функциональной кнопки. |
initDetailFilterCollection | Нет | Инициализирует фильтр детали. |
setFilter |
{String} key — тип фильтров. {Object} value — значение фильтров. |
Устанавливает значение фильтров детали. |
loadQuickFilter | {Object} config — параметры загрузки модуля фильтров. | Загружает быстрый фильтр. |
destroy | Нет | Очищает данные, выгружает деталь. |
Массив модификаций BaseGridDetailV2
В массиве модификаций diff базовой детали определен только базовый контейнер для представления детали:
diff: /**SCHEMA_DIFF*/ [ { // Элемент для отображения реестра. "operation": "insert", "name": "DataGrid", "parentName": "Detail", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.GRID, … } }, { // Кнопка дозагрузки реестра. "operation": "insert", "parentName": "Detail", "propertyName": "items", "name": "loadMore", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, … } }, { // Кнопка добавления записи. "operation": "insert", "name": "AddRecordButton", "parentName": "Detail", "propertyName": "tools", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, … } }, { // Кнопка добавления типизированной записи. "operation": "insert", "name": "AddTypedRecordButton", "parentName": "Detail", "propertyName": "tools", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, … } }, { // Меню детали. "operation": "insert", "name": "ToolsButton", "parentName": "Detail", "propertyName": "tools", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, … } } ] /**SCHEMA_DIFF*/
Миксин GridUtilitiesV2
GridUtilitiesV2 — миксин, реализующий логику работы с элементом управления "реестр". В классе Terrasoft.configuration.mixins.GridUtilities реализованы:
- Подписка на сообщения.
- Загрузка данных.
- Работа с реестром:
- выбор записей (поиск активных);
- добавление, удаление, редактирование записей;
- установка фильтров;
- сортировка;
- экспорт в файл;
- проверка прав доступа к записям реестра.
Методы GridUtilitiesV2
Основные методы класса GridUtilitiesV2 представлены в таблице 8.
Табл. 8. — Методы базовой детали с реестром
Название | Параметры | Описание |
---|---|---|
init |
Нет |
Осуществляет подписку на события. |
destroy | Нет | Очищает подписки на события. |
loadGridData | Нет | Выполняет загрузку данных реестра. |
beforeLoadGridData | Нет | Подготавливает модель представления перед загрузкой данных. |
afterLoadGridData | Нет | Подготавливает модель представления после загрузки данных. |
onGridDataLoaded | {Object} response — результат выборки данных из БД. | Обработчик события загрузки данных. Выполняется, когда сервер возвращает данные. |
addItemsToGridData |
{Object} dataCollection — коллекция новых элементов. {Object} options — параметры добавления. |
Добавляет коллекцию новых элементов в коллекцию реестра. |
reloadGridData | Нет | Выполняет перезагрузку реестра. |
initQueryOptions | {Terrasoft.EntitySchemaQuery} esq — запрос, в котором будут инициализированы необходимые настройки. | Инициализирует настройки (постраничность, иерархичность) экземпляра запроса. |
initQuerySorting | {Terrasoft.EntitySchemaQuery} esq — запрос, в котором будут инициализированы необходимые настройки. | Инициализирует колонки сортировки. |
prepareResponseCollection | {Object} collection — коллекция элементов реестра. | Модифицирует коллекцию данных перед загрузкой в реестр. |
getFilters | Нет | Возвращает примененные в данной схеме фильтры. Переопределяется в наследниках. |
exportToFile | Нет | Экспортирует содержимое реестра в файл. |
sortGrid | {String} tag — ключ, указывающий, каким образом пересортировать реестр. | Выполняет сортировку в реестре. |
deleteRecords | Нет | Инициирует удаление выбранных записей. |
checkCanDelete |
{Array} items — идентификаторы выбранных записей. {Function} callback — Функция обратного вызова. {Object} scope — Контекст выполнения метода. |
Проверяет возможность удаления записи. |
onDeleteAccept | Нет | Выполняет удаление после подтверждения пользователем. |
getSelectedItems | Нет | Возвращает выбранные записи в реестре. |
removeGridRecords | {Array} records — Удаленные записи. | Убирает из реестра удаленные записи. |
Деталь с редактируемым реестром
Деталь с редактируемым реестром позволяет пользователю вносить изменения непосредственно в реестре без перехода на страницу редактирования записи. Для того чтобы сделать реестр детали редактируемым, в ее схеме необходимо:
- Добавить зависимости от модулей ConfigurationGrid, ConfigurationGridGenerator, ConfigurationGridUtilities.
- Подключить миксины ConfigurationGridUtilites и OrderUtilities.
- Установить атрибут IsEditable в значение true.
- В массив модификаций добавить конфигурационный объект, в котором устанавливаются свойства и выполняется привязка методов-обработчиков событий реестра детали.
Кейс создания детали с редактируемым реестром подробно рассмотрен в статье "Создание детали с редактируемым реестром".
Модуль ConfigurationGrid
Модуль ConfigurationGrid содержит реализацию элемента управления "Конфигурационный реестр". Класс Terrasoft.ConfigurationGrid является наследником класса Terrasoft.Grid. Основные методы класса Terrasoft.ConfigurationGrid представлены в таблице 9.
Табл. 9. — Методы конфигурационного реестра
Название | Параметры | Описание |
---|---|---|
init |
Нет |
Инициализирует компонент. Осуществляет подписку на события. |
activateRow | {String|Number} id — идентификатор строки реестра. | Выделяет строку и добавляет элементы редактирования. |
deactivateRow | {String|Number} id — идентификатор строки реестра. | Снимает выделение строки и удаляет элементы редактирования. |
formatCellContent |
{Object} cell — ячейка. {Object} data — данные. {Object} column — конфигурация ячейки. |
Форматирует данные ячейки строки. |
onUpdateItem | {Terrasoft.BaseViewModel} item — элемент коллекции. | Обработчик события обновления записи. |
onDestroy | Нет | Уничтожает реестр и его компоненты. |
Модуль ConfigurationGridGenerator
Класс Terrasoft.ConfigurationGridGenerator генерирует конфигурацию реестра и является наследником класса Terrasoft.ViewGenerator. Методы, реализованные в классе Terrasoft.ConfigurationGridGenerator, представлены в таблице 10.
Табл. 10. — Методы генератора конфигурационного реестра
Название | Параметры | Описание |
---|---|---|
addLinks | Нет | Переопределенный метод класса Terrasoft.ViewGenerator. В редактируемый реестр не будут добавлены ссылки. |
generateGridCellValue |
{Object} config — конфигурация колонки. |
Переопределенный метод класса Terrasoft.ViewGenerator. Генерирует конфигурацию значения в ячейке. |
Модуль ConfigurationGridUtilities
Класс Terrasoft.ConfigurationGridUtilities содержит методы инициализации модели представления строки реестра, обработки действий активной записи и обработки горячих клавиш.
Основные свойства класса Terrasoft.ConfigurationGridUtilities представлены в таблице 11, а его методы — в таблице 12.
Табл. 11. — Свойства класса Terrasoft.ConfigurationGridUtilities
Название | Тип | Описание |
---|---|---|
currentActiveColumnName | String | Имя текущей выделенной колонки. |
columnsConfig | Object | Конфигурация колонок. |
systemColumns | Array | Коллекция названий системных колонок. |
Табл. 12. — Методы класса Terrasoft.ConfigurationGridUtilities
Название | Параметры | Описание |
---|---|---|
onActiveRowAction |
{String} buttonTag — Тег выбранного действия. {String} primaryColumnValue — идентификатор активной записи. |
Обрабатывает нажатие действия активной записи. |
saveRowChanges |
{Object} row — строка реестра. {Function} [callback] — функция обратного вызова. {Object} scope — контекст вызова функции обратного вызова. |
Сохраняет запись. |
activeRowSaved |
{Object} row — строка реестра. {Function} [callback] — функция обратного вызова. {Object} scope — контекст вызова функции обратного вызова. |
Обрабатывает результат сохранения записи. |
initActiveRowKeyMap | {Array} keyMap — описание событий. | Инициализирует подписку на события нажатия кнопок в активной строке. |
getCellControlsConfig | {Terrasoft.EntitySchemaColumn} entitySchemaColumn — колонка ячейки реестра. | Возвращает конфигурацию элементов редактирования ячейки реестра. |
copyRow | {String} recordId — идентификатор копируемой записи. | Копирует и добавляет запись в реестр. |
initEditableGridRowViewModel |
{Function} [callback] — функция обратного вызова. {Object} scope — контекст вызова функции обратного вызова. |
Инициализирует классы элементов коллекции редактируемого реестра. |