Скрыть функциональность на странице

Скрыть на странице функциональность на этапе разработки
Средний

Пример. На странице записи пользовательского раздела [ Feature Service ] скрыть пользовательскую кнопку [ Функциональность ] ([ Feature ]). Кнопка содержит функциональность на этапе разработки.

1. Настроить интерфейс страницы 

  1. Добавьте разрабатываемую функциональность, которую планируется скрыть.

    1. Перейдите на страницу [ Функциональность ] ([ Feature ]) и заполните свойства функциональности:

      • [ Код функциональности ] ([ Feature code ]) — "UsrShowMyButton".
      • [ Имя функциональности ] ([ Feature name ]) — "Show My Button".
    2. Нажмите кнопку [ Добавить функциональность ] ([ Create feature ]).
  2. Используя шаблон [ Данные и бизнес-процессы ] ([ Records & business processes ]), создайте пользовательское приложение Feature Service. Для этого воспользуйтесь инструкцией, которая приведена в статье Создать пользовательское приложение.
  3. В рабочей области страницы приложения Feature Service откройте страницу [ Страница записи Feature Service ] ([ Feature Service form page ]).
  4. Удалите поле [ Название ] ([ Name ]), которое по умолчанию добавлено на страницу [ Страница записи Feature Service ] ([ Feature Service form page ]).
  5. Добавьте кнопку, которая содержит функциональность на этапе разработки.

    1. На панель инструментов Freedom UI дизайнера добавьте компонент типа [ Кнопка ] ([ Button ]).
    2. На панели действий Freedom UI дизайнера нажмите на кнопку и на панели настройки заполните свойства кнопки:

      • [ Заголовок ] ([ Title ]) — "Функциональность" ("Feature").
      • [ Стиль ] ([ Style ]) — выберите "Основной" ("Primary").
  6. На панели действий Freedom UI дизайнера нажмите на кнопку . После сохранения настроек страницы открывается исходный код страницы Freedom UI.

2. Настроить скрытие функциональности на этапе разработки 

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

  1. Подключите сервис проверки состояния функциональности sdk.FeatureService. Для этого добавьте в AMD-модуль зависимость @creatio-devkit/common.

    Зависимости AMD-модуля
    Код скопирован
    /* Объявление AMD-модуля. */
    define("UsrAppFeatureService_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"] /**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
            ...
        };
    });
  2. В секцию viewModelConfig добавьте атрибут ShowMyButton, который хранит информацию о состоянии функциональности.

    Секция viewModelConfig
    Код скопирован
    viewModelConfig: /**SCHEMA_VIEW_MODEL_CONFIG*/{
        "attributes": {
            ...,
            /* Атрибут, который хранит состояние функциональности. */
            "ShowMyButton": {}
        }
    }/**SCHEMA_VIEW_MODEL_CONFIG*/,
  3. В секции viewConfigDiff привяжите свойство visible элемента FeatureButton к атрибуту ShowMyButton модели.

    Секция viewConfigDiff
    Код скопирован
    viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
        {
            "operation": "insert",
            "name": "FeatureButton",
            "values": {
                ...,
                /* Свойство, которое определяет видимость поля. Привязано к значению атрибута ShowMyButton. */
                "visible": "$ShowMyButton"
            },
            ...
        }
    ]/**SCHEMA_VIEW_CONFIG_DIFF*/,
  4. В секции handlers добавьте пользовательскую реализацию обработчика системного запроса crt.HandlerViewModelInitRequest. Обработчик выполняется при инициализации View модели.

    1. Создайте экземпляр сервиса проверки состояния функциональности из @creatio-devkit/common.
    2. Получите состояние функциональности с кодом UsrShowMyButton и запишите его в атрибут ShowMyButton.
    Секция handlers
    Код скопирован
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "crt.HandleViewModelInitRequest",
            /* Пользовательская реализация обработчика системного запроса. */
            handler: async (request, next) => {
                /* Создает экземпляр сервиса проверки состояния функциональности из @creatio-devkit/common. */
                const featureService = new sdk.FeatureService();
                /* Получает состояние функциональности UsrShowMyButton и записывает его в атрибут ShowMyButton. */
                request.$context.ShowMyButton = await featureService.getFeatureState('UsrShowMyButton');
                /* Вызывает следующий обработчик, если такой есть, и возвращаем его результат. */
                return next?.handle(request);
            }
        }
    ] /**SCHEMA_HANDLERS*/,
    Полный исходный код схемы страницы
  5. На панели инструментов дизайнера клиентского модуля нажмите [ Сохранить ] ([ Save ]).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера с функциональностью на этапе разработки:

  1. Перейдите на страницу приложения Feature Service и нажмите [ Запустить приложение ] ([ Run app ]).
  2. На панели инструментов приложения Feature Service нажмите [ Добавить ] ([ New ]).

В результате выполнения примера на странице приложения Feature Service скрыта кнопка [ Функциональность ] ([ Feature ]), которая содержит функциональность на этапе разработки.

Чтобы посмотреть результат выполнения примера с разработанной функциональностью:

  1. Включите функциональность с кодом UsrShowMyButton.

    1. Перейдите на страницу [ Функциональность ] ([ Feature ]).
    2. В реестре страницы подключите функциональность Show My Button.
    3. Нажмите кнопку [ Сохранить изменения ] ([ Save changes ]) и обновите страницу.
  2. Обновите страницу приложения Feature Service.
  3. На панели инструментов приложения Feature Service нажмите [ Добавить ] ([ New ]).

В результате выполнения примера на странице приложения Feature Service отображается кнопка [ Функциональность ] ([ Feature ]), которая содержит разработанную функциональность.