4.3. Использование ShowPivotAction
ShowPivotAction
– это особое действие, позволяющее экспортировать данные из компонентов – наследников ListComponent
, таких как Table
, Tree
и DataGrid
, и представлять их в виде сводной таблицы. По сути, это простой инструмент для BI-анализа, не требующий установки дополнительных компонентов приложения.
Действие ShowPivotAction
можно создать программно в контроллере экрана и присвоить его некоторой кнопке, к примеру:
ShowPivotAction showPivotAction = new ShowPivotAction(tipsGroupTable);
exportButton.setAction(showPivotAction);
ShowPivotAction
предоставляет два способа экспорта данных: только выделенные строки и все строки. Если в таблице не выделена ни одна строка, диалоговое окно выбора не будет показано, и по умолчанию будут экспортированы все строки.
После нажатия кнопки в новой вкладке появится редактируемая таблица PivotTable
. По умолчанию в этой таблице отображаются все атрибуты, включенные в контейнер данных компонента, кроме следующих:
-
атрибуты-коллекции;
-
байтовые массивы;
-
атрибуты с типом UUID;
-
аннотированные
@SystemLevel
.
Если вы хотите исключить некоторые атрибуты или, наоборот, включить выборочно только часть из них, используйте методы fluent API:
-
withIncludedProperties()
для включения атрибутов, например:ShowPivotAction showPivotAction = new ShowPivotAction(tipsGroupTable) .withIncludedProperties(Arrays.asList("sex", "smoker", "day", "totalBill"));
-
withExcludedProperties()
для исключения атрибутов, например:ShowPivotAction showPivotAction = new ShowPivotAction(tipsGroupTable) .withExcludedProperties(Arrays.asList("sex", "smoker"));
Эти методы принимают список имен атрибутов. Некорректные имена будут проигнорированы.
Вы можете изменить конфигурацию сводной таблицы по умолчанию, использовав метод withNativeJson()
, который принимает конфигурацию в формате JSON-строки. Обратите внимание, что в нём используются локализованные имена атрибутов:
ShowPivotAction showPivotAction = new ShowPivotAction(tipsGroupTable)
.withNativeJson("{" +
" \"cols\": [\"Time\", \"Day\"]," +
" \"rows\": [\"Sex\", \"Smoker\"]," +
" \"editable\": false," +
" \"renderer\": \"heatmap\"," +
" \"aggregation\": {" +
" \"id\": \"d8fc3fdf-730d-c94f-a0c8-72a9ce3dcb3a\"," +
" \"mode\": \"count\"," +
" \"properties\": [\"Sex\"]" +
" }" +
" }");
Ниже приведена структура JSON для нередактируемой сводной таблицы:
{
"cols": ["localized property", "localized property"],
"rows": ["localized property"],
"editable": false,
"renderer": "heatmap",
"aggregation": {
"id": "d8fc3fdf-730d-c94f-a0c8-72a9ce3dcb3a",
"mode": "sumOverSum",
"properties": ["localized property", "localized property"]
}
}
А здесь – структура JSON для редактируемой сводной таблицы:
{
"cols": ["localized property"],
"rows": ["localized property"],
"editable": true,
"renderers": {
"selectedRenderer": "barChart"
},
"autoSortUnusedProperties": true,
"aggregationProperties": ["localized property", "localized property"],
"aggregations": {
"selectedAggregation": "count",
"aggregations": [{
"id": "647780f0-c6d0-6ade-a63a-542b5c8cdbd5",
"mode": "count",
"caption": "Count"
}, {
"id": "c2663238-2654-67f0-2dec-add6962d867c",
"mode": "sumOverSum"
}]
}
}
Отображенные в сводной таблице данные можно легко скачать в формате Excel-файла, если выбран поддерживаемый рендерер. Кнопка экспорта по умолчанию будет отображена на открывшейся вкладке.