Показать содержание 

Анализ данных и построение отчётов > Плагины > Подключение плагина к аналитической панели

Подключение плагина к аналитической панели

Для расширения возможностей построения аналитической панели доступно подключение плагина.

Для подключения плагина к аналитической панели:

Путь до папки установки веб-приложения:

Путь до папки установки конструктора бизнес-приложений:

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

    1. Добавьте описание плагина в конфигурационном файле config.json/PP.xml для веб-приложения или config.json/DBA.config.json для конструктора бизнес-приложений.

В файле config.json веб-приложения/конструктора бизнес-приложений для описания плагина используйте поле plugins:
"modules": {
  "8448": { //числовое значение класса объекта «Аналитическая панель»
    "customization": { //пользовательские настройки оформления
      "plugins": [
        {
          "name": "Test", //наименование плагина
          "path": "./custom_plugins/Test.js", //относительный путь до JS-файла плагина
          "css": "./custom_plugins/Test.css", //относительный путь до CSS-файла со стилями плагина
          "id": "PP.Ui.Dashboard.Test", //идентификатор плагина, соответствующий типу экземпляра объекта
          "params": [ //параметры открытия плагина
            {
              "name": "APIKey",
              "value": "AIzaSyCT36DH2CuXQ8GHtNSZASvoxQtbidhuWCU"
            }
          ]
        },
        {
            ...
        }
      ]
    }
  }
}
В файле PP.xml для описания плагина используйте раздел <plugins>:
<plugins>
    <plugin type="PP.Ui.Dashboard.MyLabel" path="../custom_plugins/MyLabel.js" css="../custom_plugins/MyLabel.css" loaded="false" name="MyLabel"/>
    <plugin ... />
</plugins>
В файле DBA.config.json для описания плагина используйте поле plugins:
"plugins": [
    {
        "Type": "PP.Ui.Dashboard.MyLabel", //идентификатор плагина, соответствующий типу экземпляра объекта
        "Path": "../custom_plugins/MyLabel.js", //относительный путь до JS-файла плагина
        "Css": "../custom_plugins/MyLabel.css", //относительный путь до CSS-файла со стилями плагина
        "Name": "MyLabel", //наименование плагина
        "Loaded": false //способ загрузки плагина
    },
    {
        ...
    }
]

Важно. Для преднастроенных плагинов зарезервированы идентификаторы: PP.Ui.Dashboard.Sankey - «Sankey-диаграмма»; PP.Ui.Dashboard.Gantt - «Диаграмма Ганта»; PP.Ui.Dashboard.Indicator - «Индикатор». Убедитесь, что в конфигурационных файлах PP.xml и DBA.config.json атрибут type содержит идентификатор, отличный от зарезервированных.

В конфигурационном файле config.json веб-приложения/конструктора бизнес-приложений настройки плагинов объединяются, если атрибут id плагина совпадает с идентификатором преднастроенных плагинов.

    1. Перезапустите веб-сервер.

Также в веб-приложении помимо указанного способа можно подключить плагин через репозиторий.

Подключение плагина через репозиторий, используя файл PP.xml

После выполнения действий при открытии аналитической панели в веб-приложении будет выполняться автономная регистрация плагина. Плагин будет доступен для вставки в аналитическую панель.

При разработке веб-приложения с помощью DHTML-компонентов для подключения плагина через репозиторий используйте конструктор KapBox или метод Kap.regPluginBlock, используемый в качестве отдельного способа подключения плагина;

Для вставки подключенного плагина выполните одно из действий в аналитической панели:

После выполнения действий плагин будет вставлен в аналитическую панель отдельным объектом.

Регистрация плагина в сервисах

Регистрация плагина осуществляется в среде разработки на языке программирования Fore с помощью свойства ISharedPluginsContainer.Plugins.

Для регистрации плагина в сервисах добавьте ссылки на системные сборки Metabase, Fore и выполните модуль:

Sub UserProc;
Var
    mb: IMetabase;
    plugins: ISharedPlugins;
    cont: ISharedPluginsContainer;
    adhoc_plugs: ISharedAdhocPlugins;
    plugin: ISharedAdhocPlugin;
Begin
    // Получим объект для работы с текущим репозиторием
    mb := MetabaseClass.Active;
    // Получим объект для работы с контейнером плагинов
    cont := mb.SpecialObject(MetabaseSpecialObject.SharedParams).Edit As ISharedPluginsContainer;
    // Получим объект для работы с плагинами
    plugins := cont.Plugins;
    // Получим коллекцию плагинов инструмента "Аналитические панели"
    adhoc_plugs := plugins.AdhocPlugins;
    // Создадим новый плагин
    plugin := plugins.AdhocPlugins.Add;
    // Зададим идентификатор и наименование плагина
    plugin.Id := "ID"// Вместо "ID" укажите уникальный идентификатор плагина в верхнем регистре, совпадающий с идентификатором в структуре JS-скрипта плагина
    plugin.Name := "name"// Вместо "name" укажите имя плагина, которое будет отображаться в аналитической панели
    // Зададим форму-визуализатор и форму-мастер
    plugin.ViewForm := mb.ItemById("ViewForm_Id"); // Вместо "ViewForm_Id" укажите идентификатор формы-визуализатора
    plugin.MasterForm := mb.ItemById("MasterForm_Id"); // Вместо "MasterForm_Id" укажите идентификатор формы-мастера
    // Сохраним созданный плагин
    (cont As IMetabaseObject).Save;
End Sub UserProc;

Sub UserProc;
Var
    mb: IMetabase;
    plugins: ISharedPlugins;
    cont: ISharedPluginsContainer;
    adhoc_plugs: ISharedAdhocPlugins;
    plugin: ISharedAdhocPlugin;
Begin
    // Получим объект для работы с текущим репозиторием
    mb := MetabaseClass.Active;
    // Получим объект для работы с контейнером плагинов
    cont := mb.SpecialObject(MetabaseSpecialObject.SharedParams).Edit As ISharedPluginsContainer;
    // Получим объект для работы с плагинами
    plugins := cont.Plugins;
    // Получим коллекцию плагинов инструмента "Аналитические панели"
    adhoc_plugs := plugins.AdhocPlugins;
    // Создадим новый плагин
    plugin := plugins.AdhocPlugins.Add;
    // Зададим идентификатор и наименование плагина
    plugin.Id := "ID"// Вместо "ID" укажите уникальный идентификатор плагина в верхнем регистре, совпадающий с идентификатором в структуре JS-скрипта плагина
    plugin.Name := "name"// Вместо "name" укажите имя плагина, которое будет отображаться в аналитической панели
    // Зададим относительный путь JS-скрипта
    plugin.WebUrl := "url"// Вместо "url" укажите относительный путь JS-скрипта из корневой папки веб-приложения
    // Сохраним созданный плагин
    (cont As IMetabaseObject).Save;
End Sub UserProc;

После выполнения модуля плагин будет зарегистрирован в сервисах и доступен для вставки в аналитическую панель.

См. также:

Плагины | Создание плагина