diff --git a/superset/assets/backendSync.json b/superset/assets/backendSync.json index 34c24876653ad..92a6fb1152be8 100644 --- a/superset/assets/backendSync.json +++ b/superset/assets/backendSync.json @@ -1328,10 +1328,8 @@ "type": "SelectControl", "freeForm": true, "label": "Number format", - "default": [ - ".3s", - ".3s | 12.3k" - ], + "renderTrigger": true, + "default": ".3s", "choices": [ [ ".3s", diff --git a/superset/assets/javascripts/explorev2/stores/controls.jsx b/superset/assets/javascripts/explorev2/stores/controls.jsx index 337a736f173e5..d9bec2d66b5c0 100644 --- a/superset/assets/javascripts/explorev2/stores/controls.jsx +++ b/superset/assets/javascripts/explorev2/stores/controls.jsx @@ -550,7 +550,8 @@ export const controls = { type: 'SelectControl', freeForm: true, label: 'Number format', - default: D3_TIME_FORMAT_OPTIONS[0], + renderTrigger: true, + default: '.3s', choices: D3_TIME_FORMAT_OPTIONS, description: D3_FORMAT_DOCS, }, diff --git a/superset/assets/javascripts/explorev2/stores/visTypes.js b/superset/assets/javascripts/explorev2/stores/visTypes.js index fd4710330375d..3acd9a3bc4518 100644 --- a/superset/assets/javascripts/explorev2/stores/visTypes.js +++ b/superset/assets/javascripts/explorev2/stores/visTypes.js @@ -286,6 +286,7 @@ const visTypes = { controlSetRows: [ ['groupby', 'columns'], ['metrics', 'pandas_aggfunc'], + ['number_format'], ], }, ], diff --git a/superset/assets/visualizations/pivot_table.js b/superset/assets/visualizations/pivot_table.js index d1abace0712e9..228a97ba790d2 100644 --- a/superset/assets/visualizations/pivot_table.js +++ b/superset/assets/visualizations/pivot_table.js @@ -11,10 +11,19 @@ module.exports = function (slice, payload) { const container = slice.container; const fd = slice.formData; const height = container.height(); + const numberFormat = fd.number_format; // payload data is a string of html with a single table element container.html(payload.data); + // format number + $('td').each(function () { + const tdText = $(this)[0].textContent; + if (!isNaN(tdText) && tdText !== '') { + $(this)[0].textContent = d3.format(numberFormat)(tdText); + } + }); + if (fd.groupby.length === 1) { // When there is only 1 group by column, // we use the DataTable plugin to make the header fixed.