mirror of https://github.com/apache/superset.git
feat: Adds options to show subtotals in Pivot Table (#24960)
This commit is contained in:
parent
a44c99899a
commit
be11556799
|
@ -138,7 +138,9 @@ export default function PivotTableChart(props: PivotTableProps) {
|
|||
rowSubtotalPosition,
|
||||
colSubtotalPosition,
|
||||
colTotals,
|
||||
colSubTotals,
|
||||
rowTotals,
|
||||
rowSubTotals,
|
||||
valueFormat,
|
||||
currencyFormat,
|
||||
emitCrossFilters,
|
||||
|
@ -432,7 +434,9 @@ export default function PivotTableChart(props: PivotTableProps) {
|
|||
clickRowHeaderCallback: toggleFilter,
|
||||
clickColumnHeaderCallback: toggleFilter,
|
||||
colTotals,
|
||||
colSubTotals,
|
||||
rowTotals,
|
||||
rowSubTotals,
|
||||
highlightHeaderCellsOnHover:
|
||||
emitCrossFilters ||
|
||||
isFeatureEnabled(FeatureFlag.DRILL_BY) ||
|
||||
|
@ -444,10 +448,12 @@ export default function PivotTableChart(props: PivotTableProps) {
|
|||
}),
|
||||
[
|
||||
colTotals,
|
||||
colSubTotals,
|
||||
dateFormatters,
|
||||
emitCrossFilters,
|
||||
metricColorFormatters,
|
||||
rowTotals,
|
||||
rowSubTotals,
|
||||
selectedFilters,
|
||||
toggleFilter,
|
||||
],
|
||||
|
|
|
@ -218,6 +218,18 @@ const config: ControlPanelConfig = {
|
|||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'rowSubTotals',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Show rows subtotal'),
|
||||
default: false,
|
||||
renderTrigger: true,
|
||||
description: t('Display row level subtotal'),
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'colTotals',
|
||||
|
@ -230,6 +242,18 @@ const config: ControlPanelConfig = {
|
|||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'colSubTotals',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Show columns subtotal'),
|
||||
default: false,
|
||||
renderTrigger: true,
|
||||
description: t('Display column level subtotal'),
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'transposePivot',
|
||||
|
|
|
@ -96,7 +96,9 @@ export default function transformProps(chartProps: ChartProps<QueryFormData>) {
|
|||
rowSubtotalPosition,
|
||||
colSubtotalPosition,
|
||||
colTotals,
|
||||
colSubTotals,
|
||||
rowTotals,
|
||||
rowSubTotals,
|
||||
valueFormat,
|
||||
dateFormat,
|
||||
metricsLayout,
|
||||
|
@ -156,7 +158,9 @@ export default function transformProps(chartProps: ChartProps<QueryFormData>) {
|
|||
rowSubtotalPosition,
|
||||
colSubtotalPosition,
|
||||
colTotals,
|
||||
colSubTotals,
|
||||
rowTotals,
|
||||
rowSubTotals,
|
||||
valueFormat,
|
||||
currencyFormat,
|
||||
emitCrossFilters,
|
||||
|
|
|
@ -92,14 +92,14 @@ export class TableRenderer extends React.Component {
|
|||
|
||||
const colSubtotalDisplay = {
|
||||
displayOnTop: false,
|
||||
enabled: rowTotals,
|
||||
enabled: tableOptions.colSubTotals,
|
||||
hideOnExpand: false,
|
||||
...subtotalOptions.colSubtotalDisplay,
|
||||
};
|
||||
|
||||
const rowSubtotalDisplay = {
|
||||
displayOnTop: false,
|
||||
enabled: colTotals,
|
||||
enabled: tableOptions.rowSubTotals,
|
||||
hideOnExpand: false,
|
||||
...subtotalOptions.rowSubtotalDisplay,
|
||||
};
|
||||
|
|
|
@ -63,7 +63,9 @@ interface PivotTableCustomizeProps {
|
|||
rowSubtotalPosition: boolean;
|
||||
colSubtotalPosition: boolean;
|
||||
colTotals: boolean;
|
||||
colSubTotals: boolean;
|
||||
rowTotals: boolean;
|
||||
rowSubTotals: boolean;
|
||||
valueFormat: string;
|
||||
currencyFormat: Currency;
|
||||
setDataMask: SetDataMaskHook;
|
||||
|
|
|
@ -34,7 +34,9 @@ const formData: PivotTableQueryFormData = {
|
|||
rowSubtotalPosition: true,
|
||||
colSubtotalPosition: true,
|
||||
colTotals: true,
|
||||
colSubTotals: true,
|
||||
rowTotals: true,
|
||||
rowSubTotals: true,
|
||||
valueFormat: 'SMART_NUMBER',
|
||||
datasource: '5__table',
|
||||
viz_type: 'my_chart',
|
||||
|
|
|
@ -95,6 +95,7 @@ class MigratePivotTable(MigrateViz):
|
|||
def _pre_action(self) -> None:
|
||||
if pivot_margins := self.data.get("pivot_margins"):
|
||||
self.data["colTotals"] = pivot_margins
|
||||
self.data["colSubTotals"] = pivot_margins
|
||||
|
||||
if pandas_aggfunc := self.data.get("pandas_aggfunc"):
|
||||
self.data["pandas_aggfunc"] = self.aggregation_mapping[pandas_aggfunc]
|
||||
|
|
|
@ -40,6 +40,7 @@ TARGET_FORM_DATA = {
|
|||
"any_other_key": "untouched",
|
||||
"aggregateFunction": "Sum",
|
||||
"colTotals": True,
|
||||
"colSubTotals": True,
|
||||
"combineMetric": True,
|
||||
"form_data_bak": SOURCE_FORM_DATA,
|
||||
"granularity_sqla": "ds",
|
||||
|
|
Loading…
Reference in New Issue