logo

Создание раздела в дизайнере

Внимание!
Эта статья актуальна для версии ELMA4 4.1.21 и выше.
Примечание
Для расширения возможностей дизайнера рекомендуется создавать отдельные модули. Это нужно для уменьшения размера данных при работе в самом дизайнере и в системе.

Перед тем как добавлять настройки элемента для моделирования, нужно:

В названии модуля, расширяющего возможности дизайнера, рекомендуется добавлять постфикс .Designer, например, EleWise.ELMA.Workflow.Designer.

Реализация

В папке DevServer откройте файл appsettings.json. Затем в тексте сценария в разделе "DevServer" добавьте настройку "DevelopMode": "Pro", как показано на рисунке ниже.

Запустите DevServer командой server.

Добавление ссылки на системный модуль дизайнера

В Списке зависимостей модуля выберите Базовый модуль Дизайнера конфигурации (EleWise.ELMA.SDK.Designer). В этом модуле расположена публичная структура обмена данными (СОД) DesignerModuleDTO, которая нужна для создания раздела дизайнера.

Создание структуры обмена данными (СОД) модуля

В новом модуле создайте СОД TestModuleDTO, которая будет входной точкой этого модуля. Чтобы сделать СОД входной, добавьте в неё вложенную системную СОД DesignerModuleDTO с помощью кнопки + Добавить.

Вы также можете добавить в СОД свойства и действия для модуля.

Создание входной точки компонента модуля

Добавьте в новый модуль компонент TestDesignerModule, который будет входной точкой в раздел.

В компоненте создайте свойство ModuleDTO, в качестве типа укажите СОД TestModuleDTO. Обязательные требования к свойству:

  • в качестве типа свойства используйте СОД из предыдущего шага;
  • сделайте его входным;
  • только для веб-части (настраивается на вкладке Дополнительно).

В настройках компонента на вкладке События создайте событие в поле Клиентский сценарий при инициализации формы.

В клиентских сценариях в методе OnInit напишите следующий код:

OnInit 
/// <inheritdoc />
public void OnInit()
{
    var moduleDTO = Context.ModuleDTO.As<DesignerModuleDTO>();

    moduleDTO.Uid = new Guid("3d226299-4486-4593-93da-f9391195e2cc"); // Какой-то уникальный идентификатор
    moduleDTO.DisplayName = SR.T("Тестовый модуль"); // Отображаемое имя
    moduleDTO.Order = 10; // Положение в выпадающем списке модулей
}

Укажите, что созданный компонент реализует созданную СОД.

Если у вас нет этой кнопки, проверьте, внесены ли изменения в файл appsettings.json.

В открывшемся окне заполните поля Контракт и Данные.

  • Контракт * — это тип данных. Если вы создаёте раздел дизайнера, это DesignerModuleDTO.
  • Данные — это свойство, которое было создано на одном из предыдущих шагов.

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

Вернитесь в компонент TestDesignerModule и добавьте на его форму компонент TestDesignerModuleContent.

Все компоненты выполняются одновременно. Сделайте так, чтобы содержимое компонента скрывалось, пока вкладка модуля неактивна. Для этого в настройках компонента TestDesignerModuleContent в поле Скрыть задайте функцию HideContent().

Напишите код функции, скрывающей содержимое компонента:

HideContent 
/// <summary>
/// Скрыт ли контент
/// </summary>
public bool HideContent()
{
    return !Context.ModuleDTO.As<DesignerModuleDTO>().Visible;
}

Теперь опубликуйте модуль/приложение и импортируйте в ELMA4 для проверки работоспособности.

После импорта в дизайнере появится новый раздел.