Базовая схема, методы, сообщения
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
-
Обновляет деталь согласно переданным параметрам. По умолчанию содержит значение Terrasoft.emptyFn.
Параметры:
- {Object} config — конфигурационный объект, содержащий свойства детали.
- 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
-
Замещает метод класса BaseDetailV2. Вызывает логику метода init родителя, регистрирует сообщения, инициализирует фильтры.
Параметры:
- {Function} callback — функция обратного вызова;
- {Object} scope — контекст выполнения метода.
- initData
-
Замещение метода класса BaseDetailV2. Вызывает логику метода initData родительского класса, инициализирует коллекцию данных представления рееестра.
Параметры:
- {Function} callback — функция обратного вызова;
- {Object} scope — контекст выполнения метода.
- loadGridData
-
Выполняет загрузку данных реестра.
- initGridData
-
Выполняет инициализацию значений по умолчанию для работы со списком.
- getGridData
-
Возвращает коллекцию реестра.
- getFilters
-
Возвращает коллекцию фильтров детали.
- getActiveRow
-
Возвращает идентификатор выбранной записи в реестре.
- addRecord
-
Добавляет новую запись в реестр. Сохраняет страницу редактирования в случае необходимости.
Параметры:
- {String} editPageUId — идентификатор типизированной страницы редактирования.
- copyRecord
-
Копирует запись и открывает страницу редактирования.
Параметры:
- {String} editPageUId — идентификатор типизированной страницы редактирования.
- editRecord
-
Открывает страницу редактирования выбранной записи.
Параметры:
- {Object} record — модель записи для редактирования.
- subscribeSandboxEvents
-
Подписывается на сообщения, необходимые для работы детали.
- updateDetail
-
Замещение метода класса BaseDetailV2. Вызывает логику метода updateDetail родителя, обновляет деталь.
Параметры:
- {Object} config — конфигурационный объект, содержащий свойства детали.
- 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
-
Переопределенный метод класса Terrasoft.ViewGenerator. Генерирует конфигурацию значения в ячейке.
Параметры:
- {Object} config — конфигурация колонки.
Модуль 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 — контекст вызова функции обратного вызова.