You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2024/02/12 22:21:12 UTC
(superset) 06/09: fix(plugins): missing currency on small number format in table chart (#27041)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/superset.git
commit db56b7fc367a0f51d66c417d651fed3b5b816254
Author: JUST.in DO IT <ju...@airbnb.com>
AuthorDate: Thu Feb 8 15:24:24 2024 -0800
fix(plugins): missing currency on small number format in table chart (#27041)
(cherry picked from commit 6f402991e54ae6ab0c6c98613d7e831c7f847f54)
---
.../plugin-chart-table/src/utils/formatValue.ts | 6 ++++
.../plugin-chart-table/test/TableChart.test.tsx | 42 ++++++++++++++++++++++
2 files changed, 48 insertions(+)
diff --git a/superset-frontend/plugins/plugin-chart-table/src/utils/formatValue.ts b/superset-frontend/plugins/plugin-chart-table/src/utils/formatValue.ts
index 139f92336c..043fa6b59d 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/utils/formatValue.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/utils/formatValue.ts
@@ -17,6 +17,7 @@
* under the License.
*/
import {
+ CurrencyFormatter,
DataRecordValue,
GenericDataType,
getNumberFormatter,
@@ -64,6 +65,11 @@ export function formatColumnValue(
const smallNumberFormatter =
config.d3SmallNumberFormat === undefined
? formatter
+ : config.currencyFormat
+ ? new CurrencyFormatter({
+ d3Format: config.d3SmallNumberFormat,
+ currency: config.currencyFormat,
+ })
: getNumberFormatter(config.d3SmallNumberFormat);
return formatValue(
isNumber && typeof value === 'number' && Math.abs(value) < 1
diff --git a/superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx b/superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx
index d6998476ba..52cfab1662 100644
--- a/superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx
@@ -166,6 +166,48 @@ describe('plugin-chart-table', () => {
expect(cells[2]).toHaveTextContent('$ 0');
});
+ it('render small formatted data with currencies', () => {
+ const props = transformProps({
+ ...testData.raw,
+ rawFormData: {
+ ...testData.raw.rawFormData,
+ column_config: {
+ num: {
+ d3SmallNumberFormat: '.2r',
+ currencyFormat: { symbol: 'USD', symbolPosition: 'prefix' },
+ },
+ },
+ },
+ queriesData: [
+ {
+ ...testData.raw.queriesData[0],
+ data: [
+ {
+ num: 1234,
+ },
+ {
+ num: 0.5,
+ },
+ {
+ num: 0.61234,
+ },
+ ],
+ },
+ ],
+ });
+ render(
+ ProviderWrapper({
+ children: <TableChart {...props} sticky={false} />,
+ }),
+ );
+ const cells = document.querySelectorAll('td');
+
+ expect(document.querySelectorAll('th')[0]).toHaveTextContent('num');
+ expect(cells[0]).toHaveTextContent('$ 1.23k');
+ expect(cells[1]).toHaveTextContent('$ 0.50');
+ expect(cells[2]).toHaveTextContent('$ 0.61');
+ });
+
it('render empty data', () => {
wrap.setProps({ ...transformProps(testData.empty), sticky: false });
tree = wrap.render();