Расширения¶
Добавление расширений¶
Для создания расширений необходимо:
- Создать новый модуль с названием расширения. Например:
src/solution/ui/myCardUIExtension.ts
. - В модуле описать класс расширения. Например:
@extension({ name: 'MyCardUIExtension' }) // полезно указывать имя для отладки export class MyCardUIExtension extends CardUIExtension { override async initialized(context: ICardUIExtension): Promise<void> { // ... } }
- Создать модуль с регистратором (если он еще не был создан). Например:
src/solution/ui/registrator.ts
.export const MyUIRegistrator: ExtensionRegistrator = { async registerTypes() {}, async registerExtensions(container) { container .registerExtension({ extension: MyCardUIExtension, stage: ExtensionStage.AfterPlatform, order: 1, when: ctx => Guid.equals(ctx.card.typeId, 'd0006e40-a342-4797-8d77-6501c4b7c4ac') }); } };
- В
registerTypes
следует регистрировать типы в DI контейнере. По умолчанию тип расширения регистрируется автоматически, но при желании его можно зарегистрировать явно. ВregisterExtensions
регистрируются сами расширения. Нужно указатьstage
, на котором будет выполняться расширение (для проектных расширений обычно этоAfterPlatform
), указатьorder
, если расширения должны выполняться в определенном порядке в пределахstage
. Также можно указатьwhen
предикат, через который определить, в каких случаях стоит вызывать расширение. Если расширение не имеет внутреннего состояния, то такое расширение можно зарегистрировать какsingleton
через соответствующее свойство. - Если регистратор новый, то его нужно добавить в
bundleRegistrator
решения:Application.instance.registerBundle({ name: 'Tessa.Extensions.Solution.js', buildTime: process.env.BUILD_TIME!, registry: [ /// ... MyUIRegistrator ] });
Список доступных типов расширений¶
-
ApplicationExtension - расширения, связанные с жизненным циклом приложения.
-
InitializationExtensionContext - расширения запроса инициализации приложения.
-
CardUIExtension – расширения UI карточки.
-
TileExtension – расширения области с тайлами приложения.
-
CardGetExtension, CardNewExtension, CardStoreExtension, CardDeleteExtension – расширения получения, создания, сохранения, удаления карточки.
-
CardRequestExtension – расширения кастомного запроса карточки.
-
CardCopyExtension – расширения создания копии карточки.
-
CardCreateFromTemplateExtension – расширения создания карточки по шаблону.
-
CardRepairExtension - расширения операции восстановления карточки.
-
CardGetFileContentExtension – расширения получения контента файла.
-
CardGetFileVersionsExtension – расширения получения списка версий файла.
-
CardMetadataRepositoryExtension – расширения метаданных карточки.
-
ViewGetExtension - расширения на запрос данных представлений.
-
ViewRepositoryExtension - расширения метаданных представлений.
-
SearchQueryRepositoryExtension - расширения метаданных поисковых запросов.
-
WorkplaceRepositoryExtension - расширения метаданных рабочих мест.
-
TreeItemExtension – расширения дерева представлений РМ.
-
WorkplaceViewComponentExtension – расширения области с контентом РМ.
-
WorkplaceFilteringRule - расширения правил фильтрации узлов РМ при открытии РМ.
-
FormUIExtension - расширения открытия форм карточки.
-
AppPanelUIExtension - расширения панели вкладок приложения.
-
MySettingsExtension - расширения диалога “Мои настройки”.
-
FileControlExtension - расширения для файлового контрола карточек.
-
FileExtension - расширения для файлов в файловом контроле карточек.
-
FileVersionExtension - расширения для версий файлов в файловом контроле карточек.
-
LoginExtension - расширения окна логина приложения.
-
KrStageTypeFormatter - обработчики форматирования типов этапов.
-
KrStageTypeUIHandler - UI обработчиков типов этапов.
-
ClientCommandHandlerBase - обработчики клиентских команд.
-
HttpInterceptor – расширения для любых запросов на сервер.
-
ShowValidationResultExtension - расширения для диалога вывода ошибок через
ValidationResult
.