Расширения¶
Добавление расширений¶
Для создания расширений необходимо:
- Создать новый модуль с названием расширения. Например:
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.