Перейти к содержанию

Расширения

Добавление расширений

Для создания расширений необходимо:

  • Создать новый модуль с названием расширения. Например: 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 ] });

Список доступных типов расширений

  1. ApplicationExtension - расширения, связанные с жизненным циклом приложения.

  2. InitializationExtensionContext - расширения запроса инициализации приложения.

  3. CardUIExtension – расширения UI карточки.

  4. TileExtension – расширения области с тайлами приложения.

  5. CardGetExtension, CardNewExtension, CardStoreExtension, CardDeleteExtension – расширения получения, создания, сохранения, удаления карточки.

  6. CardRequestExtension – расширения кастомного запроса карточки.

  7. CardCopyExtension – расширения создания копии карточки.

  8. CardCreateFromTemplateExtension – расширения создания карточки по шаблону.

  9. CardRepairExtension - расширения операции восстановления карточки.

  10. CardGetFileContentExtension – расширения получения контента файла.

  11. CardGetFileVersionsExtension – расширения получения списка версий файла.

  12. CardMetadataRepositoryExtension – расширения метаданных карточки.

  13. ViewGetExtension - расширения на запрос данных представлений.

  14. ViewRepositoryExtension - расширения метаданных представлений.

  15. SearchQueryRepositoryExtension - расширения метаданных поисковых запросов.

  16. WorkplaceRepositoryExtension - расширения метаданных рабочих мест.

  17. TreeItemExtension – расширения дерева представлений РМ.

  18. WorkplaceViewComponentExtension – расширения области с контентом РМ.

  19. WorkplaceFilteringRule - расширения правил фильтрации узлов РМ при открытии РМ.

  20. FormUIExtension - расширения открытия форм карточки.

  21. AppPanelUIExtension - расширения панели вкладок приложения.

  22. MySettingsExtension - расширения диалога “Мои настройки”.

  23. FileControlExtension - расширения для файлового контрола карточек.

  24. FileExtension - расширения для файлов в файловом контроле карточек.

  25. FileVersionExtension - расширения для версий файлов в файловом контроле карточек.

  26. LoginExtension - расширения окна логина приложения.

  27. KrStageTypeFormatter - обработчики форматирования типов этапов.

  28. KrStageTypeUIHandler - UI обработчиков типов этапов.

  29. ClientCommandHandlerBase - обработчики клиентских команд.

  30. HttpInterceptor – расширения для любых запросов на сервер.

Back to top