Using ShowPivotAction
ShowPivotAction
is a special action that enables exporting data from the components that extend ListComponent
, such as Table, Tree, and DataGrid, to a pivot table.
The action should be created programmatically in the screen controller and used, for example, in a button:
@Autowired
private Actions actions;
@Autowired
private Button defaultShowPivotBtn;
@Autowired
private GroupTable<TipInfo> tipsTable;
@Subscribe
public void onInit(InitEvent event) {
ShowPivotAction showPivotAction = actions.create(ShowPivotAction.class);
showPivotAction.setTarget(tipsTable);
defaultShowPivotBtn.setAction(showPivotAction);
}
ShowPivotAction
has two modes for export: all rows and selected rows. If no rows are selected, all rows will be exported by default without confirmation.
The editable PivotTable
component will be shown in a new tab. By default, all the attributes included in the component’s data container view will be displayed, except the following:
-
attributes of
Collection
type; -
attributes of byte array type;
-
UUID
attributes; -
annotated with @SystemLevel.
If you want to exclude certain attributes or include only a part of them, use the PivotScreenBuilder
Prototype Spring bean. It provides an API for configuring the PivotTable
component in the opened screen.
@Autowired
private GroupTable<TipInfo> tipsTable;
@Subscribe("customShowPivotBtn")
public void onCustomShowPivotBtnClick(Button.ClickEvent event) {
PivotScreenBuilder builder = getApplicationContext()
.getBean(PivotScreenBuilder.class, tipsTable);
builder.withIncludedProperties(Arrays.asList("sex", "smoker", "time", "day")) (1)
.withNativeJson( (2)
"{"
+ " \"cols\": [\"Time\", \"Day\"],"
+ " \"rows\": [\"Sex\", \"Smoker\"],"
+ "\"renderers\": {"
+ " \"selectedRenderer\": \"table\","
+ " \"renderers\": [\"table\", \"tableBarchart\", \"heatmap\","
+ " \"rowHeatmap\", \"colHeatmap\"]"
+ " }"
+ "}")
.withItems((Collection) tipsTable.getItems().getItems())
.build()
.show();
}
1 | The withIncludedProperties() method takes only included properties, the other properties will be ignored. To exclude properties, use the withExcludedProperties() method. |
2 | The withNativeJson() method is used to change the default configuration of the pivot table. Note that the localized property names should be used. |
Below is the JSON structure for a non-editable pivot table:
{
"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"]
}
}
And here’s the JSON structure for an editable pivot table:
{
"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"
}]
}
}
You can export the displayed pivot data to Excel (if the current renderer is supported). The corresponding button will be displayed by default in the opened tab.