@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.
- package/CHANGELOG.md +216 -0
- package/dist/main/CrowdViewWidget/Main.js +1 -5
- package/dist/main/CrowdViewWidget/Main.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/Chart.js +16 -6
- package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js +15 -6
- package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js +69 -29
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/types.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +49 -26
- package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js +9 -10
- package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/index.js +0 -33
- package/dist/main/CrowdViewWidget/components/Chart/utils/index.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js +54 -12
- package/dist/main/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/processPriceCandles.js +49 -27
- package/dist/main/CrowdViewWidget/components/Chart/utils/processPriceCandles.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/processSentiments.js +32 -17
- package/dist/main/CrowdViewWidget/components/Chart/utils/processSentiments.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/validateData.js +8 -2
- package/dist/main/CrowdViewWidget/components/Chart/utils/validateData.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Legend/Legend.js +2 -3
- package/dist/main/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js +2 -2
- package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
- package/dist/main/CrowdViewWidget/constants.js +2 -6
- package/dist/main/CrowdViewWidget/constants.js.map +1 -1
- package/dist/main/gql/getOrderPositionBooks.js +1 -1
- package/dist/main/gql/getOrderPositionBooks.js.map +1 -1
- package/dist/main/gql/getPriceCandles.js +1 -1
- package/dist/main/gql/getPriceCandles.js.map +1 -1
- package/dist/main/gql/types/gql.js +2 -2
- package/dist/main/gql/types/gql.js.map +1 -1
- package/dist/main/gql/types/graphql.js +111 -18
- package/dist/main/gql/types/graphql.js.map +1 -1
- package/dist/module/CrowdViewWidget/Main.js +2 -6
- package/dist/module/CrowdViewWidget/Main.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/Chart.js +17 -7
- package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js +15 -6
- package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js +70 -30
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/types.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +50 -27
- package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js +10 -11
- package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/index.js +0 -3
- package/dist/module/CrowdViewWidget/components/Chart/utils/index.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js +54 -12
- package/dist/module/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/processPriceCandles.js +49 -27
- package/dist/module/CrowdViewWidget/components/Chart/utils/processPriceCandles.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/processSentiments.js +32 -17
- package/dist/module/CrowdViewWidget/components/Chart/utils/processSentiments.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/validateData.js +8 -2
- package/dist/module/CrowdViewWidget/components/Chart/utils/validateData.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Legend/Legend.js +2 -3
- package/dist/module/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js +2 -2
- package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
- package/dist/module/CrowdViewWidget/constants.js +1 -5
- package/dist/module/CrowdViewWidget/constants.js.map +1 -1
- package/dist/module/gql/getOrderPositionBooks.js +1 -1
- package/dist/module/gql/getOrderPositionBooks.js.map +1 -1
- package/dist/module/gql/getPriceCandles.js +1 -1
- package/dist/module/gql/getPriceCandles.js.map +1 -1
- package/dist/module/gql/types/gql.js +2 -2
- package/dist/module/gql/types/gql.js.map +1 -1
- package/dist/module/gql/types/graphql.js +111 -18
- package/dist/module/gql/types/graphql.js.map +1 -1
- package/dist/types/CrowdViewWidget/components/Chart/Chart.d.ts +1 -1
- package/dist/types/CrowdViewWidget/components/Chart/types.d.ts +28 -11
- package/dist/types/CrowdViewWidget/components/Chart/utils/chartUtils.d.ts +3 -4
- package/dist/types/CrowdViewWidget/components/Chart/utils/index.d.ts +0 -3
- package/dist/types/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.d.ts +10 -7
- package/dist/types/CrowdViewWidget/components/Chart/utils/processPriceCandles.d.ts +6 -21
- package/dist/types/CrowdViewWidget/components/Chart/utils/processSentiments.d.ts +5 -2
- package/dist/types/CrowdViewWidget/components/Chart/utils/validateData.d.ts +1 -1
- package/dist/types/CrowdViewWidget/components/Legend/Legend.d.ts +2 -2
- package/dist/types/CrowdViewWidget/components/Legend/LegendBar.d.ts +1 -1
- package/dist/types/CrowdViewWidget/constants.d.ts +1 -5
- package/dist/types/gql/types/gql.d.ts +6 -4
- package/dist/types/gql/types/graphql.d.ts +30 -11
- package/package.json +3 -3
- package/src/CrowdViewWidget/Main.tsx +2 -4
- package/src/CrowdViewWidget/components/Chart/Chart.tsx +15 -6
- package/src/CrowdViewWidget/components/Chart/ChartWithData.tsx +21 -4
- package/src/CrowdViewWidget/components/Chart/chartOptions.ts +78 -30
- package/src/CrowdViewWidget/components/Chart/types.ts +30 -19
- package/src/CrowdViewWidget/components/Chart/useCrowdViewData.ts +82 -65
- package/src/CrowdViewWidget/components/Chart/utils/chartUtils.ts +32 -20
- package/src/CrowdViewWidget/components/Chart/utils/index.ts +0 -3
- package/src/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.ts +84 -22
- package/src/CrowdViewWidget/components/Chart/utils/processPriceCandles.ts +52 -38
- package/src/CrowdViewWidget/components/Chart/utils/processSentiments.ts +45 -32
- package/src/CrowdViewWidget/components/Chart/utils/validateData.ts +10 -2
- package/src/CrowdViewWidget/components/Legend/Legend.tsx +4 -5
- package/src/CrowdViewWidget/components/Legend/LegendBar.tsx +3 -3
- package/src/CrowdViewWidget/constants.ts +1 -6
- package/src/gql/getOrderPositionBooks.ts +13 -5
- package/src/gql/getPriceCandles.ts +1 -0
- package/src/gql/types/gql.ts +6 -6
- package/src/gql/types/graphql.ts +98 -16
- package/test/components/Chart/utils/chartUtils.test.ts +32 -14
- package/test/components/Chart/utils/processSentiments.test.ts +137 -29
- package/test/utils/processOrderPositionBooks.test.ts +201 -84
- package/test/utils/processPriceCandles.test.ts +93 -67
- package/test/utils/validateData.test.ts +136 -38
- package/dist/main/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js +0 -37
- package/dist/main/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js.map +0 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js +0 -14
- package/dist/main/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js.map +0 -1
- package/dist/main/CrowdViewWidget/components/Chart/utils/processBuckets.js +0 -29
- package/dist/main/CrowdViewWidget/components/Chart/utils/processBuckets.js.map +0 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js +0 -29
- package/dist/module/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js.map +0 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js +0 -7
- package/dist/module/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js.map +0 -1
- package/dist/module/CrowdViewWidget/components/Chart/utils/processBuckets.js +0 -22
- package/dist/module/CrowdViewWidget/components/Chart/utils/processBuckets.js.map +0 -1
- package/dist/types/CrowdViewWidget/components/Chart/utils/aggregateBuckets.d.ts +0 -2
- package/dist/types/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.d.ts +0 -3
- package/dist/types/CrowdViewWidget/components/Chart/utils/processBuckets.d.ts +0 -3
- package/src/CrowdViewWidget/components/Chart/utils/aggregateBuckets.ts +0 -44
- package/src/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.ts +0 -13
- package/src/CrowdViewWidget/components/Chart/utils/processBuckets.ts +0 -43
- package/test/utils/aggregateBuckets.test.ts +0 -82
- package/test/utils/getTargetBucketWidth.test.ts +0 -37
- package/test/utils/processBuckets.test.ts +0 -153
|
@@ -10,16 +10,30 @@ var _chartUtils = require("./utils/chartUtils");
|
|
|
10
10
|
var _getChartStyles = require("./utils/getChartStyles");
|
|
11
11
|
var _getGridLines = require("./utils/getGridLines");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
const getOption =
|
|
13
|
+
const getOption = _ref => {
|
|
14
14
|
let {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
mainData: {
|
|
16
|
+
dates,
|
|
17
|
+
candlesOpen,
|
|
18
|
+
candlesClose,
|
|
19
|
+
candlesLow,
|
|
20
|
+
candlesHigh,
|
|
21
|
+
bookPrices,
|
|
22
|
+
bookIndexes,
|
|
23
|
+
sentimentShorts,
|
|
24
|
+
sentimentLongs
|
|
25
|
+
},
|
|
26
|
+
additionalData: {
|
|
27
|
+
bucketWidth,
|
|
28
|
+
buckets,
|
|
29
|
+
displayPrecision,
|
|
30
|
+
bookType,
|
|
31
|
+
sentimentThresholdMin,
|
|
32
|
+
sentimentThresholdMax
|
|
33
|
+
},
|
|
34
|
+
isDark,
|
|
35
|
+
isDesktop,
|
|
36
|
+
labelCallback
|
|
23
37
|
} = _ref;
|
|
24
38
|
let selectedPrice;
|
|
25
39
|
const {
|
|
@@ -31,10 +45,10 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
31
45
|
tooltipLinesColor,
|
|
32
46
|
sentimentLabelColor
|
|
33
47
|
} = (0, _getChartStyles.getChartStyles)(isDark);
|
|
34
|
-
const visibleXAxisData =
|
|
48
|
+
const visibleXAxisData = dates.slice(dates.length * _constants.CHART_CONFIG.INITIAL_START_ZOOM / 100, dates.length * _constants.CHART_CONFIG.INITIAL_END_ZOOM / 100);
|
|
35
49
|
const isGreaterThanTwoWeeks = (0, _chartUtils.isDifferenceGreaterThanTwoWeeks)(visibleXAxisData[0], visibleXAxisData[visibleXAxisData.length - 1]);
|
|
36
50
|
const labelsData = (0, _chartUtils.getLabelData)({
|
|
37
|
-
|
|
51
|
+
dates,
|
|
38
52
|
isGreaterThanTwoWeeks
|
|
39
53
|
});
|
|
40
54
|
const gridMainLines = (0, _getGridLines.getGridLines)({
|
|
@@ -75,7 +89,7 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
75
89
|
formatter: params => {
|
|
76
90
|
if (params.axisDimension === 'y' && params.axisIndex === 0) {
|
|
77
91
|
selectedPrice = Number(params.value);
|
|
78
|
-
return " ".concat(Number(params.value).toFixed(
|
|
92
|
+
return " ".concat(Number(params.value).toFixed(displayPrecision), " ");
|
|
79
93
|
}
|
|
80
94
|
return null;
|
|
81
95
|
}
|
|
@@ -88,7 +102,6 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
88
102
|
bucketWidth,
|
|
89
103
|
selectedPrice,
|
|
90
104
|
labelCallback,
|
|
91
|
-
precision,
|
|
92
105
|
bookType
|
|
93
106
|
})
|
|
94
107
|
},
|
|
@@ -99,7 +112,6 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
99
112
|
fontSize: 0
|
|
100
113
|
},
|
|
101
114
|
id: 'main-xAxis',
|
|
102
|
-
data: xAxisData,
|
|
103
115
|
splitNumber: 1,
|
|
104
116
|
axisTick: {
|
|
105
117
|
show: false
|
|
@@ -113,7 +125,7 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
113
125
|
type: 'category',
|
|
114
126
|
gridIndex: 1,
|
|
115
127
|
show: false,
|
|
116
|
-
data:
|
|
128
|
+
data: dates,
|
|
117
129
|
splitNumber: 1,
|
|
118
130
|
axisTick: {
|
|
119
131
|
show: false
|
|
@@ -126,8 +138,8 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
126
138
|
type: 'value',
|
|
127
139
|
gridIndex: 0,
|
|
128
140
|
position: 'right',
|
|
129
|
-
min: val => val.min - bucketWidth *
|
|
130
|
-
max: val => val.max + bucketWidth *
|
|
141
|
+
min: val => val.min - bucketWidth * _constants.BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,
|
|
142
|
+
max: val => val.max + bucketWidth * _constants.BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER,
|
|
131
143
|
axisLine: {
|
|
132
144
|
show: false
|
|
133
145
|
},
|
|
@@ -137,8 +149,7 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
137
149
|
axisLabel: {
|
|
138
150
|
showMaxLabel: false,
|
|
139
151
|
showMinLabel: false,
|
|
140
|
-
|
|
141
|
-
formatter: value => value.toFixed(precision - 1)
|
|
152
|
+
formatter: value => value.toFixed(displayPrecision - 1)
|
|
142
153
|
}
|
|
143
154
|
}, {
|
|
144
155
|
type: 'value',
|
|
@@ -209,13 +220,29 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
209
220
|
color: sentimentLongColor
|
|
210
221
|
}]
|
|
211
222
|
},
|
|
223
|
+
dataset: {
|
|
224
|
+
source: {
|
|
225
|
+
dates,
|
|
226
|
+
candlesOpen,
|
|
227
|
+
candlesClose,
|
|
228
|
+
candlesLow,
|
|
229
|
+
candlesHigh,
|
|
230
|
+
bookPrices,
|
|
231
|
+
bookIndexes,
|
|
232
|
+
sentimentShorts,
|
|
233
|
+
sentimentLongs
|
|
234
|
+
}
|
|
235
|
+
},
|
|
212
236
|
series: [{
|
|
213
237
|
type: 'candlestick',
|
|
214
238
|
id: 'candlestick',
|
|
215
239
|
gridIndex: 0,
|
|
216
240
|
xAxisIndex: 0,
|
|
217
241
|
yAxisIndex: 0,
|
|
218
|
-
|
|
242
|
+
encode: {
|
|
243
|
+
x: 'dates',
|
|
244
|
+
y: ['open', 'close', 'low', 'high']
|
|
245
|
+
},
|
|
219
246
|
itemStyle: {
|
|
220
247
|
color: (0, _chromaJs.default)(candleShortColor).desaturate().css(),
|
|
221
248
|
color0: (0, _chromaJs.default)(candleLongColor).desaturate().css(),
|
|
@@ -242,9 +269,17 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
242
269
|
yAxisIndex: 0,
|
|
243
270
|
silent: true,
|
|
244
271
|
clip: true,
|
|
272
|
+
encode: {
|
|
273
|
+
x: 'dates',
|
|
274
|
+
y: 'bookPrices'
|
|
275
|
+
},
|
|
276
|
+
dimensions: ['dates', 'bookPrices', 'bookIndexes'],
|
|
245
277
|
renderItem: (_params, api) => {
|
|
246
278
|
const xVal = api.value(0);
|
|
247
279
|
const bucketIndex = api.value(2);
|
|
280
|
+
if (!bucketIndex) {
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
248
283
|
const metaValues = buckets[bucketIndex];
|
|
249
284
|
const [rectWidth, rectHeight] = api.size([0, bucketWidth]);
|
|
250
285
|
const items = metaValues.map(_ref2 => {
|
|
@@ -262,7 +297,7 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
262
297
|
height: rectHeight
|
|
263
298
|
},
|
|
264
299
|
style: {
|
|
265
|
-
fill: (0, _chartUtils.getRectColor)(sentiment, isDark)
|
|
300
|
+
fill: (0, _chartUtils.getRectColor)(sentiment, isDark, sentimentThresholdMin, sentimentThresholdMax)
|
|
266
301
|
},
|
|
267
302
|
silent: true,
|
|
268
303
|
emphasisDisabled: true
|
|
@@ -274,15 +309,13 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
274
309
|
silent: true,
|
|
275
310
|
emphasisDisabled: true
|
|
276
311
|
};
|
|
277
|
-
}
|
|
278
|
-
data: orderPositionBooks
|
|
312
|
+
}
|
|
279
313
|
}, {
|
|
280
314
|
type: 'line',
|
|
281
315
|
name: 'sentiment-short',
|
|
282
316
|
id: 'sentiment',
|
|
283
317
|
xAxisIndex: 1,
|
|
284
318
|
yAxisIndex: 1,
|
|
285
|
-
data: sentiments,
|
|
286
319
|
showSymbol: false,
|
|
287
320
|
symbol: 'none',
|
|
288
321
|
lineStyle: {
|
|
@@ -294,18 +327,20 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
294
327
|
opacity: sentimentAreaOpacity
|
|
295
328
|
},
|
|
296
329
|
emphasis: {
|
|
297
|
-
|
|
298
|
-
opacity: 0
|
|
299
|
-
}
|
|
330
|
+
disabled: true
|
|
300
331
|
},
|
|
301
|
-
stack: 'sentiment'
|
|
332
|
+
stack: 'sentiment',
|
|
333
|
+
dimensions: ['dates', 'sentimentShorts', 'sentimentLongs'],
|
|
334
|
+
encode: {
|
|
335
|
+
x: 'dates',
|
|
336
|
+
y: 'sentimentShorts'
|
|
337
|
+
}
|
|
302
338
|
}, {
|
|
303
339
|
type: 'line',
|
|
304
340
|
name: 'sentiment-long',
|
|
305
341
|
id: 'sentiment-long',
|
|
306
342
|
xAxisIndex: 1,
|
|
307
343
|
yAxisIndex: 1,
|
|
308
|
-
data: sentiments.map(sentiment => [sentiment[0], sentiment[2]]),
|
|
309
344
|
symbol: 'none',
|
|
310
345
|
lineStyle: {
|
|
311
346
|
color: 'transparent',
|
|
@@ -321,6 +356,11 @@ const getOption = (_ref, isDark, isDesktop, labelCallback) => {
|
|
|
321
356
|
},
|
|
322
357
|
tooltip: {
|
|
323
358
|
show: false
|
|
359
|
+
},
|
|
360
|
+
dimensions: ['dates', 'sentimentLongs'],
|
|
361
|
+
encode: {
|
|
362
|
+
x: 'dates',
|
|
363
|
+
y: 'sentimentLongs'
|
|
324
364
|
}
|
|
325
365
|
}],
|
|
326
366
|
grid: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartOptions.js","names":["_chromaJs","_interopRequireDefault","require","_constants","_chartUtils","_getChartStyles","_getGridLines","e","__esModule","default","getOption","_ref","isDark","isDesktop","labelCallback","xAxisData","candlesSeriesData","orderPositionBooks","bucketWidth","buckets","precision","bookType","sentiments","selectedPrice","sentimentLongColor","sentimentShortColor","candleLongColor","candleShortColor","sentimentAreaOpacity","tooltipLinesColor","sentimentLabelColor","getChartStyles","visibleXAxisData","slice","length","CHART_CONFIG","INITIAL_START_ZOOM","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","isDifferenceGreaterThanTwoWeeks","labelsData","getLabelData","gridMainLines","getGridLines","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","getTooltipFormatter","xAxis","name","nameTextStyle","fontSize","data","splitNumber","axisTick","show","axisLabel","margin","formatXAxisLabel","gridIndex","yAxis","position","min","val","max","axisLine","showMaxLabel","showMinLabel","SENTIMENT_MIN","SENTIMENT_MAX","interval","SENTIMENT_INTERVAL","verticalAlignMaxLabel","verticalAlignMinLabel","rich","shortRect","backgroundColor","chroma","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","getRectColor","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","CHART_CONFIG_CALCULATED","SENTIMENT_TEXT_POSITION","text","fontFamily","fontWeight","exports"],"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":["_chromaJs","_interopRequireDefault","require","_constants","_chartUtils","_getChartStyles","_getGridLines","e","__esModule","default","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","getChartStyles","visibleXAxisData","slice","length","CHART_CONFIG","INITIAL_START_ZOOM","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","isDifferenceGreaterThanTwoWeeks","labelsData","getLabelData","gridMainLines","getGridLines","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","getTooltipFormatter","xAxis","name","nameTextStyle","fontSize","splitNumber","axisTick","show","axisLabel","margin","formatXAxisLabel","gridIndex","data","yAxis","position","min","val","BUCKET_CONFIG","PRICE_MARGIN_MULTIPLIER","max","axisLine","showMaxLabel","showMinLabel","SENTIMENT_MIN","SENTIMENT_MAX","interval","SENTIMENT_INTERVAL","verticalAlignMaxLabel","verticalAlignMinLabel","rich","shortRect","backgroundColor","chroma","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","getRectColor","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","CHART_CONFIG_CALCULATED","SENTIMENT_TEXT_POSITION","text","fontFamily","fontWeight","exports"],"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":"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","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\
|
|
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":[]}
|
|
@@ -34,17 +34,17 @@ const useCrowdViewData = _ref => {
|
|
|
34
34
|
},
|
|
35
35
|
fetchPolicy: 'no-cache'
|
|
36
36
|
});
|
|
37
|
-
const priceCandlesProcessed = (0, _react.useMemo)(() => (0, _utils.processPriceCandles)(priceCandlesData), [priceCandlesData]);
|
|
38
37
|
const {
|
|
39
38
|
minPrice,
|
|
40
39
|
maxPrice,
|
|
41
40
|
hasValidCandles,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
dates,
|
|
42
|
+
candlesOpen,
|
|
43
|
+
candlesClose,
|
|
44
|
+
candlesLow,
|
|
45
|
+
candlesHigh,
|
|
46
|
+
pipsLocation
|
|
47
|
+
} = (0, _react.useMemo)(() => (0, _utils.processPriceCandles)(priceCandlesData), [priceCandlesData]);
|
|
48
48
|
const {
|
|
49
49
|
loading: orderPositionLoading,
|
|
50
50
|
data: orderPositionData,
|
|
@@ -55,12 +55,23 @@ const useCrowdViewData = _ref => {
|
|
|
55
55
|
bookType: bookType || _graphql.BookType.Order,
|
|
56
56
|
timeSpan: (0, _utils.getTimeSpanForGranularity)(granularity),
|
|
57
57
|
granularity,
|
|
58
|
-
maxBookPrice,
|
|
59
|
-
minBookPrice
|
|
58
|
+
maxBookPrice: maxPrice,
|
|
59
|
+
minBookPrice: minPrice,
|
|
60
|
+
bucketMultiplier: 3,
|
|
61
|
+
bucketMargin: _constants.BUCKET_CONFIG.PRICE_MARGIN_MULTIPLIER
|
|
60
62
|
},
|
|
61
63
|
fetchPolicy: 'no-cache',
|
|
62
64
|
skip: priceCandlesLoading || !!priceCandlesError
|
|
63
65
|
});
|
|
66
|
+
const {
|
|
67
|
+
bookPrices,
|
|
68
|
+
bookIndexes,
|
|
69
|
+
buckets,
|
|
70
|
+
bucketWidth,
|
|
71
|
+
sentimentThresholdMin,
|
|
72
|
+
sentimentThresholdMax,
|
|
73
|
+
hasValidBooks
|
|
74
|
+
} = (0, _react.useMemo)(() => (0, _utils.processOrderPositionBooks)(orderPositionData, dates), [orderPositionData, dates]);
|
|
64
75
|
const {
|
|
65
76
|
loading: sentimentsLoading,
|
|
66
77
|
data: sentimentsData,
|
|
@@ -74,11 +85,12 @@ const useCrowdViewData = _ref => {
|
|
|
74
85
|
fetchPolicy: 'no-cache',
|
|
75
86
|
skip: priceCandlesLoading || !!priceCandlesError
|
|
76
87
|
});
|
|
88
|
+
const {
|
|
89
|
+
sentimentLongs,
|
|
90
|
+
sentimentShorts,
|
|
91
|
+
hasValidSentiments
|
|
92
|
+
} = (0, _react.useMemo)(() => (0, _utils.processSentiments)(sentimentsData, dates), [sentimentsData, dates]);
|
|
77
93
|
const loading = priceCandlesLoading || orderPositionLoading || sentimentsLoading;
|
|
78
|
-
const xAxisData = candles.map(candle => (candle === null || candle === void 0 ? void 0 : candle.point) || '');
|
|
79
|
-
const orderPositionBooks = (0, _react.useMemo)(() => (0, _utils.processOrderPositionBooks)(orderPositionData, candleMap), [orderPositionData, candleMap]);
|
|
80
|
-
const buckets = (0, _react.useMemo)(() => (0, _utils.processBuckets)(orderPositionData, targetBucketWidth), [orderPositionData, targetBucketWidth]);
|
|
81
|
-
const sentiments = (0, _react.useMemo)(() => (0, _utils.processSentiments)(sentimentsData, xAxisData), [sentimentsData, xAxisData]);
|
|
82
94
|
const error = (0, _react.useMemo)(() => {
|
|
83
95
|
if (priceCandlesError) {
|
|
84
96
|
return new Error("Price candles error: ".concat(priceCandlesError.message));
|
|
@@ -92,26 +104,37 @@ const useCrowdViewData = _ref => {
|
|
|
92
104
|
if (loading) {
|
|
93
105
|
return null;
|
|
94
106
|
}
|
|
95
|
-
return (0, _utils.validateData)(priceCandlesData, orderPositionData, hasValidCandles);
|
|
96
|
-
}, [priceCandlesError, orderPositionError, sentimentsError, loading, priceCandlesData, orderPositionData, hasValidCandles]);
|
|
107
|
+
return (0, _utils.validateData)(priceCandlesData, orderPositionData, hasValidCandles, hasValidBooks, hasValidSentiments);
|
|
108
|
+
}, [priceCandlesError, orderPositionError, sentimentsError, loading, priceCandlesData, orderPositionData, hasValidCandles, hasValidBooks, hasValidSentiments]);
|
|
97
109
|
const data = (0, _react.useMemo)(() => {
|
|
98
110
|
if (!priceCandlesData || !orderPositionData || !sentimentsData || error) {
|
|
99
111
|
return null;
|
|
100
112
|
}
|
|
101
|
-
const candlesSeriesData = candles.map(candle => [(candle === null || candle === void 0 ? void 0 : candle.open) || 0, (candle === null || candle === void 0 ? void 0 : candle.close) || 0, (candle === null || candle === void 0 ? void 0 : candle.low) || 0, (candle === null || candle === void 0 ? void 0 : candle.high) || 0]);
|
|
102
113
|
return {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
114
|
+
mainData: {
|
|
115
|
+
dates,
|
|
116
|
+
candlesOpen,
|
|
117
|
+
candlesClose,
|
|
118
|
+
candlesLow,
|
|
119
|
+
candlesHigh,
|
|
120
|
+
bookPrices,
|
|
121
|
+
bookIndexes,
|
|
122
|
+
sentimentShorts,
|
|
123
|
+
sentimentLongs
|
|
124
|
+
},
|
|
125
|
+
additionalData: {
|
|
126
|
+
bucketWidth,
|
|
127
|
+
buckets,
|
|
128
|
+
displayPrecision: pipsLocation,
|
|
129
|
+
bookType,
|
|
130
|
+
sentimentThresholdMin,
|
|
131
|
+
sentimentThresholdMax
|
|
132
|
+
}
|
|
111
133
|
};
|
|
112
|
-
}, [priceCandlesData, orderPositionData, sentimentsData, error,
|
|
134
|
+
}, [priceCandlesData, orderPositionData, sentimentsData, error, dates, candlesOpen, candlesClose, candlesLow, candlesHigh, bookPrices, bookIndexes, sentimentShorts, sentimentLongs, bucketWidth, buckets, pipsLocation, bookType, sentimentThresholdMin, sentimentThresholdMax]);
|
|
113
135
|
return {
|
|
114
|
-
data,
|
|
136
|
+
mainData: data === null || data === void 0 ? void 0 : data.mainData,
|
|
137
|
+
additionalData: data === null || data === void 0 ? void 0 : data.additionalData,
|
|
115
138
|
loading,
|
|
116
139
|
error: !!error
|
|
117
140
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCrowdViewData.js","names":["_client","require","_react","_getOrderPositionBooks","_getPriceCandles","_getSentiments","_graphql","_constants","_utils","useCrowdViewData","_ref","instrument","bookType","division","granularity","dataSource","Division","Ogm","Oj","DataSource","Mt5","V20","loading","priceCandlesLoading","data","priceCandlesData","error","priceCandlesError","useQuery","getPriceCandles","variables","INSTRUMENTS_CONFIG","mt5name","v20name","timeSpan","getTimeSpanForGranularity","fetchPolicy","priceCandlesProcessed","useMemo","processPriceCandles","minPrice","maxPrice","hasValidCandles","candleMap","candles","targetBucketWidth","getTargetBucketWidth","maxBookPrice","BUCKET_CONFIG","PRICE_PADDING_MULTIPLIER","minBookPrice","orderPositionLoading","orderPositionData","orderPositionError","getOrderPositionBooks","BookType","Order","skip","sentimentsLoading","sentimentsData","sentimentsError","getSentiments","xAxisData","map","candle","point","orderPositionBooks","processOrderPositionBooks","buckets","processBuckets","sentiments","processSentiments","Error","concat","message","validateData","candlesSeriesData","open","close","low","high","bucketWidth","precision","exports"],"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 type { UseCrowdViewDataProps, UseCrowdViewDataReturn } from './types';\nimport {\n getTargetBucketWidth,\n getTimeSpanForGranularity,\n processBuckets,\n processOrderPositionBooks,\n processPriceCandles,\n processSentiments,\n validateData,\n} from './utils';\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 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 priceCandlesProcessed = useMemo(\n () => processPriceCandles(priceCandlesData),\n [priceCandlesData]\n );\n\n const { minPrice, maxPrice, hasValidCandles, candleMap, candles } =\n priceCandlesProcessed;\n\n const targetBucketWidth = getTargetBucketWidth(granularity, instrument);\n\n const maxBookPrice = useMemo(\n () => maxPrice + targetBucketWidth * BUCKET_CONFIG.PRICE_PADDING_MULTIPLIER,\n [maxPrice, targetBucketWidth]\n );\n\n const minBookPrice = useMemo(\n () => minPrice - targetBucketWidth * BUCKET_CONFIG.PRICE_PADDING_MULTIPLIER,\n [minPrice, targetBucketWidth]\n );\n\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,\n minBookPrice,\n },\n fetchPolicy: 'no-cache',\n skip: priceCandlesLoading || !!priceCandlesError,\n }\n );\n\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 loading =\n priceCandlesLoading || orderPositionLoading || sentimentsLoading;\n const xAxisData = candles.map((candle) => candle?.point || '');\n\n const orderPositionBooks = useMemo(\n () => processOrderPositionBooks(orderPositionData, candleMap),\n [orderPositionData, candleMap]\n );\n\n const buckets = useMemo(\n () => processBuckets(orderPositionData, targetBucketWidth),\n [orderPositionData, targetBucketWidth]\n );\n\n const sentiments = useMemo(\n () => processSentiments(sentimentsData, xAxisData),\n [sentimentsData, xAxisData]\n );\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(priceCandlesData, orderPositionData, hasValidCandles);\n }, [\n priceCandlesError,\n orderPositionError,\n sentimentsError,\n loading,\n priceCandlesData,\n orderPositionData,\n hasValidCandles,\n ]);\n\n const data = useMemo(() => {\n if (!priceCandlesData || !orderPositionData || !sentimentsData || error) {\n return null;\n }\n\n const candlesSeriesData: [number, number, number, number][] = candles.map(\n (candle) => [\n candle?.open || 0,\n candle?.close || 0,\n candle?.low || 0,\n candle?.high || 0,\n ]\n );\n\n return {\n buckets,\n xAxisData,\n candlesSeriesData,\n orderPositionBooks,\n bucketWidth: targetBucketWidth,\n precision: INSTRUMENTS_CONFIG[instrument].precision,\n bookType,\n sentiments,\n };\n }, [\n priceCandlesData,\n orderPositionData,\n sentimentsData,\n error,\n candles,\n buckets,\n xAxisData,\n orderPositionBooks,\n targetBucketWidth,\n instrument,\n bookType,\n sentiments,\n ]);\n\n return {\n data,\n loading,\n error: !!error,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useCrowdViewData.js","names":["_client","require","_react","_getOrderPositionBooks","_getPriceCandles","_getSentiments","_graphql","_constants","_utils","useCrowdViewData","_ref","instrument","bookType","division","granularity","dataSource","Division","Ogm","Oj","DataSource","Mt5","V20","loading","priceCandlesLoading","data","priceCandlesData","error","priceCandlesError","useQuery","getPriceCandles","variables","INSTRUMENTS_CONFIG","mt5name","v20name","timeSpan","getTimeSpanForGranularity","fetchPolicy","minPrice","maxPrice","hasValidCandles","dates","candlesOpen","candlesClose","candlesLow","candlesHigh","pipsLocation","useMemo","processPriceCandles","orderPositionLoading","orderPositionData","orderPositionError","getOrderPositionBooks","BookType","Order","maxBookPrice","minBookPrice","bucketMultiplier","bucketMargin","BUCKET_CONFIG","PRICE_MARGIN_MULTIPLIER","skip","bookPrices","bookIndexes","buckets","bucketWidth","sentimentThresholdMin","sentimentThresholdMax","hasValidBooks","processOrderPositionBooks","sentimentsLoading","sentimentsData","sentimentsError","getSentiments","sentimentLongs","sentimentShorts","hasValidSentiments","processSentiments","Error","concat","message","validateData","mainData","additionalData","displayPrecision","exports"],"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 type { UseCrowdViewDataProps, UseCrowdViewDataReturn } from './types';\nimport {\n getTimeSpanForGranularity,\n processOrderPositionBooks,\n processPriceCandles,\n processSentiments,\n validateData,\n} from './utils';\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: 3,\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 || !orderPositionData || !sentimentsData || 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 buckets,\n displayPrecision: pipsLocation,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n },\n };\n }, [\n priceCandlesData,\n orderPositionData,\n sentimentsData,\n error,\n dates,\n candlesOpen,\n candlesClose,\n candlesLow,\n candlesHigh,\n bookPrices,\n bookIndexes,\n sentimentShorts,\n sentimentLongs,\n bucketWidth,\n buckets,\n pipsLocation,\n bookType,\n sentimentThresholdMin,\n sentimentThresholdMax,\n ]);\n\n return {\n mainData: data?.mainData,\n additionalData: data?.additionalData,\n loading,\n error: !!error,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AASA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAEA,IAAAO,MAAA,GAAAP,OAAA;AAQO,MAAMQ,gBAAgB,GAAGC,IAAA,IAKqB;EAAA,IALpB;IAC/BC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACqB,CAAC,GAAAJ,IAAA;EACtB,MAAMK,UAAU,GACdF,QAAQ,KAAKG,iBAAQ,CAACC,GAAG,IAAIJ,QAAQ,KAAKG,iBAAQ,CAACE,EAAE,GACjDC,mBAAU,CAACC,GAAG,GACdD,mBAAU,CAACE,GAAG;EAGpB,MAAM;IACJC,OAAO,EAAEC,mBAAmB;IAC5BC,IAAI,EAAEC,gBAAgB;IACtBC,KAAK,EAAEC;EACT,CAAC,GAAG,IAAAC,gBAAQ,EACVC,gCAAe,EACf;IACEC,SAAS,EAAE;MACTf,UAAU;MACVF,QAAQ;MACRF,UAAU,EACRI,UAAU,KAAKI,mBAAU,CAACC,GAAG,GACzBW,6BAAkB,CAACpB,UAAU,CAAC,CAACqB,OAAO,GACtCD,6BAAkB,CAACpB,UAAU,CAAC,CAACsB,OAAO;MAC5CnB,WAAW;MACXoB,QAAQ,EAAE,IAAAC,gCAAyB,EAACrB,WAAW;IACjD,CAAC;IACDsB,WAAW,EAAE;EACf,CACF,CAAC;EAED,MAAM;IACJC,QAAQ;IACRC,QAAQ;IACRC,eAAe;IACfC,KAAK;IACLC,WAAW;IACXC,YAAY;IACZC,UAAU;IACVC,WAAW;IACXC;EACF,CAAC,GAAG,IAAAC,cAAO,EAAC,MAAM,IAAAC,0BAAmB,EAACtB,gBAAgB,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAG5E,MAAM;IACJH,OAAO,EAAE0B,oBAAoB;IAC7BxB,IAAI,EAAEyB,iBAAiB;IACvBvB,KAAK,EAAEwB;EACT,CAAC,GAAG,IAAAtB,gBAAQ,EACVuB,4CAAqB,EACrB;IACErB,SAAS,EAAE;MACTnB,UAAU,EAAEoB,6BAAkB,CAACpB,UAAU,CAAC,CAACsB,OAAO;MAClDrB,QAAQ,EAAEA,QAAQ,IAAIwC,iBAAQ,CAACC,KAAK;MACpCnB,QAAQ,EAAE,IAAAC,gCAAyB,EAACrB,WAAW,CAAC;MAChDA,WAAW;MACXwC,YAAY,EAAEhB,QAAQ;MACtBiB,YAAY,EAAElB,QAAQ;MACtBmB,gBAAgB,EAAE,CAAC;MACnBC,YAAY,EAAEC,wBAAa,CAACC;IAC9B,CAAC;IACDvB,WAAW,EAAE,UAAU;IACvBwB,IAAI,EAAErC,mBAAmB,IAAI,CAAC,CAACI;EACjC,CACF,CAAC;EAED,MAAM;IACJkC,UAAU;IACVC,WAAW;IACXC,OAAO;IACPC,WAAW;IACXC,qBAAqB;IACrBC,qBAAqB;IACrBC;EACF,CAAC,GAAG,IAAArB,cAAO,EACT,MAAM,IAAAsB,gCAAyB,EAACnB,iBAAiB,EAAET,KAAK,CAAC,EACzD,CAACS,iBAAiB,EAAET,KAAK,CAC3B,CAAC;EAGD,MAAM;IACJlB,OAAO,EAAE+C,iBAAiB;IAC1B7C,IAAI,EAAE8C,cAAc;IACpB5C,KAAK,EAAE6C;EACT,CAAC,GAAG,IAAA3C,gBAAQ,EAAkD4C,4BAAa,EAAE;IAC3E1C,SAAS,EAAE;MACTnB,UAAU,EAAEoB,6BAAkB,CAACpB,UAAU,CAAC,CAACsB,OAAO;MAClDnB,WAAW;MACXoB,QAAQ,EAAE,IAAAC,gCAAyB,EAACrB,WAAW;IACjD,CAAC;IACDsB,WAAW,EAAE,UAAU;IACvBwB,IAAI,EAAErC,mBAAmB,IAAI,CAAC,CAACI;EACjC,CAAC,CAAC;EAEF,MAAM;IAAE8C,cAAc;IAAEC,eAAe;IAAEC;EAAmB,CAAC,GAAG,IAAA7B,cAAO,EACrE,MAAM,IAAA8B,wBAAiB,EAACN,cAAc,EAAE9B,KAAK,CAAC,EAC9C,CAAC8B,cAAc,EAAE9B,KAAK,CACxB,CAAC;EAGD,MAAMlB,OAAO,GACXC,mBAAmB,IAAIyB,oBAAoB,IAAIqB,iBAAiB;EAElE,MAAM3C,KAAK,GAAG,IAAAoB,cAAO,EAAC,MAAoB;IACxC,IAAInB,iBAAiB,EAAE;MACrB,OAAO,IAAIkD,KAAK,yBAAAC,MAAA,CAAyBnD,iBAAiB,CAACoD,OAAO,CAAE,CAAC;IACvE;IACA,IAAI7B,kBAAkB,EAAE;MACtB,OAAO,IAAI2B,KAAK,0BAAAC,MAAA,CAA0B5B,kBAAkB,CAAC6B,OAAO,CAAE,CAAC;IACzE;IACA,IAAIR,eAAe,EAAE;MACnB,OAAO,IAAIM,KAAK,sBAAAC,MAAA,CAAsBP,eAAe,CAACQ,OAAO,CAAE,CAAC;IAClE;IACA,IAAIzD,OAAO,EAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,IAAA0D,mBAAY,EACjBvD,gBAAgB,EAChBwB,iBAAiB,EACjBV,eAAe,EACf4B,aAAa,EACbQ,kBACF,CAAC;EACH,CAAC,EAAE,CACDhD,iBAAiB,EACjBuB,kBAAkB,EAClBqB,eAAe,EACfjD,OAAO,EACPG,gBAAgB,EAChBwB,iBAAiB,EACjBV,eAAe,EACf4B,aAAa,EACbQ,kBAAkB,CACnB,CAAC;EAEF,MAAMnD,IAAI,GAAG,IAAAsB,cAAO,EAAC,MAAM;IACzB,IAAI,CAACrB,gBAAgB,IAAI,CAACwB,iBAAiB,IAAI,CAACqB,cAAc,IAAI5C,KAAK,EAAE;MACvE,OAAO,IAAI;IACb;IAEA,OAAO;MACLuD,QAAQ,EAAE;QACRzC,KAAK;QACLC,WAAW;QACXC,YAAY;QACZC,UAAU;QACVC,WAAW;QACXiB,UAAU;QACVC,WAAW;QACXY,eAAe;QACfD;MACF,CAAC;MACDS,cAAc,EAAE;QACdlB,WAAW;QACXD,OAAO;QACPoB,gBAAgB,EAAEtC,YAAY;QAC9BjC,QAAQ;QACRqD,qBAAqB;QACrBC;MACF;IACF,CAAC;EACH,CAAC,EAAE,CACDzC,gBAAgB,EAChBwB,iBAAiB,EACjBqB,cAAc,EACd5C,KAAK,EACLc,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,UAAU,EACVC,WAAW,EACXiB,UAAU,EACVC,WAAW,EACXY,eAAe,EACfD,cAAc,EACdT,WAAW,EACXD,OAAO,EACPlB,YAAY,EACZjC,QAAQ,EACRqD,qBAAqB,EACrBC,qBAAqB,CACtB,CAAC;EAEF,OAAO;IACLe,QAAQ,EAAEzD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEyD,QAAQ;IACxBC,cAAc,EAAE1D,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE0D,cAAc;IACpC5D,OAAO;IACPI,KAAK,EAAE,CAAC,CAACA;EACX,CAAC;AACH,CAAC;AAAC0D,OAAA,CAAA3E,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -10,10 +10,10 @@ var _constants = require("../../../constants");
|
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
const getLabelData = _ref => {
|
|
12
12
|
let {
|
|
13
|
-
|
|
13
|
+
dates,
|
|
14
14
|
isGreaterThanTwoWeeks
|
|
15
15
|
} = _ref;
|
|
16
|
-
return
|
|
16
|
+
return dates.filter((record, index, arr) => {
|
|
17
17
|
if (index === 0) {
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
@@ -59,27 +59,26 @@ const getTimeSpanForGranularity = granularity => {
|
|
|
59
59
|
return granularityTimeSpanMap[granularity] || _graphql.TimeSpan.TwoDays;
|
|
60
60
|
};
|
|
61
61
|
exports.getTimeSpanForGranularity = getTimeSpanForGranularity;
|
|
62
|
-
const getGradientColor = (value, startColor, targetColor) => {
|
|
63
|
-
const
|
|
64
|
-
const endThreshold = _constants.BOOKS_THRESHOLDS.MAX;
|
|
65
|
-
const colorScale = _chromaJs.default.scale([startColor, targetColor]).domain([startThreshold, endThreshold]).mode('rgb');
|
|
62
|
+
const getGradientColor = (value, startColor, targetColor, minThreshold, maxThreshold) => {
|
|
63
|
+
const colorScale = _chromaJs.default.scale([startColor, targetColor]).domain([minThreshold, maxThreshold]).mode('rgb');
|
|
66
64
|
return colorScale(value).hex();
|
|
67
65
|
};
|
|
68
|
-
const getRectColor = (sentiment, isDark) => {
|
|
66
|
+
const getRectColor = (sentiment, isDark, minThreshold, maxThreshold) => {
|
|
69
67
|
const colorPalette = isDark ? _constants.COLOR_MAP.dark : _constants.COLOR_MAP.light;
|
|
70
|
-
return sentiment < 0 ? getGradientColor(sentiment * -1, colorPalette.short[0], colorPalette.short[1]) : getGradientColor(sentiment, colorPalette.long[0], colorPalette.long[1]);
|
|
68
|
+
return sentiment < 0 ? getGradientColor(sentiment * -1, colorPalette.short[0], colorPalette.short[1], minThreshold, maxThreshold) : getGradientColor(sentiment, colorPalette.long[0], colorPalette.long[1], minThreshold, maxThreshold);
|
|
71
69
|
};
|
|
72
70
|
exports.getRectColor = getRectColor;
|
|
73
71
|
const getTooltipFormatter = _ref2 => {
|
|
72
|
+
var _bucketWidth$toString;
|
|
74
73
|
let {
|
|
75
74
|
params,
|
|
76
75
|
buckets,
|
|
77
76
|
bucketWidth,
|
|
78
77
|
selectedPrice,
|
|
79
|
-
precision,
|
|
80
78
|
bookType,
|
|
81
79
|
labelCallback
|
|
82
80
|
} = _ref2;
|
|
81
|
+
const bucketDisplayPrecision = ((_bucketWidth$toString = bucketWidth.toString().split('.')[1]) === null || _bucketWidth$toString === void 0 ? void 0 : _bucketWidth$toString.length) || 0;
|
|
83
82
|
if (!params || !Array.isArray(params) || params.length === 0) {
|
|
84
83
|
return undefined;
|
|
85
84
|
}
|
|
@@ -111,7 +110,7 @@ const getTooltipFormatter = _ref2 => {
|
|
|
111
110
|
day: 'numeric',
|
|
112
111
|
month: 'numeric',
|
|
113
112
|
timeZoneName: 'short'
|
|
114
|
-
}), "</p><br />\n").concat(showCandles ? "<p><b>".concat(labelCallback('candle'), ":</b></p>\n<p>").concat(labelCallback('open_price'), ": ").concat(candleData[1], " </p>\n<p>").concat(labelCallback('close_price'), ": ").concat(candleData[2], " </p>\n<p>").concat(labelCallback('low'), ": ").concat(candleData[3], " </p>\n<p>").concat(labelCallback('high'), ": ").concat(candleData[4], " </p>\n") : '', "\n").concat(matchedBucket ? "<br /><p><b>".concat(labelCallback(bookType === _graphql.BookType.Order ? 'orders' : 'positions'), ":</b></p>\n<p>").concat(labelCallback('price_range'), ": ").concat(matchedBucket.price.toFixed(
|
|
113
|
+
}), "</p><br />\n").concat(showCandles ? "<p><b>".concat(labelCallback('candle'), ":</b></p>\n<p>").concat(labelCallback('open_price'), ": ").concat(candleData[1], " </p>\n<p>").concat(labelCallback('close_price'), ": ").concat(candleData[2], " </p>\n<p>").concat(labelCallback('low'), ": ").concat(candleData[3], " </p>\n<p>").concat(labelCallback('high'), ": ").concat(candleData[4], " </p>\n") : '', "\n").concat(matchedBucket ? "<br /><p><b>".concat(labelCallback(bookType === _graphql.BookType.Order ? 'orders' : 'positions'), ":</b></p>\n<p>").concat(labelCallback('price_range'), ": ").concat(matchedBucket.price.toFixed(bucketDisplayPrecision), " - ").concat(Number(matchedBucket.price + bucketWidth).toFixed(bucketDisplayPrecision), " </p>\n<p>").concat(matchedBucket.sentiment < 0 ? labelCallback(bookType === _graphql.BookType.Order ? 'sell_overbalance' : 'short_overbalance') : labelCallback(bookType === _graphql.BookType.Order ? 'buy_overbalance' : 'long_overbalance'), ": ").concat(Math.abs(Number(matchedBucket.sentiment.toFixed(bucketDisplayPrecision))), "% </p>") : '').concat(showSentiment && sentimentParam ? "<br /><p><b>".concat(labelCallback('sentiment'), ":</b></p>\n<p>").concat(labelCallback('long'), ": ").concat(sentimentParam.value[2].toFixed(2), "% </p>\n<p>").concat(labelCallback('short'), ": ").concat(sentimentParam.value[1].toFixed(2), "% </p>") : '');
|
|
115
114
|
};
|
|
116
115
|
exports.getTooltipFormatter = getTooltipFormatter;
|
|
117
116
|
const formatXAxisLabel = (value, isGreaterThanTwoWeeks) => {
|