This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch additional_currency_formatters
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/additional_currency_formatters 
by this push:
     new 50ddb8e6fd adding formatters
50ddb8e6fd is described below

commit 50ddb8e6fd8eec1a608f05673e43178b910a9bbe
Author: Evan Rusackas <[email protected]>
AuthorDate: Tue Nov 29 09:19:16 2022 -0700

    adding formatters
---
 .../src/utils/D3Formatting.ts                      | 43 ++++++++++++----------
 superset-frontend/src/setup/setupFormatters.ts     | 40 ++++++++++++++++++++
 2 files changed, 64 insertions(+), 19 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
index 0e30f82d7b..c53984f589 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { t, smartDateFormatter, NumberFormats } from '@superset-ui/core';
+import { t, smartDateFormatter, getNumberFormatterRegistry } from 
'@superset-ui/core';
 
 // D3 specific formatting config
 export const D3_FORMAT_DOCS = t(
@@ -24,24 +24,29 @@ export const D3_FORMAT_DOCS = t(
 );
 
 // input choices & options
-export const D3_FORMAT_OPTIONS: [string, string][] = [
-  [NumberFormats.SMART_NUMBER, t('Adaptive formatting')],
-  ['~g', t('Original value')],
-  [',d', ',d (12345.432 => 12,345)'],
-  ['.1s', '.1s (12345.432 => 10k)'],
-  ['.3s', '.3s (12345.432 => 12.3k)'],
-  [',.1%', ',.1% (12345.432 => 1,234,543.2%)'],
-  ['.2%', '.2% (12345.432 => 1234543.20%)'],
-  ['.3%', '.3% (12345.432 => 1234543.200%)'],
-  ['.4r', '.4r (12345.432 => 12350)'],
-  [',.1f', ',.1f (12345.432 => 12,345.4)'],
-  [',.2f', ',.2f (12345.432 => 12,345.43)'],
-  [',.3f', ',.3f (12345.432 => 12,345.432)'],
-  ['+,', '+, (12345.432 => +12,345.432)'],
-  ['$,.2f', '$,.2f (12345.432 => $12,345.43)'],
-  ['DURATION', t('Duration in ms (66000 => 1m 6s)')],
-  ['DURATION_SUB', t('Duration in ms (1.40008 => 1ms 400µs 80ns)')],
-];
+// export const D3_FORMAT_OPTIONS: [string, string][] = [
+//   [NumberFormats.SMART_NUMBER, t('Adaptive formatting')],
+//   ['~g', t('Original value')],
+//   [',d', ',d (12345.432 => 12,345)'],
+//   ['.1s', '.1s (12345.432 => 10k)'],
+//   ['.3s', '.3s (12345.432 => 12.3k)'],
+//   [',.1%', ',.1% (12345.432 => 1,234,543.2%)'],
+//   ['.2%', '.2% (12345.432 => 1234543.20%)'],
+//   ['.3%', '.3% (12345.432 => 1234543.200%)'],
+//   ['.4r', '.4r (12345.432 => 12350)'],
+//   [',.1f', ',.1f (12345.432 => 12,345.4)'],
+//   [',.2f', ',.2f (12345.432 => 12,345.43)'],
+//   [',.3f', ',.3f (12345.432 => 12,345.432)'],
+//   ['+,', '+, (12345.432 => +12,345.432)'],
+//   ['$,.2f', '$,.2f (12345.432 => $12,345.43)'],
+//   ['CURRENCY_INDIA', 'Euro ('],
+//   ['CURRENCY_EURO', 'Euro Currency'],
+//   ['DURATION', t('Duration in ms (66000 => 1m 6s)')],
+//   ['DURATION_SUB', t('Duration in ms (1.40008 => 1ms 400µs 80ns)')],
+// ];
+export const D3_FORMAT_OPTIONS = 
Object.entries(getNumberFormatterRegistry().items).map(([key, value]) => {
+  return [key, value.value.description || key];
+});
 
 export const D3_TIME_FORMAT_DOCS = t(
   'D3 time format syntax: https://github.com/d3/d3-time-format',
diff --git a/superset-frontend/src/setup/setupFormatters.ts 
b/superset-frontend/src/setup/setupFormatters.ts
index bc5efc1ed3..6ebbfbed09 100644
--- a/superset-frontend/src/setup/setupFormatters.ts
+++ b/superset-frontend/src/setup/setupFormatters.ts
@@ -18,6 +18,7 @@
  */
 import {
   createDurationFormatter,
+  createD3NumberFormatter,
   getNumberFormatter,
   getNumberFormatterRegistry,
   NumberFormats,
@@ -66,6 +67,45 @@ export default function setupFormatters() {
     .registerValue(
       'DURATION_SUB',
       createDurationFormatter({ formatSubMilliseconds: true }),
+    )
+    .registerValue(
+      'CURRENCY_INDIA',
+      createD3NumberFormatter({
+        description: 'Indian Currency',
+        formatString: '$,.2f',
+        locale: {
+          decimal: '.',
+          thousands: ',',
+          grouping: [3, 2, 2, 2, 2, 2, 2, 2, 2, 2],
+          currency: ['₹', ''],
+        },
+      }),
+    )
+    .registerValue(
+      'CURRENCY_EURO',
+      createD3NumberFormatter({
+        description: 'EU Currency',
+        formatString: '$.2f',
+        locale: {
+          decimal: '.',
+          thousands: ',',
+          grouping: [3],
+          currency: ['€', ''],
+        },
+      }),
+    )
+    .registerValue(
+      'CURRENCY_GBP',
+      createD3NumberFormatter({
+        description: 'UK Currency',
+        formatString: '$.2f',
+        locale: {
+          decimal: '.',
+          thousands: ',',
+          grouping: [3],
+          currency: ['£', ''],
+        },
+      }),
     );
 
   getTimeFormatterRegistry()

Reply via email to