Рутовое приложение
Плагины (виджеты)

Плагины

Общее описание

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

Подключение

1. Настройка конфигурации

Для отображения правой панели со списком плагинов в рутовом приложении, необходимо в конфигурации заполнить полеplugins. Поскольку сами плагины загружаются с помощьюq-web-component, то достаточно заполнить поляserviceиcomponent:

export class QConfig {
  plugins?: {
    /**
     * Название сервиса, в котором находится плагин
     */
    service: string;
    /**
     * Название веб-компонента (плагина)
     */
    component: string;
    /**
     * Маршрут по умолчанию
     */
    route?: string;
    /**
     * @deprecated
     * Иконка
     * @example: "pi-book", "qi-skype"
     */
    icon?: string;
    /**
     * @deprecated
     * Задаёт отображение или скрытие плагина после его загрузки (по умолчанию false)
     */
    opened?: boolean;
    /**
     * @deprecated
     * Загрузка плагина происходит с инициализацией приложения
     */
    initWithApp?: boolean;
  }[];
};

2. Манифест плагина

Информацию о плагинах необходимо хранить в проекте самого плагина. Для этого достаточно создать файлmain.jsвsrc/assets/manifestи заполнить его как обычный json.

{
  /**
   * Иконка
   * @example: "pi-book", "qi-skype"
   */
  icon?: string;
  /**
   * Задаёт отображение или скрытие плагина после его загрузки (по умолчанию false)
   */
  opened?: boolean;
  /**
   * Загрузка плагина происходит с инициализацией приложения
   */
  initWithApp?: boolean;
  /**
   * Описание плагина
   */
  description?: string;
};

Разработка

  1. Для создания проекта, используйте продукт Дизанер интерфейсов, и добавьте в него логику вашего плагина.
  2. Затем создайте файл main.js вsrc/assets/manifest. Этот файл отвечает за настройки плагина такие как иконка, описание, загрузка при инициализации приложения и т.д. Его необходимо заполнить его как обычный json.
  3. В проекте в angular.json в раздел projects.accounts.architect.build.options.assets добавьте следующую конфигурацию :
{
  "input": "src/assets/manifest",
  "output": "/manifest",
  "glob": "main.js"
}

Возможности взаимодействия

Отправка уведомления

sendNotification(): void {
  this.qCoreServise.globalEvents.event('plugin-notification', {service: 'qpalette-plugins', component: 'qpaletteplugins', notification: true});
}

Закрытие плагина

close(): void {
    this.qCoreServise.globalEvents.event('plugin-close', {service: 'qpalette-plugins', component: 'qpaletteplugins'});
}