Плагин - это отдельно написанный блок, который может быть подключен к аналитической панели.
При работе с плагинами в настольном приложении используются модули написанные на Fore. Для работы в веб-приложении код плагин пишется на JavaScript.
Плагины регистрируются в общих параметрах репозитория и ссылаются на модуль для работы в настольном приложении и на скрипт для работы в веб-приложении.
Для отображения плагина в веб-приложения необходимо:
Зарегистрировать в сервисах плагин, имеющий ссылку на скрипт.
Регистрация плагина производится в настольном приложении, ссылка на *.js файл задается при регистрации плагина в Fore свойством .WebUrl, например:
plugin.WebUrl := "http://test/PP_App_v8.1/app/plugin.js";
Скрипт плагина, регистрируемого через сервисы, должен содержать код, регистрирующий свои настройки.
Свойство «ServicesPlugins» задается двумя способами:
Для всего веб приложения в файле «PP.xml». Внутри тега <pp> добавьте следующий код:
<AppConfig>
<Modules>
<Dashboard>
<ReportBox
ServicesPlugins="true"/>
</Dashboard>
</Modules>
</AppConfig>
После редактирования файла перезапустите веб-сервер, используемый веб-приложением;
Пример
файла PP.xml, содержащего настройки для работы с плагинами
При создании экземпляра компонента KapBox, например:
kapBox = new Kap.KapBox({
Metabase: metabase,
ParentNode: "DashboardBox",
Key: ppKey,
Mode: ppMode,
ServicesPlugins: true
});
Плагин может быть подключен пользователем, без регистрации в сервисах репозитория.
Для пользовательской регистрации плагина используйте метод regPluginBlock пространства имен Kap, например:
Kap.regPluginBlock({
Id: "SourceLabel", //id, по которому происходит связка плагин-блока с его реализацией
Name: "Source label", //удобочитаемое наименование типа блока
View: "PP.Ui.MyLabel", //класс визуализатора или имя класса визуализатора
Master: "PP.Ui.MyMaster", //класс мастера или имя класса мастера
Icon: "../build/img/app/MainIcon.png", //путь к иконке (16*16) для плагина, необязательный параметр
SourceClass: 2561, //код класса источника данных, если не задан то КАП не предоставляет плагину источник
Js: "pluginBlocks.js" // для динамической загрузки скрипта с реализацией плагина, необязательный параметр
});
При написании плагина и новых классов следует придерживаться рекомендаций по разработке на JavaScript.
В сборках Prognoz Platform 8 присутствует несколько примеров плагинов:
PP.RadiusAngleChartPlugin.js
PP.RatingCartPlugin.js
PP.TrellisPlugin.js
Плагин, подключаемый через сервисы, должен вызывать метод Kap.regPluginBlock, для регистрации настроек плагина в веб-приложении, например:
PP.Exp.Ui.EaxRadiusAngleChartView.init = function ()
{
if (window.Kap)
Kap.regPluginBlock({
Id: "RadiusAngleChart",
Name: "RadiusAngleChart",
View: "PP.Exp.Ui.EaxRadiusAngleChartView",
SourceClass: PP.App.ModuleType.Olap,
Js: "EaxRadiusAngleChart.js"
});
};
При регистрации настроек плагина методом Kap.regPluginBlock можно задать дополнительные параметры плагина в свойстве Props:
Props: { // для установки значений по умолчанию для некоторых свойств блока-плагина, необязательный параметр
"name": "default name",
"decor": {
"useBorder": "false"
},
"pluginProps": "{ <свойства плагина>}"
}
Для визуализатора плагина должны быть определены события Refreshed и PropertyChanged.
Если плагин должен поддерживать работу с источником данных, то создайте реализацию метода setSource(source), за тип источника отвечает свойство SourceClass, задаваемое при регистрации плагина.
Если плагин должен поддерживать хранимые свойства, задайте реализацию методов getProps(), setProps(value).
Если плагин должен иметь собственное контекстное меню, переопределите метод PP.Ui.Control.getContextMenu(sender).
Если для плагина должны отображаться дополнительные вкладки боковой панели, содержащие его настройки, то создайте реализацию метода setDataView(view), где view - это экземпляр визуализатора плагина. При настройке плагина задайте свойство Master, содержащее экземпляр визуализатора плагина.
См. также:
Спецификация разработки на JavaScript | Регистрация плагина в настольном приложении