@oanda/labs-crowd-view-widget 1.0.55 → 1.0.57

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 (129) hide show
  1. package/CHANGELOG.md +460 -0
  2. package/dist/main/CrowdViewWidget/components/Chart/Chart.js +8 -10
  3. package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js +15 -3
  5. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js +29 -14
  7. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js +28 -9
  9. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js.map +1 -1
  10. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js +20 -8
  11. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js.map +1 -1
  12. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js +21 -16
  13. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js.map +1 -1
  14. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js +29 -6
  15. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js.map +1 -1
  16. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js +24 -4
  17. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js.map +1 -1
  18. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js +27 -0
  19. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js.map +1 -0
  20. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js +2 -2
  21. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js.map +1 -1
  22. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js +6 -5
  23. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js.map +1 -1
  24. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js +71 -22
  25. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js.map +1 -1
  26. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js +3 -3
  27. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js.map +1 -1
  28. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/index.js +22 -0
  29. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/index.js.map +1 -1
  30. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/normalizeLocale.js +11 -0
  31. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/normalizeLocale.js.map +1 -0
  32. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js +1 -1
  33. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js.map +1 -1
  34. package/dist/main/CrowdViewWidget/components/Chart/getOption.js +11 -5
  35. package/dist/main/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
  36. package/dist/main/CrowdViewWidget/components/Chart/types.js.map +1 -1
  37. package/dist/main/CrowdViewWidget/components/Chart/useResizeObserver.js +47 -0
  38. package/dist/main/CrowdViewWidget/components/Chart/useResizeObserver.js.map +1 -0
  39. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js +1 -1
  40. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  41. package/dist/main/CrowdViewWidget/constants.js +22 -8
  42. package/dist/main/CrowdViewWidget/constants.js.map +1 -1
  43. package/dist/main/CrowdViewWidget/selectConfig.js +3 -3
  44. package/dist/main/CrowdViewWidget/selectConfig.js.map +1 -1
  45. package/dist/main/translations/sources/en.json +11 -9
  46. package/dist/module/CrowdViewWidget/components/Chart/Chart.js +9 -11
  47. package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  48. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js +15 -3
  49. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  50. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js +29 -14
  51. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js.map +1 -1
  52. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js +28 -9
  53. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js.map +1 -1
  54. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js +20 -8
  55. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js.map +1 -1
  56. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js +21 -16
  57. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js.map +1 -1
  58. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js +30 -7
  59. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js.map +1 -1
  60. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js +25 -5
  61. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js.map +1 -1
  62. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js +20 -0
  63. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js.map +1 -0
  64. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js +2 -2
  65. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js.map +1 -1
  66. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js +6 -5
  67. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js.map +1 -1
  68. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js +71 -22
  69. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js.map +1 -1
  70. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js +3 -3
  71. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js.map +1 -1
  72. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/index.js +2 -0
  73. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/index.js.map +1 -1
  74. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/normalizeLocale.js +4 -0
  75. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/normalizeLocale.js.map +1 -0
  76. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js +1 -1
  77. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js.map +1 -1
  78. package/dist/module/CrowdViewWidget/components/Chart/getOption.js +11 -5
  79. package/dist/module/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
  80. package/dist/module/CrowdViewWidget/components/Chart/types.js.map +1 -1
  81. package/dist/module/CrowdViewWidget/components/Chart/useResizeObserver.js +40 -0
  82. package/dist/module/CrowdViewWidget/components/Chart/useResizeObserver.js.map +1 -0
  83. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js +1 -1
  84. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  85. package/dist/module/CrowdViewWidget/constants.js +22 -8
  86. package/dist/module/CrowdViewWidget/constants.js.map +1 -1
  87. package/dist/module/CrowdViewWidget/selectConfig.js +3 -3
  88. package/dist/module/CrowdViewWidget/selectConfig.js.map +1 -1
  89. package/dist/module/translations/sources/en.json +11 -9
  90. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.d.ts +4 -2
  91. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.d.ts +3 -1
  92. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.d.ts +4 -1
  93. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.d.ts +1 -0
  94. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.d.ts +1 -1
  95. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.d.ts +1 -1
  96. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.d.ts +4 -1
  97. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.d.ts +1 -1
  98. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/index.d.ts +2 -0
  99. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/normalizeLocale.d.ts +1 -0
  100. package/dist/types/CrowdViewWidget/components/Chart/types.d.ts +1 -0
  101. package/dist/types/CrowdViewWidget/components/Chart/useResizeObserver.d.ts +5 -0
  102. package/dist/types/CrowdViewWidget/constants.d.ts +25 -19
  103. package/package.json +3 -3
  104. package/src/CrowdViewWidget/components/Chart/Chart.tsx +12 -11
  105. package/src/CrowdViewWidget/components/Chart/ChartWithData.tsx +22 -3
  106. package/src/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.ts +35 -19
  107. package/src/CrowdViewWidget/components/Chart/chartOptions/getGridLines.ts +41 -11
  108. package/src/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.ts +31 -11
  109. package/src/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.ts +24 -22
  110. package/src/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.ts +36 -5
  111. package/src/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.ts +29 -6
  112. package/src/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.ts +26 -0
  113. package/src/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.ts +3 -2
  114. package/src/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.ts +6 -4
  115. package/src/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.ts +143 -32
  116. package/src/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.ts +8 -3
  117. package/src/CrowdViewWidget/components/Chart/chartUtils/index.ts +2 -0
  118. package/src/CrowdViewWidget/components/Chart/chartUtils/normalizeLocale.ts +3 -0
  119. package/src/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.ts +1 -1
  120. package/src/CrowdViewWidget/components/Chart/getOption.ts +7 -1
  121. package/src/CrowdViewWidget/components/Chart/types.ts +1 -0
  122. package/src/CrowdViewWidget/components/Chart/useResizeObserver.ts +51 -0
  123. package/src/CrowdViewWidget/components/Legend/LegendBar.tsx +3 -2
  124. package/src/CrowdViewWidget/constants.ts +27 -6
  125. package/src/CrowdViewWidget/selectConfig.ts +4 -4
  126. package/src/translations/sources/en.json +11 -9
  127. package/test/components/Chart/utils/chartUtils.test.ts +16 -4
  128. package/test/components/Chart/utils/handleLabelUpdate.test.ts +32 -16
  129. package/test/utils/processPriceCandles.test.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["colorPalette","chroma","InstrumentId","BUCKET_CONFIG","MULTIPLIER_5M","MULTIPLIER_15M","MULTIPLIER_1H","MULTIPLIER_4H","PRICE_MARGIN_MULTIPLIER","TIME_THRESHOLDS","TWO_WEEKS_MS","CHART_CONFIG","HEIGHT","MAIN_HEIGHT","MARGIN_BETWEEN","SENTIMENT_HEIGHT","WIDTH","X_LABEL_SIZE","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","Y_SENTIMENT_LABEL_DESKTOP_SIZE","Y_SENTIMENT_LABEL_MOBILE_SIZE","INITIAL_START_ZOOM_DESKTOP","INITIAL_START_ZOOM_MOBILE","INITIAL_END_ZOOM","X_AXIS_DATE_PADDING","SENTIMENT_MIN","SENTIMENT_MAX","TOP_MARGIN_DESKTOP","TOP_MARGIN_MOBILE","TOOLTIP_OFFSET","COLOR_MAP","dark","long","darkBlue10","shade","hex","darkBlue90","short","darkYellow10","darkYellow90","light","lightBlue10","tint","lightBlue90","lightYellow10","lightYellow90","INSTRUMENTS_CONFIG","EUR_AUD","mt5name","v20name","precision","defaultBucketWidth","EUR_GBP","EUR_JPY","EUR_USD","EUR_CHF","USD_CHF","USD_JPY","USD_CAD","GBP_USD","GBP_JPY","GBP_CHF","AUD_JPY","AUD_USD","NZD_USD","XAU_USD","XAG_USD"],"sources":["../../../src/CrowdViewWidget/constants.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\nimport chroma from 'chroma-js';\n\nimport { InstrumentId } from './types';\n\nexport const BUCKET_CONFIG = {\n MULTIPLIER_5M: 1,\n MULTIPLIER_15M: 1,\n MULTIPLIER_1H: 2,\n MULTIPLIER_4H: 4,\n PRICE_MARGIN_MULTIPLIER: 2,\n} as const;\n\nexport const TIME_THRESHOLDS = {\n TWO_WEEKS_MS: 14 * 24 * 60 * 60 * 1000,\n} as const;\n\nexport const CHART_CONFIG = {\n HEIGHT: 440,\n MAIN_HEIGHT: 400,\n MARGIN_BETWEEN: 50,\n SENTIMENT_HEIGHT: 120,\n WIDTH: 9999,\n X_LABEL_SIZE: 40,\n Y_LABEL_SIZE_DESKTOP: 50,\n Y_LABEL_SIZE_MOBILE: 40,\n Y_SENTIMENT_LABEL_DESKTOP_SIZE: 40,\n Y_SENTIMENT_LABEL_MOBILE_SIZE: 30,\n INITIAL_START_ZOOM_DESKTOP: 70,\n INITIAL_START_ZOOM_MOBILE: 85,\n INITIAL_END_ZOOM: 100,\n X_AXIS_DATE_PADDING: ' ',\n SENTIMENT_MIN: 0,\n SENTIMENT_MAX: 100,\n TOP_MARGIN_DESKTOP: 0,\n TOP_MARGIN_MOBILE: 30,\n TOOLTIP_OFFSET: 5,\n} as const;\n\nexport const COLOR_MAP = {\n dark: {\n long: [\n chroma(colorPalette.darkBlue10).shade(0.5).hex(),\n chroma(colorPalette.darkBlue90).shade(0.5).hex(),\n ],\n short: [\n chroma(colorPalette.darkYellow10).shade(0.5).hex(),\n chroma(colorPalette.darkYellow90).shade(0.5).hex(),\n ],\n },\n light: {\n long: [\n chroma(colorPalette.lightBlue10).tint(0.5).hex(),\n chroma(colorPalette.lightBlue90).tint(0.5).hex(),\n ],\n short: [\n chroma(colorPalette.lightYellow10).tint(0.5).hex(),\n chroma(colorPalette.lightYellow90).tint(0.5).hex(),\n ],\n },\n} as const;\n\nexport const INSTRUMENTS_CONFIG: Record<\n InstrumentId,\n {\n precision: number;\n defaultBucketWidth: number;\n v20name: string;\n mt5name: string;\n }\n> = {\n [InstrumentId.EUR_AUD]: {\n mt5name: 'EURAUD',\n v20name: 'EUR_AUD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_GBP]: {\n mt5name: 'EURGBP',\n v20name: 'EUR_GBP',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_JPY]: {\n mt5name: 'EURJPY',\n v20name: 'EUR_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.EUR_USD]: {\n mt5name: 'EURUSD',\n v20name: 'EUR_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_CHF]: {\n mt5name: 'EURCHF',\n v20name: 'EUR_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_CHF]: {\n mt5name: 'USDCHF',\n v20name: 'USD_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_JPY]: {\n mt5name: 'USDJPY',\n v20name: 'USD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.USD_CAD]: {\n mt5name: 'USDCAD',\n v20name: 'USD_CAD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_USD]: {\n mt5name: 'GBPUSD',\n v20name: 'GBP_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_JPY]: {\n mt5name: 'GBPJPY',\n v20name: 'GBP_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.GBP_CHF]: {\n mt5name: 'GBPCHF',\n v20name: 'GBP_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.AUD_JPY]: {\n mt5name: 'AUDJPY',\n v20name: 'AUD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.AUD_USD]: {\n mt5name: 'AUDUSD',\n v20name: 'AUD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.NZD_USD]: {\n mt5name: 'NZDUSD',\n v20name: 'NZD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.XAU_USD]: {\n mt5name: 'XAUUSD',\n v20name: 'XAU_USD',\n precision: 3,\n defaultBucketWidth: 0.5,\n },\n [InstrumentId.XAG_USD]: {\n mt5name: 'XAGUSD',\n v20name: 'XAG_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":["colorPalette","chroma","InstrumentId","BUCKET_CONFIG","MULTIPLIER_5M","MULTIPLIER_15M","MULTIPLIER_1H","MULTIPLIER_4H","PRICE_MARGIN_MULTIPLIER","TIME_THRESHOLDS","TWO_WEEKS_MS","CHART_CONFIG_STATIC","MAIN_HEIGHT_DESKTOP","MAIN_HEIGHT_MOBILE","MARGIN_BETWEEN","SENTIMENT_HEIGHT","WIDTH","X_LABEL_SIZE","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","Y_SENTIMENT_LABEL_DESKTOP_SIZE","Y_SENTIMENT_LABEL_MOBILE_SIZE","INITIAL_START_ZOOM_DESKTOP","INITIAL_START_ZOOM_MOBILE","INITIAL_END_ZOOM","X_AXIS_DATE_PADDING","SENTIMENT_MIN","SENTIMENT_MAX","TOP_LABEL_SPACE_DESKTOP","TOP_LABEL_SPACE_MOBILE","TOOLTIP_HEIGHT_MOBILE","TOOLTIP_HEIGHT_DESKTOP","TOOLTIP_OFFSET","CHART_CONFIG_CALCULATED","HEIGHT_DESKTOP","HEIGHT_MOBILE","CHART_CONFIG","_objectSpread","COLOR_MAP","dark","long","darkBlue10","shade","hex","darkBlue90","short","darkYellow10","darkYellow90","backgroundColor","black","light","lightBlue10","tint","lightBlue90","lightYellow10","lightYellow90","white","INSTRUMENTS_CONFIG","EUR_AUD","mt5name","v20name","precision","defaultBucketWidth","EUR_GBP","EUR_JPY","EUR_USD","EUR_CHF","USD_CHF","USD_JPY","USD_CAD","GBP_USD","GBP_JPY","GBP_CHF","AUD_JPY","AUD_USD","NZD_USD","XAU_USD","XAG_USD"],"sources":["../../../src/CrowdViewWidget/constants.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\nimport chroma from 'chroma-js';\n\nimport { InstrumentId } from './types';\n\nexport const BUCKET_CONFIG = {\n MULTIPLIER_5M: 1,\n MULTIPLIER_15M: 1,\n MULTIPLIER_1H: 2,\n MULTIPLIER_4H: 4,\n PRICE_MARGIN_MULTIPLIER: 2,\n} as const;\n\nexport const TIME_THRESHOLDS = {\n TWO_WEEKS_MS: 14 * 24 * 60 * 60 * 1000,\n} as const;\n\nconst CHART_CONFIG_STATIC = {\n MAIN_HEIGHT_DESKTOP: 410,\n MAIN_HEIGHT_MOBILE: 330,\n MARGIN_BETWEEN: 50,\n SENTIMENT_HEIGHT: 120,\n WIDTH: 9999,\n X_LABEL_SIZE: 40,\n Y_LABEL_SIZE_DESKTOP: 50,\n Y_LABEL_SIZE_MOBILE: 40,\n Y_SENTIMENT_LABEL_DESKTOP_SIZE: 40,\n Y_SENTIMENT_LABEL_MOBILE_SIZE: 30,\n INITIAL_START_ZOOM_DESKTOP: 70,\n INITIAL_START_ZOOM_MOBILE: 85,\n INITIAL_END_ZOOM: 100,\n X_AXIS_DATE_PADDING: ' ',\n SENTIMENT_MIN: 0,\n SENTIMENT_MAX: 100,\n TOP_LABEL_SPACE_DESKTOP: 0,\n TOP_LABEL_SPACE_MOBILE: 24,\n TOOLTIP_HEIGHT_MOBILE: 85,\n TOOLTIP_HEIGHT_DESKTOP: 46,\n TOOLTIP_OFFSET: 8,\n};\n\nconst CHART_CONFIG_CALCULATED = {\n HEIGHT_DESKTOP:\n CHART_CONFIG_STATIC.MAIN_HEIGHT_DESKTOP +\n CHART_CONFIG_STATIC.TOP_LABEL_SPACE_DESKTOP +\n CHART_CONFIG_STATIC.X_LABEL_SIZE +\n CHART_CONFIG_STATIC.TOOLTIP_HEIGHT_DESKTOP,\n HEIGHT_MOBILE:\n CHART_CONFIG_STATIC.MAIN_HEIGHT_MOBILE +\n CHART_CONFIG_STATIC.X_LABEL_SIZE +\n CHART_CONFIG_STATIC.TOP_LABEL_SPACE_MOBILE +\n CHART_CONFIG_STATIC.TOOLTIP_HEIGHT_MOBILE,\n};\nexport const CHART_CONFIG = {\n ...CHART_CONFIG_STATIC,\n ...CHART_CONFIG_CALCULATED,\n} as const;\n\nexport const COLOR_MAP = {\n dark: {\n long: [\n chroma(colorPalette.darkBlue10).shade(0.5).hex(),\n chroma(colorPalette.darkBlue90).shade(0.5).hex(),\n ],\n short: [\n chroma(colorPalette.darkYellow10).shade(0.5).hex(),\n chroma(colorPalette.darkYellow90).shade(0.5).hex(),\n ],\n backgroundColor: colorPalette.black,\n },\n light: {\n long: [\n chroma(colorPalette.lightBlue10).tint(0.5).hex(),\n chroma(colorPalette.lightBlue90).tint(0.5).hex(),\n ],\n short: [\n chroma(colorPalette.lightYellow10).tint(0.5).hex(),\n chroma(colorPalette.lightYellow90).tint(0.5).hex(),\n ],\n backgroundColor: colorPalette.white,\n },\n} as const;\n\nexport const INSTRUMENTS_CONFIG: Record<\n InstrumentId,\n {\n precision: number;\n defaultBucketWidth: number;\n v20name: string;\n mt5name: string;\n }\n> = {\n [InstrumentId.EUR_AUD]: {\n mt5name: 'EURAUD',\n v20name: 'EUR_AUD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_GBP]: {\n mt5name: 'EURGBP',\n v20name: 'EUR_GBP',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_JPY]: {\n mt5name: 'EURJPY',\n v20name: 'EUR_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.EUR_USD]: {\n mt5name: 'EURUSD',\n v20name: 'EUR_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_CHF]: {\n mt5name: 'EURCHF',\n v20name: 'EUR_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_CHF]: {\n mt5name: 'USDCHF',\n v20name: 'USD_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_JPY]: {\n mt5name: 'USDJPY',\n v20name: 'USD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.USD_CAD]: {\n mt5name: 'USDCAD',\n v20name: 'USD_CAD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_USD]: {\n mt5name: 'GBPUSD',\n v20name: 'GBP_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_JPY]: {\n mt5name: 'GBPJPY',\n v20name: 'GBP_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.GBP_CHF]: {\n mt5name: 'GBPCHF',\n v20name: 'GBP_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.AUD_JPY]: {\n mt5name: 'AUDJPY',\n v20name: 'AUD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.AUD_USD]: {\n mt5name: 'AUDUSD',\n v20name: 'AUD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.NZD_USD]: {\n mt5name: 'NZDUSD',\n v20name: 'NZD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.XAU_USD]: {\n mt5name: 'XAUUSD',\n v20name: 'XAU_USD',\n precision: 3,\n defaultBucketWidth: 0.5,\n },\n [InstrumentId.XAG_USD]: {\n mt5name: 'XAGUSD',\n v20name: 'XAG_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n};\n"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,9 @@ const navigationConfig = [{
8
8
  label: 'position_book'
9
9
  }];
10
10
  const instrumentSelectConfigOC = [{
11
+ id: InstrumentId.EUR_USD,
12
+ label: 'EUR/USD'
13
+ }, {
11
14
  id: InstrumentId.EUR_AUD,
12
15
  label: 'EUR/AUD'
13
16
  }, {
@@ -16,9 +19,6 @@ const instrumentSelectConfigOC = [{
16
19
  }, {
17
20
  id: InstrumentId.EUR_JPY,
18
21
  label: 'EUR/JPY'
19
- }, {
20
- id: InstrumentId.EUR_USD,
21
- label: 'EUR/USD'
22
22
  }, {
23
23
  id: InstrumentId.EUR_CHF,
24
24
  label: 'EUR/CHF'
@@ -1 +1 @@
1
- {"version":3,"file":"selectConfig.js","names":["BookType","Granularity","InstrumentId","navigationConfig","id","Order","label","Position","instrumentSelectConfigOC","EUR_AUD","EUR_GBP","EUR_JPY","EUR_USD","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_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_USD,\n label: 'EUR/USD',\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","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":[]}
@@ -3,31 +3,33 @@
3
3
  "15_minutes": "15 minutes",
4
4
  "4_hours": "4 hours",
5
5
  "5_minutes": "5 minutes",
6
- "buy_overbalance": "Buy overbalance",
7
6
  "buy": "Buy",
7
+ "buy_overbalance": "Buy overbalance",
8
8
  "candle": "Candle",
9
- "close_price": "Close price",
9
+ "close": "Close",
10
10
  "data_unavailable": "Data unavailable",
11
+ "even_market_demand": "Even market demand",
11
12
  "granularity": "Granularity",
12
13
  "high": "High",
13
14
  "instrument": "Instrument",
14
- "long_overbalance": "Long overbalance",
15
15
  "long": "Long",
16
+ "long_overbalance": "Long overbalance",
16
17
  "low": "Low",
17
18
  "no_matching_results": "No matching results",
18
- "open_price": "Open price",
19
+ "open": "Open",
19
20
  "order_book": "Order book",
20
21
  "orders": "Orders",
21
22
  "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
22
23
  "position_book": "Position book",
23
- "positions": "Positions",
24
+ "price": "Price",
24
25
  "price_range": "Price range",
25
26
  "search": "Search",
26
- "sell_overbalance": "Sell overbalance",
27
27
  "sell": "Sell",
28
+ "sell_overbalance": "Sell overbalance",
28
29
  "sentiment": "Sentiment",
29
- "short_overbalance": "Short overbalance",
30
30
  "short": "Short",
31
- "even_market_demand": "Even market demand",
32
- "price": "Price"
31
+ "short_overbalance": "Short overbalance",
32
+ "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
+ "trades": "Trades"
33
35
  }
@@ -5,7 +5,6 @@ interface GetTooltipConfigParams {
5
5
  bookType: BookType;
6
6
  bucketWidth: number;
7
7
  buckets: Bucket[][];
8
- displayPrecision: number;
9
8
  labelCallback: (key: string, params?: Record<string, unknown>) => string;
10
9
  selectedPriceRef: {
11
10
  current: number;
@@ -13,6 +12,9 @@ interface GetTooltipConfigParams {
13
12
  tooltipLinesColor: string;
14
13
  sentimentLongs: (number | null)[];
15
14
  sentimentShorts: (number | null)[];
15
+ isDesktop: boolean;
16
+ isDark: boolean;
17
+ locale: string;
16
18
  }
17
- export declare const getTooltipConfig: ({ bookType, bucketWidth, buckets, displayPrecision, labelCallback, selectedPriceRef, tooltipLinesColor, sentimentLongs, sentimentShorts, }: GetTooltipConfigParams) => TooltipComponentOption;
19
+ export declare const getTooltipConfig: ({ bookType, bucketWidth, buckets, labelCallback, selectedPriceRef, tooltipLinesColor, sentimentLongs, sentimentShorts, isDesktop, isDark, locale, }: GetTooltipConfigParams) => TooltipComponentOption;
18
20
  export {};
@@ -2,6 +2,8 @@ import type { XAXisComponentOption } from 'echarts';
2
2
  interface GetXAxisConfigParams {
3
3
  dates: string[];
4
4
  isGreaterThanTwoWeeks: boolean;
5
+ locale: string;
6
+ isDesktop: boolean;
5
7
  }
6
- export declare const getXAxisConfig: ({ dates, isGreaterThanTwoWeeks, }: GetXAxisConfigParams) => XAXisComponentOption[];
8
+ export declare const getXAxisConfig: ({ dates, isGreaterThanTwoWeeks, locale, isDesktop, }: GetXAxisConfigParams) => XAXisComponentOption[];
7
9
  export {};
@@ -2,6 +2,9 @@ import type { YAXisComponentOption } from 'echarts';
2
2
  interface GetYAxisConfigParams {
3
3
  bucketWidth: number;
4
4
  displayPrecision: number;
5
+ selectedPriceRef: {
6
+ current: number;
7
+ };
5
8
  }
6
- export declare const getYAxisConfig: ({ bucketWidth, displayPrecision, }: GetYAxisConfigParams) => YAXisComponentOption[];
9
+ export declare const getYAxisConfig: ({ bucketWidth, displayPrecision, selectedPriceRef, }: GetYAxisConfigParams) => YAXisComponentOption[];
7
10
  export {};
@@ -0,0 +1 @@
1
+ export declare const formatFullDate: (date: Date, locale: string) => string;
@@ -1 +1 @@
1
- export declare const formatXAxisAdditionalLabel: (value: unknown, isGreaterThanTwoWeeks: boolean) => string;
1
+ export declare const formatXAxisAdditionalLabel: (value: unknown, isGreaterThanTwoWeeks: boolean, locale: string) => string;
@@ -1 +1 @@
1
- export declare const formatXAxisLabel: (value: unknown, isGreaterThanTwoWeeks: boolean) => string;
1
+ export declare const formatXAxisLabel: (value: unknown, isGreaterThanTwoWeeks: boolean, locale: string) => string;
@@ -1,6 +1,6 @@
1
1
  import { BookType } from '../../../../gql/types/graphql';
2
2
  import type { Bucket, TooltipParam } from '../types';
3
- export declare const getTooltipFormatter: ({ params, buckets, bucketWidth, selectedPrice, bookType, labelCallback, sentimentLongs, sentimentShorts, }: {
3
+ export declare const getTooltipFormatter: ({ params, buckets, bucketWidth, selectedPrice, bookType, labelCallback, sentimentLongs, sentimentShorts, isDesktop, locale, isDark, }: {
4
4
  params: TooltipParam[];
5
5
  buckets: Bucket[][];
6
6
  bucketWidth: number;
@@ -9,4 +9,7 @@ export declare const getTooltipFormatter: ({ params, buckets, bucketWidth, selec
9
9
  labelCallback: (key: string) => string;
10
10
  sentimentLongs: (number | null)[];
11
11
  sentimentShorts: (number | null)[];
12
+ isDesktop: boolean;
13
+ locale: string;
14
+ isDark: boolean;
12
15
  }) => string;
@@ -1,4 +1,4 @@
1
1
  import type { EChartsType } from 'echarts';
2
2
  import type { MutableRefObject } from 'react';
3
3
  import type { ChartProps } from '../types';
4
- export declare const handleLabelUpdate: (instance: EChartsType, mainData: ChartProps["mainData"], labelTimerRef: MutableRefObject<NodeJS.Timeout | null>, isGreaterThanTwoWeeksRef: MutableRefObject<boolean | null>) => void;
4
+ export declare const handleLabelUpdate: (instance: EChartsType, mainData: ChartProps["mainData"], labelTimerRef: MutableRefObject<NodeJS.Timeout | null>, isGreaterThanTwoWeeksRef: MutableRefObject<boolean | null>, locale: string) => void;
@@ -1,3 +1,4 @@
1
+ export * from './formatFullDate';
1
2
  export * from './formatXAxisAdditionalLabel';
2
3
  export * from './formatXAxisLabel';
3
4
  export * from './getChartStyles';
@@ -8,3 +9,4 @@ export * from './getTooltipFormatter';
8
9
  export * from './handleLabelUpdate';
9
10
  export * from './handleTooltipUpdate';
10
11
  export * from './isDifferenceGreaterThanTwoWeeks';
12
+ export * from './normalizeLocale';
@@ -0,0 +1 @@
1
+ export declare const normalizeLocale: (locale: string) => string;
@@ -46,6 +46,7 @@ interface GetOptionProps {
46
46
  isDesktop: boolean;
47
47
  isLoading: boolean;
48
48
  labelCallback: (key: string, params?: Record<string, unknown>) => string;
49
+ locale: string;
49
50
  }
50
51
  export type GetOptionType = (props: GetOptionProps) => EChartsOption;
51
52
  export interface ChartProps {
@@ -0,0 +1,5 @@
1
+ interface UseResizeObserverOptions {
2
+ debounceDelay?: number;
3
+ }
4
+ export declare const useResizeObserver: (options?: UseResizeObserverOptions) => [React.RefObject<HTMLDivElement>, boolean];
5
+ export {};
@@ -10,34 +10,40 @@ export declare const TIME_THRESHOLDS: {
10
10
  readonly TWO_WEEKS_MS: number;
11
11
  };
12
12
  export declare const CHART_CONFIG: {
13
- readonly HEIGHT: 440;
14
- readonly MAIN_HEIGHT: 400;
15
- readonly MARGIN_BETWEEN: 50;
16
- readonly SENTIMENT_HEIGHT: 120;
17
- readonly WIDTH: 9999;
18
- readonly X_LABEL_SIZE: 40;
19
- readonly Y_LABEL_SIZE_DESKTOP: 50;
20
- readonly Y_LABEL_SIZE_MOBILE: 40;
21
- readonly Y_SENTIMENT_LABEL_DESKTOP_SIZE: 40;
22
- readonly Y_SENTIMENT_LABEL_MOBILE_SIZE: 30;
23
- readonly INITIAL_START_ZOOM_DESKTOP: 70;
24
- readonly INITIAL_START_ZOOM_MOBILE: 85;
25
- readonly INITIAL_END_ZOOM: 100;
26
- readonly X_AXIS_DATE_PADDING: " ";
27
- readonly SENTIMENT_MIN: 0;
28
- readonly SENTIMENT_MAX: 100;
29
- readonly TOP_MARGIN_DESKTOP: 0;
30
- readonly TOP_MARGIN_MOBILE: 30;
31
- readonly TOOLTIP_OFFSET: 5;
13
+ readonly HEIGHT_DESKTOP: number;
14
+ readonly HEIGHT_MOBILE: number;
15
+ readonly MAIN_HEIGHT_DESKTOP: number;
16
+ readonly MAIN_HEIGHT_MOBILE: number;
17
+ readonly MARGIN_BETWEEN: number;
18
+ readonly SENTIMENT_HEIGHT: number;
19
+ readonly WIDTH: number;
20
+ readonly X_LABEL_SIZE: number;
21
+ readonly Y_LABEL_SIZE_DESKTOP: number;
22
+ readonly Y_LABEL_SIZE_MOBILE: number;
23
+ readonly Y_SENTIMENT_LABEL_DESKTOP_SIZE: number;
24
+ readonly Y_SENTIMENT_LABEL_MOBILE_SIZE: number;
25
+ readonly INITIAL_START_ZOOM_DESKTOP: number;
26
+ readonly INITIAL_START_ZOOM_MOBILE: number;
27
+ readonly INITIAL_END_ZOOM: number;
28
+ readonly X_AXIS_DATE_PADDING: string;
29
+ readonly SENTIMENT_MIN: number;
30
+ readonly SENTIMENT_MAX: number;
31
+ readonly TOP_LABEL_SPACE_DESKTOP: number;
32
+ readonly TOP_LABEL_SPACE_MOBILE: number;
33
+ readonly TOOLTIP_HEIGHT_MOBILE: number;
34
+ readonly TOOLTIP_HEIGHT_DESKTOP: number;
35
+ readonly TOOLTIP_OFFSET: number;
32
36
  };
33
37
  export declare const COLOR_MAP: {
34
38
  readonly dark: {
35
39
  readonly long: readonly [string, string];
36
40
  readonly short: readonly [string, string];
41
+ readonly backgroundColor: string;
37
42
  };
38
43
  readonly light: {
39
44
  readonly long: readonly [string, string];
40
45
  readonly short: readonly [string, string];
46
+ readonly backgroundColor: string;
41
47
  };
42
48
  };
43
49
  export declare const INSTRUMENTS_CONFIG: Record<InstrumentId, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-crowd-view-widget",
3
- "version": "1.0.55",
3
+ "version": "1.0.57",
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.237",
16
+ "@oanda/labs-widget-common": "^1.0.239",
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": "c229ff589fb221f71aa5b10c1498b32e4a3b61b3"
27
+ "gitHead": "a4fa86d785d1359fdb0eba942e26a4e9b99b72f2"
28
28
  }
@@ -19,13 +19,12 @@ import {
19
19
  import * as echarts from 'echarts/core';
20
20
  import { CanvasRenderer } from 'echarts/renderers';
21
21
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
22
- import { useMediaQuery } from 'usehooks-ts';
23
22
 
24
23
  import { CHART_CONFIG } from '../../constants';
25
24
  import {
26
25
  handleLabelUpdate,
27
- handleTooltipUpdate,
28
26
  isDifferenceGreaterThanTwoWeeks,
27
+ normalizeLocale,
29
28
  } from './chartUtils';
30
29
  import { getOption } from './getOption';
31
30
  import type { ChartProps, DataZoomEvent } from './types';
@@ -54,12 +53,9 @@ const Chart = ({
54
53
  isLoading,
55
54
  }: ChartProps) => {
56
55
  const { isDark } = useLayoutProvider();
57
- const { lang } = useLocale();
58
- const canHover = useMediaQuery('(hover: hover)');
56
+ const { lang, locale } = useLocale();
59
57
  const labelTimerRef = useRef<NodeJS.Timeout | null>(null);
60
58
  const isGreaterThanTwoWeeksRef = useRef<boolean | null>(null);
61
- const zoomTimerRef = useRef<NodeJS.Timeout | null>(null);
62
- const tooltipVisibleRef = useRef<boolean>(true);
63
59
 
64
60
  const initialIsGreaterThanTwoWeeks = useMemo(() => {
65
61
  const { dates } = mainData;
@@ -94,28 +90,33 @@ const Chart = ({
94
90
  isDark,
95
91
  isDesktop,
96
92
  isLoading,
93
+ locale: normalizeLocale(locale),
97
94
  labelCallback: lang,
98
95
  }),
99
- [mainData, additionalData, isDark, isDesktop, isLoading, lang]
96
+ [mainData, additionalData, isDark, isDesktop, isLoading, lang, locale]
100
97
  );
101
98
 
102
99
  // Memoize event handler to prevent unnecessary re-renders
103
100
  const handleDataZoom = useCallback(
104
101
  (_params: DataZoomEvent, instance: EChartsType) => {
105
- handleTooltipUpdate(instance, zoomTimerRef, tooltipVisibleRef, canHover);
106
102
  handleLabelUpdate(
107
103
  instance,
108
104
  mainData,
109
105
  labelTimerRef,
110
- isGreaterThanTwoWeeksRef
106
+ isGreaterThanTwoWeeksRef,
107
+ normalizeLocale(locale)
111
108
  );
112
109
  },
113
- [mainData, canHover]
110
+ [mainData, locale]
114
111
  );
115
112
 
113
+ const chartHeight = isDesktop
114
+ ? CHART_CONFIG.HEIGHT_DESKTOP
115
+ : CHART_CONFIG.HEIGHT_MOBILE;
116
+
116
117
  return (
117
118
  <BaseChart
118
- chartHeight={CHART_CONFIG.HEIGHT}
119
+ chartHeight={chartHeight}
119
120
  echarts={echarts}
120
121
  isDark={isDark}
121
122
  lazyUpdate={true}
@@ -8,9 +8,11 @@ import {
8
8
  import React, { useEffect, useState } from 'react';
9
9
  import { useDebounceCallback } from 'usehooks-ts';
10
10
 
11
+ import { CHART_CONFIG } from '../../constants';
11
12
  import { Chart } from './Chart';
12
13
  import type { ChartWithDataProps } from './types';
13
14
  import { useCrowdViewData } from './useCrowdViewData';
15
+ import { useResizeObserver } from './useResizeObserver';
14
16
 
15
17
  const ChartWithData = ({
16
18
  instrument,
@@ -20,6 +22,7 @@ const ChartWithData = ({
20
22
  }: ChartWithDataProps) => {
21
23
  const { size } = useLayoutProvider();
22
24
  const [debouncedLoading, setDebouncedLoading] = useState(true);
25
+ const [containerRef, isResizing] = useResizeObserver({ debounceDelay: 150 });
23
26
  const isDesktop = size === Size.DESKTOP;
24
27
 
25
28
  const { mainData, additionalData, loading, priceCandlesLoading, error } =
@@ -44,15 +47,31 @@ const ChartWithData = ({
44
47
  }
45
48
  }, [loading, hideLoading]);
46
49
 
50
+ const showChart =
51
+ !priceCandlesLoading &&
52
+ !error &&
53
+ !!mainData &&
54
+ !!additionalData &&
55
+ !isResizing;
56
+ const showLoader = loading || isResizing;
57
+
58
+ const chartHeight = isDesktop
59
+ ? CHART_CONFIG.HEIGHT_DESKTOP
60
+ : CHART_CONFIG.HEIGHT_MOBILE;
61
+
47
62
  return (
48
63
  <>
49
- <div className="lw-relative lw-h-[440px] lw-w-full lw-overflow-hidden">
64
+ <div
65
+ ref={containerRef}
66
+ className="lw-relative lw-w-full lw-overflow-hidden"
67
+ style={{ height: chartHeight }}
68
+ >
50
69
  {error && (
51
70
  <div className="lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary">
52
71
  <ChartError />
53
72
  </div>
54
73
  )}
55
- {!priceCandlesLoading && !error && !!mainData && !!additionalData && (
74
+ {showChart && (
56
75
  <div className="lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full">
57
76
  <Chart
58
77
  additionalData={additionalData}
@@ -62,7 +81,7 @@ const ChartWithData = ({
62
81
  />
63
82
  </div>
64
83
  )}
65
- {loading && (
84
+ {showLoader && (
66
85
  <div className="lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary lw-bg-bg-transparent-50">
67
86
  <Spinner size={SpinnerSize.lg} />
68
87
  </div>
@@ -8,22 +8,38 @@ interface GetGridConfigParams {
8
8
 
9
9
  export const getGridConfig = ({
10
10
  isDesktop,
11
- }: GetGridConfigParams): GridComponentOption[] => [
12
- {
13
- id: 'main-grid',
14
- name: 'main-grid',
15
- left: `${isDesktop ? CHART_CONFIG.Y_SENTIMENT_LABEL_DESKTOP_SIZE : CHART_CONFIG.Y_SENTIMENT_LABEL_MOBILE_SIZE}px`,
16
- right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,
17
- top: `${isDesktop ? CHART_CONFIG.TOP_MARGIN_DESKTOP : CHART_CONFIG.TOP_MARGIN_MOBILE}px`,
18
- bottom: `${CHART_CONFIG.X_LABEL_SIZE}px`,
19
- height: `${isDesktop ? CHART_CONFIG.MAIN_HEIGHT - CHART_CONFIG.TOP_MARGIN_DESKTOP : CHART_CONFIG.MAIN_HEIGHT - CHART_CONFIG.TOP_MARGIN_MOBILE}px`,
20
- },
21
- {
22
- id: 'sentiment-grid',
23
- name: 'sentiment-grid',
24
- left: `${isDesktop ? CHART_CONFIG.Y_SENTIMENT_LABEL_DESKTOP_SIZE : CHART_CONFIG.Y_SENTIMENT_LABEL_MOBILE_SIZE}px`,
25
- right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,
26
- top: `${isDesktop ? CHART_CONFIG.TOP_MARGIN_DESKTOP : CHART_CONFIG.TOP_MARGIN_MOBILE}px`,
27
- height: `${isDesktop ? CHART_CONFIG.MAIN_HEIGHT - CHART_CONFIG.TOP_MARGIN_DESKTOP : CHART_CONFIG.MAIN_HEIGHT - CHART_CONFIG.TOP_MARGIN_MOBILE}px`,
28
- },
29
- ];
11
+ }: GetGridConfigParams): GridComponentOption[] => {
12
+ const {
13
+ Y_SENTIMENT_LABEL_DESKTOP_SIZE,
14
+ Y_SENTIMENT_LABEL_MOBILE_SIZE,
15
+ Y_LABEL_SIZE_DESKTOP,
16
+ Y_LABEL_SIZE_MOBILE,
17
+ TOP_LABEL_SPACE_DESKTOP,
18
+ TOP_LABEL_SPACE_MOBILE,
19
+ MAIN_HEIGHT_DESKTOP,
20
+ MAIN_HEIGHT_MOBILE,
21
+ TOOLTIP_HEIGHT_MOBILE,
22
+ TOOLTIP_HEIGHT_DESKTOP,
23
+ } = CHART_CONFIG;
24
+
25
+ const mainHeight = isDesktop ? MAIN_HEIGHT_DESKTOP : MAIN_HEIGHT_MOBILE;
26
+
27
+ const position = {
28
+ left: `${isDesktop ? Y_SENTIMENT_LABEL_DESKTOP_SIZE : Y_SENTIMENT_LABEL_MOBILE_SIZE}px`,
29
+ right: `${isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE}px`,
30
+ top: `${isDesktop ? TOP_LABEL_SPACE_DESKTOP + TOOLTIP_HEIGHT_DESKTOP : TOP_LABEL_SPACE_MOBILE + TOOLTIP_HEIGHT_MOBILE}px`,
31
+ height: `${mainHeight}px`,
32
+ };
33
+ return [
34
+ {
35
+ id: 'main-grid',
36
+ name: 'main-grid',
37
+ ...position,
38
+ },
39
+ {
40
+ id: 'sentiment-grid',
41
+ name: 'sentiment-grid',
42
+ ...position,
43
+ },
44
+ ];
45
+ };
@@ -12,16 +12,34 @@ export const getGridLines = ({
12
12
  isDark,
13
13
  isDesktop,
14
14
  }: GetGridLinesParams): GraphicComponentOption[] => {
15
- const { WIDTH, MAIN_HEIGHT, X_LABEL_SIZE } = CHART_CONFIG;
15
+ const {
16
+ WIDTH,
17
+ MAIN_HEIGHT_DESKTOP,
18
+ MAIN_HEIGHT_MOBILE,
19
+ X_LABEL_SIZE,
20
+ TOOLTIP_HEIGHT_MOBILE,
21
+ TOOLTIP_HEIGHT_DESKTOP,
22
+ Y_SENTIMENT_LABEL_DESKTOP_SIZE,
23
+ Y_SENTIMENT_LABEL_MOBILE_SIZE,
24
+ Y_LABEL_SIZE_DESKTOP,
25
+ Y_LABEL_SIZE_MOBILE,
26
+ TOP_LABEL_SPACE_MOBILE,
27
+ } = CHART_CONFIG;
28
+
29
+ const mainHeight = isDesktop ? MAIN_HEIGHT_DESKTOP : MAIN_HEIGHT_MOBILE;
16
30
  const ySentimentLabelSize = isDesktop
17
- ? CHART_CONFIG.Y_SENTIMENT_LABEL_DESKTOP_SIZE
18
- : CHART_CONFIG.Y_SENTIMENT_LABEL_MOBILE_SIZE;
31
+ ? Y_SENTIMENT_LABEL_DESKTOP_SIZE
32
+ : Y_SENTIMENT_LABEL_MOBILE_SIZE;
33
+
34
+ const yLabelSize = isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE;
19
35
 
20
- const yLabelSize = isDesktop
21
- ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP
22
- : CHART_CONFIG.Y_LABEL_SIZE_MOBILE;
36
+ const topMargin = isDesktop
37
+ ? CHART_CONFIG.TOP_LABEL_SPACE_DESKTOP + TOOLTIP_HEIGHT_DESKTOP
38
+ : TOP_LABEL_SPACE_MOBILE + TOOLTIP_HEIGHT_MOBILE;
23
39
 
24
- const topMargin = isDesktop ? 0 : CHART_CONFIG.TOP_MARGIN_MOBILE;
40
+ const tooltipHeight = isDesktop
41
+ ? TOOLTIP_HEIGHT_DESKTOP
42
+ : TOOLTIP_HEIGHT_MOBILE;
25
43
 
26
44
  return [
27
45
  // Top
@@ -44,7 +62,7 @@ export const getGridLines = ({
44
62
  x1: 0,
45
63
  y1: 0,
46
64
  x2: 0,
47
- y2: MAIN_HEIGHT + X_LABEL_SIZE + 2,
65
+ y2: mainHeight + topMargin + X_LABEL_SIZE + 2,
48
66
  },
49
67
  z: 30,
50
68
  },
@@ -68,7 +86,7 @@ export const getGridLines = ({
68
86
  x1: 0,
69
87
  y1: 0,
70
88
  x2: 0,
71
- y2: MAIN_HEIGHT + X_LABEL_SIZE + 2,
89
+ y2: mainHeight + X_LABEL_SIZE + topMargin + 2,
72
90
  },
73
91
  z: 30,
74
92
  },
@@ -81,7 +99,7 @@ export const getGridLines = ({
81
99
  x1: 0,
82
100
  y1: 0,
83
101
  x2: 0,
84
- y2: MAIN_HEIGHT - topMargin,
102
+ y2: mainHeight,
85
103
  },
86
104
  z: 30,
87
105
  },
@@ -94,7 +112,7 @@ export const getGridLines = ({
94
112
  x1: 0,
95
113
  y1: 0,
96
114
  x2: 0,
97
- y2: MAIN_HEIGHT - topMargin,
115
+ y2: mainHeight,
98
116
  },
99
117
  z: 30,
100
118
  },
@@ -122,5 +140,17 @@ export const getGridLines = ({
122
140
  },
123
141
  z: 30,
124
142
  },
143
+ // Mobile tooltip,
144
+ {
145
+ ...getLineCommons(isDark),
146
+ top: tooltipHeight - 3,
147
+ shape: {
148
+ x1: 0,
149
+ y1: 0,
150
+ x2: WIDTH,
151
+ y2: 0,
152
+ },
153
+ z: 30,
154
+ },
125
155
  ];
126
156
  };