Для выполнения примера необходимо создать html-страницу и выполнить следующие действия:
1. Добавить ссылки на следующие css-файлы: PP.css, PP.Express.css.
Также нужно добавить ссылки на js-файлы: PP.js, PP.Metabase.js, PP.Express.js, resources.ru.js.
2. Затем в теге <head> необходимо добавить скрипт, создающий панель свойств и контейнер с таблицей EaxGrid. При этом предполагается наличие в репозитории экспресс-отчёта с ключом 4369:
<script type="text/javascript">
PP.ImagePath = "../build/img/"; // Путь к папке с изображениями
PP.ScriptPath = "../build/"; // Путь к папке со сценариями
PP.CSSPath = "../build/"; // Путь к папке с файлами стилей
var eaxGrid, eaxPropBar;
function Ready() {
// Укажем путь к корневой папке, содержащей файлы ресурсов
PP.resourceManager.setRootResourcesFolder("../resources/");
// Установим языковые настройки для ресурсов
PP.setCurrentCulture(PP.Cultures.ru);
var waiter = new PP.Ui.Waiter();
// Создадим соединение с репозиторием
metabase = new PP.Mb.Metabase({
PPServiceUrl: "PPService.axd?action=proxy",
Id: "WAREHOUSE",
UserCreds: {
UserName: "user",
Password: "password"
},
StartRequest: function () {
// При запросе метаданных отобразим компонент типа PP.Ui.Waiter
waiter.show();
},
EndRequest: function (sender, args) {
// Скроем компонент типа PP.Ui.Waiter
waiter.hide();
},
Error: function (sender, args) {
// Выведем описание ошибки
console.log(args.ResponseText);
}
});
// Откроем соединение с репозиторием
metabase.open();
// Создадим сервис для работы с экспресс-отчётами
var eaxMdService = new PP.Exp.EaxMdService({
Metabase: metabase
});
// Откроем экспресс-отчет с ключом 4369
eaxAnalyzer = eaxMdService.open(4369);
// Создадим контейнер для таблицы экспресс-отчета
eaxGrid = new PP.Exp.Ui.EaxGrid({
Source: eaxAnalyzer, // Источник данных для таблицы
ParentNode: "divTable",
EditMode: true, // Флаг «Режим редактирования»
VisibleHeaders: true, // Отобразим заголовки строк и столбцов таблицы
Width: 300,
Height: 430,
Service: eaxMdService,
// После выделения в таблице изменения отправляем сразу на сервер
AutoSendSelection: true,
// Уберем пункт "Настройка" в контекстном меню таблицы
ShowSettingsMenuItem: false,
// Уберем кнопку контекстного меню
ShowContextButton: false,
// Зададим задержку изменения выделения таблицы
DeferSelectionChangedDelay: 300,
// Разрешим поднятие отметки на уровень вверх по иерархии
UseShiftDrillUp: true,
// Установим обработчик события MetadataChanged
MetadataChanged: function (sender, args) {
console.log("Метаданные изменены");
},
// Установим обработчик события DataChanged
DataChanged: function (sender, args) {
console.log("Данные изменены");
},
// Установим обработчик события ExpanderAction
ExpanderAction: function (sender, args) {
console.log("Экспандер развернут");
},
// Установим обработчик события HyperlinkMouseDown
HyperlinkMouseDown: function (sender, args) {
console.log("Нажата гиперссылка");
},
// Установим обработчик события PictureMouseDown
PictureMouseDown: function (sender, args) {
console.log("Нажата пиктограмма в таблице");
},
// Установим обработчик события для свойства PropertyChanged
PropertyChanged: function (sender, args) {
console.log("Свойство изменено");
},
// Установим обработчик события для свойства Rendered
Rendered: function (sender, args) {
console.log("Таблица перерисована");
},
// Установим обработчик события для свойства RequestMetadata
RequestMetadata: function (sender, args) {
console.log("Запрос метаданных");
},
// Установим обработчик события для свойства SelectionChanged
SelectionChanged: function (sender, args) {
console.log("Выделенная в таблице область изменена");
},
// Установим обработчик события для свойства SelectionChanging
SelectionChanging: function (sender, args) {
// Выводим в консоль уведомление об изменении выделенной области
console.log("Изменение выделенной области");
},
// Установим обработчик события для свойства StructureChanged
StructureChanged: function (sender, args) {
console.log("Структура таблицы изменена");
}
});
// Обновим всё содержимое таблицы
eaxGrid.refreshAll();
// Обновим столбец таблицы с легендой для диаграммы
eaxGrid.updateLegendColumn();
// Создадим панель свойств экспресс-отчета
eaxPropBar = new PP.Exp.Ui.EaxPropertyBar({
ParentNode: "propertyBar",
Source: eaxAnalyzer, // Указываем источник данных
Width: 300,
Height: 430,
Service: eaxMdService,
DimViewMode: PP.Exp.Ui.DimViewMode.Classic,
DataView: eaxGrid // Панель свойств привязаваем к таблице
});
// Загрузим региональные настройки
eaxPropBar.loadFile("../Resources/resources.ru.js");
// Получим панель «Вид»
var tableVP = eaxPropBar.getTableViewPanel();
// Отобразим данную панель
tableVP.show();
// Развернём её
tableVP.expand();
};
</script>
3. В теге <body> в качестве значения атрибута «onLoad» указать имя функции для загрузки документа экспресс-отчёта, пузырьковой диаграммы и панели свойств, а также разместить блоки с идентификаторами «propertyBar» и «divTable» :
<body onload="Ready()"> <div id="propertyBar" style="float: left;"></div> <div id="divTable" style="float: left; margin-left: 10px"></div> </body>
После выполнения примера на html-странице будут размещены компоненты EaxPropertyBar и EaxGrid:

В процессе их загрузки будут отображаться окна с уведомлениями о запросе метаданных и о перерисовке таблицы. На панели свойств будет отображена и раскрыта вкладка «Вид».
См. также: