@oanda/labs-crowd-view-widget 1.0.59 → 1.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +492 -0
  2. package/dist/main/CrowdViewWidget/Main.js +7 -13
  3. package/dist/main/CrowdViewWidget/Main.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getSeriesCandlestickConfig.js +16 -7
  5. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getSeriesCandlestickConfig.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js +20 -1
  7. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfig.js +19 -0
  9. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfig.js.map +1 -0
  10. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/index.js +4 -4
  11. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/index.js.map +1 -1
  12. package/dist/main/CrowdViewWidget/components/Chart/getOption.js +2 -1
  13. package/dist/main/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
  14. package/dist/main/CrowdViewWidget/selectConfig.js +58 -4
  15. package/dist/main/CrowdViewWidget/selectConfig.js.map +1 -1
  16. package/dist/main/translations/index.js +3 -11
  17. package/dist/main/translations/index.js.map +1 -1
  18. package/dist/main/translations/sources/en.json +7 -7
  19. package/dist/main/translations/sources/ja.json +30 -0
  20. package/dist/module/CrowdViewWidget/Main.js +10 -16
  21. package/dist/module/CrowdViewWidget/Main.js.map +1 -1
  22. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getSeriesCandlestickConfig.js +16 -7
  23. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getSeriesCandlestickConfig.js.map +1 -1
  24. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js +20 -1
  25. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js.map +1 -1
  26. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfig.js +12 -0
  27. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfig.js.map +1 -0
  28. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/index.js +1 -1
  29. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/index.js.map +1 -1
  30. package/dist/module/CrowdViewWidget/components/Chart/getOption.js +2 -1
  31. package/dist/module/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
  32. package/dist/module/CrowdViewWidget/selectConfig.js +57 -4
  33. package/dist/module/CrowdViewWidget/selectConfig.js.map +1 -1
  34. package/dist/module/translations/index.js +3 -11
  35. package/dist/module/translations/index.js.map +1 -1
  36. package/dist/module/translations/sources/en.json +7 -7
  37. package/dist/module/translations/sources/ja.json +30 -0
  38. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getSeriesCandlestickConfig.d.ts +2 -1
  39. package/dist/types/CrowdViewWidget/components/Chart/dataUtils/{getInstrumentConfigForDivision.d.ts → getInstrumentConfig.d.ts} +1 -1
  40. package/dist/types/CrowdViewWidget/components/Chart/dataUtils/index.d.ts +1 -1
  41. package/dist/types/CrowdViewWidget/selectConfig.d.ts +8 -2
  42. package/lokalise.config.json +2 -2
  43. package/package.json +3 -3
  44. package/src/CrowdViewWidget/Main.tsx +11 -17
  45. package/src/CrowdViewWidget/components/Chart/chartOptions/getSeriesCandlestickConfig.ts +19 -6
  46. package/src/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.ts +26 -1
  47. package/src/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfig.ts +20 -0
  48. package/src/CrowdViewWidget/components/Chart/dataUtils/index.ts +1 -1
  49. package/src/CrowdViewWidget/components/Chart/getOption.ts +1 -0
  50. package/src/CrowdViewWidget/selectConfig.ts +75 -4
  51. package/src/translations/index.ts +2 -6
  52. package/src/translations/sources/en.json +7 -7
  53. package/src/translations/sources/ja.json +30 -0
  54. package/test/components/Chart/dataUtils/getBucketWidthMultiplayer.test.ts +129 -1
  55. package/test/utils/instrumentUtils.test.ts +38 -9
  56. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfigForDivision.js +0 -13
  57. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfigForDivision.js.map +0 -1
  58. package/dist/main/translations/sources/es.json +0 -2
  59. package/dist/main/translations/sources/th.json +0 -2
  60. package/dist/main/translations/sources/zh_TW.json +0 -2
  61. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfigForDivision.js +0 -6
  62. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfigForDivision.js.map +0 -1
  63. package/dist/module/translations/sources/es.json +0 -2
  64. package/dist/module/translations/sources/th.json +0 -2
  65. package/dist/module/translations/sources/zh_TW.json +0 -2
  66. package/src/CrowdViewWidget/components/Chart/dataUtils/getInstrumentConfigForDivision.ts +0 -11
  67. package/src/translations/sources/es.json +0 -2
  68. package/src/translations/sources/th.json +0 -2
  69. package/src/translations/sources/zh_TW.json +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"getOption.js","names":["CHART_CONFIG","getDataZoomConfig","getGridConfig","getGridLines","getLabelsConfig","getSeriesCandlestickConfig","getSeriesHeatmapConfig","getSeriesSentimentConfig","getTooltipConfig","getVisualMapConfig","getXAxisConfig","getYAxisConfig","isDifferenceGreaterThanTwoWeeks","getChartStyles","getOption","_ref","mainData","dates","candlesOpen","candlesClose","candlesLow","candlesHigh","bookPrices","bookIndexes","sentimentShorts","sentimentLongs","additionalData","bucketWidth","buckets","displayPrecision","bookType","sentimentThresholdMin","sentimentThresholdMax","isLoading","isDark","isDesktop","labelCallback","locale","styles","selectedPriceRef","current","initialStartZoom","INITIAL_START_ZOOM_DESKTOP","INITIAL_START_ZOOM_MOBILE","visibleXAxisData","slice","length","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","heatmapChart","sentimentChart","animation","tooltip","tooltipLinesColor","grid","xAxis","yAxis","dataZoom","visualMap","sentimentLongColor","sentimentShortColor","graphic","dataset","source","series"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/getOption.ts"],"sourcesContent":["import { CHART_CONFIG } from '../../constants';\nimport {\n getDataZoomConfig,\n getGridConfig,\n getGridLines,\n getLabelsConfig,\n getSeriesCandlestickConfig,\n getSeriesHeatmapConfig,\n getSeriesSentimentConfig,\n getTooltipConfig,\n getVisualMapConfig,\n getXAxisConfig,\n getYAxisConfig,\n} from './chartOptions';\nimport { isDifferenceGreaterThanTwoWeeks } from './chartUtils';\nimport { getChartStyles } from './chartUtils/getChartStyles';\nimport type { GetOptionType } from './types';\n\nexport const getOption: GetOptionType = ({\n mainData: {\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices,\n bookIndexes,\n sentimentShorts,\n sentimentLongs,\n },\n additionalData: {\n bucketWidth,\n buckets,\n displayPrecision,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n },\n isLoading,\n isDark,\n isDesktop,\n labelCallback,\n locale,\n}) => {\n const styles = getChartStyles(isDark);\n const selectedPriceRef = { current: 0 };\n\n const initialStartZoom = isDesktop\n ? CHART_CONFIG.INITIAL_START_ZOOM_DESKTOP\n : CHART_CONFIG.INITIAL_START_ZOOM_MOBILE;\n\n const visibleXAxisData = dates.slice(\n (dates.length * initialStartZoom) / 100,\n (dates.length * CHART_CONFIG.INITIAL_END_ZOOM) / 100\n );\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n visibleXAxisData[0],\n visibleXAxisData[visibleXAxisData.length - 1]\n );\n\n const heatmapChart =\n bookPrices && bookPrices.length > 0\n ? [\n getSeriesHeatmapConfig({\n bucketWidth,\n buckets,\n isDark,\n sentimentThresholdMax,\n sentimentThresholdMin,\n isLoading,\n }),\n ]\n : [];\n\n const sentimentChart =\n sentimentLongs && sentimentLongs.length > 0\n ? [\n getSeriesSentimentConfig({\n styles,\n isLoading,\n }),\n ]\n : [];\n\n return {\n animation: false,\n tooltip: getTooltipConfig({\n bookType,\n bucketWidth,\n buckets,\n labelCallback,\n selectedPriceRef,\n tooltipLinesColor: styles.tooltipLinesColor,\n sentimentLongs,\n sentimentShorts,\n isDesktop,\n isDark,\n locale,\n }),\n grid: getGridConfig({ isDesktop }),\n xAxis: getXAxisConfig({\n dates,\n isGreaterThanTwoWeeks,\n locale,\n isDesktop,\n }),\n yAxis: getYAxisConfig({\n bucketWidth,\n displayPrecision,\n selectedPriceRef,\n }),\n dataZoom: getDataZoomConfig({ isDesktop }),\n visualMap: getVisualMapConfig({\n sentimentLongColor: styles.sentimentLongColor,\n sentimentShortColor: styles.sentimentShortColor,\n }),\n graphic: [\n ...getGridLines({ isDark, isDesktop }),\n ...getLabelsConfig({ isDark, isDesktop, labelCallback }),\n ],\n dataset: {\n source: {\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices: bookPrices ?? [],\n bookIndexes: bookIndexes ?? [],\n sentimentShorts,\n sentimentLongs,\n },\n },\n series: [\n getSeriesCandlestickConfig({\n styles,\n isLoading,\n }),\n ...heatmapChart,\n ...sentimentChart,\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getOption.js","names":["CHART_CONFIG","getDataZoomConfig","getGridConfig","getGridLines","getLabelsConfig","getSeriesCandlestickConfig","getSeriesHeatmapConfig","getSeriesSentimentConfig","getTooltipConfig","getVisualMapConfig","getXAxisConfig","getYAxisConfig","isDifferenceGreaterThanTwoWeeks","getChartStyles","getOption","_ref","mainData","dates","candlesOpen","candlesClose","candlesLow","candlesHigh","bookPrices","bookIndexes","sentimentShorts","sentimentLongs","additionalData","bucketWidth","buckets","displayPrecision","bookType","sentimentThresholdMin","sentimentThresholdMax","isLoading","isDark","isDesktop","labelCallback","locale","styles","selectedPriceRef","current","initialStartZoom","INITIAL_START_ZOOM_DESKTOP","INITIAL_START_ZOOM_MOBILE","visibleXAxisData","slice","length","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","heatmapChart","sentimentChart","animation","tooltip","tooltipLinesColor","grid","xAxis","yAxis","dataZoom","visualMap","sentimentLongColor","sentimentShortColor","graphic","dataset","source","series"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/getOption.ts"],"sourcesContent":["import { CHART_CONFIG } from '../../constants';\nimport {\n getDataZoomConfig,\n getGridConfig,\n getGridLines,\n getLabelsConfig,\n getSeriesCandlestickConfig,\n getSeriesHeatmapConfig,\n getSeriesSentimentConfig,\n getTooltipConfig,\n getVisualMapConfig,\n getXAxisConfig,\n getYAxisConfig,\n} from './chartOptions';\nimport { isDifferenceGreaterThanTwoWeeks } from './chartUtils';\nimport { getChartStyles } from './chartUtils/getChartStyles';\nimport type { GetOptionType } from './types';\n\nexport const getOption: GetOptionType = ({\n mainData: {\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices,\n bookIndexes,\n sentimentShorts,\n sentimentLongs,\n },\n additionalData: {\n bucketWidth,\n buckets,\n displayPrecision,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n },\n isLoading,\n isDark,\n isDesktop,\n labelCallback,\n locale,\n}) => {\n const styles = getChartStyles(isDark);\n const selectedPriceRef = { current: 0 };\n\n const initialStartZoom = isDesktop\n ? CHART_CONFIG.INITIAL_START_ZOOM_DESKTOP\n : CHART_CONFIG.INITIAL_START_ZOOM_MOBILE;\n\n const visibleXAxisData = dates.slice(\n (dates.length * initialStartZoom) / 100,\n (dates.length * CHART_CONFIG.INITIAL_END_ZOOM) / 100\n );\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n visibleXAxisData[0],\n visibleXAxisData[visibleXAxisData.length - 1]\n );\n\n const heatmapChart =\n bookPrices && bookPrices.length > 0\n ? [\n getSeriesHeatmapConfig({\n bucketWidth,\n buckets,\n isDark,\n sentimentThresholdMax,\n sentimentThresholdMin,\n isLoading,\n }),\n ]\n : [];\n\n const sentimentChart =\n sentimentLongs && sentimentLongs.length > 0\n ? [\n getSeriesSentimentConfig({\n styles,\n isLoading,\n }),\n ]\n : [];\n\n return {\n animation: false,\n tooltip: getTooltipConfig({\n bookType,\n bucketWidth,\n buckets,\n labelCallback,\n selectedPriceRef,\n tooltipLinesColor: styles.tooltipLinesColor,\n sentimentLongs,\n sentimentShorts,\n isDesktop,\n isDark,\n locale,\n }),\n grid: getGridConfig({ isDesktop }),\n xAxis: getXAxisConfig({\n dates,\n isGreaterThanTwoWeeks,\n locale,\n isDesktop,\n }),\n yAxis: getYAxisConfig({\n bucketWidth,\n displayPrecision,\n selectedPriceRef,\n }),\n dataZoom: getDataZoomConfig({ isDesktop }),\n visualMap: getVisualMapConfig({\n sentimentLongColor: styles.sentimentLongColor,\n sentimentShortColor: styles.sentimentShortColor,\n }),\n graphic: [\n ...getGridLines({ isDark, isDesktop }),\n ...getLabelsConfig({ isDark, isDesktop, labelCallback }),\n ],\n dataset: {\n source: {\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices: bookPrices ?? [],\n bookIndexes: bookIndexes ?? [],\n sentimentShorts,\n sentimentLongs,\n },\n },\n series: [\n getSeriesCandlestickConfig({\n styles,\n isLoading,\n locale,\n }),\n ...heatmapChart,\n ...sentimentChart,\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -57,12 +57,65 @@ const instrumentSelectConfig = [...instrumentSelectConfigOC, {
57
57
  id: InstrumentId.XAG_USD,
58
58
  label: 'XAG/USD'
59
59
  }];
60
- const granularitySelectConfig = [{
60
+ const instrumentSelectConfigJa = [{
61
+ id: InstrumentId.USD_JPY,
62
+ label: 'USD/JPY'
63
+ }, {
64
+ id: InstrumentId.EUR_JPY,
65
+ label: 'EUR/JPY'
66
+ }, {
67
+ id: InstrumentId.GBP_JPY,
68
+ label: 'GBP/JPY'
69
+ }, {
70
+ id: InstrumentId.AUD_JPY,
71
+ label: 'AUD/JPY'
72
+ }, {
73
+ id: InstrumentId.EUR_USD,
74
+ label: 'EUR/USD'
75
+ }, {
76
+ id: InstrumentId.EUR_AUD,
77
+ label: 'EUR/AUD'
78
+ }, {
79
+ id: InstrumentId.EUR_GBP,
80
+ label: 'EUR/GBP'
81
+ }, {
82
+ id: InstrumentId.EUR_CHF,
83
+ label: 'EUR/CHF'
84
+ }, {
85
+ id: InstrumentId.USD_CHF,
86
+ label: 'USD/CHF'
87
+ }, {
88
+ id: InstrumentId.USD_CAD,
89
+ label: 'USD/CAD'
90
+ }, {
91
+ id: InstrumentId.GBP_USD,
92
+ label: 'GBP/USD'
93
+ }, {
94
+ id: InstrumentId.GBP_CHF,
95
+ label: 'GBP/CHF'
96
+ }, {
97
+ id: InstrumentId.AUD_USD,
98
+ label: 'AUD/USD'
99
+ }, {
100
+ id: InstrumentId.NZD_USD,
101
+ label: 'NZD/USD'
102
+ }, {
103
+ id: InstrumentId.XAU_USD,
104
+ label: 'XAU/USD'
105
+ }, {
106
+ id: InstrumentId.XAG_USD,
107
+ label: 'XAG/USD'
108
+ }];
109
+ const getGranularitySelectConfig = (lang, isJapanese) => [{
61
110
  id: Granularity.H1,
62
- label: '1_hour'
111
+ label: lang(isJapanese ? 'hour_plural' : 'hour', {
112
+ count: 1
113
+ })
63
114
  }, {
64
115
  id: Granularity.H4,
65
- label: '4_hours'
116
+ label: lang('hour_plural', {
117
+ count: 4
118
+ })
66
119
  }];
67
- export { granularitySelectConfig, instrumentSelectConfig, instrumentSelectConfigOC, navigationConfig };
120
+ export { getGranularitySelectConfig, instrumentSelectConfig, instrumentSelectConfigJa, instrumentSelectConfigOC, navigationConfig };
68
121
  //# sourceMappingURL=selectConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectConfig.js","names":["BookType","Granularity","InstrumentId","navigationConfig","id","Order","label","Position","instrumentSelectConfigOC","EUR_USD","EUR_AUD","EUR_GBP","EUR_JPY","EUR_CHF","USD_CHF","USD_JPY","USD_CAD","GBP_USD","GBP_JPY","GBP_CHF","AUD_JPY","AUD_USD","NZD_USD","instrumentSelectConfig","XAU_USD","XAG_USD","granularitySelectConfig","H1","H4"],"sources":["../../../src/CrowdViewWidget/selectConfig.ts"],"sourcesContent":["import { BookType, Granularity } from '../gql/types/graphql';\nimport { InstrumentId } from './types';\n\nconst navigationConfig = [\n {\n id: BookType.Order,\n label: 'order_book',\n },\n {\n id: BookType.Position,\n label: 'position_book',\n },\n];\n\nconst instrumentSelectConfigOC = [\n {\n id: InstrumentId.EUR_USD,\n label: 'EUR/USD',\n },\n {\n id: InstrumentId.EUR_AUD,\n label: 'EUR/AUD',\n },\n {\n id: InstrumentId.EUR_GBP,\n label: 'EUR/GBP',\n },\n {\n id: InstrumentId.EUR_JPY,\n label: 'EUR/JPY',\n },\n {\n id: InstrumentId.EUR_CHF,\n label: 'EUR/CHF',\n },\n {\n id: InstrumentId.USD_CHF,\n label: 'USD/CHF',\n },\n {\n id: InstrumentId.USD_JPY,\n label: 'USD/JPY',\n },\n {\n id: InstrumentId.USD_CAD,\n label: 'USD/CAD',\n },\n {\n id: InstrumentId.GBP_USD,\n label: 'GBP/USD',\n },\n {\n id: InstrumentId.GBP_JPY,\n label: 'GBP/JPY',\n },\n {\n id: InstrumentId.GBP_CHF,\n label: 'GBP/CHF',\n },\n {\n id: InstrumentId.AUD_JPY,\n label: 'AUD/JPY',\n },\n {\n id: InstrumentId.AUD_USD,\n label: 'AUD/USD',\n },\n {\n id: InstrumentId.NZD_USD,\n label: 'NZD/USD',\n },\n];\n\nconst instrumentSelectConfig = [\n ...instrumentSelectConfigOC,\n {\n id: InstrumentId.XAU_USD,\n label: 'XAU/USD',\n },\n {\n id: InstrumentId.XAG_USD,\n label: 'XAG/USD',\n },\n];\n\nconst granularitySelectConfig = [\n {\n id: Granularity.H1,\n label: '1_hour',\n },\n {\n id: Granularity.H4,\n label: '4_hours',\n },\n];\n\nexport {\n granularitySelectConfig,\n instrumentSelectConfig,\n instrumentSelectConfigOC,\n navigationConfig,\n};\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,WAAW,QAAQ,sBAAsB;AAC5D,SAASC,YAAY,QAAQ,SAAS;AAEtC,MAAMC,gBAAgB,GAAG,CACvB;EACEC,EAAE,EAAEJ,QAAQ,CAACK,KAAK;EAClBC,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEJ,QAAQ,CAACO,QAAQ;EACrBD,KAAK,EAAE;AACT,CAAC,CACF;AAED,MAAME,wBAAwB,GAAG,CAC/B;EACEJ,EAAE,EAAEF,YAAY,CAACO,OAAO;EACxBH,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACQ,OAAO;EACxBJ,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACS,OAAO;EACxBL,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACU,OAAO;EACxBN,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACW,OAAO;EACxBP,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACY,OAAO;EACxBR,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACa,OAAO;EACxBT,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACc,OAAO;EACxBV,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACe,OAAO;EACxBX,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACgB,OAAO;EACxBZ,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACiB,OAAO;EACxBb,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACkB,OAAO;EACxBd,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACmB,OAAO;EACxBf,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACoB,OAAO;EACxBhB,KAAK,EAAE;AACT,CAAC,CACF;AAED,MAAMiB,sBAAsB,GAAG,CAC7B,GAAGf,wBAAwB,EAC3B;EACEJ,EAAE,EAAEF,YAAY,CAACsB,OAAO;EACxBlB,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEF,YAAY,CAACuB,OAAO;EACxBnB,KAAK,EAAE;AACT,CAAC,CACF;AAED,MAAMoB,uBAAuB,GAAG,CAC9B;EACEtB,EAAE,EAAEH,WAAW,CAAC0B,EAAE;EAClBrB,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAEH,WAAW,CAAC2B,EAAE;EAClBtB,KAAK,EAAE;AACT,CAAC,CACF;AAED,SACEoB,uBAAuB,EACvBH,sBAAsB,EACtBf,wBAAwB,EACxBL,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"selectConfig.js","names":["BookType","Granularity","InstrumentId","navigationConfig","id","Order","label","Position","instrumentSelectConfigOC","EUR_USD","EUR_AUD","EUR_GBP","EUR_JPY","EUR_CHF","USD_CHF","USD_JPY","USD_CAD","GBP_USD","GBP_JPY","GBP_CHF","AUD_JPY","AUD_USD","NZD_USD","instrumentSelectConfig","XAU_USD","XAG_USD","instrumentSelectConfigJa","getGranularitySelectConfig","lang","isJapanese","H1","count","H4"],"sources":["../../../src/CrowdViewWidget/selectConfig.ts"],"sourcesContent":["import { BookType, Granularity } from '../gql/types/graphql';\nimport { InstrumentId } from './types';\n\nconst navigationConfig = [\n {\n id: BookType.Order,\n label: 'order_book',\n },\n {\n id: BookType.Position,\n label: 'position_book',\n },\n];\n\nconst instrumentSelectConfigOC = [\n {\n id: InstrumentId.EUR_USD,\n label: 'EUR/USD',\n },\n {\n id: InstrumentId.EUR_AUD,\n label: 'EUR/AUD',\n },\n {\n id: InstrumentId.EUR_GBP,\n label: 'EUR/GBP',\n },\n {\n id: InstrumentId.EUR_JPY,\n label: 'EUR/JPY',\n },\n {\n id: InstrumentId.EUR_CHF,\n label: 'EUR/CHF',\n },\n {\n id: InstrumentId.USD_CHF,\n label: 'USD/CHF',\n },\n {\n id: InstrumentId.USD_JPY,\n label: 'USD/JPY',\n },\n {\n id: InstrumentId.USD_CAD,\n label: 'USD/CAD',\n },\n {\n id: InstrumentId.GBP_USD,\n label: 'GBP/USD',\n },\n {\n id: InstrumentId.GBP_JPY,\n label: 'GBP/JPY',\n },\n {\n id: InstrumentId.GBP_CHF,\n label: 'GBP/CHF',\n },\n {\n id: InstrumentId.AUD_JPY,\n label: 'AUD/JPY',\n },\n {\n id: InstrumentId.AUD_USD,\n label: 'AUD/USD',\n },\n {\n id: InstrumentId.NZD_USD,\n label: 'NZD/USD',\n },\n];\n\nconst instrumentSelectConfig = [\n ...instrumentSelectConfigOC,\n {\n id: InstrumentId.XAU_USD,\n label: 'XAU/USD',\n },\n {\n id: InstrumentId.XAG_USD,\n label: 'XAG/USD',\n },\n];\n\nconst instrumentSelectConfigJa = [\n {\n id: InstrumentId.USD_JPY,\n label: 'USD/JPY',\n },\n {\n id: InstrumentId.EUR_JPY,\n label: 'EUR/JPY',\n },\n {\n id: InstrumentId.GBP_JPY,\n label: 'GBP/JPY',\n },\n {\n id: InstrumentId.AUD_JPY,\n label: 'AUD/JPY',\n },\n {\n id: InstrumentId.EUR_USD,\n label: 'EUR/USD',\n },\n {\n id: InstrumentId.EUR_AUD,\n label: 'EUR/AUD',\n },\n {\n id: InstrumentId.EUR_GBP,\n label: 'EUR/GBP',\n },\n {\n id: InstrumentId.EUR_CHF,\n label: 'EUR/CHF',\n },\n {\n id: InstrumentId.USD_CHF,\n label: 'USD/CHF',\n },\n {\n id: InstrumentId.USD_CAD,\n label: 'USD/CAD',\n },\n {\n id: InstrumentId.GBP_USD,\n label: 'GBP/USD',\n },\n {\n id: InstrumentId.GBP_CHF,\n label: 'GBP/CHF',\n },\n {\n id: InstrumentId.AUD_USD,\n label: 'AUD/USD',\n },\n {\n id: InstrumentId.NZD_USD,\n label: 'NZD/USD',\n },\n {\n id: InstrumentId.XAU_USD,\n label: 'XAU/USD',\n },\n {\n id: InstrumentId.XAG_USD,\n label: 'XAG/USD',\n },\n];\n\nconst getGranularitySelectConfig = (\n lang: (key: string, options?: { count?: number }) => string,\n isJapanese: boolean\n) => [\n {\n id: Granularity.H1,\n label: lang(isJapanese ? 'hour_plural' : 'hour', { count: 1 }),\n },\n {\n id: Granularity.H4,\n label: lang('hour_plural', { count: 4 }),\n },\n];\n\nexport {\n getGranularitySelectConfig,\n instrumentSelectConfig,\n instrumentSelectConfigJa,\n instrumentSelectConfigOC,\n navigationConfig,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,20 +1,12 @@
1
1
  import { Locale } from '@oanda/mono-i18n';
2
2
  import en from './sources/en.json';
3
- import es from './sources/es.json';
4
- import th from './sources/th.json';
5
- import zhTW from './sources/zh_TW.json';
3
+ import ja from './sources/ja.json';
6
4
  export const translations = {
7
5
  [Locale.en]: {
8
6
  translation: en
9
7
  },
10
- [Locale.zhTW]: {
11
- translation: zhTW
12
- },
13
- [Locale.es]: {
14
- translation: es
15
- },
16
- [Locale.th]: {
17
- translation: th
8
+ [Locale.ja]: {
9
+ translation: ja
18
10
  }
19
11
  };
20
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Locale","en","es","th","zhTW","translations","translation"],"sources":["../../../src/translations/index.ts"],"sourcesContent":["import type { Translations } from '@oanda/mono-i18n';\nimport { Locale } from '@oanda/mono-i18n';\n\nimport en from './sources/en.json';\nimport es from './sources/es.json';\nimport th from './sources/th.json';\nimport zhTW from './sources/zh_TW.json';\nimport type { defaultTranslations } from './translations';\n\nexport type TranslationKey = keyof typeof defaultTranslations;\n\nexport const translations: Translations = {\n [Locale.en]: { translation: en },\n [Locale.zhTW]: { translation: zhTW },\n [Locale.es]: { translation: es },\n [Locale.th]: { translation: th },\n};\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,kBAAkB;AAEzC,OAAOC,EAAE,MAAM,mBAAmB;AAClC,OAAOC,EAAE,MAAM,mBAAmB;AAClC,OAAOC,EAAE,MAAM,mBAAmB;AAClC,OAAOC,IAAI,MAAM,sBAAsB;AAKvC,OAAO,MAAMC,YAA0B,GAAG;EACxC,CAACL,MAAM,CAACC,EAAE,GAAG;IAAEK,WAAW,EAAEL;EAAG,CAAC;EAChC,CAACD,MAAM,CAACI,IAAI,GAAG;IAAEE,WAAW,EAAEF;EAAK,CAAC;EACpC,CAACJ,MAAM,CAACE,EAAE,GAAG;IAAEI,WAAW,EAAEJ;EAAG,CAAC;EAChC,CAACF,MAAM,CAACG,EAAE,GAAG;IAAEG,WAAW,EAAEH;EAAG;AACjC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Locale","en","ja","translations","translation"],"sources":["../../../src/translations/index.ts"],"sourcesContent":["import type { Translations } from '@oanda/mono-i18n';\nimport { Locale } from '@oanda/mono-i18n';\n\nimport en from './sources/en.json';\nimport ja from './sources/ja.json';\nimport type { defaultTranslations } from './translations';\n\nexport type TranslationKey = keyof typeof defaultTranslations;\n\nexport const translations: Translations = {\n [Locale.en]: { translation: en },\n [Locale.ja]: { translation: ja },\n};\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,kBAAkB;AAEzC,OAAOC,EAAE,MAAM,mBAAmB;AAClC,OAAOC,EAAE,MAAM,mBAAmB;AAKlC,OAAO,MAAMC,YAA0B,GAAG;EACxC,CAACH,MAAM,CAACC,EAAE,GAAG;IAAEG,WAAW,EAAEH;EAAG,CAAC;EAChC,CAACD,MAAM,CAACE,EAAE,GAAG;IAAEE,WAAW,EAAEF;EAAG;AACjC,CAAC","ignoreList":[]}
@@ -1,8 +1,4 @@
1
1
  {
2
- "1_hour": "1 hour",
3
- "15_minutes": "15 minutes",
4
- "4_hours": "4 hours",
5
- "5_minutes": "5 minutes",
6
2
  "buy": "Buy",
7
3
  "buy_overbalance": "Buy overbalance",
8
4
  "candle": "Candle",
@@ -11,16 +7,21 @@
11
7
  "even_market_demand": "Even market demand",
12
8
  "granularity": "Granularity",
13
9
  "high": "High",
10
+ "hour": "{{count}} Hour",
11
+ "hour_plural": "{{count}} Hours",
12
+ "hover_chart_to_see_more_details": "Hover over the chart to see more details",
14
13
  "instrument": "Instrument",
15
14
  "long": "Long",
16
15
  "long_overbalance": "Long overbalance",
17
16
  "low": "Low",
17
+ "minute": "{{count}} Minute",
18
+ "minute_plural": "{{count}} Minutes",
18
19
  "no_matching_results": "No matching results",
19
20
  "open": "Open",
20
- "order_book": "Order book",
21
+ "order_book": "Order Book",
21
22
  "orders": "Orders",
22
23
  "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
23
- "position_book": "Position book",
24
+ "position_book": "Position Book",
24
25
  "price": "Price",
25
26
  "price_range": "Price range",
26
27
  "search": "Search",
@@ -30,6 +31,5 @@
30
31
  "short": "Short",
31
32
  "short_overbalance": "Short overbalance",
32
33
  "tap_chart_to_see_more_details": "Tap the chart to see more details",
33
- "hover_chart_to_see_more_details": "Hover over the chart to see more details",
34
34
  "trades": "Trades"
35
35
  }
@@ -0,0 +1,30 @@
1
+ {
2
+ "buy": "購入",
3
+ "buy_overbalance": "買い超過",
4
+ "candle": "ローソク足",
5
+ "close": "閉じる",
6
+ "data_unavailable": "データが利用できません",
7
+ "even_market_demand": "均衡需要",
8
+ "granularity": "粒度",
9
+ "high": "高値",
10
+ "hour_plural": "{{count}} 時間",
11
+ "hover_chart_to_see_more_details": "チャートの上にカーソルを合わせると詳細を確認できます",
12
+ "instrument": "金融商品",
13
+ "long": "ロング",
14
+ "long_overbalance": "ロング超過",
15
+ "low": "安値",
16
+ "open": "オープン",
17
+ "order_book": "オーダーブック",
18
+ "orders": "注文",
19
+ "position_book": "ポジションブック",
20
+ "price": "価格",
21
+ "price_range": "価格範囲",
22
+ "search": "検索",
23
+ "sell": "売り",
24
+ "sell_overbalance": "売り超過",
25
+ "sentiment": "センチメント",
26
+ "short": "ショート",
27
+ "short_overbalance": "ショート超過",
28
+ "tap_chart_to_see_more_details": "チャートをタップすると詳細を確認できます",
29
+ "trades": "取引"
30
+ }
@@ -3,6 +3,7 @@ import type { ChartStyles } from '../chartUtils/getChartStyles';
3
3
  interface GetSeriesCandlestickConfigParams {
4
4
  styles: ChartStyles;
5
5
  isLoading: boolean;
6
+ locale: string;
6
7
  }
7
- export declare const getSeriesCandlestickConfig: ({ styles, isLoading, }: GetSeriesCandlestickConfigParams) => CandlestickSeriesOption;
8
+ export declare const getSeriesCandlestickConfig: ({ styles, isLoading, locale, }: GetSeriesCandlestickConfigParams) => CandlestickSeriesOption;
8
9
  export {};
@@ -1,5 +1,5 @@
1
1
  import { Division } from '../../../../gql/types/graphql';
2
- export declare const getInstrumentConfigForDivision: (division: Division) => {
2
+ export declare const getInstrumentConfig: (division: Division, isJapanese: boolean) => {
3
3
  id: import("../../..").InstrumentId;
4
4
  label: string;
5
5
  }[];
@@ -1,5 +1,5 @@
1
1
  export * from './getBucketWidthMultiplayer';
2
- export * from './getInstrumentConfigForDivision';
2
+ export * from './getInstrumentConfig';
3
3
  export * from './getTimeSpanForGranularity';
4
4
  export * from './processOrderPositionBooks';
5
5
  export * from './processPriceCandles';
@@ -12,8 +12,14 @@ declare const instrumentSelectConfig: {
12
12
  id: InstrumentId;
13
13
  label: string;
14
14
  }[];
15
- declare const granularitySelectConfig: {
15
+ declare const instrumentSelectConfigJa: {
16
+ id: InstrumentId;
17
+ label: string;
18
+ }[];
19
+ declare const getGranularitySelectConfig: (lang: (key: string, options?: {
20
+ count?: number;
21
+ }) => string, isJapanese: boolean) => {
16
22
  id: Granularity;
17
23
  label: string;
18
24
  }[];
19
- export { granularitySelectConfig, instrumentSelectConfig, instrumentSelectConfigOC, navigationConfig, };
25
+ export { getGranularitySelectConfig, instrumentSelectConfig, instrumentSelectConfigJa, instrumentSelectConfigOC, navigationConfig, };
@@ -12,7 +12,7 @@
12
12
  "indentation": "2sp",
13
13
  "plural_format": "i18next",
14
14
  "export_empty_as": "skip",
15
- "include_tags": ["common_widgets"],
16
- "filter_langs": ["en"]
15
+ "include_tags": ["common_widgets", "crowd_view_widget"],
16
+ "filter_langs": ["en", "ja"]
17
17
  }
18
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-crowd-view-widget",
3
- "version": "1.0.59",
3
+ "version": "1.0.61",
4
4
  "description": "Labs Crowd View Widget",
5
5
  "main": "dist/main/index.js",
6
6
  "module": "dist/module/index.js",
@@ -13,7 +13,7 @@
13
13
  "author": "OANDA",
14
14
  "license": "UNLICENSED",
15
15
  "dependencies": {
16
- "@oanda/labs-widget-common": "^1.0.241",
16
+ "@oanda/labs-widget-common": "^1.0.243",
17
17
  "@oanda/mono-i18n": "10.0.1",
18
18
  "chroma-js": "^3.1.2",
19
19
  "decimal.js": "^10.6.0",
@@ -24,5 +24,5 @@
24
24
  "@graphql-codegen/client-preset": "4.1.0",
25
25
  "@types/chroma-js": "^3.1.2"
26
26
  },
27
- "gitHead": "1a8471ad158713f1ee4e6fdde61ac31416d8f34d"
27
+ "gitHead": "f3d41f07e0f42d2885b8e6aac34c886d24f321c6"
28
28
  }
@@ -5,37 +5,31 @@ import {
5
5
  Tabs,
6
6
  useLayoutProvider,
7
7
  } from '@oanda/labs-widget-common';
8
- import { useLocale } from '@oanda/mono-i18n';
8
+ import { Locale, useLocale } from '@oanda/mono-i18n';
9
9
  import React, { useEffect, useMemo, useState } from 'react';
10
10
 
11
11
  import type { Granularity } from '../gql/types/graphql';
12
12
  import { BookType } from '../gql/types/graphql';
13
- import { ChartWithData, Legend } from './components';
14
- import { getInstrumentConfigForDivision } from './components/Chart/dataUtils/getInstrumentConfigForDivision';
15
- import { granularitySelectConfig, navigationConfig } from './selectConfig';
13
+ import { ChartWithData, getInstrumentConfig, Legend } from './components';
14
+ import { getGranularitySelectConfig, navigationConfig } from './selectConfig';
16
15
  import type { InstrumentId, MainProps } from './types';
17
16
 
18
17
  const Main = ({ division }: MainProps) => {
19
- const { lang } = useLocale();
18
+ const { lang, locale } = useLocale();
20
19
  const { size } = useLayoutProvider();
21
20
  const isDesktop = size === Size.DESKTOP;
21
+ const isJapanese = locale === Locale.ja;
22
22
 
23
23
  const [bookType, setBookType] = useState(BookType.Order);
24
24
 
25
25
  const granularitySelectConfigWithLang = useMemo(
26
- () =>
27
- granularitySelectConfig.map((opt) => ({
28
- ...opt,
29
- label: lang(opt.label),
30
- })),
31
- [lang]
26
+ () => getGranularitySelectConfig(lang, isJapanese),
27
+ [lang, isJapanese]
32
28
  );
33
29
 
34
- const instrumentSelectConfigWithDivision =
35
- getInstrumentConfigForDivision(division);
36
- const [instrument, setInstrument] = useState(
37
- instrumentSelectConfigWithDivision[0]
38
- );
30
+ const instrumentSelectConfig = getInstrumentConfig(division, isJapanese);
31
+
32
+ const [instrument, setInstrument] = useState(instrumentSelectConfig[0]);
39
33
 
40
34
  const [granularity, setGranularity] = useState(
41
35
  granularitySelectConfigWithLang[0]
@@ -74,7 +68,7 @@ const Main = ({ division }: MainProps) => {
74
68
  })}
75
69
  >
76
70
  <Select
77
- options={instrumentSelectConfigWithDivision}
71
+ options={instrumentSelectConfig}
78
72
  searchPlaceholder={lang('search')}
79
73
  selectLabel={lang('instrument')}
80
74
  selectedOption={instrument}
@@ -1,3 +1,4 @@
1
+ import { Locale } from '@oanda/mono-i18n';
1
2
  import chroma from 'chroma-js';
2
3
  import type { CandlestickSeriesOption } from 'echarts';
3
4
 
@@ -6,13 +7,30 @@ import type { ChartStyles } from '../chartUtils/getChartStyles';
6
7
  interface GetSeriesCandlestickConfigParams {
7
8
  styles: ChartStyles;
8
9
  isLoading: boolean;
10
+ locale: string;
9
11
  }
10
12
 
11
13
  export const getSeriesCandlestickConfig = ({
12
14
  styles,
13
15
  isLoading,
16
+ locale,
14
17
  }: GetSeriesCandlestickConfigParams): CandlestickSeriesOption => {
15
18
  const { candleLongColor, candleShortColor } = styles;
19
+ const isJapanese = locale === Locale.ja;
20
+
21
+ const itemStyle = isJapanese
22
+ ? {
23
+ color: chroma(candleShortColor).desaturate().css(),
24
+ color0: chroma(candleLongColor).desaturate().css(),
25
+ borderColor: candleShortColor,
26
+ borderColor0: candleLongColor,
27
+ }
28
+ : {
29
+ color: chroma(candleLongColor).desaturate().css(),
30
+ color0: chroma(candleShortColor).desaturate().css(),
31
+ borderColor: candleLongColor,
32
+ borderColor0: candleShortColor,
33
+ };
16
34
 
17
35
  return {
18
36
  animation: isLoading,
@@ -27,12 +45,7 @@ export const getSeriesCandlestickConfig = ({
27
45
  x: 'dates',
28
46
  y: ['open', 'close', 'low', 'high'],
29
47
  },
30
- itemStyle: {
31
- color: chroma(candleLongColor).desaturate().css(),
32
- color0: chroma(candleShortColor).desaturate().css(),
33
- borderColor: candleLongColor,
34
- borderColor0: candleShortColor,
35
- },
48
+ itemStyle,
36
49
  emphasis: {
37
50
  itemStyle: {
38
51
  color: candleLongColor,
@@ -10,6 +10,23 @@ interface GetBucketWidthMultiplayerParams {
10
10
  instrument: InstrumentId;
11
11
  }
12
12
 
13
+ const roundToClosest = (value: number, options: number[]): number => {
14
+ return options.reduce((closest, option) => {
15
+ const distanceToOption = Math.abs(value - option);
16
+ const distanceToClosest = Math.abs(value - closest);
17
+
18
+ if (distanceToOption === distanceToClosest) {
19
+ return option > closest ? option : closest;
20
+ }
21
+
22
+ return distanceToOption < distanceToClosest ? option : closest;
23
+ });
24
+ };
25
+
26
+ const getRoundingValues = (base: number): number[] => {
27
+ return [base, 2 * base, 4 * base, 5 * base, 10 * base];
28
+ };
29
+
13
30
  export const getBucketWidthMultiplayer = ({
14
31
  minPrice,
15
32
  maxPrice,
@@ -21,5 +38,13 @@ export const getBucketWidthMultiplayer = ({
21
38
  const calculatedMultiplier =
22
39
  priceRange / (defaultBucketWidth * DISPLAYED_BUCKETS_COUNT);
23
40
 
24
- return Math.max(1, Math.ceil(calculatedMultiplier));
41
+ if (calculatedMultiplier <= 1) {
42
+ return 1;
43
+ }
44
+
45
+ const powerOf10 = Math.floor(Math.log10(calculatedMultiplier));
46
+ const base = Math.pow(10, powerOf10);
47
+ const roundingValues = getRoundingValues(base);
48
+
49
+ return roundToClosest(calculatedMultiplier, roundingValues);
25
50
  };
@@ -0,0 +1,20 @@
1
+ import { Division } from '../../../../gql/types/graphql';
2
+ import {
3
+ instrumentSelectConfig,
4
+ instrumentSelectConfigJa,
5
+ instrumentSelectConfigOC,
6
+ } from '../../../selectConfig';
7
+
8
+ export const getInstrumentConfig = (
9
+ division: Division,
10
+ isJapanese: boolean
11
+ ) => {
12
+ if (isJapanese) {
13
+ return instrumentSelectConfigJa;
14
+ }
15
+
16
+ if (division === Division.Oc) {
17
+ return instrumentSelectConfigOC;
18
+ }
19
+ return instrumentSelectConfig;
20
+ };
@@ -1,5 +1,5 @@
1
1
  export * from './getBucketWidthMultiplayer';
2
- export * from './getInstrumentConfigForDivision';
2
+ export * from './getInstrumentConfig';
3
3
  export * from './getTimeSpanForGranularity';
4
4
  export * from './processOrderPositionBooks';
5
5
  export * from './processPriceCandles';
@@ -136,6 +136,7 @@ export const getOption: GetOptionType = ({
136
136
  getSeriesCandlestickConfig({
137
137
  styles,
138
138
  isLoading,
139
+ locale,
139
140
  }),
140
141
  ...heatmapChart,
141
142
  ...sentimentChart,
@@ -83,20 +83,91 @@ const instrumentSelectConfig = [
83
83
  },
84
84
  ];
85
85
 
86
- const granularitySelectConfig = [
86
+ const instrumentSelectConfigJa = [
87
+ {
88
+ id: InstrumentId.USD_JPY,
89
+ label: 'USD/JPY',
90
+ },
91
+ {
92
+ id: InstrumentId.EUR_JPY,
93
+ label: 'EUR/JPY',
94
+ },
95
+ {
96
+ id: InstrumentId.GBP_JPY,
97
+ label: 'GBP/JPY',
98
+ },
99
+ {
100
+ id: InstrumentId.AUD_JPY,
101
+ label: 'AUD/JPY',
102
+ },
103
+ {
104
+ id: InstrumentId.EUR_USD,
105
+ label: 'EUR/USD',
106
+ },
107
+ {
108
+ id: InstrumentId.EUR_AUD,
109
+ label: 'EUR/AUD',
110
+ },
111
+ {
112
+ id: InstrumentId.EUR_GBP,
113
+ label: 'EUR/GBP',
114
+ },
115
+ {
116
+ id: InstrumentId.EUR_CHF,
117
+ label: 'EUR/CHF',
118
+ },
119
+ {
120
+ id: InstrumentId.USD_CHF,
121
+ label: 'USD/CHF',
122
+ },
123
+ {
124
+ id: InstrumentId.USD_CAD,
125
+ label: 'USD/CAD',
126
+ },
127
+ {
128
+ id: InstrumentId.GBP_USD,
129
+ label: 'GBP/USD',
130
+ },
131
+ {
132
+ id: InstrumentId.GBP_CHF,
133
+ label: 'GBP/CHF',
134
+ },
135
+ {
136
+ id: InstrumentId.AUD_USD,
137
+ label: 'AUD/USD',
138
+ },
139
+ {
140
+ id: InstrumentId.NZD_USD,
141
+ label: 'NZD/USD',
142
+ },
143
+ {
144
+ id: InstrumentId.XAU_USD,
145
+ label: 'XAU/USD',
146
+ },
147
+ {
148
+ id: InstrumentId.XAG_USD,
149
+ label: 'XAG/USD',
150
+ },
151
+ ];
152
+
153
+ const getGranularitySelectConfig = (
154
+ lang: (key: string, options?: { count?: number }) => string,
155
+ isJapanese: boolean
156
+ ) => [
87
157
  {
88
158
  id: Granularity.H1,
89
- label: '1_hour',
159
+ label: lang(isJapanese ? 'hour_plural' : 'hour', { count: 1 }),
90
160
  },
91
161
  {
92
162
  id: Granularity.H4,
93
- label: '4_hours',
163
+ label: lang('hour_plural', { count: 4 }),
94
164
  },
95
165
  ];
96
166
 
97
167
  export {
98
- granularitySelectConfig,
168
+ getGranularitySelectConfig,
99
169
  instrumentSelectConfig,
170
+ instrumentSelectConfigJa,
100
171
  instrumentSelectConfigOC,
101
172
  navigationConfig,
102
173
  };
@@ -2,16 +2,12 @@ import type { Translations } from '@oanda/mono-i18n';
2
2
  import { Locale } from '@oanda/mono-i18n';
3
3
 
4
4
  import en from './sources/en.json';
5
- import es from './sources/es.json';
6
- import th from './sources/th.json';
7
- import zhTW from './sources/zh_TW.json';
5
+ import ja from './sources/ja.json';
8
6
  import type { defaultTranslations } from './translations';
9
7
 
10
8
  export type TranslationKey = keyof typeof defaultTranslations;
11
9
 
12
10
  export const translations: Translations = {
13
11
  [Locale.en]: { translation: en },
14
- [Locale.zhTW]: { translation: zhTW },
15
- [Locale.es]: { translation: es },
16
- [Locale.th]: { translation: th },
12
+ [Locale.ja]: { translation: ja },
17
13
  };