@oanda/labs-crowd-view-widget 1.0.56 → 1.0.58

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 (95) hide show
  1. package/CHANGELOG.md +468 -0
  2. package/dist/main/CrowdViewWidget/components/Chart/Chart.js +1 -6
  3. package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js +5 -4
  5. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js +13 -6
  7. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js +4 -4
  9. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js.map +1 -1
  10. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js +9 -43
  11. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js.map +1 -1
  12. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js +19 -4
  13. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js.map +1 -1
  14. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js +15 -2
  15. package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js.map +1 -1
  16. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js +27 -0
  17. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js.map +1 -0
  18. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js +14 -23
  19. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js.map +1 -1
  20. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/index.js +11 -0
  21. package/dist/main/CrowdViewWidget/components/Chart/chartUtils/index.js.map +1 -1
  22. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js +22 -0
  23. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js.map +1 -0
  24. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/index.js +8 -8
  25. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/index.js.map +1 -1
  26. package/dist/main/CrowdViewWidget/components/Chart/getOption.js +4 -4
  27. package/dist/main/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
  28. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +11 -7
  29. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  30. package/dist/main/CrowdViewWidget/constants.js +8 -6
  31. package/dist/main/CrowdViewWidget/constants.js.map +1 -1
  32. package/dist/main/translations/sources/en.json +2 -1
  33. package/dist/module/CrowdViewWidget/components/Chart/Chart.js +2 -7
  34. package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  35. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js +5 -4
  36. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js.map +1 -1
  37. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js +13 -6
  38. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js.map +1 -1
  39. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js +4 -4
  40. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js.map +1 -1
  41. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js +9 -42
  42. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.js.map +1 -1
  43. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js +20 -5
  44. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.js.map +1 -1
  45. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js +15 -2
  46. package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js.map +1 -1
  47. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js +20 -0
  48. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js.map +1 -0
  49. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js +14 -23
  50. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js.map +1 -1
  51. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/index.js +1 -0
  52. package/dist/module/CrowdViewWidget/components/Chart/chartUtils/index.js.map +1 -1
  53. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js +15 -0
  54. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.js.map +1 -0
  55. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/index.js +1 -1
  56. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/index.js.map +1 -1
  57. package/dist/module/CrowdViewWidget/components/Chart/getOption.js +4 -4
  58. package/dist/module/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
  59. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +13 -9
  60. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  61. package/dist/module/CrowdViewWidget/constants.js +7 -5
  62. package/dist/module/CrowdViewWidget/constants.js.map +1 -1
  63. package/dist/module/translations/sources/en.json +2 -1
  64. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.d.ts +1 -2
  65. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.d.ts +2 -1
  66. package/dist/types/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.d.ts +4 -2
  67. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.d.ts +1 -0
  68. package/dist/types/CrowdViewWidget/components/Chart/chartUtils/index.d.ts +1 -0
  69. package/dist/types/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.d.ts +8 -0
  70. package/dist/types/CrowdViewWidget/components/Chart/dataUtils/index.d.ts +1 -1
  71. package/dist/types/CrowdViewWidget/constants.d.ts +5 -3
  72. package/package.json +3 -3
  73. package/src/CrowdViewWidget/components/Chart/Chart.tsx +1 -7
  74. package/src/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.ts +5 -4
  75. package/src/CrowdViewWidget/components/Chart/chartOptions/getGridLines.ts +19 -10
  76. package/src/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.ts +9 -5
  77. package/src/CrowdViewWidget/components/Chart/chartOptions/getTooltipConfig.ts +38 -79
  78. package/src/CrowdViewWidget/components/Chart/chartOptions/getXAxisConfig.ts +26 -2
  79. package/src/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.ts +20 -3
  80. package/src/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.ts +26 -0
  81. package/src/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.ts +50 -35
  82. package/src/CrowdViewWidget/components/Chart/chartUtils/index.ts +1 -0
  83. package/src/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.ts +25 -0
  84. package/src/CrowdViewWidget/components/Chart/dataUtils/index.ts +1 -1
  85. package/src/CrowdViewWidget/components/Chart/getOption.ts +2 -2
  86. package/src/CrowdViewWidget/components/Chart/useCrowdViewData.ts +17 -16
  87. package/src/CrowdViewWidget/constants.ts +11 -7
  88. package/src/translations/sources/en.json +2 -1
  89. package/test/components/Chart/dataUtils/getBucketWidthMultiplayer.test.ts +33 -0
  90. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getMultiplayerForTimeSpan.js +0 -19
  91. package/dist/main/CrowdViewWidget/components/Chart/dataUtils/getMultiplayerForTimeSpan.js.map +0 -1
  92. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getMultiplayerForTimeSpan.js +0 -12
  93. package/dist/module/CrowdViewWidget/components/Chart/dataUtils/getMultiplayerForTimeSpan.js.map +0 -1
  94. package/dist/types/CrowdViewWidget/components/Chart/dataUtils/getMultiplayerForTimeSpan.d.ts +0 -2
  95. package/src/CrowdViewWidget/components/Chart/dataUtils/getMultiplayerForTimeSpan.ts +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/index.ts"],"sourcesContent":["export * from './formatXAxisAdditionalLabel';\nexport * from './formatXAxisLabel';\nexport * from './getChartStyles';\nexport * from './getGradientColor';\nexport * from './getLabelData';\nexport * from './getRectColor';\nexport * from './getTooltipFormatter';\nexport * from './handleLabelUpdate';\nexport * from './handleTooltipUpdate';\nexport * from './isDifferenceGreaterThanTwoWeeks';\nexport * from './normalizeLocale';\n"],"mappings":"AAAA,cAAc,8BAA8B;AAC5C,cAAc,oBAAoB;AAClC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,uBAAuB;AACrC,cAAc,mCAAmC;AACjD,cAAc,mBAAmB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/index.ts"],"sourcesContent":["export * from './formatFullDate';\nexport * from './formatXAxisAdditionalLabel';\nexport * from './formatXAxisLabel';\nexport * from './getChartStyles';\nexport * from './getGradientColor';\nexport * from './getLabelData';\nexport * from './getRectColor';\nexport * from './getTooltipFormatter';\nexport * from './handleLabelUpdate';\nexport * from './handleTooltipUpdate';\nexport * from './isDifferenceGreaterThanTwoWeeks';\nexport * from './normalizeLocale';\n"],"mappings":"AAAA,cAAc,kBAAkB;AAChC,cAAc,8BAA8B;AAC5C,cAAc,oBAAoB;AAClC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,uBAAuB;AACrC,cAAc,mCAAmC;AACjD,cAAc,mBAAmB","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { DISPLAYED_BUCKETS_COUNT, INSTRUMENTS_CONFIG } from '../../../constants';
2
+ export const getBucketWidthMultiplayer = _ref => {
3
+ let {
4
+ minPrice,
5
+ maxPrice,
6
+ instrument
7
+ } = _ref;
8
+ const {
9
+ defaultBucketWidth
10
+ } = INSTRUMENTS_CONFIG[instrument];
11
+ const priceRange = maxPrice - minPrice;
12
+ const calculatedMultiplier = priceRange / (defaultBucketWidth * DISPLAYED_BUCKETS_COUNT);
13
+ return Math.max(1, Math.ceil(calculatedMultiplier));
14
+ };
15
+ //# sourceMappingURL=getBucketWidthMultiplayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBucketWidthMultiplayer.js","names":["DISPLAYED_BUCKETS_COUNT","INSTRUMENTS_CONFIG","getBucketWidthMultiplayer","_ref","minPrice","maxPrice","instrument","defaultBucketWidth","priceRange","calculatedMultiplier","Math","max","ceil"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/dataUtils/getBucketWidthMultiplayer.ts"],"sourcesContent":["import {\n DISPLAYED_BUCKETS_COUNT,\n INSTRUMENTS_CONFIG,\n} from '../../../constants';\nimport type { InstrumentId } from '../../../types';\n\ninterface GetBucketWidthMultiplayerParams {\n minPrice: number;\n maxPrice: number;\n instrument: InstrumentId;\n}\n\nexport const getBucketWidthMultiplayer = ({\n minPrice,\n maxPrice,\n instrument,\n}: GetBucketWidthMultiplayerParams): number => {\n const { defaultBucketWidth } = INSTRUMENTS_CONFIG[instrument];\n const priceRange = maxPrice - minPrice;\n\n const calculatedMultiplier =\n priceRange / (defaultBucketWidth * DISPLAYED_BUCKETS_COUNT);\n\n return Math.max(1, Math.ceil(calculatedMultiplier));\n};\n"],"mappings":"AAAA,SACEA,uBAAuB,EACvBC,kBAAkB,QACb,oBAAoB;AAS3B,OAAO,MAAMC,yBAAyB,GAAGC,IAAA,IAIM;EAAA,IAJL;IACxCC,QAAQ;IACRC,QAAQ;IACRC;EAC+B,CAAC,GAAAH,IAAA;EAChC,MAAM;IAAEI;EAAmB,CAAC,GAAGN,kBAAkB,CAACK,UAAU,CAAC;EAC7D,MAAME,UAAU,GAAGH,QAAQ,GAAGD,QAAQ;EAEtC,MAAMK,oBAAoB,GACxBD,UAAU,IAAID,kBAAkB,GAAGP,uBAAuB,CAAC;EAE7D,OAAOU,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,IAAI,CAACH,oBAAoB,CAAC,CAAC;AACrD,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
+ export * from './getBucketWidthMultiplayer';
1
2
  export * from './getInstrumentConfigForDivision';
2
- export * from './getMultiplayerForTimeSpan';
3
3
  export * from './getTimeSpanForGranularity';
4
4
  export * from './processOrderPositionBooks';
5
5
  export * from './processPriceCandles';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/dataUtils/index.ts"],"sourcesContent":["export * from './getInstrumentConfigForDivision';\nexport * from './getMultiplayerForTimeSpan';\nexport * from './getTimeSpanForGranularity';\nexport * from './processOrderPositionBooks';\nexport * from './processPriceCandles';\nexport * from './processSentiments';\nexport * from './validateData';\n"],"mappings":"AAAA,cAAc,kCAAkC;AAChD,cAAc,6BAA6B;AAC3C,cAAc,6BAA6B;AAC3C,cAAc,6BAA6B;AAC3C,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/dataUtils/index.ts"],"sourcesContent":["export * from './getBucketWidthMultiplayer';\nexport * from './getInstrumentConfigForDivision';\nexport * from './getTimeSpanForGranularity';\nexport * from './processOrderPositionBooks';\nexport * from './processPriceCandles';\nexport * from './processSentiments';\nexport * from './validateData';\n"],"mappings":"AAAA,cAAc,6BAA6B;AAC3C,cAAc,kCAAkC;AAChD,cAAc,6BAA6B;AAC3C,cAAc,6BAA6B;AAC3C,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,gBAAgB","ignoreList":[]}
@@ -54,7 +54,6 @@ export const getOption = _ref => {
54
54
  bookType,
55
55
  bucketWidth,
56
56
  buckets,
57
- displayPrecision,
58
57
  labelCallback,
59
58
  selectedPriceRef,
60
59
  tooltipLinesColor: styles.tooltipLinesColor,
@@ -70,12 +69,13 @@ export const getOption = _ref => {
70
69
  xAxis: getXAxisConfig({
71
70
  dates,
72
71
  isGreaterThanTwoWeeks,
73
- locale
72
+ locale,
73
+ isDesktop
74
74
  }),
75
75
  yAxis: getYAxisConfig({
76
- isDesktop,
77
76
  bucketWidth,
78
- displayPrecision
77
+ displayPrecision,
78
+ selectedPriceRef
79
79
  }),
80
80
  dataZoom: getDataZoomConfig({
81
81
  isDesktop
@@ -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 displayPrecision,\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 }),\n yAxis: getYAxisConfig({\n isDesktop,\n bucketWidth,\n displayPrecision,\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 }),\n ...heatmapChart,\n ...sentimentChart,\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,9 +3,9 @@ import { useMemo } from 'react';
3
3
  import { getOrderPositionBooks } from '../../../gql/getOrderPositionBooks';
4
4
  import { getPriceCandles } from '../../../gql/getPriceCandles';
5
5
  import { getSentiments } from '../../../gql/getSentiments';
6
- import { BookType, DataSource, Division } from '../../../gql/types/graphql';
6
+ import { DataSource } from '../../../gql/types/graphql';
7
7
  import { BUCKET_CONFIG, INSTRUMENTS_CONFIG } from '../../constants';
8
- import { getMultiplayerForTimeSpan, getTimeSpanForGranularity, processOrderPositionBooks, processPriceCandles, processSentiments, validateData } from './dataUtils';
8
+ import { getBucketWidthMultiplayer, getTimeSpanForGranularity, processOrderPositionBooks, processPriceCandles, processSentiments, validateData } from './dataUtils';
9
9
  export const useCrowdViewData = _ref => {
10
10
  let {
11
11
  instrument,
@@ -13,16 +13,15 @@ export const useCrowdViewData = _ref => {
13
13
  division,
14
14
  granularity
15
15
  } = _ref;
16
- const dataSource = division === Division.Ogm || division === Division.Oj ? DataSource.Mt5 : DataSource.V20;
17
16
  const {
18
17
  loading: priceCandlesLoading,
19
18
  data: priceCandlesData,
20
19
  error: priceCandlesError
21
20
  } = useQuery(getPriceCandles, {
22
21
  variables: {
23
- dataSource,
22
+ dataSource: DataSource.V20,
24
23
  division,
25
- instrument: dataSource === DataSource.Mt5 ? INSTRUMENTS_CONFIG[instrument].mt5name : INSTRUMENTS_CONFIG[instrument].v20name,
24
+ instrument: INSTRUMENTS_CONFIG[instrument].v20name,
26
25
  granularity,
27
26
  timeSpan: getTimeSpanForGranularity(granularity)
28
27
  },
@@ -39,6 +38,11 @@ export const useCrowdViewData = _ref => {
39
38
  candlesHigh,
40
39
  pipsLocation
41
40
  } = useMemo(() => processPriceCandles(priceCandlesData), [priceCandlesData]);
41
+ const bucketWidthMultiplayer = useMemo(() => getBucketWidthMultiplayer({
42
+ minPrice,
43
+ maxPrice,
44
+ instrument
45
+ }), [minPrice, maxPrice, instrument]);
42
46
  const {
43
47
  loading: orderPositionLoading,
44
48
  data: orderPositionData,
@@ -46,12 +50,12 @@ export const useCrowdViewData = _ref => {
46
50
  } = useQuery(getOrderPositionBooks, {
47
51
  variables: {
48
52
  instrument: INSTRUMENTS_CONFIG[instrument].v20name,
49
- bookType: bookType || BookType.Order,
53
+ bookType,
50
54
  timeSpan: getTimeSpanForGranularity(granularity),
51
55
  granularity,
52
56
  maxBookPrice: maxPrice,
53
57
  minBookPrice: minPrice,
54
- bucketMultiplier: getMultiplayerForTimeSpan(granularity),
58
+ bucketMultiplier: bucketWidthMultiplayer,
55
59
  bucketMargin: BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER
56
60
  },
57
61
  fetchPolicy: 'no-cache',
@@ -117,7 +121,7 @@ export const useCrowdViewData = _ref => {
117
121
  sentimentLongs
118
122
  },
119
123
  additionalData: {
120
- bucketWidth: bucketWidth || INSTRUMENTS_CONFIG[instrument].defaultBucketWidth * getMultiplayerForTimeSpan(granularity),
124
+ bucketWidth: bucketWidth || INSTRUMENTS_CONFIG[instrument].defaultBucketWidth * bucketWidthMultiplayer,
121
125
  buckets,
122
126
  displayPrecision: pipsLocation,
123
127
  bookType,
@@ -125,7 +129,7 @@ export const useCrowdViewData = _ref => {
125
129
  sentimentThresholdMax
126
130
  }
127
131
  };
128
- }, [priceCandlesData, error, dates, candlesOpen, candlesClose, candlesLow, candlesHigh, bookPrices, bookIndexes, sentimentShorts, sentimentLongs, bucketWidth, granularity, instrument, buckets, pipsLocation, bookType, sentimentThresholdMin, sentimentThresholdMax]);
132
+ }, [priceCandlesData, error, dates, candlesOpen, candlesClose, candlesLow, candlesHigh, bookPrices, bookIndexes, sentimentShorts, sentimentLongs, bucketWidth, instrument, bucketWidthMultiplayer, buckets, pipsLocation, bookType, sentimentThresholdMin, sentimentThresholdMax]);
129
133
  return {
130
134
  mainData: data === null || data === void 0 ? void 0 : data.mainData,
131
135
  additionalData: data === null || data === void 0 ? void 0 : data.additionalData,
@@ -1 +1 @@
1
- {"version":3,"file":"useCrowdViewData.js","names":["useQuery","useMemo","getOrderPositionBooks","getPriceCandles","getSentiments","BookType","DataSource","Division","BUCKET_CONFIG","INSTRUMENTS_CONFIG","getMultiplayerForTimeSpan","getTimeSpanForGranularity","processOrderPositionBooks","processPriceCandles","processSentiments","validateData","useCrowdViewData","_ref","instrument","bookType","division","granularity","dataSource","Ogm","Oj","Mt5","V20","loading","priceCandlesLoading","data","priceCandlesData","error","priceCandlesError","variables","mt5name","v20name","timeSpan","fetchPolicy","minPrice","maxPrice","hasValidCandles","dates","candlesOpen","candlesClose","candlesLow","candlesHigh","pipsLocation","orderPositionLoading","orderPositionData","orderPositionError","Order","maxBookPrice","minBookPrice","bucketMultiplier","bucketMargin","PRICE_MARGIN_MULTIPLIER","skip","bookPrices","bookIndexes","buckets","bucketWidth","sentimentThresholdMin","sentimentThresholdMax","hasValidBooks","sentimentsLoading","sentimentsData","sentimentsError","sentimentLongs","sentimentShorts","hasValidSentiments","Error","concat","message","mainData","additionalData","defaultBucketWidth","displayPrecision"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/useCrowdViewData.ts"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport { useMemo } from 'react';\n\nimport { getOrderPositionBooks } from '../../../gql/getOrderPositionBooks';\nimport { getPriceCandles } from '../../../gql/getPriceCandles';\nimport { getSentiments } from '../../../gql/getSentiments';\nimport type {\n GetOrderPositionBooksQuery,\n GetOrderPositionBooksQueryVariables,\n GetPriceCandlesQuery,\n GetPriceCandlesQueryVariables,\n GetSentimentsQuery,\n GetSentimentsQueryVariables,\n} from '../../../gql/types/graphql';\nimport { BookType, DataSource, Division } from '../../../gql/types/graphql';\nimport { BUCKET_CONFIG, INSTRUMENTS_CONFIG } from '../../constants';\nimport {\n getMultiplayerForTimeSpan,\n getTimeSpanForGranularity,\n processOrderPositionBooks,\n processPriceCandles,\n processSentiments,\n validateData,\n} from './dataUtils';\nimport type { UseCrowdViewDataProps, UseCrowdViewDataReturn } from './types';\n\nexport const useCrowdViewData = ({\n instrument,\n bookType,\n division,\n granularity,\n}: UseCrowdViewDataProps): UseCrowdViewDataReturn => {\n const dataSource =\n division === Division.Ogm || division === Division.Oj\n ? DataSource.Mt5\n : DataSource.V20;\n\n // Get price candles data\n const {\n loading: priceCandlesLoading,\n data: priceCandlesData,\n error: priceCandlesError,\n } = useQuery<GetPriceCandlesQuery, GetPriceCandlesQueryVariables>(\n getPriceCandles,\n {\n variables: {\n dataSource,\n division,\n instrument:\n dataSource === DataSource.Mt5\n ? INSTRUMENTS_CONFIG[instrument].mt5name\n : INSTRUMENTS_CONFIG[instrument].v20name,\n granularity,\n timeSpan: getTimeSpanForGranularity(granularity),\n },\n fetchPolicy: 'no-cache',\n }\n );\n\n const {\n minPrice,\n maxPrice,\n hasValidCandles,\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n pipsLocation,\n } = useMemo(() => processPriceCandles(priceCandlesData), [priceCandlesData]);\n\n // Get order position books data\n const {\n loading: orderPositionLoading,\n data: orderPositionData,\n error: orderPositionError,\n } = useQuery<GetOrderPositionBooksQuery, GetOrderPositionBooksQueryVariables>(\n getOrderPositionBooks,\n {\n variables: {\n instrument: INSTRUMENTS_CONFIG[instrument].v20name,\n bookType: bookType || BookType.Order,\n timeSpan: getTimeSpanForGranularity(granularity),\n granularity,\n maxBookPrice: maxPrice,\n minBookPrice: minPrice,\n bucketMultiplier: getMultiplayerForTimeSpan(granularity),\n bucketMargin: BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,\n },\n fetchPolicy: 'no-cache',\n skip: priceCandlesLoading || !!priceCandlesError,\n }\n );\n\n const {\n bookPrices,\n bookIndexes,\n buckets,\n bucketWidth,\n sentimentThresholdMin,\n sentimentThresholdMax,\n hasValidBooks,\n } = useMemo(\n () => processOrderPositionBooks(orderPositionData, dates),\n [orderPositionData, dates]\n );\n\n // Get sentiments data\n const {\n loading: sentimentsLoading,\n data: sentimentsData,\n error: sentimentsError,\n } = useQuery<GetSentimentsQuery, GetSentimentsQueryVariables>(getSentiments, {\n variables: {\n instrument: INSTRUMENTS_CONFIG[instrument].v20name,\n granularity,\n timeSpan: getTimeSpanForGranularity(granularity),\n },\n fetchPolicy: 'no-cache',\n skip: priceCandlesLoading || !!priceCandlesError,\n });\n\n const { sentimentLongs, sentimentShorts, hasValidSentiments } = useMemo(\n () => processSentiments(sentimentsData, dates),\n [sentimentsData, dates]\n );\n\n // Gather all results\n const loading =\n priceCandlesLoading || orderPositionLoading || sentimentsLoading;\n\n const error = useMemo((): Error | null => {\n if (priceCandlesError) {\n return new Error(`Price candles error: ${priceCandlesError.message}`);\n }\n if (orderPositionError) {\n return new Error(`Order position error: ${orderPositionError.message}`);\n }\n if (sentimentsError) {\n return new Error(`Sentiments error: ${sentimentsError.message}`);\n }\n if (loading) {\n return null;\n }\n return validateData(\n priceCandlesData,\n orderPositionData,\n hasValidCandles,\n hasValidBooks,\n hasValidSentiments\n );\n }, [\n priceCandlesError,\n orderPositionError,\n sentimentsError,\n loading,\n priceCandlesData,\n orderPositionData,\n hasValidCandles,\n hasValidBooks,\n hasValidSentiments,\n ]);\n\n const data = useMemo(() => {\n if (!priceCandlesData || error) {\n return null;\n }\n\n return {\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 bucketWidth ||\n INSTRUMENTS_CONFIG[instrument].defaultBucketWidth *\n getMultiplayerForTimeSpan(granularity),\n buckets,\n displayPrecision: pipsLocation,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n },\n };\n }, [\n priceCandlesData,\n error,\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices,\n bookIndexes,\n sentimentShorts,\n sentimentLongs,\n bucketWidth,\n granularity,\n instrument,\n buckets,\n pipsLocation,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n ]);\n\n return {\n mainData: data?.mainData,\n additionalData: data?.additionalData,\n priceCandlesLoading,\n orderPositionLoading,\n sentimentsLoading,\n loading,\n error: !!error,\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useCrowdViewData.js","names":["useQuery","useMemo","getOrderPositionBooks","getPriceCandles","getSentiments","DataSource","BUCKET_CONFIG","INSTRUMENTS_CONFIG","getBucketWidthMultiplayer","getTimeSpanForGranularity","processOrderPositionBooks","processPriceCandles","processSentiments","validateData","useCrowdViewData","_ref","instrument","bookType","division","granularity","loading","priceCandlesLoading","data","priceCandlesData","error","priceCandlesError","variables","dataSource","V20","v20name","timeSpan","fetchPolicy","minPrice","maxPrice","hasValidCandles","dates","candlesOpen","candlesClose","candlesLow","candlesHigh","pipsLocation","bucketWidthMultiplayer","orderPositionLoading","orderPositionData","orderPositionError","maxBookPrice","minBookPrice","bucketMultiplier","bucketMargin","PRICE_MARGIN_MULTIPLIER","skip","bookPrices","bookIndexes","buckets","bucketWidth","sentimentThresholdMin","sentimentThresholdMax","hasValidBooks","sentimentsLoading","sentimentsData","sentimentsError","sentimentLongs","sentimentShorts","hasValidSentiments","Error","concat","message","mainData","additionalData","defaultBucketWidth","displayPrecision"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/useCrowdViewData.ts"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport { useMemo } from 'react';\n\nimport { getOrderPositionBooks } from '../../../gql/getOrderPositionBooks';\nimport { getPriceCandles } from '../../../gql/getPriceCandles';\nimport { getSentiments } from '../../../gql/getSentiments';\nimport type {\n GetOrderPositionBooksQuery,\n GetOrderPositionBooksQueryVariables,\n GetPriceCandlesQuery,\n GetPriceCandlesQueryVariables,\n GetSentimentsQuery,\n GetSentimentsQueryVariables,\n} from '../../../gql/types/graphql';\nimport { DataSource } from '../../../gql/types/graphql';\nimport { BUCKET_CONFIG, INSTRUMENTS_CONFIG } from '../../constants';\nimport {\n getBucketWidthMultiplayer,\n getTimeSpanForGranularity,\n processOrderPositionBooks,\n processPriceCandles,\n processSentiments,\n validateData,\n} from './dataUtils';\nimport type { UseCrowdViewDataProps, UseCrowdViewDataReturn } from './types';\n\nexport const useCrowdViewData = ({\n instrument,\n bookType,\n division,\n granularity,\n}: UseCrowdViewDataProps): UseCrowdViewDataReturn => {\n // Get price candles data\n const {\n loading: priceCandlesLoading,\n data: priceCandlesData,\n error: priceCandlesError,\n } = useQuery<GetPriceCandlesQuery, GetPriceCandlesQueryVariables>(\n getPriceCandles,\n {\n variables: {\n dataSource: DataSource.V20,\n division,\n instrument: INSTRUMENTS_CONFIG[instrument].v20name,\n granularity,\n timeSpan: getTimeSpanForGranularity(granularity),\n },\n fetchPolicy: 'no-cache',\n }\n );\n\n const {\n minPrice,\n maxPrice,\n hasValidCandles,\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n pipsLocation,\n } = useMemo(() => processPriceCandles(priceCandlesData), [priceCandlesData]);\n\n const bucketWidthMultiplayer = useMemo(\n () =>\n getBucketWidthMultiplayer({\n minPrice,\n maxPrice,\n instrument,\n }),\n [minPrice, maxPrice, instrument]\n );\n // Get order position books data\n const {\n loading: orderPositionLoading,\n data: orderPositionData,\n error: orderPositionError,\n } = useQuery<GetOrderPositionBooksQuery, GetOrderPositionBooksQueryVariables>(\n getOrderPositionBooks,\n {\n variables: {\n instrument: INSTRUMENTS_CONFIG[instrument].v20name,\n bookType,\n timeSpan: getTimeSpanForGranularity(granularity),\n granularity,\n maxBookPrice: maxPrice,\n minBookPrice: minPrice,\n bucketMultiplier: bucketWidthMultiplayer,\n bucketMargin: BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,\n },\n fetchPolicy: 'no-cache',\n skip: priceCandlesLoading || !!priceCandlesError,\n }\n );\n\n const {\n bookPrices,\n bookIndexes,\n buckets,\n bucketWidth,\n sentimentThresholdMin,\n sentimentThresholdMax,\n hasValidBooks,\n } = useMemo(\n () => processOrderPositionBooks(orderPositionData, dates),\n [orderPositionData, dates]\n );\n\n // Get sentiments data\n const {\n loading: sentimentsLoading,\n data: sentimentsData,\n error: sentimentsError,\n } = useQuery<GetSentimentsQuery, GetSentimentsQueryVariables>(getSentiments, {\n variables: {\n instrument: INSTRUMENTS_CONFIG[instrument].v20name,\n granularity,\n timeSpan: getTimeSpanForGranularity(granularity),\n },\n fetchPolicy: 'no-cache',\n skip: priceCandlesLoading || !!priceCandlesError,\n });\n\n const { sentimentLongs, sentimentShorts, hasValidSentiments } = useMemo(\n () => processSentiments(sentimentsData, dates),\n [sentimentsData, dates]\n );\n\n // Gather all results\n const loading =\n priceCandlesLoading || orderPositionLoading || sentimentsLoading;\n\n const error = useMemo((): Error | null => {\n if (priceCandlesError) {\n return new Error(`Price candles error: ${priceCandlesError.message}`);\n }\n if (orderPositionError) {\n return new Error(`Order position error: ${orderPositionError.message}`);\n }\n if (sentimentsError) {\n return new Error(`Sentiments error: ${sentimentsError.message}`);\n }\n if (loading) {\n return null;\n }\n return validateData(\n priceCandlesData,\n orderPositionData,\n hasValidCandles,\n hasValidBooks,\n hasValidSentiments\n );\n }, [\n priceCandlesError,\n orderPositionError,\n sentimentsError,\n loading,\n priceCandlesData,\n orderPositionData,\n hasValidCandles,\n hasValidBooks,\n hasValidSentiments,\n ]);\n\n const data = useMemo(() => {\n if (!priceCandlesData || error) {\n return null;\n }\n\n return {\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 bucketWidth ||\n INSTRUMENTS_CONFIG[instrument].defaultBucketWidth *\n bucketWidthMultiplayer,\n buckets,\n displayPrecision: pipsLocation,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n },\n };\n }, [\n priceCandlesData,\n error,\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices,\n bookIndexes,\n sentimentShorts,\n sentimentLongs,\n bucketWidth,\n instrument,\n bucketWidthMultiplayer,\n buckets,\n pipsLocation,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n ]);\n\n return {\n mainData: data?.mainData,\n additionalData: data?.additionalData,\n priceCandlesLoading,\n orderPositionLoading,\n sentimentsLoading,\n loading,\n error: !!error,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ export const BUCKET_CONFIG = {
16
16
  export const TIME_THRESHOLDS = {
17
17
  TWO_WEEKS_MS: 14 * 24 * 60 * 60 * 1000
18
18
  };
19
+ export const DISPLAYED_BUCKETS_COUNT = 40;
19
20
  const CHART_CONFIG_STATIC = {
20
21
  MAIN_HEIGHT_DESKTOP: 410,
21
22
  MAIN_HEIGHT_MOBILE: 330,
@@ -33,14 +34,15 @@ const CHART_CONFIG_STATIC = {
33
34
  X_AXIS_DATE_PADDING: ' ',
34
35
  SENTIMENT_MIN: 0,
35
36
  SENTIMENT_MAX: 100,
36
- TOP_MARGIN_DESKTOP: 0,
37
- TOP_MARGIN_MOBILE: 24,
38
- MOBILE_TOOLTIP_HEIGHT: 85,
37
+ TOP_LABEL_SPACE_DESKTOP: 0,
38
+ TOP_LABEL_SPACE_MOBILE: 24,
39
+ TOOLTIP_HEIGHT_MOBILE: 85,
40
+ TOOLTIP_HEIGHT_DESKTOP: 46,
39
41
  TOOLTIP_OFFSET: 8
40
42
  };
41
43
  const CHART_CONFIG_CALCULATED = {
42
- HEIGHT_DESKTOP: CHART_CONFIG_STATIC.MAIN_HEIGHT_DESKTOP + CHART_CONFIG_STATIC.TOP_MARGIN_DESKTOP + CHART_CONFIG_STATIC.X_LABEL_SIZE,
43
- HEIGHT_MOBILE: CHART_CONFIG_STATIC.MAIN_HEIGHT_MOBILE + CHART_CONFIG_STATIC.X_LABEL_SIZE + CHART_CONFIG_STATIC.TOP_MARGIN_MOBILE + CHART_CONFIG_STATIC.MOBILE_TOOLTIP_HEIGHT
44
+ HEIGHT_DESKTOP: CHART_CONFIG_STATIC.MAIN_HEIGHT_DESKTOP + CHART_CONFIG_STATIC.TOP_LABEL_SPACE_DESKTOP + CHART_CONFIG_STATIC.X_LABEL_SIZE + CHART_CONFIG_STATIC.TOOLTIP_HEIGHT_DESKTOP,
45
+ HEIGHT_MOBILE: CHART_CONFIG_STATIC.MAIN_HEIGHT_MOBILE + CHART_CONFIG_STATIC.X_LABEL_SIZE + CHART_CONFIG_STATIC.TOP_LABEL_SPACE_MOBILE + CHART_CONFIG_STATIC.TOOLTIP_HEIGHT_MOBILE
44
46
  };
45
47
  export const CHART_CONFIG = _objectSpread(_objectSpread({}, CHART_CONFIG_STATIC), CHART_CONFIG_CALCULATED);
46
48
  export const COLOR_MAP = {
@@ -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_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_MARGIN_DESKTOP","TOP_MARGIN_MOBILE","MOBILE_TOOLTIP_HEIGHT","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_MARGIN_DESKTOP: 0,\n TOP_MARGIN_MOBILE: 24,\n MOBILE_TOOLTIP_HEIGHT: 85,\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_MARGIN_DESKTOP +\n CHART_CONFIG_STATIC.X_LABEL_SIZE,\n HEIGHT_MOBILE:\n CHART_CONFIG_STATIC.MAIN_HEIGHT_MOBILE +\n CHART_CONFIG_STATIC.X_LABEL_SIZE +\n CHART_CONFIG_STATIC.TOP_MARGIN_MOBILE +\n CHART_CONFIG_STATIC.MOBILE_TOOLTIP_HEIGHT,\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":[]}
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","DISPLAYED_BUCKETS_COUNT","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\nexport const DISPLAYED_BUCKETS_COUNT = 40;\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":[]}
@@ -29,6 +29,7 @@
29
29
  "sentiment": "Sentiment",
30
30
  "short": "Short",
31
31
  "short_overbalance": "Short overbalance",
32
- "tap_chart_to_see_more_details": "Tap chart to see more details",
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",
33
34
  "trades": "Trades"
34
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;
@@ -17,5 +16,5 @@ interface GetTooltipConfigParams {
17
16
  isDark: boolean;
18
17
  locale: string;
19
18
  }
20
- export declare const getTooltipConfig: ({ bookType, bucketWidth, buckets, displayPrecision, labelCallback, selectedPriceRef, tooltipLinesColor, sentimentLongs, sentimentShorts, isDesktop, isDark, locale, }: GetTooltipConfigParams) => TooltipComponentOption;
19
+ export declare const getTooltipConfig: ({ bookType, bucketWidth, buckets, labelCallback, selectedPriceRef, tooltipLinesColor, sentimentLongs, sentimentShorts, isDesktop, isDark, locale, }: GetTooltipConfigParams) => TooltipComponentOption;
21
20
  export {};
@@ -3,6 +3,7 @@ interface GetXAxisConfigParams {
3
3
  dates: string[];
4
4
  isGreaterThanTwoWeeks: boolean;
5
5
  locale: string;
6
+ isDesktop: boolean;
6
7
  }
7
- export declare const getXAxisConfig: ({ dates, isGreaterThanTwoWeeks, locale, }: GetXAxisConfigParams) => XAXisComponentOption[];
8
+ export declare const getXAxisConfig: ({ dates, isGreaterThanTwoWeeks, locale, isDesktop, }: GetXAxisConfigParams) => XAXisComponentOption[];
8
9
  export {};
@@ -2,7 +2,9 @@ import type { YAXisComponentOption } from 'echarts';
2
2
  interface GetYAxisConfigParams {
3
3
  bucketWidth: number;
4
4
  displayPrecision: number;
5
- isDesktop: boolean;
5
+ selectedPriceRef: {
6
+ current: number;
7
+ };
6
8
  }
7
- export declare const getYAxisConfig: ({ bucketWidth, displayPrecision, isDesktop, }: GetYAxisConfigParams) => YAXisComponentOption[];
9
+ export declare const getYAxisConfig: ({ bucketWidth, displayPrecision, selectedPriceRef, }: GetYAxisConfigParams) => YAXisComponentOption[];
8
10
  export {};
@@ -0,0 +1 @@
1
+ export declare const formatFullDate: (date: Date, locale: string) => string;
@@ -1,3 +1,4 @@
1
+ export * from './formatFullDate';
1
2
  export * from './formatXAxisAdditionalLabel';
2
3
  export * from './formatXAxisLabel';
3
4
  export * from './getChartStyles';
@@ -0,0 +1,8 @@
1
+ import type { InstrumentId } from '../../../types';
2
+ interface GetBucketWidthMultiplayerParams {
3
+ minPrice: number;
4
+ maxPrice: number;
5
+ instrument: InstrumentId;
6
+ }
7
+ export declare const getBucketWidthMultiplayer: ({ minPrice, maxPrice, instrument, }: GetBucketWidthMultiplayerParams) => number;
8
+ export {};
@@ -1,5 +1,5 @@
1
+ export * from './getBucketWidthMultiplayer';
1
2
  export * from './getInstrumentConfigForDivision';
2
- export * from './getMultiplayerForTimeSpan';
3
3
  export * from './getTimeSpanForGranularity';
4
4
  export * from './processOrderPositionBooks';
5
5
  export * from './processPriceCandles';
@@ -9,6 +9,7 @@ export declare const BUCKET_CONFIG: {
9
9
  export declare const TIME_THRESHOLDS: {
10
10
  readonly TWO_WEEKS_MS: number;
11
11
  };
12
+ export declare const DISPLAYED_BUCKETS_COUNT = 40;
12
13
  export declare const CHART_CONFIG: {
13
14
  readonly HEIGHT_DESKTOP: number;
14
15
  readonly HEIGHT_MOBILE: number;
@@ -28,9 +29,10 @@ export declare const CHART_CONFIG: {
28
29
  readonly X_AXIS_DATE_PADDING: string;
29
30
  readonly SENTIMENT_MIN: number;
30
31
  readonly SENTIMENT_MAX: number;
31
- readonly TOP_MARGIN_DESKTOP: number;
32
- readonly TOP_MARGIN_MOBILE: number;
33
- readonly MOBILE_TOOLTIP_HEIGHT: number;
32
+ readonly TOP_LABEL_SPACE_DESKTOP: number;
33
+ readonly TOP_LABEL_SPACE_MOBILE: number;
34
+ readonly TOOLTIP_HEIGHT_MOBILE: number;
35
+ readonly TOOLTIP_HEIGHT_DESKTOP: number;
34
36
  readonly TOOLTIP_OFFSET: number;
35
37
  };
36
38
  export declare const COLOR_MAP: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-crowd-view-widget",
3
- "version": "1.0.56",
3
+ "version": "1.0.58",
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.238",
16
+ "@oanda/labs-widget-common": "^1.0.240",
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": "e8ab708b3dac3a041e9ed7fda6458ca06571d6cf"
27
+ "gitHead": "86d363fe6b8c6c793bf56bb55965f760ed08d92f"
28
28
  }
@@ -19,12 +19,10 @@ 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,
29
27
  normalizeLocale,
30
28
  } from './chartUtils';
@@ -56,11 +54,8 @@ const Chart = ({
56
54
  }: ChartProps) => {
57
55
  const { isDark } = useLayoutProvider();
58
56
  const { lang, locale } = useLocale();
59
- const canHover = useMediaQuery('(hover: hover)');
60
57
  const labelTimerRef = useRef<NodeJS.Timeout | null>(null);
61
58
  const isGreaterThanTwoWeeksRef = useRef<boolean | null>(null);
62
- const zoomTimerRef = useRef<NodeJS.Timeout | null>(null);
63
- const tooltipVisibleRef = useRef<boolean>(true);
64
59
 
65
60
  const initialIsGreaterThanTwoWeeks = useMemo(() => {
66
61
  const { dates } = mainData;
@@ -104,7 +99,6 @@ const Chart = ({
104
99
  // Memoize event handler to prevent unnecessary re-renders
105
100
  const handleDataZoom = useCallback(
106
101
  (_params: DataZoomEvent, instance: EChartsType) => {
107
- handleTooltipUpdate(instance, zoomTimerRef, tooltipVisibleRef, canHover);
108
102
  handleLabelUpdate(
109
103
  instance,
110
104
  mainData,
@@ -113,7 +107,7 @@ const Chart = ({
113
107
  normalizeLocale(locale)
114
108
  );
115
109
  },
116
- [mainData, canHover, locale]
110
+ [mainData, locale]
117
111
  );
118
112
 
119
113
  const chartHeight = isDesktop
@@ -14,11 +14,12 @@ export const getGridConfig = ({
14
14
  Y_SENTIMENT_LABEL_MOBILE_SIZE,
15
15
  Y_LABEL_SIZE_DESKTOP,
16
16
  Y_LABEL_SIZE_MOBILE,
17
- TOP_MARGIN_DESKTOP,
18
- TOP_MARGIN_MOBILE,
17
+ TOP_LABEL_SPACE_DESKTOP,
18
+ TOP_LABEL_SPACE_MOBILE,
19
19
  MAIN_HEIGHT_DESKTOP,
20
20
  MAIN_HEIGHT_MOBILE,
21
- MOBILE_TOOLTIP_HEIGHT,
21
+ TOOLTIP_HEIGHT_MOBILE,
22
+ TOOLTIP_HEIGHT_DESKTOP,
22
23
  } = CHART_CONFIG;
23
24
 
24
25
  const mainHeight = isDesktop ? MAIN_HEIGHT_DESKTOP : MAIN_HEIGHT_MOBILE;
@@ -26,7 +27,7 @@ export const getGridConfig = ({
26
27
  const position = {
27
28
  left: `${isDesktop ? Y_SENTIMENT_LABEL_DESKTOP_SIZE : Y_SENTIMENT_LABEL_MOBILE_SIZE}px`,
28
29
  right: `${isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE}px`,
29
- top: `${isDesktop ? TOP_MARGIN_DESKTOP : TOP_MARGIN_MOBILE + MOBILE_TOOLTIP_HEIGHT}px`,
30
+ top: `${isDesktop ? TOP_LABEL_SPACE_DESKTOP + TOOLTIP_HEIGHT_DESKTOP : TOP_LABEL_SPACE_MOBILE + TOOLTIP_HEIGHT_MOBILE}px`,
30
31
  height: `${mainHeight}px`,
31
32
  };
32
33
  return [
@@ -17,20 +17,29 @@ export const getGridLines = ({
17
17
  MAIN_HEIGHT_DESKTOP,
18
18
  MAIN_HEIGHT_MOBILE,
19
19
  X_LABEL_SIZE,
20
- MOBILE_TOOLTIP_HEIGHT,
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,
21
27
  } = CHART_CONFIG;
28
+
22
29
  const mainHeight = isDesktop ? MAIN_HEIGHT_DESKTOP : MAIN_HEIGHT_MOBILE;
23
30
  const ySentimentLabelSize = isDesktop
24
- ? CHART_CONFIG.Y_SENTIMENT_LABEL_DESKTOP_SIZE
25
- : CHART_CONFIG.Y_SENTIMENT_LABEL_MOBILE_SIZE;
31
+ ? Y_SENTIMENT_LABEL_DESKTOP_SIZE
32
+ : Y_SENTIMENT_LABEL_MOBILE_SIZE;
26
33
 
27
- const yLabelSize = isDesktop
28
- ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP
29
- : CHART_CONFIG.Y_LABEL_SIZE_MOBILE;
34
+ const yLabelSize = isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE;
30
35
 
31
36
  const topMargin = isDesktop
32
- ? CHART_CONFIG.TOP_MARGIN_DESKTOP
33
- : CHART_CONFIG.TOP_MARGIN_MOBILE + CHART_CONFIG.MOBILE_TOOLTIP_HEIGHT;
37
+ ? CHART_CONFIG.TOP_LABEL_SPACE_DESKTOP + TOOLTIP_HEIGHT_DESKTOP
38
+ : TOP_LABEL_SPACE_MOBILE + TOOLTIP_HEIGHT_MOBILE;
39
+
40
+ const tooltipHeight = isDesktop
41
+ ? TOOLTIP_HEIGHT_DESKTOP
42
+ : TOOLTIP_HEIGHT_MOBILE;
34
43
 
35
44
  return [
36
45
  // Top
@@ -134,11 +143,11 @@ export const getGridLines = ({
134
143
  // Mobile tooltip,
135
144
  {
136
145
  ...getLineCommons(isDark),
137
- top: MOBILE_TOOLTIP_HEIGHT - 2,
146
+ top: tooltipHeight - 3,
138
147
  shape: {
139
148
  x1: 0,
140
149
  y1: 0,
141
- x2: isDesktop ? 0 : WIDTH,
150
+ x2: WIDTH,
142
151
  y2: 0,
143
152
  },
144
153
  z: 30,
@@ -40,8 +40,8 @@ export const getLabelsConfig = ({
40
40
  const priceVerticalOffset = priceEstimatedWidth / 2;
41
41
 
42
42
  const topMargin = isDesktop
43
- ? CHART_CONFIG.TOP_MARGIN_DESKTOP
44
- : CHART_CONFIG.TOP_MARGIN_MOBILE + CHART_CONFIG.MOBILE_TOOLTIP_HEIGHT;
43
+ ? CHART_CONFIG.TOP_LABEL_SPACE_DESKTOP + CHART_CONFIG.TOOLTIP_HEIGHT_DESKTOP
44
+ : CHART_CONFIG.TOP_LABEL_SPACE_MOBILE + CHART_CONFIG.TOOLTIP_HEIGHT_MOBILE;
45
45
 
46
46
  const mainHeight = isDesktop
47
47
  ? CHART_CONFIG.MAIN_HEIGHT_DESKTOP
@@ -195,12 +195,16 @@ export const getLabelsConfig = ({
195
195
  type: 'text',
196
196
  z: 20,
197
197
  left: 'center',
198
- top: CHART_CONFIG.MOBILE_TOOLTIP_HEIGHT / 2 - 5,
198
+ top: isDesktop
199
+ ? CHART_CONFIG.TOOLTIP_HEIGHT_DESKTOP / 2 - 5
200
+ : CHART_CONFIG.TOOLTIP_HEIGHT_MOBILE / 2 - 5,
199
201
  silent: true,
200
202
  style: {
201
- fontSize: isDesktop ? 0 : 11,
203
+ fontSize: isDesktop ? 12 : 11,
202
204
  fill: textColor,
203
- text: isDesktop ? '' : labelCallback('tap_chart_to_see_more_details'),
205
+ text: isDesktop
206
+ ? labelCallback('hover_chart_to_see_more_details')
207
+ : labelCallback('tap_chart_to_see_more_details'),
204
208
  },
205
209
  },
206
210
  ];