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

Примеры расширений

По умолчанию примеры расширений отключены и не попадают в сборку. Для их включения необходимо открыть src/default/index.ts и убрать комментарий со строчки:

// import './examples/registrator';

Работа расширений демонстрируется на основе тестового типа карточки WebTestType.

Загрузите из папки Configuration рабочее место, представление и карточку.

Добавьте тип карточки в типовое решение, разрешите создание заданий.

Расширения собираются командой:

npm run build

Собранный билд будет лежать в папке wwwroot/extensions.

Для текстовых контролов и автокомплита учитывайте, что данные изменяются при снятии фокуса с контрола (клик в другом месте).

1_hideBlockByRefValueUIExtension.ts

В зависимости от значения ссылочного поля карточки:

  • Скрываем\показываем элементы управления (блок, контрол)

  • Делаем рид-онли\редактируемыми элементы управления (контрол)

Example

  1. Если поле Валюта не пустое, то блок с файлами становится видимым, контрол Автор скрывается, а контрол Контрагент становится только для чтения.

  2. Если поле Валюта пустое, то блок с файлами скрывается, контрол Автор становится видимым, а контрол Контрагент становится редактируемым.

2_changeFieldOrRowUIExtension.ts

В этом расширении, в зависимости от значения флага:

  • Меняется содержимое текстового поля.

  • Меняется содержимое табличной секции (в нее добавляется элемент).

Example

Когда меняют значение флага Базовый цвет, то:

  1. Если флаг установлен, то значение поля Цвет меняется на Это базовый цвет.

  2. Если флаг установлен, то в секцию Исполнители добавляется новый сотрудник Admin.

  3. Если флаг не установлен, то значение поля Цвет меняется на Это другой, не базовый цвет.

3_tableSectionChangedUIExtension.ts

В этом расширении демонстрируется подписка на изменение элементов табличной секции:

Example

Когда изменяется секция Получатели, то в поле Тема добавляется строка.

4_hideFormUIExtension.ts

Скрывать/показывать вкладку карточки в зависимости:

  • От наличия какого-то признака в info, пришедшем с сервера.

  • От значения какого-то справочника, загруженного в init-стриме.

  • От данных карточки.

5_hideTaskBlockUIExtension.ts

Скрывать/показывать контрол с информацией о задании (в задании) в зависимости от наличия/отсутствия текста в комментарии.

Как тестировать

Example

Отправьте себе стандартную задачу через тайл на левой панели - “Поставить задачу”. Затем возьмите её в работу, нажмите “Завершить” и напишите любой текст в поле “Комментарий”.

6_simpleCardTileExtension.ts

На левую панель добавляет тайл с названием “Тайл карточки”.

Example

Показывается только в карточке нашего типа, и при условии, что тема карточки будет “Карточка с тайлом”.

7_simpleViewTileExtension.ts

В этом расширении демонстрируется:

  • Добавление тайла, связанного с представлением.

  • Доступ к данным выделенной строки в представлении.

Example

Добавляет на левую панель тайл с названием “Данные строки”. Показывается только в представлении, если выделен узел “Мои документы”. При выделенной строке в представлении, по клику на тайл показываются необработанные данные строки.

8_requestTileExtension.ts

В этом расширении демонстрируется:

  • Тайл-группа на левой панели.

  • Запрос карточки с сервера.

  • Запрос данных представления с сервера.

  • Заполнение параметров поиска в запросе к представлению.

  • Доступ к результату запроса представления.

Example

На левую панель добавляет групповой тайл - “Запросы”. По клику показываются дочерние тайлы - “Запрос карточки” и “Запрос вью”.

При клике на “Запрос карточки” происходит вызов сервера, получается карточка прав, и необработанное содержимое показывается в модальном окне. Аналогично, с помощью CardService можно делать и другие реквесты (request, get, store и т.д.).

При клике на “Запрос вью” происходит вызов сервера, получаются данные списка контрагентов, и необработанное содержимое показывается в модальном окне.

9_additionalTableButtonUIExtension.ts

Пример расширения работы кнопки в карточке. Расширение определяет логику при нажатии на кнопку на форме с карточкой.

Example

При нажатии на кнопку определяется текущая выделенная строка в контроле таблицы. Получаются данные этой строки и, после, добавляется новая строка в секцию с данными из выделенной строки.

10_dialogModeAutocompleteUIExtension.ts

В web-клиенте есть два вида автокомплитов:

  • Первый используется для десктопного режима - текст набирается прямо в элементе управления и окно с подсказками появляется рядом с курсором. Также и выпадающий список комбобокса.

  • Второй используется для мобильных устройств - это отдельный диалог.

Достоинством второго является возможность показать в диалоге длинный список подсказок, т.к. в нем есть прокрутка. Вариант с диалогом удобно использовать в десктопе для некоторых автокомплитов, где заранее известно, что будет много вариантов выбора. Т.е. диалог по умолчанию есть только в мобильной версии, но, если нужно, его можно включить и на десктопной версии для выбранных контролов.

В этом расширении демонстрируется открытие определённых автокомплитов в режиме диалога.

Example

Для карточки: проверяем, что значения типа карточки и алиаса контрола те, что нам нужны и если так, то добавляем флаг, который указывает автокомплиту работать в режиме диалога.

Для фильтров: проверяем, что фильтруется нужное представление и нужный параметр, добавляем флаг, который указывает автокомплиту работать в режиме диалога.

Пример работы (без диалога):

Пример работы (с диалогом):

11_customBPTileExtension.ts

Пример расширения, которое добавляет тайл, доступный в карточках. Тайл запускает бизнес процесс.

Example

При нажатии на тайл в “Info” карточки добавляется ключ .startProcess с значением WfResolution. После, карточка сохраняется и обновляется.

12_fileControlUIExtension.ts

Пример расширения файлового контрола. Расширение фильтрует файлы по имени, которые выводятся в файловом контроле. Расширение запрещает добавление файла с определенным именем.

13_hideTileExtension.ts

Пример расширения, которое скрывает дефолтный тайл.

14_tableControlDoubleClickUIExtension.ts

Подписываемся на двойной клик в контроле таблицы в карточке “Автомобиль”.

15_showFormDialogUIExtension.ts, 16_showCustomDialogUIExtension.tsx

По клику вызываем диалог с кастомной формой.

17_closeCardOnCompleteTaskExtension.ts

Закрывает карточку после завершения задания.

Example

Отправьте себе стандартную задачу через тайл на левой панели - “Поставить задачу”. Затем возьмите её в работу, нажмите “Завершить”.

18_additionalMetaExtension.ts

На серверной стороне добавляем необходимые данные в мету через ServerInitializationExtension. На клиенте достаем эти данные по ключу из меты и добавляем в MetadataStorage.info. После инициализации приложения эти данные из MetadataStorage.info можно получить в любом расширении и использовать.

19_customThemeProp.ts

Добавляем дополнительное свойство в темы в расширении ApplicationExtension. В карточке автомобиля меняем фон для тестового контрола и ставим значения с учетом этого свойства из темы.

20_tabPanelButtonUIExtension.ts

Добавляем дополнительную кнопку на панель с табами приложения. При нажатии на кнопку открывается виртуальная карточка “Мои замещения” для текущего пользователя.

Back to top