Расширение ЭУ "Канбан" с помощью плагина
С помощью плагинов имеется возможность реализовывать более сложные настройки. Плагин назначается на конкретные настройки. Один плагин может использоваться во множестве настроек.
При помощи плагина можно изменять\с нуля заполнять все свойства, которые доступны для настройки в программе Конструктор Web-разметок в форме настройки данных канбан-доски, а также переопределять\реализовывать с нуля для конкретной настройки серверную логику. Таким образом, с помощью плагина можно:
-
Дополнительно обработать соответствующую настройку из коллекции настроек в программе Конструктор Web-разметок перед отправкой на сторону клиента.
-
Изменить логику изменения значения поля карточки, которая была перемещена между столбцами канбан-доски.
-
Изменить логику получения обновленной модели карточки, когда карточка изменяется из разметки внутри контейнера карточки на канбан-доске.
-
Изменить логику формирования модели карточки для отображения на канбан-доске.
-
Изменить логику получения модели разметки карточки для отображения внутри контейнера карточки на канбан-доске.
-
Изменить логику сортировки карточек в столбце.
-
Изменить логику получения идентификаторов карточек, которые будут отображены на канбан-доске.
-
Реализовать метод для формирования кастомного HTML наполнения контейнера карточки на канбан-доске.
-
Изменить логику получения значений показателей для карточки.
-
Изменить логику дополнительной обработки столбцов из настройки.
-
Изменить логику заполнения предопределенных столбцов.
-
Изменить\реализовать логику расчёта агрегатных функций.
-
Изменить логику создания карточки из канбан-доски.
-
Изменить логику формирования списка доступных для создания видов карточек из канбан-доски.
Разработка плагина
Плагин необходимо разработать в любом подходящем серверном расширении Web-клиента. Класс плагина должен реализовывать интерфейс IKanbanPlugin. Чтобы не реализовывать все методы с нуля, можно наследовать свой класс от MainKanbanPlugin, методы которого являются виртуальными и логика которого используется по умолчанию для всех настроек канбан-доски. Описание класса будет приведено ниже.
После разработки плагина необходимо зарегистрировать его в IoC-контейнере в методе InitializeContainer серверного расширения следующим образом:
containerBuilder.RegisterType<MyKanbanPlugin>().As<IKanbanPlugin>().SingleInstance();
Дополнительные свойства конкретной настройки (класс KanbanDataSettingsCollectionItem), которые можно задать\использовать только через плагин:
-
bool? CanDragDrop— флаг, который определяет возможность текущего пользователя перемещать карточки между столбцами.
Для случаев, если канбан в отдельной локации и операции редактирования назначить нельзя. -
bool? CanChooseSetting— флаг, который определяет возможность текущего пользователя выбрать данную настройку в выпадающем списке.
Для случаев, если канбан в отдельной локации и операции редактирования назначить нельзя. -
Guid? CardID— если канбан находится в разметке карточки, то тут будет идентификатор карточки с канбаном в разметке, которую открыл текущий пользователь.
Может быть полезно для формирования столбцов, отбора карточек для настройки, в зависимости от каких-то значений в карточке. -
Dictionary<string, object> ContextData— содержит дополнительные параметры, с которыми была загружена разметка. На клиенте они как правило в параметрах GET запроса, откуда уже попадают вcardLayout.layoutInfo.layoutParams.