Для выполнения примера необходимо создать html-страницу и выполнить следующие действия:
1. Добавить ссылки на следующие на файлы: PP.js, PP.Metabase.js, PP.App.js, PP.Express.js, resources.ru.js.
2. Добавьте код для динамического подключения стилей PP.css, PP.App.css, PP.Express.css, PP.Metabase.css.
3. Затем в теге <head> дополнительно задаётся стиль для элементов:
<style type="text/css"> body, html { height: 100%; width: 100%; margin: 0; padding: 0; overflow: hidden; } </style>
4. Далее в теге <head> необходимо добавить скрипт, создающий контейнер для экспресс-отчета ExpressBox:
<script text="text/javascript"> var expressBox, eaxMdService, eaxAnalyzer; PP.ImagePath = "../build/img/";
PP.ScriptPath = "../build/";
function Ready() { var IMAGE_PATH = "build/img/"; // Путь к папке с пиктограммами // Укажем путь к корневой папке, содержащей файлы ресурсов PP.resourceManager.setRootResourcesFolder("../resources/"); // Установим языковые настройки для ресурсов PP.setCurrentCulture(PP.Cultures.ru); // Создаём соединение с репозиторием
var metabase = new PP.Mb.Metabase({ PPServiceUrl: "PPService.axd?action=proxy", Id: "WAREHOUSE", UserCreds: { UserName: "user", Password: "password" } });
// Открываем соединение с репозиторием metabase.open(); // Создаём сервис для работы с экспресс-отчётами eaxMdService = new PP.Exp.EaxMdService({ Metabase: metabase }); // Открываем документ с ключом 108 eaxAnalyzer = eaxMdService.editDocument(108);
// Создаём компонент ExpressBox expressBox = new PP.Exp.Ui.ExpressBox({ ParentNode: document.body, Source: eaxAnalyzer, Service: eaxMdService, // Задаём сервис ImagePath: IMAGE_PATH // Указываем путь к папке с пиктограммами });
window.onresize(); // Изменяем размеры контейнера ExpressBox }; var idTime; // Функция для изменения размеров контейнера ExpressBox при изменении размеров страницы window.onresize = function updateSize() { if (idTime) clearTimeout(idTime);
idTime = setTimeout(function () { if (expressBox) { expressBox.setWidth(document.body.offsetWidth - 5); expressBox.setHeight(document.body.offsetHeight - 5); } idTime = null; }, 100); }; </script>
Примечание. Компонент ReportBox с подписками на события главного меню «Отчёт» реализуется при помощи компонента PP.App.init или конструктора PP.Application.EaxModuleObject.
Замените в скрипте строки создания компонента ExpressBox для использования PP.App.init:
PP.App.init(PP.App.ModuleType.Olap, { Metabase: {IsMbOpened: true}, Module: { Source : eaxAnalyzer, Service : eaxMdService, }, });
Для использования PP.App.PrxModuleObject:
var moduleObject = new PP.App.EaxModuleObject({ "Source": eaxAnalyzer, "Service": eaxMdService, "ParentNode": document.body }); expressBox = moduleObject.getReportBox();
5. В теге <body> в качестве значения атрибута «onLoad» указываем название функции для создания контейнера экспресс-отчета:
<body onload="Ready()"> </body>
После выполнения примера на html-странице будет размещён компонент ExpressBox, имеющий следующий вид:
См. также: