@oanda/labs-crowd-view-widget 1.0.52 → 1.0.53

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 (134) hide show
  1. package/CHANGELOG.md +216 -0
  2. package/dist/main/CrowdViewWidget/Main.js +1 -5
  3. package/dist/main/CrowdViewWidget/Main.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/components/Chart/Chart.js +16 -6
  5. package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js +15 -6
  7. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js +69 -29
  9. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
  10. package/dist/main/CrowdViewWidget/components/Chart/types.js.map +1 -1
  11. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +49 -26
  12. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  13. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js +9 -10
  14. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
  15. package/dist/main/CrowdViewWidget/components/Chart/utils/index.js +0 -33
  16. package/dist/main/CrowdViewWidget/components/Chart/utils/index.js.map +1 -1
  17. package/dist/main/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js +54 -12
  18. package/dist/main/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js.map +1 -1
  19. package/dist/main/CrowdViewWidget/components/Chart/utils/processPriceCandles.js +49 -27
  20. package/dist/main/CrowdViewWidget/components/Chart/utils/processPriceCandles.js.map +1 -1
  21. package/dist/main/CrowdViewWidget/components/Chart/utils/processSentiments.js +32 -17
  22. package/dist/main/CrowdViewWidget/components/Chart/utils/processSentiments.js.map +1 -1
  23. package/dist/main/CrowdViewWidget/components/Chart/utils/validateData.js +8 -2
  24. package/dist/main/CrowdViewWidget/components/Chart/utils/validateData.js.map +1 -1
  25. package/dist/main/CrowdViewWidget/components/Legend/Legend.js +2 -3
  26. package/dist/main/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  27. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js +2 -2
  28. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  29. package/dist/main/CrowdViewWidget/constants.js +2 -6
  30. package/dist/main/CrowdViewWidget/constants.js.map +1 -1
  31. package/dist/main/gql/getOrderPositionBooks.js +1 -1
  32. package/dist/main/gql/getOrderPositionBooks.js.map +1 -1
  33. package/dist/main/gql/getPriceCandles.js +1 -1
  34. package/dist/main/gql/getPriceCandles.js.map +1 -1
  35. package/dist/main/gql/types/gql.js +2 -2
  36. package/dist/main/gql/types/gql.js.map +1 -1
  37. package/dist/main/gql/types/graphql.js +111 -18
  38. package/dist/main/gql/types/graphql.js.map +1 -1
  39. package/dist/module/CrowdViewWidget/Main.js +2 -6
  40. package/dist/module/CrowdViewWidget/Main.js.map +1 -1
  41. package/dist/module/CrowdViewWidget/components/Chart/Chart.js +17 -7
  42. package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  43. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js +15 -6
  44. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  45. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js +70 -30
  46. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
  47. package/dist/module/CrowdViewWidget/components/Chart/types.js.map +1 -1
  48. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +50 -27
  49. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  50. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js +10 -11
  51. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
  52. package/dist/module/CrowdViewWidget/components/Chart/utils/index.js +0 -3
  53. package/dist/module/CrowdViewWidget/components/Chart/utils/index.js.map +1 -1
  54. package/dist/module/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js +54 -12
  55. package/dist/module/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js.map +1 -1
  56. package/dist/module/CrowdViewWidget/components/Chart/utils/processPriceCandles.js +49 -27
  57. package/dist/module/CrowdViewWidget/components/Chart/utils/processPriceCandles.js.map +1 -1
  58. package/dist/module/CrowdViewWidget/components/Chart/utils/processSentiments.js +32 -17
  59. package/dist/module/CrowdViewWidget/components/Chart/utils/processSentiments.js.map +1 -1
  60. package/dist/module/CrowdViewWidget/components/Chart/utils/validateData.js +8 -2
  61. package/dist/module/CrowdViewWidget/components/Chart/utils/validateData.js.map +1 -1
  62. package/dist/module/CrowdViewWidget/components/Legend/Legend.js +2 -3
  63. package/dist/module/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  64. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js +2 -2
  65. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  66. package/dist/module/CrowdViewWidget/constants.js +1 -5
  67. package/dist/module/CrowdViewWidget/constants.js.map +1 -1
  68. package/dist/module/gql/getOrderPositionBooks.js +1 -1
  69. package/dist/module/gql/getOrderPositionBooks.js.map +1 -1
  70. package/dist/module/gql/getPriceCandles.js +1 -1
  71. package/dist/module/gql/getPriceCandles.js.map +1 -1
  72. package/dist/module/gql/types/gql.js +2 -2
  73. package/dist/module/gql/types/gql.js.map +1 -1
  74. package/dist/module/gql/types/graphql.js +111 -18
  75. package/dist/module/gql/types/graphql.js.map +1 -1
  76. package/dist/types/CrowdViewWidget/components/Chart/Chart.d.ts +1 -1
  77. package/dist/types/CrowdViewWidget/components/Chart/types.d.ts +28 -11
  78. package/dist/types/CrowdViewWidget/components/Chart/utils/chartUtils.d.ts +3 -4
  79. package/dist/types/CrowdViewWidget/components/Chart/utils/index.d.ts +0 -3
  80. package/dist/types/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.d.ts +10 -7
  81. package/dist/types/CrowdViewWidget/components/Chart/utils/processPriceCandles.d.ts +6 -21
  82. package/dist/types/CrowdViewWidget/components/Chart/utils/processSentiments.d.ts +5 -2
  83. package/dist/types/CrowdViewWidget/components/Chart/utils/validateData.d.ts +1 -1
  84. package/dist/types/CrowdViewWidget/components/Legend/Legend.d.ts +2 -2
  85. package/dist/types/CrowdViewWidget/components/Legend/LegendBar.d.ts +1 -1
  86. package/dist/types/CrowdViewWidget/constants.d.ts +1 -5
  87. package/dist/types/gql/types/gql.d.ts +6 -4
  88. package/dist/types/gql/types/graphql.d.ts +30 -11
  89. package/package.json +3 -3
  90. package/src/CrowdViewWidget/Main.tsx +2 -4
  91. package/src/CrowdViewWidget/components/Chart/Chart.tsx +15 -6
  92. package/src/CrowdViewWidget/components/Chart/ChartWithData.tsx +21 -4
  93. package/src/CrowdViewWidget/components/Chart/chartOptions.ts +78 -30
  94. package/src/CrowdViewWidget/components/Chart/types.ts +30 -19
  95. package/src/CrowdViewWidget/components/Chart/useCrowdViewData.ts +82 -65
  96. package/src/CrowdViewWidget/components/Chart/utils/chartUtils.ts +32 -20
  97. package/src/CrowdViewWidget/components/Chart/utils/index.ts +0 -3
  98. package/src/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.ts +84 -22
  99. package/src/CrowdViewWidget/components/Chart/utils/processPriceCandles.ts +52 -38
  100. package/src/CrowdViewWidget/components/Chart/utils/processSentiments.ts +45 -32
  101. package/src/CrowdViewWidget/components/Chart/utils/validateData.ts +10 -2
  102. package/src/CrowdViewWidget/components/Legend/Legend.tsx +4 -5
  103. package/src/CrowdViewWidget/components/Legend/LegendBar.tsx +3 -3
  104. package/src/CrowdViewWidget/constants.ts +1 -6
  105. package/src/gql/getOrderPositionBooks.ts +13 -5
  106. package/src/gql/getPriceCandles.ts +1 -0
  107. package/src/gql/types/gql.ts +6 -6
  108. package/src/gql/types/graphql.ts +98 -16
  109. package/test/components/Chart/utils/chartUtils.test.ts +32 -14
  110. package/test/components/Chart/utils/processSentiments.test.ts +137 -29
  111. package/test/utils/processOrderPositionBooks.test.ts +201 -84
  112. package/test/utils/processPriceCandles.test.ts +93 -67
  113. package/test/utils/validateData.test.ts +136 -38
  114. package/dist/main/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js +0 -37
  115. package/dist/main/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js.map +0 -1
  116. package/dist/main/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js +0 -14
  117. package/dist/main/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js.map +0 -1
  118. package/dist/main/CrowdViewWidget/components/Chart/utils/processBuckets.js +0 -29
  119. package/dist/main/CrowdViewWidget/components/Chart/utils/processBuckets.js.map +0 -1
  120. package/dist/module/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js +0 -29
  121. package/dist/module/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js.map +0 -1
  122. package/dist/module/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js +0 -7
  123. package/dist/module/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js.map +0 -1
  124. package/dist/module/CrowdViewWidget/components/Chart/utils/processBuckets.js +0 -22
  125. package/dist/module/CrowdViewWidget/components/Chart/utils/processBuckets.js.map +0 -1
  126. package/dist/types/CrowdViewWidget/components/Chart/utils/aggregateBuckets.d.ts +0 -2
  127. package/dist/types/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.d.ts +0 -3
  128. package/dist/types/CrowdViewWidget/components/Chart/utils/processBuckets.d.ts +0 -3
  129. package/src/CrowdViewWidget/components/Chart/utils/aggregateBuckets.ts +0 -44
  130. package/src/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.ts +0 -13
  131. package/src/CrowdViewWidget/components/Chart/utils/processBuckets.ts +0 -43
  132. package/test/utils/aggregateBuckets.test.ts +0 -82
  133. package/test/utils/getTargetBucketWidth.test.ts +0 -37
  134. package/test/utils/processBuckets.test.ts +0 -153
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["cn","Select","Size","Tabs","useLayoutProvider","useLocale","React","useEffect","useMemo","useState","BookType","ChartWithData","Legend","granularitySelectConfig","navigationConfig","getInstrumentConfigForDivision","Main","_ref","division","lang","size","isDark","isDesktop","DESKTOP","bookType","setBookType","Order","granularitySelectConfigWithLang","map","opt","_objectSpread","label","instrumentSelectConfigWithDivision","instrument","setInstrument","granularity","setGranularity","createElement","Fragment","className","mobileFullWidth","activeTab","handleClick","e","currentTarget","value","items","labelCallback","options","searchPlaceholder","selectLabel","selectedOption","setSelectedOption","val","id"],"sources":["../../../src/CrowdViewWidget/Main.tsx"],"sourcesContent":["import {\n cn,\n Select,\n Size,\n Tabs,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Granularity } from '../gql/types/graphql';\nimport { BookType } from '../gql/types/graphql';\nimport { ChartWithData, Legend } from './components';\nimport { granularitySelectConfig, navigationConfig } from './selectConfig';\nimport type { InstrumentId, MainProps } from './types';\nimport { getInstrumentConfigForDivision } from './utils/instrumentUtils';\n\nconst Main = ({ division }: MainProps) => {\n const { lang } = useLocale();\n const { size, isDark } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const [bookType, setBookType] = useState(BookType.Order);\n\n const granularitySelectConfigWithLang = useMemo(\n () =>\n granularitySelectConfig.map((opt) => ({\n ...opt,\n label: lang(opt.label),\n })),\n [lang]\n );\n\n const instrumentSelectConfigWithDivision =\n getInstrumentConfigForDivision(division);\n const [instrument, setInstrument] = useState(\n instrumentSelectConfigWithDivision[0]\n );\n\n const [granularity, setGranularity] = useState(\n granularitySelectConfigWithLang[0]\n );\n\n useEffect(() => {\n setGranularity(granularitySelectConfigWithLang[0]);\n }, [granularitySelectConfigWithLang]);\n\n return (\n <>\n {size && (\n <div\n className=\"lw-text-sm lw-tracking-normal\"\n data-testid=\"crowd-view-widget\"\n >\n <div>\n <Tabs\n mobileFullWidth\n activeTab={bookType}\n handleClick={(e) =>\n setBookType(e.currentTarget.value as BookType)\n }\n items={navigationConfig}\n labelCallback={lang}\n />\n <div\n className={cn('lw-mb-6 lw-mt-12', {\n 'lw-flex': isDesktop,\n })}\n >\n <div\n className={cn('lw-mr-2', {\n 'lw-w-full lw-mb-2': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={instrumentSelectConfigWithDivision}\n searchPlaceholder={lang('search')}\n selectLabel={lang('instrument')}\n selectedOption={instrument}\n setSelectedOption={(val) =>\n setInstrument(val as { id: InstrumentId; label: string })\n }\n />\n </div>\n <div\n className={cn({\n 'lw-w-full': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={granularitySelectConfigWithLang}\n searchPlaceholder={lang('search')}\n selectLabel={lang('granularity')}\n selectedOption={granularity}\n setSelectedOption={(val) =>\n setGranularity(val as { id: Granularity; label: string })\n }\n />\n </div>\n </div>\n </div>\n <ChartWithData\n bookType={bookType}\n division={division}\n granularity={granularity.id}\n instrument={instrument.id}\n />\n\n <Legend bookType={bookType} isDark={isDark} />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Main.js","names":["cn","Select","Size","Tabs","useLayoutProvider","useLocale","React","useEffect","useMemo","useState","BookType","ChartWithData","granularitySelectConfig","navigationConfig","getInstrumentConfigForDivision","Main","_ref","division","lang","size","isDesktop","DESKTOP","bookType","setBookType","Order","granularitySelectConfigWithLang","map","opt","_objectSpread","label","instrumentSelectConfigWithDivision","instrument","setInstrument","granularity","setGranularity","createElement","Fragment","className","mobileFullWidth","activeTab","handleClick","e","currentTarget","value","items","labelCallback","options","searchPlaceholder","selectLabel","selectedOption","setSelectedOption","val","id"],"sources":["../../../src/CrowdViewWidget/Main.tsx"],"sourcesContent":["import {\n cn,\n Select,\n Size,\n Tabs,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Granularity } from '../gql/types/graphql';\nimport { BookType } from '../gql/types/graphql';\nimport { ChartWithData } from './components';\nimport { granularitySelectConfig, navigationConfig } from './selectConfig';\nimport type { InstrumentId, MainProps } from './types';\nimport { getInstrumentConfigForDivision } from './utils/instrumentUtils';\n\nconst Main = ({ division }: MainProps) => {\n const { lang } = useLocale();\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const [bookType, setBookType] = useState(BookType.Order);\n\n const granularitySelectConfigWithLang = useMemo(\n () =>\n granularitySelectConfig.map((opt) => ({\n ...opt,\n label: lang(opt.label),\n })),\n [lang]\n );\n\n const instrumentSelectConfigWithDivision =\n getInstrumentConfigForDivision(division);\n const [instrument, setInstrument] = useState(\n instrumentSelectConfigWithDivision[0]\n );\n\n const [granularity, setGranularity] = useState(\n granularitySelectConfigWithLang[0]\n );\n\n useEffect(() => {\n setGranularity(granularitySelectConfigWithLang[0]);\n }, [granularitySelectConfigWithLang]);\n\n return (\n <>\n {size && (\n <div\n className=\"lw-text-sm lw-tracking-normal\"\n data-testid=\"crowd-view-widget\"\n >\n <div>\n <Tabs\n mobileFullWidth\n activeTab={bookType}\n handleClick={(e) =>\n setBookType(e.currentTarget.value as BookType)\n }\n items={navigationConfig}\n labelCallback={lang}\n />\n <div\n className={cn('lw-mb-6 lw-mt-12', {\n 'lw-flex': isDesktop,\n })}\n >\n <div\n className={cn('lw-mr-2', {\n 'lw-w-full lw-mb-2': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={instrumentSelectConfigWithDivision}\n searchPlaceholder={lang('search')}\n selectLabel={lang('instrument')}\n selectedOption={instrument}\n setSelectedOption={(val) =>\n setInstrument(val as { id: InstrumentId; label: string })\n }\n />\n </div>\n <div\n className={cn({\n 'lw-w-full': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={granularitySelectConfigWithLang}\n searchPlaceholder={lang('search')}\n selectLabel={lang('granularity')}\n selectedOption={granularity}\n setSelectedOption={(val) =>\n setGranularity(val as { id: Granularity; label: string })\n }\n />\n </div>\n </div>\n </div>\n <ChartWithData\n bookType={bookType}\n division={division}\n granularity={granularity.id}\n instrument={instrument.id}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
@@ -1,19 +1,20 @@
1
1
  import { BaseChart, getChartTheme, Theme, useLayoutProvider } from '@oanda/labs-widget-common';
2
2
  import { useLocale } from '@oanda/mono-i18n';
3
3
  import { CandlestickChart, CustomChart, LineChart } from 'echarts/charts';
4
- import { DataZoomInsideComponent, GraphicComponent, GridSimpleComponent, MarkAreaComponent, MarkPointComponent, TooltipComponent, VisualMapComponent } from 'echarts/components';
4
+ import { DatasetComponent, DataZoomInsideComponent, GraphicComponent, GridSimpleComponent, MarkAreaComponent, MarkPointComponent, TooltipComponent, VisualMapComponent } from 'echarts/components';
5
5
  import * as echarts from 'echarts/core';
6
6
  import { CanvasRenderer } from 'echarts/renderers';
7
7
  import React from 'react';
8
8
  import { CHART_CONFIG_CALCULATED } from '../../constants';
9
9
  import { getOption } from './chartOptions';
10
10
  import { formatXAxisLabel, getLabelData, isDifferenceGreaterThanTwoWeeks } from './utils/chartUtils';
11
- echarts.use([GridSimpleComponent, GraphicComponent, CanvasRenderer, DataZoomInsideComponent, CustomChart, TooltipComponent, CandlestickChart, MarkPointComponent, MarkAreaComponent, LineChart, VisualMapComponent]);
11
+ echarts.use([GridSimpleComponent, GraphicComponent, CanvasRenderer, DataZoomInsideComponent, CustomChart, TooltipComponent, CandlestickChart, MarkPointComponent, MarkAreaComponent, LineChart, VisualMapComponent, DatasetComponent]);
12
12
  echarts.registerTheme('dark_theme', getChartTheme(Theme.Dark));
13
13
  echarts.registerTheme('light_theme', getChartTheme(Theme.Light));
14
14
  const Chart = _ref => {
15
15
  let {
16
- data,
16
+ mainData,
17
+ additionalData,
17
18
  isDesktop
18
19
  } = _ref;
19
20
  const {
@@ -27,7 +28,13 @@ const Chart = _ref => {
27
28
  echarts: echarts,
28
29
  isDark: isDark,
29
30
  lazyUpdate: true,
30
- option: getOption(data, isDark, isDesktop, lang),
31
+ option: getOption({
32
+ mainData,
33
+ additionalData,
34
+ isDark,
35
+ isDesktop,
36
+ labelCallback: lang
37
+ }),
31
38
  opts: {
32
39
  renderer: 'canvas'
33
40
  },
@@ -37,6 +44,9 @@ const Chart = _ref => {
37
44
  if (!((_params$batch = params.batch) !== null && _params$batch !== void 0 && _params$batch[0])) {
38
45
  return;
39
46
  }
47
+ const {
48
+ dates
49
+ } = mainData;
40
50
  const batchItem = params.batch[0];
41
51
  const {
42
52
  start,
@@ -71,14 +81,14 @@ const Chart = _ref => {
71
81
  filterMode: 'filter'
72
82
  });
73
83
  }
74
- if (!data.xAxisData[startValue] || !data.xAxisData[endValue]) {
84
+ if (!dates[startValue] || !dates[endValue]) {
75
85
  return;
76
86
  }
77
- const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(data.xAxisData[startValue], data.xAxisData[endValue]);
87
+ const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(dates[startValue], dates[endValue]);
78
88
  const wasGreaterThanTwoWeeks = Array.isArray(xAxis) && xAxis.length > 0 && ((_ = xAxis[0]) === null || _ === void 0 ? void 0 : _.name) === 'xAxis-greater-than-two-weeks';
79
89
  if (isGreaterThanTwoWeeks !== wasGreaterThanTwoWeeks) {
80
90
  const labelsData = getLabelData({
81
- xAxisData: data.xAxisData,
91
+ dates,
82
92
  isGreaterThanTwoWeeks
83
93
  });
84
94
  instance.setOption({
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","names":["BaseChart","getChartTheme","Theme","useLayoutProvider","useLocale","CandlestickChart","CustomChart","LineChart","DataZoomInsideComponent","GraphicComponent","GridSimpleComponent","MarkAreaComponent","MarkPointComponent","TooltipComponent","VisualMapComponent","echarts","CanvasRenderer","React","CHART_CONFIG_CALCULATED","getOption","formatXAxisLabel","getLabelData","isDifferenceGreaterThanTwoWeeks","use","registerTheme","Dark","Light","Chart","_ref","data","isDesktop","isDark","lang","createElement","chartHeight","FULL_HEIGHT","lazyUpdate","option","opts","renderer","onEvents","datazoom","params","instance","_params$batch","_","batch","batchItem","start","end","dataZoom","xAxis","Array","isArray","length","startValue","endValue","dataZoomId","dispatchAction","type","filterMode","xAxisData","isGreaterThanTwoWeeks","wasGreaterThanTwoWeeks","name","labelsData","setOption","id","axisLabel","formatter","value","series","markPoint"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/Chart.tsx"],"sourcesContent":["import {\n BaseChart,\n getChartTheme,\n Theme,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport type { EChartsType } from 'echarts';\nimport { CandlestickChart, CustomChart, LineChart } from 'echarts/charts';\nimport {\n DataZoomInsideComponent,\n GraphicComponent,\n GridSimpleComponent,\n MarkAreaComponent,\n MarkPointComponent,\n TooltipComponent,\n VisualMapComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport React from 'react';\n\nimport { CHART_CONFIG_CALCULATED } from '../../constants';\nimport { getOption } from './chartOptions';\nimport type {\n ChartProps,\n DataZoomArray,\n DataZoomEvent,\n XAxisArray,\n} from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\n\necharts.use([\n GridSimpleComponent,\n GraphicComponent,\n CanvasRenderer,\n DataZoomInsideComponent,\n CustomChart,\n TooltipComponent,\n CandlestickChart,\n MarkPointComponent,\n MarkAreaComponent,\n LineChart,\n VisualMapComponent,\n]);\n\necharts.registerTheme('dark_theme', getChartTheme(Theme.Dark));\necharts.registerTheme('light_theme', getChartTheme(Theme.Light));\n\nconst Chart = ({ data, isDesktop }: ChartProps) => {\n const { isDark } = useLayoutProvider();\n const { lang } = useLocale();\n\n return (\n <BaseChart\n chartHeight={CHART_CONFIG_CALCULATED.FULL_HEIGHT}\n echarts={echarts}\n isDark={isDark}\n lazyUpdate={true}\n option={getOption(data, isDark, isDesktop, lang)}\n opts={{ renderer: 'canvas' }}\n onEvents={{\n datazoom: (params: DataZoomEvent, instance: EChartsType) => {\n if (!params.batch?.[0]) {\n return;\n }\n\n const batchItem = params.batch[0];\n const { start, end } = batchItem;\n\n const { dataZoom, xAxis } = instance.getOption();\n if (\n !Array.isArray(dataZoom) ||\n dataZoom.length === 0 ||\n !dataZoom[0] ||\n typeof dataZoom[0].startValue !== 'number' ||\n typeof dataZoom[0].endValue !== 'number'\n ) {\n return;\n }\n\n const { startValue, endValue } = dataZoom[0] as DataZoomArray[0];\n\n if (batchItem.dataZoomId === 'main') {\n instance.dispatchAction({\n type: 'dataZoom',\n dataZoomId: 'sentiment',\n start,\n end,\n filterMode: 'none',\n });\n }\n\n if (batchItem.dataZoomId === 'sentiment') {\n instance.dispatchAction({\n type: 'dataZoom',\n dataZoomId: 'main',\n start,\n end,\n filterMode: 'filter',\n });\n }\n\n if (!data.xAxisData[startValue] || !data.xAxisData[endValue]) {\n return;\n }\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n data.xAxisData[startValue],\n data.xAxisData[endValue]\n );\n\n const wasGreaterThanTwoWeeks =\n Array.isArray(xAxis) &&\n xAxis.length > 0 &&\n (xAxis as XAxisArray)[0]?.name === 'xAxis-greater-than-two-weeks';\n\n if (isGreaterThanTwoWeeks !== wasGreaterThanTwoWeeks) {\n const labelsData = getLabelData({\n xAxisData: data.xAxisData,\n isGreaterThanTwoWeeks,\n });\n\n instance.setOption({\n xAxis: {\n id: 'main-xAxis',\n name: isGreaterThanTwoWeeks\n ? 'xAxis-greater-than-two-weeks'\n : 'xAxis-less-than-two-weeks',\n axisLabel: {\n formatter: (value: string) =>\n formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n series: [\n {\n id: 'candlestick',\n markPoint: {\n data: labelsData,\n },\n },\n ],\n });\n }\n },\n }}\n />\n );\n};\n\nexport { Chart };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Chart.js","names":["BaseChart","getChartTheme","Theme","useLayoutProvider","useLocale","CandlestickChart","CustomChart","LineChart","DatasetComponent","DataZoomInsideComponent","GraphicComponent","GridSimpleComponent","MarkAreaComponent","MarkPointComponent","TooltipComponent","VisualMapComponent","echarts","CanvasRenderer","React","CHART_CONFIG_CALCULATED","getOption","formatXAxisLabel","getLabelData","isDifferenceGreaterThanTwoWeeks","use","registerTheme","Dark","Light","Chart","_ref","mainData","additionalData","isDesktop","isDark","lang","createElement","chartHeight","FULL_HEIGHT","lazyUpdate","option","labelCallback","opts","renderer","onEvents","datazoom","params","instance","_params$batch","_","batch","dates","batchItem","start","end","dataZoom","xAxis","Array","isArray","length","startValue","endValue","dataZoomId","dispatchAction","type","filterMode","isGreaterThanTwoWeeks","wasGreaterThanTwoWeeks","name","labelsData","setOption","id","axisLabel","formatter","value","series","markPoint","data"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/Chart.tsx"],"sourcesContent":["import {\n BaseChart,\n getChartTheme,\n Theme,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport type { EChartsType } from 'echarts';\nimport { CandlestickChart, CustomChart, LineChart } from 'echarts/charts';\nimport {\n DatasetComponent,\n DataZoomInsideComponent,\n GraphicComponent,\n GridSimpleComponent,\n MarkAreaComponent,\n MarkPointComponent,\n TooltipComponent,\n VisualMapComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport React from 'react';\n\nimport { CHART_CONFIG_CALCULATED } from '../../constants';\nimport { getOption } from './chartOptions';\nimport type {\n ChartProps,\n DataZoomArray,\n DataZoomEvent,\n XAxisArray,\n} from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\n\necharts.use([\n GridSimpleComponent,\n GraphicComponent,\n CanvasRenderer,\n DataZoomInsideComponent,\n CustomChart,\n TooltipComponent,\n CandlestickChart,\n MarkPointComponent,\n MarkAreaComponent,\n LineChart,\n VisualMapComponent,\n DatasetComponent,\n]);\n\necharts.registerTheme('dark_theme', getChartTheme(Theme.Dark));\necharts.registerTheme('light_theme', getChartTheme(Theme.Light));\n\nconst Chart = ({ mainData, additionalData, isDesktop }: ChartProps) => {\n const { isDark } = useLayoutProvider();\n const { lang } = useLocale();\n\n return (\n <BaseChart\n chartHeight={CHART_CONFIG_CALCULATED.FULL_HEIGHT}\n echarts={echarts}\n isDark={isDark}\n lazyUpdate={true}\n option={getOption({\n mainData,\n additionalData,\n isDark,\n isDesktop,\n labelCallback: lang,\n })}\n opts={{ renderer: 'canvas' }}\n onEvents={{\n datazoom: (params: DataZoomEvent, instance: EChartsType) => {\n if (!params.batch?.[0]) {\n return;\n }\n\n const { dates } = mainData;\n const batchItem = params.batch[0];\n const { start, end } = batchItem;\n\n const { dataZoom, xAxis } = instance.getOption();\n if (\n !Array.isArray(dataZoom) ||\n dataZoom.length === 0 ||\n !dataZoom[0] ||\n typeof dataZoom[0].startValue !== 'number' ||\n typeof dataZoom[0].endValue !== 'number'\n ) {\n return;\n }\n\n const { startValue, endValue } = dataZoom[0] as DataZoomArray[0];\n\n if (batchItem.dataZoomId === 'main') {\n instance.dispatchAction({\n type: 'dataZoom',\n dataZoomId: 'sentiment',\n start,\n end,\n filterMode: 'none',\n });\n }\n\n if (batchItem.dataZoomId === 'sentiment') {\n instance.dispatchAction({\n type: 'dataZoom',\n dataZoomId: 'main',\n start,\n end,\n filterMode: 'filter',\n });\n }\n\n if (!dates[startValue] || !dates[endValue]) {\n return;\n }\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n dates[startValue],\n dates[endValue]\n );\n\n const wasGreaterThanTwoWeeks =\n Array.isArray(xAxis) &&\n xAxis.length > 0 &&\n (xAxis as XAxisArray)[0]?.name === 'xAxis-greater-than-two-weeks';\n\n if (isGreaterThanTwoWeeks !== wasGreaterThanTwoWeeks) {\n const labelsData = getLabelData({\n dates,\n isGreaterThanTwoWeeks,\n });\n\n instance.setOption({\n xAxis: {\n id: 'main-xAxis',\n name: isGreaterThanTwoWeeks\n ? 'xAxis-greater-than-two-weeks'\n : 'xAxis-less-than-two-weeks',\n axisLabel: {\n formatter: (value: string) =>\n formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n series: [\n {\n id: 'candlestick',\n markPoint: {\n data: labelsData,\n },\n },\n ],\n });\n }\n },\n }}\n />\n );\n};\n\nexport { Chart };\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import { ChartError, Size, Spinner, SpinnerSize, useLayoutProvider } from '@oanda/labs-widget-common';
2
2
  import React from 'react';
3
+ import { Legend } from '../Legend';
3
4
  import { Chart } from './Chart';
4
5
  import { useCrowdViewData } from './useCrowdViewData';
5
6
  const ChartWithData = _ref => {
@@ -10,11 +11,13 @@ const ChartWithData = _ref => {
10
11
  granularity
11
12
  } = _ref;
12
13
  const {
13
- size
14
+ size,
15
+ isDark
14
16
  } = useLayoutProvider();
15
17
  const isDesktop = size === Size.DESKTOP;
16
18
  const {
17
- data,
19
+ mainData,
20
+ additionalData,
18
21
  loading,
19
22
  error
20
23
  } = useCrowdViewData({
@@ -31,12 +34,18 @@ const ChartWithData = _ref => {
31
34
  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"
32
35
  }, React.createElement(Spinner, {
33
36
  size: SpinnerSize.lg
34
- })), !loading && !error && !!data && React.createElement("div", {
37
+ })), !loading && !error && !!mainData && !!additionalData && React.createElement("div", {
35
38
  className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full"
36
39
  }, React.createElement(Chart, {
37
- data: data,
38
- isDesktop: isDesktop
39
- }))));
40
+ additionalData: additionalData,
41
+ isDesktop: isDesktop,
42
+ mainData: mainData
43
+ }))), React.createElement(Legend, {
44
+ bookType: bookType,
45
+ isDark: isDark,
46
+ longValues: [additionalData === null || additionalData === void 0 ? void 0 : additionalData.sentimentThresholdMin, additionalData === null || additionalData === void 0 ? void 0 : additionalData.sentimentThresholdMax],
47
+ shortValues: [additionalData === null || additionalData === void 0 ? void 0 : additionalData.sentimentThresholdMin, additionalData === null || additionalData === void 0 ? void 0 : additionalData.sentimentThresholdMax]
48
+ }));
40
49
  };
41
50
  export { ChartWithData };
42
51
  //# sourceMappingURL=ChartWithData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartWithData.js","names":["ChartError","Size","Spinner","SpinnerSize","useLayoutProvider","React","Chart","useCrowdViewData","ChartWithData","_ref","instrument","bookType","division","granularity","size","isDesktop","DESKTOP","data","loading","error","createElement","Fragment","className","lg"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/ChartWithData.tsx"],"sourcesContent":["import {\n ChartError,\n Size,\n Spinner,\n SpinnerSize,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { Chart } from './Chart';\nimport type { ChartWithDataProps } from './types';\nimport { useCrowdViewData } from './useCrowdViewData';\n\nconst ChartWithData = ({\n instrument,\n bookType,\n division,\n granularity,\n}: ChartWithDataProps) => {\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const { data, loading, error } = useCrowdViewData({\n instrument,\n bookType,\n division,\n granularity,\n });\n\n return (\n <>\n <div className=\"lw-relative lw-h-[610px] lw-w-full\">\n {error && (\n <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\">\n <ChartError />\n </div>\n )}\n {loading && (\n <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\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {!loading && !error && !!data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data} isDesktop={isDesktop} />\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport { ChartWithData };\n"],"mappings":"AAAA,SACEA,UAAU,EACVC,IAAI,EACJC,OAAO,EACPC,WAAW,EACXC,iBAAiB,QACZ,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAMC,aAAa,GAAGC,IAAA,IAKI;EAAA,IALH;IACrBC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACkB,CAAC,GAAAJ,IAAA;EACnB,MAAM;IAAEK;EAAK,CAAC,GAAGV,iBAAiB,CAAC,CAAC;EACpC,MAAMW,SAAS,GAAGD,IAAI,KAAKb,IAAI,CAACe,OAAO;EAEvC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGZ,gBAAgB,CAAC;IAChDG,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,OACER,KAAA,CAAAe,aAAA,CAAAf,KAAA,CAAAgB,QAAA,QACEhB,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAAoC,GAChDH,KAAK,IACJd,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAAiJ,GAC9JjB,KAAA,CAAAe,aAAA,CAACpB,UAAU,MAAE,CACV,CACN,EACAkB,OAAO,IACNb,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAAiJ,GAC9JjB,KAAA,CAAAe,aAAA,CAAClB,OAAO;IAACY,IAAI,EAAEX,WAAW,CAACoB;EAAG,CAAE,CAC7B,CACN,EACA,CAACL,OAAO,IAAI,CAACC,KAAK,IAAI,CAAC,CAACF,IAAI,IAC3BZ,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAA4D,GACzEjB,KAAA,CAAAe,aAAA,CAACd,KAAK;IAACW,IAAI,EAAEA,IAAK;IAACF,SAAS,EAAEA;EAAU,CAAE,CACvC,CAEJ,CACL,CAAC;AAEP,CAAC;AAED,SAASP,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"ChartWithData.js","names":["ChartError","Size","Spinner","SpinnerSize","useLayoutProvider","React","Legend","Chart","useCrowdViewData","ChartWithData","_ref","instrument","bookType","division","granularity","size","isDark","isDesktop","DESKTOP","mainData","additionalData","loading","error","createElement","Fragment","className","lg","longValues","sentimentThresholdMin","sentimentThresholdMax","shortValues"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/ChartWithData.tsx"],"sourcesContent":["import {\n ChartError,\n Size,\n Spinner,\n SpinnerSize,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { Legend } from '../Legend';\nimport { Chart } from './Chart';\nimport type { ChartWithDataProps } from './types';\nimport { useCrowdViewData } from './useCrowdViewData';\n\nconst ChartWithData = ({\n instrument,\n bookType,\n division,\n granularity,\n}: ChartWithDataProps) => {\n const { size, isDark } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const { mainData, additionalData, loading, error } = useCrowdViewData({\n instrument,\n bookType,\n division,\n granularity,\n });\n\n return (\n <>\n <div className=\"lw-relative lw-h-[610px] lw-w-full\">\n {error && (\n <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\">\n <ChartError />\n </div>\n )}\n {loading && (\n <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\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {!loading && !error && !!mainData && !!additionalData && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart\n additionalData={additionalData}\n isDesktop={isDesktop}\n mainData={mainData}\n />\n </div>\n )}\n </div>\n <Legend\n bookType={bookType}\n isDark={isDark}\n longValues={[\n additionalData?.sentimentThresholdMin,\n additionalData?.sentimentThresholdMax,\n ]}\n shortValues={[\n additionalData?.sentimentThresholdMin,\n additionalData?.sentimentThresholdMax,\n ]}\n />\n </>\n );\n};\n\nexport { ChartWithData };\n"],"mappings":"AAAA,SACEA,UAAU,EACVC,IAAI,EACJC,OAAO,EACPC,WAAW,EACXC,iBAAiB,QACZ,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAMC,aAAa,GAAGC,IAAA,IAKI;EAAA,IALH;IACrBC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACkB,CAAC,GAAAJ,IAAA;EACnB,MAAM;IAAEK,IAAI;IAAEC;EAAO,CAAC,GAAGZ,iBAAiB,CAAC,CAAC;EAC5C,MAAMa,SAAS,GAAGF,IAAI,KAAKd,IAAI,CAACiB,OAAO;EAEvC,MAAM;IAAEC,QAAQ;IAAEC,cAAc;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGd,gBAAgB,CAAC;IACpEG,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,OACET,KAAA,CAAAkB,aAAA,CAAAlB,KAAA,CAAAmB,QAAA,QACEnB,KAAA,CAAAkB,aAAA;IAAKE,SAAS,EAAC;EAAoC,GAChDH,KAAK,IACJjB,KAAA,CAAAkB,aAAA;IAAKE,SAAS,EAAC;EAAiJ,GAC9JpB,KAAA,CAAAkB,aAAA,CAACvB,UAAU,MAAE,CACV,CACN,EACAqB,OAAO,IACNhB,KAAA,CAAAkB,aAAA;IAAKE,SAAS,EAAC;EAAiJ,GAC9JpB,KAAA,CAAAkB,aAAA,CAACrB,OAAO;IAACa,IAAI,EAAEZ,WAAW,CAACuB;EAAG,CAAE,CAC7B,CACN,EACA,CAACL,OAAO,IAAI,CAACC,KAAK,IAAI,CAAC,CAACH,QAAQ,IAAI,CAAC,CAACC,cAAc,IACnDf,KAAA,CAAAkB,aAAA;IAAKE,SAAS,EAAC;EAA4D,GACzEpB,KAAA,CAAAkB,aAAA,CAAChB,KAAK;IACJa,cAAc,EAAEA,cAAe;IAC/BH,SAAS,EAAEA,SAAU;IACrBE,QAAQ,EAAEA;EAAS,CACpB,CACE,CAEJ,CAAC,EACNd,KAAA,CAAAkB,aAAA,CAACjB,MAAM;IACLM,QAAQ,EAAEA,QAAS;IACnBI,MAAM,EAAEA,MAAO;IACfW,UAAU,EAAE,CACVP,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEQ,qBAAqB,EACrCR,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAES,qBAAqB,CACrC;IACFC,WAAW,EAAE,CACXV,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEQ,qBAAqB,EACrCR,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAES,qBAAqB;EACrC,CACH,CACD,CAAC;AAEP,CAAC;AAED,SAASpB,aAAa","ignoreList":[]}
@@ -1,18 +1,32 @@
1
1
  import chroma from 'chroma-js';
2
- import { CHART_CONFIG, CHART_CONFIG_CALCULATED } from '../../constants';
2
+ import { BUCKET_CONFIG, CHART_CONFIG, CHART_CONFIG_CALCULATED } from '../../constants';
3
3
  import { formatXAxisLabel, getLabelData, getRectColor, getTooltipFormatter, isDifferenceGreaterThanTwoWeeks } from './utils/chartUtils';
4
4
  import { getChartStyles } from './utils/getChartStyles';
5
5
  import { getGridLines } from './utils/getGridLines';
6
- export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
6
+ export const getOption = _ref => {
7
7
  let {
8
- xAxisData,
9
- candlesSeriesData,
10
- orderPositionBooks,
11
- bucketWidth,
12
- buckets,
13
- precision,
14
- bookType,
15
- sentiments
8
+ mainData: {
9
+ dates,
10
+ candlesOpen,
11
+ candlesClose,
12
+ candlesLow,
13
+ candlesHigh,
14
+ bookPrices,
15
+ bookIndexes,
16
+ sentimentShorts,
17
+ sentimentLongs
18
+ },
19
+ additionalData: {
20
+ bucketWidth,
21
+ buckets,
22
+ displayPrecision,
23
+ bookType,
24
+ sentimentThresholdMin,
25
+ sentimentThresholdMax
26
+ },
27
+ isDark,
28
+ isDesktop,
29
+ labelCallback
16
30
  } = _ref;
17
31
  let selectedPrice;
18
32
  const {
@@ -24,10 +38,10 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
24
38
  tooltipLinesColor,
25
39
  sentimentLabelColor
26
40
  } = getChartStyles(isDark);
27
- const visibleXAxisData = xAxisData.slice(xAxisData.length * CHART_CONFIG.INITIAL_START_ZOOM / 100, xAxisData.length * CHART_CONFIG.INITIAL_END_ZOOM / 100);
41
+ const visibleXAxisData = dates.slice(dates.length * CHART_CONFIG.INITIAL_START_ZOOM / 100, dates.length * CHART_CONFIG.INITIAL_END_ZOOM / 100);
28
42
  const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(visibleXAxisData[0], visibleXAxisData[visibleXAxisData.length - 1]);
29
43
  const labelsData = getLabelData({
30
- xAxisData,
44
+ dates,
31
45
  isGreaterThanTwoWeeks
32
46
  });
33
47
  const gridMainLines = getGridLines({
@@ -68,7 +82,7 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
68
82
  formatter: params => {
69
83
  if (params.axisDimension === 'y' && params.axisIndex === 0) {
70
84
  selectedPrice = Number(params.value);
71
- return " ".concat(Number(params.value).toFixed(precision), " ");
85
+ return " ".concat(Number(params.value).toFixed(displayPrecision), " ");
72
86
  }
73
87
  return null;
74
88
  }
@@ -81,7 +95,6 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
81
95
  bucketWidth,
82
96
  selectedPrice,
83
97
  labelCallback,
84
- precision,
85
98
  bookType
86
99
  })
87
100
  },
@@ -92,7 +105,6 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
92
105
  fontSize: 0
93
106
  },
94
107
  id: 'main-xAxis',
95
- data: xAxisData,
96
108
  splitNumber: 1,
97
109
  axisTick: {
98
110
  show: false
@@ -106,7 +118,7 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
106
118
  type: 'category',
107
119
  gridIndex: 1,
108
120
  show: false,
109
- data: xAxisData,
121
+ data: dates,
110
122
  splitNumber: 1,
111
123
  axisTick: {
112
124
  show: false
@@ -119,8 +131,8 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
119
131
  type: 'value',
120
132
  gridIndex: 0,
121
133
  position: 'right',
122
- min: val => val.min - bucketWidth * 2,
123
- max: val => val.max + bucketWidth * 2,
134
+ min: val => val.min - bucketWidth * BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,
135
+ max: val => val.max + bucketWidth * BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,
124
136
  axisLine: {
125
137
  show: false
126
138
  },
@@ -130,8 +142,7 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
130
142
  axisLabel: {
131
143
  showMaxLabel: false,
132
144
  showMinLabel: false,
133
- margin: isDesktop ? 4 : 2,
134
- formatter: value => value.toFixed(precision - 1)
145
+ formatter: value => value.toFixed(displayPrecision - 1)
135
146
  }
136
147
  }, {
137
148
  type: 'value',
@@ -202,13 +213,29 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
202
213
  color: sentimentLongColor
203
214
  }]
204
215
  },
216
+ dataset: {
217
+ source: {
218
+ dates,
219
+ candlesOpen,
220
+ candlesClose,
221
+ candlesLow,
222
+ candlesHigh,
223
+ bookPrices,
224
+ bookIndexes,
225
+ sentimentShorts,
226
+ sentimentLongs
227
+ }
228
+ },
205
229
  series: [{
206
230
  type: 'candlestick',
207
231
  id: 'candlestick',
208
232
  gridIndex: 0,
209
233
  xAxisIndex: 0,
210
234
  yAxisIndex: 0,
211
- data: candlesSeriesData,
235
+ encode: {
236
+ x: 'dates',
237
+ y: ['open', 'close', 'low', 'high']
238
+ },
212
239
  itemStyle: {
213
240
  color: chroma(candleShortColor).desaturate().css(),
214
241
  color0: chroma(candleLongColor).desaturate().css(),
@@ -235,9 +262,17 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
235
262
  yAxisIndex: 0,
236
263
  silent: true,
237
264
  clip: true,
265
+ encode: {
266
+ x: 'dates',
267
+ y: 'bookPrices'
268
+ },
269
+ dimensions: ['dates', 'bookPrices', 'bookIndexes'],
238
270
  renderItem: (_params, api) => {
239
271
  const xVal = api.value(0);
240
272
  const bucketIndex = api.value(2);
273
+ if (!bucketIndex) {
274
+ return null;
275
+ }
241
276
  const metaValues = buckets[bucketIndex];
242
277
  const [rectWidth, rectHeight] = api.size([0, bucketWidth]);
243
278
  const items = metaValues.map(_ref2 => {
@@ -255,7 +290,7 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
255
290
  height: rectHeight
256
291
  },
257
292
  style: {
258
- fill: getRectColor(sentiment, isDark)
293
+ fill: getRectColor(sentiment, isDark, sentimentThresholdMin, sentimentThresholdMax)
259
294
  },
260
295
  silent: true,
261
296
  emphasisDisabled: true
@@ -267,15 +302,13 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
267
302
  silent: true,
268
303
  emphasisDisabled: true
269
304
  };
270
- },
271
- data: orderPositionBooks
305
+ }
272
306
  }, {
273
307
  type: 'line',
274
308
  name: 'sentiment-short',
275
309
  id: 'sentiment',
276
310
  xAxisIndex: 1,
277
311
  yAxisIndex: 1,
278
- data: sentiments,
279
312
  showSymbol: false,
280
313
  symbol: 'none',
281
314
  lineStyle: {
@@ -287,18 +320,20 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
287
320
  opacity: sentimentAreaOpacity
288
321
  },
289
322
  emphasis: {
290
- areaStyle: {
291
- opacity: 0
292
- }
323
+ disabled: true
293
324
  },
294
- stack: 'sentiment'
325
+ stack: 'sentiment',
326
+ dimensions: ['dates', 'sentimentShorts', 'sentimentLongs'],
327
+ encode: {
328
+ x: 'dates',
329
+ y: 'sentimentShorts'
330
+ }
295
331
  }, {
296
332
  type: 'line',
297
333
  name: 'sentiment-long',
298
334
  id: 'sentiment-long',
299
335
  xAxisIndex: 1,
300
336
  yAxisIndex: 1,
301
- data: sentiments.map(sentiment => [sentiment[0], sentiment[2]]),
302
337
  symbol: 'none',
303
338
  lineStyle: {
304
339
  color: 'transparent',
@@ -314,6 +349,11 @@ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
314
349
  },
315
350
  tooltip: {
316
351
  show: false
352
+ },
353
+ dimensions: ['dates', 'sentimentLongs'],
354
+ encode: {
355
+ x: 'dates',
356
+ y: 'sentimentLongs'
317
357
  }
318
358
  }],
319
359
  grid: [{
@@ -1 +1 @@
1
- {"version":3,"file":"chartOptions.js","names":["chroma","CHART_CONFIG","CHART_CONFIG_CALCULATED","formatXAxisLabel","getLabelData","getRectColor","getTooltipFormatter","isDifferenceGreaterThanTwoWeeks","getChartStyles","getGridLines","getOption","_ref","isDark","isDesktop","labelCallback","xAxisData","candlesSeriesData","orderPositionBooks","bucketWidth","buckets","precision","bookType","sentiments","selectedPrice","sentimentLongColor","sentimentShortColor","candleLongColor","candleShortColor","sentimentAreaOpacity","tooltipLinesColor","sentimentLabelColor","visibleXAxisData","slice","length","INITIAL_START_ZOOM","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","labelsData","gridMainLines","animation","dataZoom","id","type","xAxisIndex","start","end","filterMode","tooltip","trigger","axisPointer","axis","lineStyle","color","crossStyle","label","padding","lineHeight","formatter","params","axisDimension","axisIndex","Number","value","concat","toFixed","confine","xAxis","name","nameTextStyle","fontSize","data","splitNumber","axisTick","show","axisLabel","margin","gridIndex","yAxis","position","min","val","max","axisLine","showMaxLabel","showMinLabel","SENTIMENT_MIN","SENTIMENT_MAX","interval","SENTIMENT_INTERVAL","verticalAlignMaxLabel","verticalAlignMinLabel","rich","shortRect","backgroundColor","alpha","css","borderColor","borderWidth","width","height","longRect","undefined","link","visualMap","seriesId","dimension","pieces","lt","gte","lte","gt","series","yAxisIndex","itemStyle","desaturate","color0","borderColor0","emphasis","markPoint","symbol","symbolSize","silent","clip","renderItem","_params","api","xVal","bucketIndex","metaValues","rectWidth","rectHeight","size","items","map","_ref2","price","sentiment","coord","shape","x","y","style","fill","emphasisDisabled","children","showSymbol","opacity","areaStyle","stack","disabled","grid","MAIN_HEIGHT","top","left","right","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","bottom","X_LABEL_SIZE","SENTIMENT_HEIGHT","graphic","z","SENTIMENT_TEXT_POSITION","text","fontFamily","fontWeight"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/chartOptions.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nimport { CHART_CONFIG, CHART_CONFIG_CALCULATED } from '../../constants';\nimport type { Bucket, GetOptionType, TooltipParam } from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n getRectColor,\n getTooltipFormatter,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\nimport { getChartStyles } from './utils/getChartStyles';\nimport { getGridLines } from './utils/getGridLines';\n\n// @ts-expect-error\nexport const getOption: GetOptionType = (\n {\n xAxisData,\n candlesSeriesData,\n orderPositionBooks,\n bucketWidth,\n buckets,\n precision,\n bookType,\n sentiments,\n },\n isDark,\n isDesktop,\n labelCallback\n) => {\n let selectedPrice: number;\n const {\n sentimentLongColor,\n sentimentShortColor,\n candleLongColor,\n candleShortColor,\n sentimentAreaOpacity,\n tooltipLinesColor,\n sentimentLabelColor,\n } = getChartStyles(isDark);\n\n const visibleXAxisData = xAxisData.slice(\n (xAxisData.length * CHART_CONFIG.INITIAL_START_ZOOM) / 100,\n (xAxisData.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 labelsData = getLabelData({\n xAxisData,\n isGreaterThanTwoWeeks,\n });\n\n const gridMainLines = getGridLines({\n isDark,\n isDesktop,\n });\n\n return {\n animation: false,\n dataZoom: [\n {\n id: 'main',\n type: 'inside',\n xAxisIndex: 0,\n start: CHART_CONFIG.INITIAL_START_ZOOM,\n end: CHART_CONFIG.INITIAL_END_ZOOM,\n filterMode: 'filter',\n },\n {\n id: 'sentiment',\n type: 'inside',\n xAxisIndex: 1,\n start: CHART_CONFIG.INITIAL_START_ZOOM,\n end: CHART_CONFIG.INITIAL_END_ZOOM,\n filterMode: 'none',\n },\n ],\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n axis: 'x',\n lineStyle: {\n color: tooltipLinesColor,\n },\n crossStyle: {\n color: tooltipLinesColor,\n },\n label: {\n padding: 0,\n lineHeight: 24,\n formatter: (params) => {\n if (params.axisDimension === 'y' && params.axisIndex === 0) {\n selectedPrice = Number(params.value);\n return ` ${Number(params.value).toFixed(precision)} `;\n }\n\n return null;\n },\n },\n },\n confine: true,\n formatter: (params: TooltipParam[]) =>\n getTooltipFormatter({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n labelCallback,\n precision,\n bookType,\n }),\n },\n xAxis: [\n {\n type: 'category',\n name: 'xAxis-less-than-two-weeks',\n nameTextStyle: {\n fontSize: 0,\n },\n id: 'main-xAxis',\n data: xAxisData,\n splitNumber: 1,\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [8, 16, 8, 16],\n margin: 0,\n formatter: (value) => formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n {\n type: 'category',\n gridIndex: 1,\n show: false,\n data: xAxisData,\n splitNumber: 1,\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: false,\n },\n },\n ],\n yAxis: [\n {\n type: 'value',\n gridIndex: 0,\n position: 'right',\n min: (val) => val.min - bucketWidth * 2,\n max: (val) => val.max + bucketWidth * 2,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n showMaxLabel: false,\n showMinLabel: false,\n margin: isDesktop ? 4 : 2,\n formatter: (value: number) => value.toFixed(precision - 1),\n },\n },\n {\n type: 'value',\n gridIndex: 1,\n position: 'right',\n min: CHART_CONFIG.SENTIMENT_MIN,\n max: CHART_CONFIG.SENTIMENT_MAX,\n interval: CHART_CONFIG.SENTIMENT_INTERVAL,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n verticalAlignMaxLabel: 'top',\n verticalAlignMinLabel: 'bottom',\n lineHeight: 20,\n margin: isDesktop ? 4 : 2,\n rich: {\n shortRect: {\n backgroundColor: chroma(sentimentShortColor).alpha(0.3).css(),\n borderColor: sentimentShortColor,\n borderWidth: 1,\n width: 8,\n height: 8,\n },\n longRect: {\n backgroundColor: chroma(sentimentLongColor).alpha(0.3).css(),\n borderColor: sentimentLongColor,\n borderWidth: 1,\n width: 8,\n height: 8,\n },\n },\n formatter: (value: number) => {\n if (value === CHART_CONFIG.SENTIMENT_MIN) {\n return `{shortRect| } ${labelCallback('short')}`;\n }\n\n if (value === CHART_CONFIG.SENTIMENT_MAX) {\n return `{longRect| } ${labelCallback('long')}`;\n }\n\n if (value === CHART_CONFIG.SENTIMENT_MAX / 2) {\n return '50%';\n }\n\n return undefined;\n },\n },\n },\n ],\n axisPointer: {\n link: [\n {\n xAxisIndex: 'all',\n },\n ],\n },\n visualMap: {\n show: false,\n seriesId: 'sentiment',\n dimension: 1,\n pieces: [\n {\n lt: CHART_CONFIG.SENTIMENT_MAX / 2,\n color: sentimentShortColor,\n },\n {\n gte: CHART_CONFIG.SENTIMENT_MAX / 2,\n lte: CHART_CONFIG.SENTIMENT_MAX,\n color: sentimentLongColor,\n },\n {\n gt: CHART_CONFIG.SENTIMENT_MAX,\n color: sentimentLongColor,\n },\n ],\n },\n series: [\n {\n type: 'candlestick',\n id: 'candlestick',\n gridIndex: 0,\n xAxisIndex: 0,\n yAxisIndex: 0,\n data: candlesSeriesData,\n itemStyle: {\n color: chroma(candleShortColor).desaturate().css(),\n color0: chroma(candleLongColor).desaturate().css(),\n borderColor: candleShortColor,\n borderColor0: candleLongColor,\n },\n emphasis: {\n itemStyle: {\n color: candleShortColor,\n color0: candleLongColor,\n },\n },\n markPoint: {\n symbol: 'circle',\n symbolSize: 0,\n data: labelsData,\n },\n },\n {\n type: 'custom',\n gridIndex: 0,\n name: 'heatmap',\n id: 'heatmap',\n xAxisIndex: 0,\n yAxisIndex: 0,\n silent: true,\n clip: true,\n renderItem: (_params, api) => {\n const xVal = api.value(0);\n const bucketIndex = api.value(2) as number;\n const metaValues = buckets[bucketIndex];\n\n const [rectWidth, rectHeight] = api.size!([\n 0,\n bucketWidth,\n ]) as number[];\n\n const items = metaValues.map(({ price, sentiment }: Bucket) => {\n const start = api.coord([xVal, price]);\n\n return {\n type: 'rect',\n shape: {\n x: start[0] - rectWidth / 2,\n y: start[1] - rectHeight,\n width: rectWidth + 1,\n height: rectHeight,\n },\n style: {\n fill: getRectColor(sentiment, isDark),\n },\n silent: true,\n emphasisDisabled: true,\n };\n });\n\n return {\n type: 'group',\n children: items,\n silent: true,\n emphasisDisabled: true,\n };\n },\n data: orderPositionBooks,\n },\n {\n type: 'line',\n name: 'sentiment-short',\n id: 'sentiment',\n xAxisIndex: 1,\n yAxisIndex: 1,\n data: sentiments,\n showSymbol: false,\n symbol: 'none',\n lineStyle: {\n width: 3,\n opacity: 1,\n },\n areaStyle: {\n color: sentimentShortColor,\n opacity: sentimentAreaOpacity,\n },\n emphasis: {\n areaStyle: {\n opacity: 0,\n },\n },\n stack: 'sentiment',\n },\n {\n type: 'line',\n name: 'sentiment-long',\n id: 'sentiment-long',\n xAxisIndex: 1,\n yAxisIndex: 1,\n data: sentiments.map((sentiment) => [sentiment[0], sentiment[2]]),\n symbol: 'none',\n lineStyle: {\n color: 'transparent',\n width: 0,\n },\n areaStyle: {\n color: sentimentLongColor,\n opacity: sentimentAreaOpacity,\n },\n stack: 'sentiment',\n emphasis: {\n disabled: true,\n },\n tooltip: {\n show: false,\n },\n },\n ],\n grid: [\n {\n name: 'main-grid',\n id: 'main-grid',\n height: `${CHART_CONFIG.MAIN_HEIGHT}px`,\n top: '0px',\n left: '0px',\n right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,\n bottom: `${CHART_CONFIG.X_LABEL_SIZE}px`,\n },\n {\n name: 'sentiment-grid',\n id: 'sentiment-grid',\n height: `${CHART_CONFIG.SENTIMENT_HEIGHT}px`,\n bottom: `0px`,\n left: '0px',\n right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,\n },\n ],\n graphic: [\n ...gridMainLines,\n {\n type: 'text',\n silent: true,\n z: 1,\n left: 4,\n bottom: CHART_CONFIG_CALCULATED.SENTIMENT_TEXT_POSITION,\n style: {\n text: `${labelCallback('sentiment')}:`,\n fontFamily: 'Sofia W03',\n fontSize: 14,\n fontWeight: 'bold',\n fill: sentimentLabelColor,\n },\n },\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"chartOptions.js","names":["chroma","BUCKET_CONFIG","CHART_CONFIG","CHART_CONFIG_CALCULATED","formatXAxisLabel","getLabelData","getRectColor","getTooltipFormatter","isDifferenceGreaterThanTwoWeeks","getChartStyles","getGridLines","getOption","_ref","mainData","dates","candlesOpen","candlesClose","candlesLow","candlesHigh","bookPrices","bookIndexes","sentimentShorts","sentimentLongs","additionalData","bucketWidth","buckets","displayPrecision","bookType","sentimentThresholdMin","sentimentThresholdMax","isDark","isDesktop","labelCallback","selectedPrice","sentimentLongColor","sentimentShortColor","candleLongColor","candleShortColor","sentimentAreaOpacity","tooltipLinesColor","sentimentLabelColor","visibleXAxisData","slice","length","INITIAL_START_ZOOM","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","labelsData","gridMainLines","animation","dataZoom","id","type","xAxisIndex","start","end","filterMode","tooltip","trigger","axisPointer","axis","lineStyle","color","crossStyle","label","padding","lineHeight","formatter","params","axisDimension","axisIndex","Number","value","concat","toFixed","confine","xAxis","name","nameTextStyle","fontSize","splitNumber","axisTick","show","axisLabel","margin","gridIndex","data","yAxis","position","min","val","PRICE_MARGIN_MULTIPLIER","max","axisLine","showMaxLabel","showMinLabel","SENTIMENT_MIN","SENTIMENT_MAX","interval","SENTIMENT_INTERVAL","verticalAlignMaxLabel","verticalAlignMinLabel","rich","shortRect","backgroundColor","alpha","css","borderColor","borderWidth","width","height","longRect","undefined","link","visualMap","seriesId","dimension","pieces","lt","gte","lte","gt","dataset","source","series","yAxisIndex","encode","x","y","itemStyle","desaturate","color0","borderColor0","emphasis","markPoint","symbol","symbolSize","silent","clip","dimensions","renderItem","_params","api","xVal","bucketIndex","metaValues","rectWidth","rectHeight","size","items","map","_ref2","price","sentiment","coord","shape","style","fill","emphasisDisabled","children","showSymbol","opacity","areaStyle","disabled","stack","grid","MAIN_HEIGHT","top","left","right","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","bottom","X_LABEL_SIZE","SENTIMENT_HEIGHT","graphic","z","SENTIMENT_TEXT_POSITION","text","fontFamily","fontWeight"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/chartOptions.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nimport {\n BUCKET_CONFIG,\n CHART_CONFIG,\n CHART_CONFIG_CALCULATED,\n} from '../../constants';\nimport type { Bucket, GetOptionType, TooltipParam } from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n getRectColor,\n getTooltipFormatter,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\nimport { getChartStyles } from './utils/getChartStyles';\nimport { getGridLines } from './utils/getGridLines';\n\n// @ts-expect-error\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 isDark,\n isDesktop,\n labelCallback,\n}) => {\n let selectedPrice: number;\n const {\n sentimentLongColor,\n sentimentShortColor,\n candleLongColor,\n candleShortColor,\n sentimentAreaOpacity,\n tooltipLinesColor,\n sentimentLabelColor,\n } = getChartStyles(isDark);\n\n const visibleXAxisData = dates.slice(\n (dates.length * CHART_CONFIG.INITIAL_START_ZOOM) / 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 labelsData = getLabelData({\n dates,\n isGreaterThanTwoWeeks,\n });\n\n const gridMainLines = getGridLines({\n isDark,\n isDesktop,\n });\n\n return {\n animation: false,\n dataZoom: [\n {\n id: 'main',\n type: 'inside',\n xAxisIndex: 0,\n start: CHART_CONFIG.INITIAL_START_ZOOM,\n end: CHART_CONFIG.INITIAL_END_ZOOM,\n filterMode: 'filter',\n },\n {\n id: 'sentiment',\n type: 'inside',\n xAxisIndex: 1,\n start: CHART_CONFIG.INITIAL_START_ZOOM,\n end: CHART_CONFIG.INITIAL_END_ZOOM,\n filterMode: 'none',\n },\n ],\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n axis: 'x',\n lineStyle: {\n color: tooltipLinesColor,\n },\n crossStyle: {\n color: tooltipLinesColor,\n },\n label: {\n padding: 0,\n lineHeight: 24,\n formatter: (params) => {\n if (params.axisDimension === 'y' && params.axisIndex === 0) {\n selectedPrice = Number(params.value);\n return ` ${Number(params.value).toFixed(displayPrecision)} `;\n }\n\n return null;\n },\n },\n },\n confine: true,\n formatter: (params: TooltipParam[]) =>\n getTooltipFormatter({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n labelCallback,\n bookType,\n }),\n },\n xAxis: [\n {\n type: 'category',\n name: 'xAxis-less-than-two-weeks',\n nameTextStyle: {\n fontSize: 0,\n },\n id: 'main-xAxis',\n splitNumber: 1,\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [8, 16, 8, 16],\n margin: 0,\n formatter: (value) => formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n {\n type: 'category',\n gridIndex: 1,\n show: false,\n data: dates,\n splitNumber: 1,\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: false,\n },\n },\n ],\n yAxis: [\n {\n type: 'value',\n gridIndex: 0,\n position: 'right',\n min: (val) =>\n val.min - bucketWidth * BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,\n max: (val) =>\n val.max + bucketWidth * BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n showMaxLabel: false,\n showMinLabel: false,\n formatter: (value: number) => value.toFixed(displayPrecision - 1),\n },\n },\n {\n type: 'value',\n gridIndex: 1,\n position: 'right',\n min: CHART_CONFIG.SENTIMENT_MIN,\n max: CHART_CONFIG.SENTIMENT_MAX,\n interval: CHART_CONFIG.SENTIMENT_INTERVAL,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n verticalAlignMaxLabel: 'top',\n verticalAlignMinLabel: 'bottom',\n lineHeight: 20,\n margin: isDesktop ? 4 : 2,\n rich: {\n shortRect: {\n backgroundColor: chroma(sentimentShortColor).alpha(0.3).css(),\n borderColor: sentimentShortColor,\n borderWidth: 1,\n width: 8,\n height: 8,\n },\n longRect: {\n backgroundColor: chroma(sentimentLongColor).alpha(0.3).css(),\n borderColor: sentimentLongColor,\n borderWidth: 1,\n width: 8,\n height: 8,\n },\n },\n formatter: (value: number) => {\n if (value === CHART_CONFIG.SENTIMENT_MIN) {\n return `{shortRect| } ${labelCallback('short')}`;\n }\n\n if (value === CHART_CONFIG.SENTIMENT_MAX) {\n return `{longRect| } ${labelCallback('long')}`;\n }\n\n if (value === CHART_CONFIG.SENTIMENT_MAX / 2) {\n return '50%';\n }\n\n return undefined;\n },\n },\n },\n ],\n axisPointer: {\n link: [\n {\n xAxisIndex: 'all',\n },\n ],\n },\n visualMap: {\n show: false,\n seriesId: 'sentiment',\n dimension: 1,\n pieces: [\n {\n lt: CHART_CONFIG.SENTIMENT_MAX / 2,\n color: sentimentShortColor,\n },\n {\n gte: CHART_CONFIG.SENTIMENT_MAX / 2,\n lte: CHART_CONFIG.SENTIMENT_MAX,\n color: sentimentLongColor,\n },\n {\n gt: CHART_CONFIG.SENTIMENT_MAX,\n color: sentimentLongColor,\n },\n ],\n },\n dataset: {\n source: {\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices,\n bookIndexes,\n sentimentShorts,\n sentimentLongs,\n },\n },\n series: [\n {\n type: 'candlestick',\n id: 'candlestick',\n gridIndex: 0,\n xAxisIndex: 0,\n yAxisIndex: 0,\n encode: {\n x: 'dates',\n y: ['open', 'close', 'low', 'high'],\n },\n itemStyle: {\n color: chroma(candleShortColor).desaturate().css(),\n color0: chroma(candleLongColor).desaturate().css(),\n borderColor: candleShortColor,\n borderColor0: candleLongColor,\n },\n emphasis: {\n itemStyle: {\n color: candleShortColor,\n color0: candleLongColor,\n },\n },\n markPoint: {\n symbol: 'circle',\n symbolSize: 0,\n data: labelsData,\n },\n },\n {\n type: 'custom',\n gridIndex: 0,\n name: 'heatmap',\n id: 'heatmap',\n xAxisIndex: 0,\n yAxisIndex: 0,\n silent: true,\n clip: true,\n encode: {\n x: 'dates',\n y: 'bookPrices',\n },\n dimensions: ['dates', 'bookPrices', 'bookIndexes'],\n renderItem: (_params, api) => {\n const xVal = api.value(0);\n const bucketIndex = api.value(2) as number;\n\n if (!bucketIndex) {\n return null;\n }\n\n const metaValues = buckets[bucketIndex];\n\n const [rectWidth, rectHeight] = api.size!([\n 0,\n bucketWidth,\n ]) as number[];\n\n const items = metaValues.map(({ price, sentiment }: Bucket) => {\n const start = api.coord([xVal, price]);\n\n return {\n type: 'rect',\n shape: {\n x: start[0] - rectWidth / 2,\n y: start[1] - rectHeight,\n width: rectWidth + 1,\n height: rectHeight,\n },\n style: {\n fill: getRectColor(\n sentiment,\n isDark,\n sentimentThresholdMin,\n sentimentThresholdMax\n ),\n },\n silent: true,\n emphasisDisabled: true,\n };\n });\n\n return {\n type: 'group',\n children: items,\n silent: true,\n emphasisDisabled: true,\n };\n },\n },\n {\n type: 'line',\n name: 'sentiment-short',\n id: 'sentiment',\n xAxisIndex: 1,\n yAxisIndex: 1,\n showSymbol: false,\n symbol: 'none',\n lineStyle: {\n width: 3,\n opacity: 1,\n },\n areaStyle: {\n color: sentimentShortColor,\n opacity: sentimentAreaOpacity,\n },\n emphasis: {\n disabled: true,\n },\n stack: 'sentiment',\n dimensions: ['dates', 'sentimentShorts', 'sentimentLongs'],\n encode: {\n x: 'dates',\n y: 'sentimentShorts',\n },\n },\n {\n type: 'line',\n name: 'sentiment-long',\n id: 'sentiment-long',\n xAxisIndex: 1,\n yAxisIndex: 1,\n symbol: 'none',\n lineStyle: {\n color: 'transparent',\n width: 0,\n },\n areaStyle: {\n color: sentimentLongColor,\n opacity: sentimentAreaOpacity,\n },\n stack: 'sentiment',\n emphasis: {\n disabled: true,\n },\n tooltip: {\n show: false,\n },\n dimensions: ['dates', 'sentimentLongs'],\n encode: {\n x: 'dates',\n y: 'sentimentLongs',\n },\n },\n ],\n grid: [\n {\n name: 'main-grid',\n id: 'main-grid',\n height: `${CHART_CONFIG.MAIN_HEIGHT}px`,\n top: '0px',\n left: '0px',\n right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,\n bottom: `${CHART_CONFIG.X_LABEL_SIZE}px`,\n },\n {\n name: 'sentiment-grid',\n id: 'sentiment-grid',\n height: `${CHART_CONFIG.SENTIMENT_HEIGHT}px`,\n bottom: `0px`,\n left: '0px',\n right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,\n },\n ],\n graphic: [\n ...gridMainLines,\n {\n type: 'text',\n silent: true,\n z: 1,\n left: 4,\n bottom: CHART_CONFIG_CALCULATED.SENTIMENT_TEXT_POSITION,\n style: {\n text: `${labelCallback('sentiment')}:`,\n fontFamily: 'Sofia W03',\n fontSize: 14,\n fontWeight: 'bold',\n fill: sentimentLabelColor,\n },\n },\n ],\n };\n};\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,WAAW;AAE9B,SACEC,aAAa,EACbC,YAAY,EACZC,uBAAuB,QAClB,iBAAiB;AAExB,SACEC,gBAAgB,EAChBC,YAAY,EACZC,YAAY,EACZC,mBAAmB,EACnBC,+BAA+B,QAC1B,oBAAoB;AAC3B,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,QAAQ,sBAAsB;AAGnD,OAAO,MAAMC,SAAwB,GAAGC,IAAA,IAuBlC;EAAA,IAvBmC;IACvCC,QAAQ,EAAE;MACRC,KAAK;MACLC,WAAW;MACXC,YAAY;MACZC,UAAU;MACVC,WAAW;MACXC,UAAU;MACVC,WAAW;MACXC,eAAe;MACfC;IACF,CAAC;IACDC,cAAc,EAAE;MACdC,WAAW;MACXC,OAAO;MACPC,gBAAgB;MAChBC,QAAQ;MACRC,qBAAqB;MACrBC;IACF,CAAC;IACDC,MAAM;IACNC,SAAS;IACTC;EACF,CAAC,GAAApB,IAAA;EACC,IAAIqB,aAAqB;EACzB,MAAM;IACJC,kBAAkB;IAClBC,mBAAmB;IACnBC,eAAe;IACfC,gBAAgB;IAChBC,oBAAoB;IACpBC,iBAAiB;IACjBC;EACF,CAAC,GAAG/B,cAAc,CAACqB,MAAM,CAAC;EAE1B,MAAMW,gBAAgB,GAAG3B,KAAK,CAAC4B,KAAK,CACjC5B,KAAK,CAAC6B,MAAM,GAAGzC,YAAY,CAAC0C,kBAAkB,GAAI,GAAG,EACrD9B,KAAK,CAAC6B,MAAM,GAAGzC,YAAY,CAAC2C,gBAAgB,GAAI,GACnD,CAAC;EAED,MAAMC,qBAAqB,GAAGtC,+BAA+B,CAC3DiC,gBAAgB,CAAC,CAAC,CAAC,EACnBA,gBAAgB,CAACA,gBAAgB,CAACE,MAAM,GAAG,CAAC,CAC9C,CAAC;EAED,MAAMI,UAAU,GAAG1C,YAAY,CAAC;IAC9BS,KAAK;IACLgC;EACF,CAAC,CAAC;EAEF,MAAME,aAAa,GAAGtC,YAAY,CAAC;IACjCoB,MAAM;IACNC;EACF,CAAC,CAAC;EAEF,OAAO;IACLkB,SAAS,EAAE,KAAK;IAChBC,QAAQ,EAAE,CACR;MACEC,EAAE,EAAE,MAAM;MACVC,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE,CAAC;MACbC,KAAK,EAAEpD,YAAY,CAAC0C,kBAAkB;MACtCW,GAAG,EAAErD,YAAY,CAAC2C,gBAAgB;MAClCW,UAAU,EAAE;IACd,CAAC,EACD;MACEL,EAAE,EAAE,WAAW;MACfC,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE,CAAC;MACbC,KAAK,EAAEpD,YAAY,CAAC0C,kBAAkB;MACtCW,GAAG,EAAErD,YAAY,CAAC2C,gBAAgB;MAClCW,UAAU,EAAE;IACd,CAAC,CACF;IACDC,OAAO,EAAE;MACPC,OAAO,EAAE,MAAM;MACfC,WAAW,EAAE;QACXP,IAAI,EAAE,OAAO;QACbQ,IAAI,EAAE,GAAG;QACTC,SAAS,EAAE;UACTC,KAAK,EAAEvB;QACT,CAAC;QACDwB,UAAU,EAAE;UACVD,KAAK,EAAEvB;QACT,CAAC;QACDyB,KAAK,EAAE;UACLC,OAAO,EAAE,CAAC;UACVC,UAAU,EAAE,EAAE;UACdC,SAAS,EAAGC,MAAM,IAAK;YACrB,IAAIA,MAAM,CAACC,aAAa,KAAK,GAAG,IAAID,MAAM,CAACE,SAAS,KAAK,CAAC,EAAE;cAC1DrC,aAAa,GAAGsC,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC;cACpC,WAAAC,MAAA,CAAWF,MAAM,CAACH,MAAM,CAACI,KAAK,CAAC,CAACE,OAAO,CAAChD,gBAAgB,CAAC;YAC3D;YAEA,OAAO,IAAI;UACb;QACF;MACF,CAAC;MACDiD,OAAO,EAAE,IAAI;MACbR,SAAS,EAAGC,MAAsB,IAChC7D,mBAAmB,CAAC;QAClB6D,MAAM;QACN3C,OAAO;QACPD,WAAW;QACXS,aAAa;QACbD,aAAa;QACbL;MACF,CAAC;IACL,CAAC;IACDiD,KAAK,EAAE,CACL;MACExB,IAAI,EAAE,UAAU;MAChByB,IAAI,EAAE,2BAA2B;MACjCC,aAAa,EAAE;QACbC,QAAQ,EAAE;MACZ,CAAC;MACD5B,EAAE,EAAE,YAAY;MAChB6B,WAAW,EAAE,CAAC;MACdC,QAAQ,EAAE;QACRC,IAAI,EAAE;MACR,CAAC;MACDC,SAAS,EAAE;QACTlB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACvBmB,MAAM,EAAE,CAAC;QACTjB,SAAS,EAAGK,KAAK,IAAKpE,gBAAgB,CAACoE,KAAK,EAAE1B,qBAAqB;MACrE;IACF,CAAC,EACD;MACEM,IAAI,EAAE,UAAU;MAChBiC,SAAS,EAAE,CAAC;MACZH,IAAI,EAAE,KAAK;MACXI,IAAI,EAAExE,KAAK;MACXkE,WAAW,EAAE,CAAC;MACdC,QAAQ,EAAE;QACRC,IAAI,EAAE;MACR,CAAC;MACDC,SAAS,EAAE;QACTD,IAAI,EAAE;MACR;IACF,CAAC,CACF;IACDK,KAAK,EAAE,CACL;MACEnC,IAAI,EAAE,OAAO;MACbiC,SAAS,EAAE,CAAC;MACZG,QAAQ,EAAE,OAAO;MACjBC,GAAG,EAAGC,GAAG,IACPA,GAAG,CAACD,GAAG,GAAGjE,WAAW,GAAGvB,aAAa,CAAC0F,uBAAuB;MAC/DC,GAAG,EAAGF,GAAG,IACPA,GAAG,CAACE,GAAG,GAAGpE,WAAW,GAAGvB,aAAa,CAAC0F,uBAAuB;MAC/DE,QAAQ,EAAE;QAAEX,IAAI,EAAE;MAAM,CAAC;MACzBD,QAAQ,EAAE;QAAEC,IAAI,EAAE;MAAM,CAAC;MACzBC,SAAS,EAAE;QACTW,YAAY,EAAE,KAAK;QACnBC,YAAY,EAAE,KAAK;QACnB5B,SAAS,EAAGK,KAAa,IAAKA,KAAK,CAACE,OAAO,CAAChD,gBAAgB,GAAG,CAAC;MAClE;IACF,CAAC,EACD;MACE0B,IAAI,EAAE,OAAO;MACbiC,SAAS,EAAE,CAAC;MACZG,QAAQ,EAAE,OAAO;MACjBC,GAAG,EAAEvF,YAAY,CAAC8F,aAAa;MAC/BJ,GAAG,EAAE1F,YAAY,CAAC+F,aAAa;MAC/BC,QAAQ,EAAEhG,YAAY,CAACiG,kBAAkB;MACzCN,QAAQ,EAAE;QAAEX,IAAI,EAAE;MAAM,CAAC;MACzBD,QAAQ,EAAE;QAAEC,IAAI,EAAE;MAAM,CAAC;MACzBC,SAAS,EAAE;QACTiB,qBAAqB,EAAE,KAAK;QAC5BC,qBAAqB,EAAE,QAAQ;QAC/BnC,UAAU,EAAE,EAAE;QACdkB,MAAM,EAAErD,SAAS,GAAG,CAAC,GAAG,CAAC;QACzBuE,IAAI,EAAE;UACJC,SAAS,EAAE;YACTC,eAAe,EAAExG,MAAM,CAACmC,mBAAmB,CAAC,CAACsE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;YAC7DC,WAAW,EAAExE,mBAAmB;YAChCyE,WAAW,EAAE,CAAC;YACdC,KAAK,EAAE,CAAC;YACRC,MAAM,EAAE;UACV,CAAC;UACDC,QAAQ,EAAE;YACRP,eAAe,EAAExG,MAAM,CAACkC,kBAAkB,CAAC,CAACuE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;YAC5DC,WAAW,EAAEzE,kBAAkB;YAC/B0E,WAAW,EAAE,CAAC;YACdC,KAAK,EAAE,CAAC;YACRC,MAAM,EAAE;UACV;QACF,CAAC;QACD3C,SAAS,EAAGK,KAAa,IAAK;UAC5B,IAAIA,KAAK,KAAKtE,YAAY,CAAC8F,aAAa,EAAE;YACxC,wBAAAvB,MAAA,CAAwBzC,aAAa,CAAC,OAAO,CAAC;UAChD;UAEA,IAAIwC,KAAK,KAAKtE,YAAY,CAAC+F,aAAa,EAAE;YACxC,uBAAAxB,MAAA,CAAuBzC,aAAa,CAAC,MAAM,CAAC;UAC9C;UAEA,IAAIwC,KAAK,KAAKtE,YAAY,CAAC+F,aAAa,GAAG,CAAC,EAAE;YAC5C,OAAO,KAAK;UACd;UAEA,OAAOe,SAAS;QAClB;MACF;IACF,CAAC,CACF;IACDrD,WAAW,EAAE;MACXsD,IAAI,EAAE,CACJ;QACE5D,UAAU,EAAE;MACd,CAAC;IAEL,CAAC;IACD6D,SAAS,EAAE;MACThC,IAAI,EAAE,KAAK;MACXiC,QAAQ,EAAE,WAAW;MACrBC,SAAS,EAAE,CAAC;MACZC,MAAM,EAAE,CACN;QACEC,EAAE,EAAEpH,YAAY,CAAC+F,aAAa,GAAG,CAAC;QAClCnC,KAAK,EAAE3B;MACT,CAAC,EACD;QACEoF,GAAG,EAAErH,YAAY,CAAC+F,aAAa,GAAG,CAAC;QACnCuB,GAAG,EAAEtH,YAAY,CAAC+F,aAAa;QAC/BnC,KAAK,EAAE5B;MACT,CAAC,EACD;QACEuF,EAAE,EAAEvH,YAAY,CAAC+F,aAAa;QAC9BnC,KAAK,EAAE5B;MACT,CAAC;IAEL,CAAC;IACDwF,OAAO,EAAE;MACPC,MAAM,EAAE;QACN7G,KAAK;QACLC,WAAW;QACXC,YAAY;QACZC,UAAU;QACVC,WAAW;QACXC,UAAU;QACVC,WAAW;QACXC,eAAe;QACfC;MACF;IACF,CAAC;IACDsG,MAAM,EAAE,CACN;MACExE,IAAI,EAAE,aAAa;MACnBD,EAAE,EAAE,aAAa;MACjBkC,SAAS,EAAE,CAAC;MACZhC,UAAU,EAAE,CAAC;MACbwE,UAAU,EAAE,CAAC;MACbC,MAAM,EAAE;QACNC,CAAC,EAAE,OAAO;QACVC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;MACpC,CAAC;MACDC,SAAS,EAAE;QACTnE,KAAK,EAAE9D,MAAM,CAACqC,gBAAgB,CAAC,CAAC6F,UAAU,CAAC,CAAC,CAACxB,GAAG,CAAC,CAAC;QAClDyB,MAAM,EAAEnI,MAAM,CAACoC,eAAe,CAAC,CAAC8F,UAAU,CAAC,CAAC,CAACxB,GAAG,CAAC,CAAC;QAClDC,WAAW,EAAEtE,gBAAgB;QAC7B+F,YAAY,EAAEhG;MAChB,CAAC;MACDiG,QAAQ,EAAE;QACRJ,SAAS,EAAE;UACTnE,KAAK,EAAEzB,gBAAgB;UACvB8F,MAAM,EAAE/F;QACV;MACF,CAAC;MACDkG,SAAS,EAAE;QACTC,MAAM,EAAE,QAAQ;QAChBC,UAAU,EAAE,CAAC;QACblD,IAAI,EAAEvC;MACR;IACF,CAAC,EACD;MACEK,IAAI,EAAE,QAAQ;MACdiC,SAAS,EAAE,CAAC;MACZR,IAAI,EAAE,SAAS;MACf1B,EAAE,EAAE,SAAS;MACbE,UAAU,EAAE,CAAC;MACbwE,UAAU,EAAE,CAAC;MACbY,MAAM,EAAE,IAAI;MACZC,IAAI,EAAE,IAAI;MACVZ,MAAM,EAAE;QACNC,CAAC,EAAE,OAAO;QACVC,CAAC,EAAE;MACL,CAAC;MACDW,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC;MAClDC,UAAU,EAAEA,CAACC,OAAO,EAAEC,GAAG,KAAK;QAC5B,MAAMC,IAAI,GAAGD,GAAG,CAACtE,KAAK,CAAC,CAAC,CAAC;QACzB,MAAMwE,WAAW,GAAGF,GAAG,CAACtE,KAAK,CAAC,CAAC,CAAW;QAE1C,IAAI,CAACwE,WAAW,EAAE;UAChB,OAAO,IAAI;QACb;QAEA,MAAMC,UAAU,GAAGxH,OAAO,CAACuH,WAAW,CAAC;QAEvC,MAAM,CAACE,SAAS,EAAEC,UAAU,CAAC,GAAGL,GAAG,CAACM,IAAI,CAAE,CACxC,CAAC,EACD5H,WAAW,CACZ,CAAa;QAEd,MAAM6H,KAAK,GAAGJ,UAAU,CAACK,GAAG,CAACC,KAAA,IAAkC;UAAA,IAAjC;YAAEC,KAAK;YAAEC;UAAkB,CAAC,GAAAF,KAAA;UACxD,MAAMjG,KAAK,GAAGwF,GAAG,CAACY,KAAK,CAAC,CAACX,IAAI,EAAES,KAAK,CAAC,CAAC;UAEtC,OAAO;YACLpG,IAAI,EAAE,MAAM;YACZuG,KAAK,EAAE;cACL5B,CAAC,EAAEzE,KAAK,CAAC,CAAC,CAAC,GAAG4F,SAAS,GAAG,CAAC;cAC3BlB,CAAC,EAAE1E,KAAK,CAAC,CAAC,CAAC,GAAG6F,UAAU;cACxBtC,KAAK,EAAEqC,SAAS,GAAG,CAAC;cACpBpC,MAAM,EAAEqC;YACV,CAAC;YACDS,KAAK,EAAE;cACLC,IAAI,EAAEvJ,YAAY,CAChBmJ,SAAS,EACT3H,MAAM,EACNF,qBAAqB,EACrBC,qBACF;YACF,CAAC;YACD4G,MAAM,EAAE,IAAI;YACZqB,gBAAgB,EAAE;UACpB,CAAC;QACH,CAAC,CAAC;QAEF,OAAO;UACL1G,IAAI,EAAE,OAAO;UACb2G,QAAQ,EAAEV,KAAK;UACfZ,MAAM,EAAE,IAAI;UACZqB,gBAAgB,EAAE;QACpB,CAAC;MACH;IACF,CAAC,EACD;MACE1G,IAAI,EAAE,MAAM;MACZyB,IAAI,EAAE,iBAAiB;MACvB1B,EAAE,EAAE,WAAW;MACfE,UAAU,EAAE,CAAC;MACbwE,UAAU,EAAE,CAAC;MACbmC,UAAU,EAAE,KAAK;MACjBzB,MAAM,EAAE,MAAM;MACd1E,SAAS,EAAE;QACTgD,KAAK,EAAE,CAAC;QACRoD,OAAO,EAAE;MACX,CAAC;MACDC,SAAS,EAAE;QACTpG,KAAK,EAAE3B,mBAAmB;QAC1B8H,OAAO,EAAE3H;MACX,CAAC;MACD+F,QAAQ,EAAE;QACR8B,QAAQ,EAAE;MACZ,CAAC;MACDC,KAAK,EAAE,WAAW;MAClBzB,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;MAC1Db,MAAM,EAAE;QACNC,CAAC,EAAE,OAAO;QACVC,CAAC,EAAE;MACL;IACF,CAAC,EACD;MACE5E,IAAI,EAAE,MAAM;MACZyB,IAAI,EAAE,gBAAgB;MACtB1B,EAAE,EAAE,gBAAgB;MACpBE,UAAU,EAAE,CAAC;MACbwE,UAAU,EAAE,CAAC;MACbU,MAAM,EAAE,MAAM;MACd1E,SAAS,EAAE;QACTC,KAAK,EAAE,aAAa;QACpB+C,KAAK,EAAE;MACT,CAAC;MACDqD,SAAS,EAAE;QACTpG,KAAK,EAAE5B,kBAAkB;QACzB+H,OAAO,EAAE3H;MACX,CAAC;MACD8H,KAAK,EAAE,WAAW;MAClB/B,QAAQ,EAAE;QACR8B,QAAQ,EAAE;MACZ,CAAC;MACD1G,OAAO,EAAE;QACPyB,IAAI,EAAE;MACR,CAAC;MACDyD,UAAU,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;MACvCb,MAAM,EAAE;QACNC,CAAC,EAAE,OAAO;QACVC,CAAC,EAAE;MACL;IACF,CAAC,CACF;IACDqC,IAAI,EAAE,CACJ;MACExF,IAAI,EAAE,WAAW;MACjB1B,EAAE,EAAE,WAAW;MACf2D,MAAM,KAAArC,MAAA,CAAKvE,YAAY,CAACoK,WAAW,OAAI;MACvCC,GAAG,EAAE,KAAK;MACVC,IAAI,EAAE,KAAK;MACXC,KAAK,KAAAhG,MAAA,CAAK1C,SAAS,GAAG7B,YAAY,CAACwK,oBAAoB,GAAGxK,YAAY,CAACyK,mBAAmB,OAAI;MAC9FC,MAAM,KAAAnG,MAAA,CAAKvE,YAAY,CAAC2K,YAAY;IACtC,CAAC,EACD;MACEhG,IAAI,EAAE,gBAAgB;MACtB1B,EAAE,EAAE,gBAAgB;MACpB2D,MAAM,KAAArC,MAAA,CAAKvE,YAAY,CAAC4K,gBAAgB,OAAI;MAC5CF,MAAM,OAAO;MACbJ,IAAI,EAAE,KAAK;MACXC,KAAK,KAAAhG,MAAA,CAAK1C,SAAS,GAAG7B,YAAY,CAACwK,oBAAoB,GAAGxK,YAAY,CAACyK,mBAAmB;IAC5F,CAAC,CACF;IACDI,OAAO,EAAE,CACP,GAAG/H,aAAa,EAChB;MACEI,IAAI,EAAE,MAAM;MACZqF,MAAM,EAAE,IAAI;MACZuC,CAAC,EAAE,CAAC;MACJR,IAAI,EAAE,CAAC;MACPI,MAAM,EAAEzK,uBAAuB,CAAC8K,uBAAuB;MACvDrB,KAAK,EAAE;QACLsB,IAAI,KAAAzG,MAAA,CAAKzC,aAAa,CAAC,WAAW,CAAC,MAAG;QACtCmJ,UAAU,EAAE,WAAW;QACvBpG,QAAQ,EAAE,EAAE;QACZqG,UAAU,EAAE,MAAM;QAClBvB,IAAI,EAAErH;MACR;IACF,CAAC;EAEL,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/CrowdViewWidget/components/Chart/types.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts';\n\nimport type {\n BookType,\n Division,\n Granularity,\n} from '../../../gql/types/graphql';\nimport type { InstrumentId } from '../../types';\n\nexport interface Bucket {\n price: number;\n sentiment: number;\n}\n\nexport interface UseCrowdViewDataProps {\n instrument: InstrumentId;\n bookType: BookType;\n division: Division;\n granularity: Granularity;\n}\n\nexport type ProcessedSentiment = [string, number, number];\n\ninterface CrowdViewData {\n xAxisData: string[];\n // [open, close, low, high]\n candlesSeriesData: [number, number, number, number][];\n // [time, price, index]\n orderPositionBooks: [string, number | null, number][];\n bucketWidth: number;\n buckets: Bucket[][];\n precision: number;\n bookType: BookType;\n sentiments: ProcessedSentiment[];\n}\n\nexport interface UseCrowdViewDataReturn {\n data: CrowdViewData | null;\n loading: boolean;\n error: boolean;\n}\n\nexport type GetOptionType = (\n props: CrowdViewData,\n isDark: boolean,\n isDesktop: boolean,\n labelCallback: (key: string, params?: Record<string, unknown>) => string\n) => EChartsOption;\n\nexport interface ChartProps {\n data: CrowdViewData;\n isDesktop: boolean;\n}\n\nexport interface ChartWithDataProps {\n bookType: BookType;\n division: Division;\n instrument: InstrumentId;\n granularity: Granularity;\n}\n\nexport interface GetLabelsDataProps {\n xAxisData: string[];\n isGreaterThanTwoWeeks: boolean;\n}\n\ninterface BaseTooltipParam {\n [key: string]: unknown;\n seriesId?: string;\n seriesName?: string;\n seriesType?: string;\n axisValue?: string | number;\n axisValueLabel?: string;\n axisDimension?: string;\n axisIndex?: number;\n value: unknown;\n}\n\nexport type TooltipParam =\n | (BaseTooltipParam & {\n seriesId: 'candlestick';\n value: [number, number, number, number, number]; // [0, open, close, low, high]\n })\n | (BaseTooltipParam & {\n seriesId: 'heatmap';\n value: [string, number, number]; // [time, price, index]\n })\n | (BaseTooltipParam & {\n seriesId: 'sentiment';\n value: [string, number, number]; // [time, shortPercent, longPercent]\n });\n\nexport interface DataZoomBatchItem {\n [key: string]: unknown;\n start: number;\n end: number;\n dataZoomId?: string;\n}\n\nexport interface DataZoomEvent {\n [key: string]: unknown;\n type: 'datazoom';\n batch?: DataZoomBatchItem[];\n}\n\nexport interface DataZoomItem {\n startValue: number;\n endValue: number;\n}\n\nexport type DataZoomArray = Array<DataZoomItem>;\n\nexport interface XAxisItem {\n name?: string;\n}\n\nexport type XAxisArray = Array<XAxisItem>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/CrowdViewWidget/components/Chart/types.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts';\n\nimport type {\n BookType,\n Division,\n Granularity,\n} from '../../../gql/types/graphql';\nimport type { InstrumentId } from '../../types';\n\nexport interface Bucket {\n price: number;\n sentiment: number;\n}\n\nexport interface UseCrowdViewDataProps {\n instrument: InstrumentId;\n bookType: BookType;\n division: Division;\n granularity: Granularity;\n}\n\ninterface CrowdViewMainData {\n dates: string[];\n candlesOpen: number[];\n candlesClose: number[];\n candlesLow: number[];\n candlesHigh: number[];\n bookPrices?: (number | null)[];\n bookIndexes?: (number | null)[];\n sentimentShorts: (number | null)[];\n sentimentLongs: (number | null)[];\n}\n\ninterface CrowdViewAdditionalData {\n bucketWidth: number;\n buckets: Bucket[][];\n displayPrecision: number;\n bookType: BookType;\n sentimentThresholdMin: number;\n sentimentThresholdMax: number;\n}\n\nexport interface UseCrowdViewDataReturn {\n mainData?: CrowdViewMainData | null;\n additionalData?: CrowdViewAdditionalData | null;\n loading: boolean;\n error: boolean;\n}\n\ninterface GetOptionProps {\n mainData: CrowdViewMainData;\n additionalData: CrowdViewAdditionalData;\n isDark: boolean;\n isDesktop: boolean;\n labelCallback: (key: string, params?: Record<string, unknown>) => string;\n}\n\nexport type GetOptionType = (props: GetOptionProps) => EChartsOption;\n\nexport interface ChartProps {\n mainData: CrowdViewMainData;\n additionalData: CrowdViewAdditionalData;\n isDesktop: boolean;\n}\n\nexport interface ChartWithDataProps {\n bookType: BookType;\n division: Division;\n instrument: InstrumentId;\n granularity: Granularity;\n}\n\nexport interface GetLabelsDataProps {\n dates: string[];\n isGreaterThanTwoWeeks: boolean;\n}\n\ninterface BaseTooltipParam {\n [key: string]: unknown;\n seriesId?: string;\n seriesName?: string;\n seriesType?: string;\n axisValue?: string | number;\n axisValueLabel?: string;\n axisDimension?: string;\n axisIndex?: number;\n value: unknown;\n}\n\nexport type TooltipParam =\n | (BaseTooltipParam & {\n seriesId: 'candlestick';\n value: [number, number, number, number, number]; // [0, open, close, low, high]\n })\n | (BaseTooltipParam & {\n seriesId: 'heatmap';\n value: [string, number, number]; // [time, price, index]\n })\n | (BaseTooltipParam & {\n seriesId: 'sentiment';\n value: [string, number, number]; // [time, shortPercent, longPercent]\n });\n\nexport interface DataZoomBatchItem {\n [key: string]: unknown;\n start: number;\n end: number;\n dataZoomId?: string;\n}\n\nexport interface DataZoomEvent {\n [key: string]: unknown;\n type: 'datazoom';\n batch?: DataZoomBatchItem[];\n}\n\nexport interface DataZoomItem {\n startValue: number;\n endValue: number;\n}\n\nexport type DataZoomArray = Array<DataZoomItem>;\n\nexport interface XAxisItem {\n name?: string;\n}\n\nexport type XAxisArray = Array<XAxisItem>;\n"],"mappings":"","ignoreList":[]}