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

Средний
PDF

Пример. На странице записи пользовательского раздела 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/sdk.

    Зависимости AMD-модуля
    /* Объявление AMD-модуля. */
    define("UsrAppFeatureService_FormPage", /**SCHEMA_DEPS*/["@creatio/sdk"] /**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/sdk.
    2. Получите состояние функциональности с кодом UsrShowMyButton и запишите его в атрибут ShowMyButton.
    Секция handlers
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "crt.HandleViewModelInitRequest",
            /* Пользовательская реализация обработчика системного запроса. */
            handler: async (request, next) => {
                /* Создает экземпляр сервиса проверки состояния функциональности из @creatio/sdk. */
                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), которая содержит разработанную функциональность.