add combine config for metrics in pivot table (#3086)

* add combine config for metrics in pivot table

* change method to stack/unstack

* update backendSync
This commit is contained in:
Rogan 2017-07-29 05:16:38 +08:00 committed by Maxime Beauchemin
parent 1e325d9645
commit b58cfbcb91
4 changed files with 18 additions and 1 deletions

View File

@ -750,6 +750,12 @@
"default": false, "default": false,
"description": "Sort bars by x labels." "description": "Sort bars by x labels."
}, },
"combine_metric": {
"type": "CheckboxControl",
"label": "Combine Metrics",
"default": false,
"description": "Display metrics side by side within each column, as opposed to each column being displayed side by side for each metric."
},
"show_controls": { "show_controls": {
"type": "CheckboxControl", "type": "CheckboxControl",
"label": "Extra Controls", "label": "Extra Controls",

View File

@ -249,6 +249,14 @@ export const controls = {
description: 'Sort bars by x labels.', description: 'Sort bars by x labels.',
}, },
combine_metric: {
type: 'CheckboxControl',
label: 'Combine Metrics',
default: false,
description: 'Display metrics side by side within each column, as ' +
'opposed to each column being displayed side by side for each metric.',
},
show_controls: { show_controls: {
type: 'CheckboxControl', type: 'CheckboxControl',
label: 'Extra Controls', label: 'Extra Controls',

View File

@ -337,7 +337,7 @@ export const visTypes = {
controlSetRows: [ controlSetRows: [
['groupby', 'columns'], ['groupby', 'columns'],
['metrics', 'pandas_aggfunc'], ['metrics', 'pandas_aggfunc'],
['number_format', 'pivot_margins'], ['number_format', 'combine_metric', 'pivot_margins'],
], ],
}, },
], ],

View File

@ -402,6 +402,9 @@ class PivotTableViz(BaseViz):
aggfunc=self.form_data.get('pandas_aggfunc'), aggfunc=self.form_data.get('pandas_aggfunc'),
margins=self.form_data.get('pivot_margins'), margins=self.form_data.get('pivot_margins'),
) )
# Display metrics side by side with each column
if self.form_data.get('combine_metric'):
df = df.stack(0).unstack()
return dict( return dict(
columns=list(df.columns), columns=list(df.columns),
html=df.to_html( html=df.to_html(