Перейти к содержанию

Pivot#

Pivot - элемент для просмотра olap-кубов.

Интерактивная конфигурация и полное описание свойств.

Контрол поставляется в отдельном пакете ecosoft-lexema8-devextreme. Для его использования необходимо установить последнюю версию пакета и настроить свойство controls раздела front.

Свойства#

allowExpandAll#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения пользовательского контекстного меню заголовка столбца или строки для сворачивания/разворачивания всех элементов выбранного уровня

allowFiltering#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения значка фильтрации для вызова всплывающего окна в панели управления полями

allowSearchInFilter#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения поля поиска в окне фильтрации

allowSorting#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения значка сортировки в панели управления полями

allowSorting#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения пользовательского контекстного меню заголовка столбца или строки для сортировки по итоговым значениям

dataFieldArea#

тип значение по умолчанию допустимые значения
string row column, row

Определяет область, к которой должны принадлежать заголовки полей данных, если полей данных более одного

denyRoles#

тип значение по умолчанию допустимые значения
[string] undefined ["text", "text"...]

Список ролей без прав на данный элемент

disabled#

тип значение по умолчанию допустимые значения
bool false true/false

Отключение реакции контрола на взаимодействие с пользователем

drillDownEnabled#

тип значение по умолчанию допустимые значения
bool true true/false

Включить/выключить возможность просматривать детализацию ячеки. Если значение true, то в контекстном меню, которое открывается при клике правой кнопки мыши по ячейке, появится соответствующий пункт

editorWidth#

тип знач. по умолч. допустимые значения
int 5

Ширина контрола в колонках (для Bootstrap-верстки)

exportFileName#

тип значение по умолчанию допустимые значения
string PivotExport

Наименование файла при экспорте

height#

тип значение по умолчанию допустимые значения
string number -

Высота контрола

hideEmptySummaryCells#

тип значение по умолчанию допустимые значения
bool true true/false

Следует ли скрывать строки и столбцы без данных

ignoreExcelErrors#

тип значение по умолчанию допустимые значения
bool true true/false

Должен ли Excel скрывать предупреждения, если в экспортированном документе есть ошибки

rowHeaderLayout#

тип значение по умолчанию допустимые значения
string standard standard, tree

Определяет расположение элементов в заголовке строки

id#

тип значение по умолчанию допустимые значения
string -

Идентификатор контрола

readRoles#

тип значение по умолчанию допустимые значения
[string] undefined ["text", "text"...]

Список ролей на чтение данных

scrollMode#

тип значение по умолчанию допустимые значения
string standard standard, virtual

Режим прокрутки

showColumnGrandTotals#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения столбца итоговой суммы

showColumnTotals#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения столбца итоговой суммы, рассчитанной для всех предыдущих уровней иерархии

showLoadPanel#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения панель загрузки

showRowGrandTotals#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения строки итоговой суммы

showRowTotals#

тип значение по умолчанию допустимые значения
bool true true/false

Опция отображения строки итоговой суммы, рассчитанной для всех предыдущих уровней иерархии

showTotalsPrior#

тип значение по умолчанию допустимые значения
string none none, columns, rows, both

Определяет отображение строк и столбцов итоговых сумм относительно данных

tags#

тип значение по умолчанию допустимые значения
[string] undefined ["text", "text"...]

Позволяет объединять контролы в группы, возвращает массив имен

visible#

тип значение по умолчанию допустимые значения
bool true true/false

Видимость контрола

width#

тип значение по умолчанию допустимые значения
string 100% width

Ширина контрола

wordWrapEnabled#

тип значение по умолчанию допустимые значения
bool true true/false

Опция переноса длинного текста в элементах заголовка

writeRoles#

тип значение по умолчанию допустимые значения
[string] undefined ["text", "text"...]

Список ролей на изменение данных

Методы#

beginUpdate()#

Запрещает обновление контрола до вызова метода endUpdate()

bindGraph(graph, integrationOptions)#

Привязывает контрол к контролу Graph (в момент вызова метода инициализация контрола Graph должна быть закончена). Возвращает метод для отмены привязки

getDataSource()#

Возвращает экземпляр источника данных DataSource (только для доступа к свойствам и методам)

getFieldChooser()#

Возвращает экземпляр FieldChooser (только для доступа к свойствам)

getFieldPanel()#

Возвращает экземпляр FieldPanel (только для доступа к свойствам)

getOptions()#

Возвращает опции контрола

endUpdate()#

Обновляет контрол после вызова метода beginUpdate()

exportToExcel()#

Экспортирует данные в файл Excel

repaint()#

Обновляет разметку без перезагрузки данных

setDataSource(options)#

Задает новый источник данных

Пример
1
2
3
    this.controls.pivot1.bindGraph(this.controls.graph1, {
        inverted: true
    })
1
2
3
4
5
6
    this.controls.pivot1.setDataSource({ 
        type: 'xmla',
        url: 'http://host:port/OLAP/msmdpump.dll',
        catalog: 'AdventureWorksDW2012',
        cube: 'Northwind' 
    }) 

События#

cellClicked(s, e)#

Срабатывает при клике по ячейке, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot
e object объект параметров события
e.args object аргументы события
e.args.area string область, к которой принадлежит ячейка
e.args.cell object свойства ячейки
e.args.rowIndex Number индекс строки, которой принадлежит ячейка
e.args.columnIndex Number индекс столбца, которому принадлежит ячейка
e.args.columnFields поля области столбца
e.args.rowFields поля области строк
e.args.dataFields поля области данных

cellPrepared(s, e)#

Срабатывает при создании ячейки, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot
e object объект параметров события
e.args object аргументы события
e.args.area string область, к которой принадлежит ячейка
e.args.cell object свойства ячейки
e.args.rowIndex Number индекс строки, которой принадлежит ячейка
e.args.columnIndex Number индекс столбца, которому принадлежит ячейка

contentReadyOrChanged(s)#

Срабатывает, когда содержимое контрола готово и каждый раз, когда содержимое изменяется, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot

contextMenuPreparing(s, e)#

Срабатывает до отображения контекстного меню, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot
e object объект параметров события
e.args object аргументы события
e.args.items [string] массив элементов для отображения в контекстном меню
e.args.area string область, к которой принадлежит ячейка
e.args.cell object свойства ячейки
e.args.rowIndex Number индекс строки, которой принадлежит ячейка
e.args.columnIndex Number индекс столбца, которому принадлежит ячейка
e.args.columnFields поля области столбца
e.args.rowFields поля области строк
e.args.dataFields поля области данных
e.args.field object конфигурация поля. Доступно только для полей в FieldPanel

disposing(s)#

Срабатывает перед удалением виджета, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot

exported(s)#

Срабатывает после экспорта данных, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot

exporting(s, e)#

Срабатывает перед экспортом данных, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot
e object объект параметров события
e.args object аргументы события
e.args.fileName string имя файла для экспорта данных

fileSaving(s, e)#

Срабатывает перед сохранением файла с экспортированными данными в локальном хранилище пользователя, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot
e object объект параметров события
e.args object аргументы события
e.args.fileName string имя файла для экспорта данных

initialized(s)#

Срабатывает после инициализации контрола, где

параметр тип описание
s Pivot ссылка на экземпляр контрола Pivot

Callbacks#

drillDownLinkRenderer(s, e)#

Позволят создавать ссылки в гриде детализации данных. Основная статья: Grid (8.3)#linkRenderer.

Примечание: первый параметр (s) вместо ссылки на контрол принимает значение undefined.

FieldChooser#

FieldPanel#

DataSource#

Примеры настройки контрола#

На форме отображается контрол Pivot без источника данных, без возможности пользователем настройки отображения полей, фильтров, сортировки. В данном случае источник данных и описание полей задаются в коде:

Пример
<Pivot id="pivot1" editorWidth="12"/>

На форме отображается контрол Pivot без источника данных, с возможностью пользователем настроить отображение полей, фильтры, сортировку. В данном случае источник данных задаются в коде, отрбражение полей может настраиваться как из кода, так и пользователем:

Пример
1
2
3
4
<Pivot id="pivot1" editorWidth="12">
    <FieldChooser/>
    <FieldPanel/>
</Pivot>

На форме отображается контрол Pivot с заданным источником данных (OLAP-куб) и отображением полей, без возможности пользователем настройки отображения полей, фильтров, сортировки:

Пример
1
2
3
4
5
6
7
8
9
<Pivot id="pivot1" editorWidth="12">
    <DataSource type="xmla" url="http://host:port/OLAP/msmdpump.dll" catalog="myCatalog" cube="myCube">
            <Fields>
                <Field dataField="dataField1" area="data"/>
                <Field dataField="dataField2" area="row"/>
                <Field dataField="dataField3" area="column"/>
            </Fields>
    </DataSource>
</Pivot>

На форме отображается контрол Pivot с заданным источником данных и отображением полей, с возможностью пользователем настроить отображение полей, фильтры, сортировку:

Пример
<Pivot id="pivot1" editorWidth="12">
    <FieldChooser/>
    <FieldPanel/>
    <DataSource type="xmla" url="http://host:port/OLAP/msmdpump.dll" catalog="myCatalog" cube="myCube">
            <Fields>
                <Field dataField="dataField1" area="data"/>
                <Field dataField="dataField2" area="row"/>
                <Field dataField="dataField3" area="column"/>
            </Fields>
    </DataSource>
</Pivot>

На форме отображается контрол Pivot с заданным источником данных (запрос lexema8) и отображением полей, без возможности пользователем настройки отображения полей, фильтров, сортировки:

Пример
1
2
3
4
5
6
7
8
9
<Pivot id="pivot1" editorWidth="12">
    <DataSource type="custom" loader="loader">
        <Fields>
            <Field dataField="dataField1" area="data"/>
            <Field dataField="dataField2" area="row"/>
            <Field dataField="dataField3" area="column"/>
        </Fields>
    </DataSource>
</Pivot>
1
2
3
loader () {
    return (new QuerySource(MyQuery).load())
}

Использование OLAP#

Для улучшения производительности и отзывчивости интерфейса приложения при работе с большими объемами данных рекомендуется использовать OLAP. Контрол Pivot поддерживает настройку источнику данных для взаимодействия с OLAP-сервером с использованием XMLA-стандарта.

На данный момент в качестве OLAP-сервера поддерживается только Microsoft Analysis Services. Контрол Pivot подключается к OLAP-серверу по протоколу HTTP, используя IIS как промежуточное подключение. Для подключения указывается URL, который является адресом HTTP или HTTPS виртуальной папки IIS, содержащей файл msmdpump.dll.

Настройка IIS#

Настройка доступа по протоколу HTTP выполняется после установки служб Analysis Services. Администратор служб Analysis Services должен предоставить разрешения учетным записям Windows перед активацией доступа по протоколу HTTP. Также рекомендуется на момент настройки доступа иметь готовый куб для возможности проверки соединения.

Для упрощения настройки рекомендуется размещать IIS и Analysis Services на одном компьютере. В противном случае необходимо настроить кросс-доменные запросы. Также проверить наличие у IIS установленных компонент:

  • Расширения ISAPI

Выполнить следующие шаги:

  • Уточнить у системного администратора адрес сервера, на котором находится служба IIS, каталог для создания папки с содержимым сайтом, а также порт для сайта.
  • Запустить диспетчер служб IIS на сервере, указанном системным администратором.
  • Создать пул приложения:
    • в диспетчере служб IIS открыть раздел Пулы приложений
    • с помощью контекстного меню или меню в правой части выбрать пункт Добавить пул приложений;
    • в появившемся окне для поля Имя задать значение в виде имяПроекта_OLAP, установить режим Классический;
    • с помощью контекстного меню или меню в правой части для созданного пула выбрать пункт Дополнительные параметры;
    • в появившемся окне найти раздел Модель процесса, перейти в режим редактирования пункта Удостоверение;
    • в появившемся окне выбрать пункт Особая учетная запись, нажать кнопку Установить, указать учетные данные пользователя Analysis Services и нажать кнопку OK.

Создание пула Удостоверение пула

  • Добавить новый сайт. Задать имя сайта в виде имяПроекта_OLAP, выбрать ранее созданный пул. Для содержимого сайта создать папку с именем в виде wwwroot_myProject_OLAP в каталоге, указанном системным администратором. Указать порт и другие настройки.

Создание сайта

  • В папке с содержимым сайта wwwroot_myProject_OLAP создать новую папку с именем OLAP.
  • Скопировать находящиеся в <диск >: \Program Files\Microsoft SQL Server\< экземпляр>\OLAP\bin\isapi файлы MSMDPUMP.DLL и MSMDPUMP.INI, папку Resources.
  • Вставить в созданную папку OLAP ранее скопированные два файла и папку.

Копирование файлов Analysis Services

  • Открыть файл MSMDPUMP.INI с помощью текстового редактора и исправить значение в разделе ServerName на имя сервера, на котором расположен Analysis Service.
  • Для служб IIS версии 8 создание виртуального каталога и его преобразование происходит автоматически, для версий ниже 8 для этого нужно сделать следующие шаги:
    • в диспетчере служб IIS в разделе Сайты кликнуть правой кнопкой мыши по сайту имяПроекта_OLAP ;
    • в контекстном меню кликнуть по пункту Добавить виртуальный каталог;
    • в появившемся окне в поле Псевдоним ввести OLAP, Физический путь - указать путь до папки OLAP в каталоге с содержимым сайта, нажать кнопку OK;
    • в диспетчере служб IIS кликнуть правой кнопкой мыши по виртуальному каталогу OLAP;
    • в контекстном меню кликнуть по пункту Преобразовать в приложение;
    • в появившемся окне в полях должны быть проставлены следующие значения: Псевдоним - OLAP, Пул приложений - имяПроекта_OLAP, Физический путь - путь до папки OLAP в каталоге с содержимым сайта; если все верно, нажать кнопку OK

Создание виртуального каталога Преобразование виртуального каталога в приложение

  • Настроить сопоставление обработчиков для виртуального каталога OLAP:
    • в диспетчере служб IIS для виртуального каталога OLAP открыть содержимое элемента Сопоставления обработчиков;
    • с помощью контекстного меню или меню в правой части выбрать пункт Добавить сопоставление сценария;
    • в появившемся окне для поля Путь запроса задать значение *.dll, для поля Исполняемый файл - путь к файлу MSMDPUMP.DLL в виртуальном каталоге OLAP, для поля Имя - OLAP;
    • в этом же окне кликнуть по кнопке Ограничения запроса
    • в появившемся окне перейти на вкладку Команды, выбрать пункт Все команды и нажать на кнопку OK;
    • в окне добавления сопоставления нажать на кнопку OK;
    • в появившемся окне для разрешения расширения ISAPI нажать на кнопку Да;
    • с помощью контекстного меню или меню в правой части выбрать пункт Просмотреть отсортированный список;
    • найти в списке сопоставление OPTIONSVerbHandler и с помощью стрелок в правой части поднять его вверх в списке;
    • убедиться, что сопоставление OLAP находится в списке на втором месте после OPTIONSVerbHandler.

Сопоставления обработчиков Добавление сопоставления Настройка ограничения запроса Разрешение расширения ISAPI Расположение OPTIONSVerbHandler

  • Добавить заголовки ответов HTTP для виртуального каталога OLAP:
    • в диспетчере служб IIS для виртуального каталога OLAP открыть содержимое элемента Заголовки ответов HTTP;
    • с помощью контекстного меню или меню в правой части выбрать пункт Добавить;
    • в появившемся окне для поля Имя задать значение Access-Control-Allow-Headers, для поля Значение - Content-Type, нажать на кнопку OK;
    • добавить второй заголовок с именем Access-Control-Allow-Methods и значением POST;
    • добавить третий заголовок с именем Access-Control-Allow-Origin и значением *.

Заголовки ответов HTTP Добавление заголовка Добавление заголовка Добавление заголовка

  • Проверить настройку подключения:
    • открыть SQL Server Management Studio;
    • в появившемся окне настройки подключения в качестве типа сервера выбрать Analysis Services;
    • указать имя сервера как URL-адрес MSMDPUMP.dll в формате http://serverName:port/OLAP/msmdpump.dll;
    • нажать кнопку Connect, в случае правильной настройки откроется доступ к построенным кубам.

Проверка подключения