@oanda/labs-crowd-view-widget 1.0.43 → 1.0.44

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 (174) hide show
  1. package/CHANGELOG.md +180 -0
  2. package/dist/main/CrowdViewWidget/CrowdViewWidget.js +3 -3
  3. package/dist/main/CrowdViewWidget/CrowdViewWidget.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/Main.js +8 -9
  5. package/dist/main/CrowdViewWidget/Main.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/Chart.js +11 -8
  7. package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js +16 -13
  9. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  10. package/dist/main/CrowdViewWidget/components/Chart/{getOption.js → chartOptions.js} +53 -51
  11. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -0
  12. package/dist/main/CrowdViewWidget/components/Chart/index.js +44 -0
  13. package/dist/main/CrowdViewWidget/components/Chart/index.js.map +1 -1
  14. package/dist/main/CrowdViewWidget/components/Chart/types.js.map +1 -1
  15. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +170 -0
  16. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -0
  17. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js +70 -0
  18. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -0
  19. package/dist/main/CrowdViewWidget/components/Legend/Legend.js +3 -2
  20. package/dist/main/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  21. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js +9 -11
  22. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  23. package/dist/main/CrowdViewWidget/constants.js +30 -0
  24. package/dist/main/CrowdViewWidget/constants.js.map +1 -0
  25. package/dist/main/CrowdViewWidget/render.js +1 -0
  26. package/dist/main/CrowdViewWidget/render.js.map +1 -1
  27. package/dist/main/CrowdViewWidget/selectConfig.js +121 -0
  28. package/dist/main/CrowdViewWidget/selectConfig.js.map +1 -0
  29. package/dist/main/CrowdViewWidget/types/index.js +17 -0
  30. package/dist/main/CrowdViewWidget/types/index.js.map +1 -0
  31. package/dist/main/CrowdViewWidget/types/instruments.js +45 -0
  32. package/dist/main/CrowdViewWidget/types/instruments.js.map +1 -0
  33. package/dist/main/CrowdViewWidget/types.js +0 -44
  34. package/dist/main/CrowdViewWidget/types.js.map +1 -1
  35. package/dist/main/CrowdViewWidget/utils/instrumentUtils.js +13 -0
  36. package/dist/main/CrowdViewWidget/utils/instrumentUtils.js.map +1 -0
  37. package/dist/main/gql/getOrderPositionBooks.js +1 -1
  38. package/dist/main/gql/getOrderPositionBooks.js.map +1 -1
  39. package/dist/main/gql/getPriceCandles.js +11 -0
  40. package/dist/main/gql/getPriceCandles.js.map +1 -0
  41. package/dist/main/gql/types/gql.js +2 -3
  42. package/dist/main/gql/types/gql.js.map +1 -1
  43. package/dist/main/gql/types/graphql.js +161 -160
  44. package/dist/main/gql/types/graphql.js.map +1 -1
  45. package/dist/module/CrowdViewWidget/CrowdViewWidget.js +3 -3
  46. package/dist/module/CrowdViewWidget/CrowdViewWidget.js.map +1 -1
  47. package/dist/module/CrowdViewWidget/Main.js +6 -7
  48. package/dist/module/CrowdViewWidget/Main.js.map +1 -1
  49. package/dist/module/CrowdViewWidget/components/Chart/Chart.js +9 -6
  50. package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  51. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js +16 -12
  52. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  53. package/dist/module/CrowdViewWidget/components/Chart/{getOption.js → chartOptions.js} +51 -48
  54. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -0
  55. package/dist/module/CrowdViewWidget/components/Chart/index.js +4 -0
  56. package/dist/module/CrowdViewWidget/components/Chart/index.js.map +1 -1
  57. package/dist/module/CrowdViewWidget/components/Chart/types.js.map +1 -1
  58. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +163 -0
  59. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -0
  60. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js +59 -0
  61. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -0
  62. package/dist/module/CrowdViewWidget/components/Legend/Legend.js +3 -2
  63. package/dist/module/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  64. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js +9 -11
  65. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  66. package/dist/module/CrowdViewWidget/constants.js +24 -0
  67. package/dist/module/CrowdViewWidget/constants.js.map +1 -0
  68. package/dist/module/CrowdViewWidget/render.js +1 -0
  69. package/dist/module/CrowdViewWidget/render.js.map +1 -1
  70. package/dist/module/CrowdViewWidget/selectConfig.js +116 -0
  71. package/dist/module/CrowdViewWidget/selectConfig.js.map +1 -0
  72. package/dist/module/CrowdViewWidget/types/index.js +2 -0
  73. package/dist/module/CrowdViewWidget/types/index.js.map +1 -0
  74. package/dist/module/CrowdViewWidget/types/instruments.js +39 -0
  75. package/dist/module/CrowdViewWidget/types/instruments.js.map +1 -0
  76. package/dist/module/CrowdViewWidget/types.js +1 -43
  77. package/dist/module/CrowdViewWidget/types.js.map +1 -1
  78. package/dist/module/CrowdViewWidget/utils/instrumentUtils.js +6 -0
  79. package/dist/module/CrowdViewWidget/utils/instrumentUtils.js.map +1 -0
  80. package/dist/module/gql/getOrderPositionBooks.js +1 -1
  81. package/dist/module/gql/getOrderPositionBooks.js.map +1 -1
  82. package/dist/module/gql/getPriceCandles.js +6 -0
  83. package/dist/module/gql/getPriceCandles.js.map +1 -0
  84. package/dist/module/gql/types/gql.js +2 -3
  85. package/dist/module/gql/types/gql.js.map +1 -1
  86. package/dist/module/gql/types/graphql.js +160 -159
  87. package/dist/module/gql/types/graphql.js.map +1 -1
  88. package/dist/types/CrowdViewWidget/CrowdViewWidget.d.ts +1 -1
  89. package/dist/types/CrowdViewWidget/components/Chart/ChartWithData.d.ts +1 -1
  90. package/dist/types/CrowdViewWidget/components/Chart/index.d.ts +4 -0
  91. package/dist/types/CrowdViewWidget/components/Chart/types.d.ts +19 -16
  92. package/dist/types/CrowdViewWidget/components/Chart/useCrowdViewData.d.ts +2 -0
  93. package/dist/types/CrowdViewWidget/components/Chart/{utils.d.ts → utils/chartUtils.d.ts} +4 -11
  94. package/dist/types/CrowdViewWidget/components/Legend/Legend.d.ts +3 -3
  95. package/dist/types/CrowdViewWidget/constants.d.ts +23 -0
  96. package/dist/types/CrowdViewWidget/selectConfig.d.ts +19 -0
  97. package/dist/types/CrowdViewWidget/types/index.d.ts +1 -0
  98. package/dist/types/CrowdViewWidget/types/instruments.d.ts +36 -0
  99. package/dist/types/CrowdViewWidget/types.d.ts +2 -50
  100. package/dist/types/CrowdViewWidget/utils/instrumentUtils.d.ts +8 -0
  101. package/dist/types/gql/types/gql.d.ts +10 -14
  102. package/dist/types/gql/types/graphql.d.ts +71 -63
  103. package/package.json +6 -4
  104. package/src/CrowdViewWidget/CrowdViewWidget.tsx +2 -2
  105. package/src/CrowdViewWidget/Main.tsx +10 -16
  106. package/src/CrowdViewWidget/components/Chart/Chart.tsx +15 -5
  107. package/src/CrowdViewWidget/components/Chart/ChartWithData.tsx +12 -12
  108. package/src/CrowdViewWidget/components/Chart/{getOption.ts → chartOptions.ts} +51 -70
  109. package/src/CrowdViewWidget/components/Chart/index.ts +4 -0
  110. package/src/CrowdViewWidget/components/Chart/types.ts +25 -23
  111. package/src/CrowdViewWidget/components/Chart/useCrowdViewData.ts +263 -0
  112. package/src/CrowdViewWidget/components/Chart/utils/chartUtils.ts +93 -0
  113. package/src/CrowdViewWidget/components/Legend/Legend.tsx +7 -3
  114. package/src/CrowdViewWidget/components/Legend/LegendBar.tsx +16 -20
  115. package/src/CrowdViewWidget/constants.ts +27 -0
  116. package/src/CrowdViewWidget/render.tsx +1 -0
  117. package/src/CrowdViewWidget/{config.ts → selectConfig.ts} +65 -43
  118. package/src/CrowdViewWidget/types/index.ts +1 -0
  119. package/src/CrowdViewWidget/types/instruments.ts +37 -0
  120. package/src/CrowdViewWidget/types.ts +4 -55
  121. package/src/CrowdViewWidget/utils/instrumentUtils.ts +11 -0
  122. package/src/gql/getOrderPositionBooks.ts +9 -4
  123. package/src/gql/{mock/getPriceCandles.ts → getPriceCandles.ts} +5 -5
  124. package/src/gql/types/gql.ts +6 -14
  125. package/src/gql/types/graphql.ts +170 -160
  126. package/test/Main.test.tsx +1 -1
  127. package/test/components/Legend.test.tsx +3 -6
  128. package/test/components/LegendBar.test.tsx +7 -8
  129. package/test/utils/instrumentUtils.test.ts +52 -0
  130. package/dist/main/CrowdViewWidget/components/Chart/constants.js +0 -14
  131. package/dist/main/CrowdViewWidget/components/Chart/constants.js.map +0 -1
  132. package/dist/main/CrowdViewWidget/components/Chart/getOption.js.map +0 -1
  133. package/dist/main/CrowdViewWidget/components/Chart/getOrderPositionDataMock.js +0 -47
  134. package/dist/main/CrowdViewWidget/components/Chart/getOrderPositionDataMock.js.map +0 -1
  135. package/dist/main/CrowdViewWidget/components/Chart/getPriceCandlesMock.js +0 -36
  136. package/dist/main/CrowdViewWidget/components/Chart/getPriceCandlesMock.js.map +0 -1
  137. package/dist/main/CrowdViewWidget/components/Chart/utils.js +0 -166
  138. package/dist/main/CrowdViewWidget/components/Chart/utils.js.map +0 -1
  139. package/dist/main/CrowdViewWidget/config.js +0 -107
  140. package/dist/main/CrowdViewWidget/config.js.map +0 -1
  141. package/dist/main/gql/mock/getPriceCandles.js +0 -11
  142. package/dist/main/gql/mock/getPriceCandles.js.map +0 -1
  143. package/dist/main/gql/mock/schema.graphqls +0 -62
  144. package/dist/main/gql/validateInstruments.js +0 -11
  145. package/dist/main/gql/validateInstruments.js.map +0 -1
  146. package/dist/module/CrowdViewWidget/components/Chart/constants.js +0 -8
  147. package/dist/module/CrowdViewWidget/components/Chart/constants.js.map +0 -1
  148. package/dist/module/CrowdViewWidget/components/Chart/getOption.js.map +0 -1
  149. package/dist/module/CrowdViewWidget/components/Chart/getOrderPositionDataMock.js +0 -40
  150. package/dist/module/CrowdViewWidget/components/Chart/getOrderPositionDataMock.js.map +0 -1
  151. package/dist/module/CrowdViewWidget/components/Chart/getPriceCandlesMock.js +0 -29
  152. package/dist/module/CrowdViewWidget/components/Chart/getPriceCandlesMock.js.map +0 -1
  153. package/dist/module/CrowdViewWidget/components/Chart/utils.js +0 -156
  154. package/dist/module/CrowdViewWidget/components/Chart/utils.js.map +0 -1
  155. package/dist/module/CrowdViewWidget/config.js +0 -102
  156. package/dist/module/CrowdViewWidget/config.js.map +0 -1
  157. package/dist/module/gql/mock/getPriceCandles.js +0 -6
  158. package/dist/module/gql/mock/getPriceCandles.js.map +0 -1
  159. package/dist/module/gql/mock/schema.graphqls +0 -62
  160. package/dist/module/gql/validateInstruments.js +0 -5
  161. package/dist/module/gql/validateInstruments.js.map +0 -1
  162. package/dist/types/CrowdViewWidget/components/Chart/constants.d.ts +0 -7
  163. package/dist/types/CrowdViewWidget/components/Chart/getOrderPositionDataMock.d.ts +0 -14
  164. package/dist/types/CrowdViewWidget/components/Chart/getPriceCandlesMock.d.ts +0 -2
  165. package/dist/types/CrowdViewWidget/config.d.ts +0 -22
  166. package/dist/types/gql/validateInstruments.d.ts +0 -1
  167. package/src/CrowdViewWidget/components/Chart/constants.tsx +0 -8
  168. package/src/CrowdViewWidget/components/Chart/getOrderPositionDataMock.ts +0 -66
  169. package/src/CrowdViewWidget/components/Chart/getPriceCandlesMock.ts +0 -43
  170. package/src/CrowdViewWidget/components/Chart/utils.ts +0 -191
  171. package/src/gql/mock/schema.graphqls +0 -62
  172. package/src/gql/validateInstruments.ts +0 -10
  173. /package/dist/types/CrowdViewWidget/components/Chart/{getOption.d.ts → chartOptions.d.ts} +0 -0
  174. /package/dist/types/gql/{mock/getPriceCandles.d.ts → getPriceCandles.d.ts} +0 -0
@@ -1,191 +0,0 @@
1
- import { colorMap } from '../../config';
2
- import { TimeSpanId } from '../../types';
3
- import { CHART_HEIGHT } from './constants';
4
- import { getOrderPositionDataMock } from './getOrderPositionDataMock';
5
- import { getPriceCandlesMock } from './getPriceCandlesMock';
6
- import type { GetLabelsDataProps, TransformDataForChartType } from './types';
7
-
8
- export const getRectColor = (sentiment: number) => {
9
- const colors = sentiment < 0 ? colorMap.short : colorMap.long;
10
- const absSentiment = Math.abs(sentiment);
11
-
12
- if (absSentiment < 0.15) {
13
- return colors[3];
14
- }
15
-
16
- if (absSentiment < 0.25) {
17
- return colors[2];
18
- }
19
-
20
- if (absSentiment < 0.4) {
21
- return colors[1];
22
- }
23
-
24
- if (absSentiment >= 0.4) {
25
- return colors[0];
26
- }
27
-
28
- return 'transparent';
29
- };
30
-
31
- export enum GranularityId {
32
- MINUTE_5 = 'MINUTE_5',
33
- MINUTE_15 = 'MINUTE_15',
34
- MINUTE_30 = 'MINUTE_30',
35
- HOUR_1 = 'HOUR_1',
36
- HOUR_4 = 'HOUR_4',
37
- DAY_1 = 'DAY_1',
38
- }
39
-
40
- const timeSpansInMilliseconds: Record<TimeSpanId, number> = {
41
- [TimeSpanId.HOUR_1]: 60 * 60 * 1000,
42
- [TimeSpanId.HOUR_12]: 12 * 60 * 60 * 1000,
43
- [TimeSpanId.DAY_1]: 24 * 60 * 60 * 1000,
44
- [TimeSpanId.DAY_2]: 2 * 24 * 60 * 60 * 1000,
45
- [TimeSpanId.WEEK_1]: 7 * 24 * 60 * 60 * 1000,
46
- [TimeSpanId.WEEK_2]: 14 * 24 * 60 * 60 * 1000,
47
- [TimeSpanId.WEEK_3]: 21 * 24 * 60 * 60 * 1000,
48
- [TimeSpanId.MONTH_1]: 30 * 24 * 60 * 60 * 1000, // Approximation
49
- [TimeSpanId.MONTH_3]: 3 * 30 * 24 * 60 * 60 * 1000, // Approximation
50
- [TimeSpanId.MONTH_6]: 6 * 30 * 24 * 60 * 60 * 1000, // Approximation
51
- [TimeSpanId.YEAR_1]: 365 * 24 * 60 * 60 * 1000, // Approximation
52
- [TimeSpanId.YEAR_5]: 5 * 365 * 24 * 60 * 60 * 1000, // Approximation
53
- };
54
-
55
- const granularityInMilliseconds: Record<GranularityId, number> = {
56
- [GranularityId.MINUTE_5]: 5 * 60 * 1000,
57
- [GranularityId.MINUTE_15]: 15 * 60 * 1000,
58
- [GranularityId.MINUTE_30]: 30 * 60 * 1000,
59
- [GranularityId.HOUR_1]: 60 * 60 * 1000,
60
- [GranularityId.HOUR_4]: 4 * 60 * 60 * 1000,
61
- [GranularityId.DAY_1]: 24 * 60 * 60 * 1000,
62
- };
63
-
64
- const temporaryGranularityTimeSpanMap: Record<GranularityId, TimeSpanId> = {
65
- [GranularityId.MINUTE_5]: TimeSpanId.DAY_2,
66
- [GranularityId.MINUTE_15]: TimeSpanId.WEEK_1,
67
- [GranularityId.MINUTE_30]: TimeSpanId.WEEK_2,
68
- [GranularityId.HOUR_1]: TimeSpanId.MONTH_1,
69
- [GranularityId.HOUR_4]: TimeSpanId.MONTH_3,
70
- [GranularityId.DAY_1]: TimeSpanId.MONTH_6,
71
- };
72
-
73
- const mockXAxisData = (granularityId: GranularityId) => {
74
- const granularity = granularityInMilliseconds[granularityId];
75
- const timeSpan =
76
- timeSpansInMilliseconds[temporaryGranularityTimeSpanMap[granularityId]];
77
-
78
- const currentTime = new Date();
79
-
80
- const startDate = currentTime;
81
- const totalSteps = timeSpan / granularity;
82
-
83
- const orderPositionDataForHistorical = new Array(totalSteps)
84
- .fill(null)
85
- .map((_, index) => {
86
- const newDate = new Date(startDate.getTime() - index * granularity);
87
-
88
- return `${newDate.toISOString().slice(0, 19)}Z`;
89
- })
90
- .reverse();
91
-
92
- return orderPositionDataForHistorical;
93
- };
94
-
95
- export const getLabelData = ({
96
- xAxisData,
97
- isGreaterThanTwoWeeks,
98
- }: GetLabelsDataProps) =>
99
- xAxisData
100
- .filter((record, index, arr) => {
101
- if (index === 0) {
102
- return false;
103
- }
104
- const previousTimestamp = arr[index - 1];
105
- const currentDate = new Date(record);
106
- const previousDate = new Date(previousTimestamp);
107
-
108
- return isGreaterThanTwoWeeks
109
- ? currentDate.getDate() !== previousDate.getDate()
110
- : currentDate.getMonth() !== previousDate.getMonth();
111
- })
112
- .map((item) => ({
113
- name: new Date(item).toLocaleDateString(undefined, {
114
- month: 'short',
115
- day: isGreaterThanTwoWeeks ? 'numeric' : undefined,
116
- }),
117
- xAxis: item,
118
- y: CHART_HEIGHT - 22,
119
- silent: true,
120
- emphasis: {
121
- disabled: true,
122
- },
123
- label: {
124
- fontFamily: 'Sofia W03',
125
- fontSize: 10,
126
- position: 'bottom',
127
- align: 'center',
128
- formatter: '{b}',
129
- },
130
- }));
131
-
132
- export const isDifferenceGreaterThanTwoWeeks = (
133
- startDate: string,
134
- endDate: string
135
- ) => {
136
- const date1 = new Date(startDate);
137
- const date2 = new Date(endDate);
138
-
139
- const TWO_WEEKS_IN_MS = 14 * 24 * 60 * 60 * 1000;
140
-
141
- const differenceInMs = Math.abs(date2.getTime() - date1.getTime());
142
-
143
- return differenceInMs < TWO_WEEKS_IN_MS;
144
- };
145
-
146
- export const transformDataForChart: TransformDataForChartType = ({
147
- granularity,
148
- }) => {
149
- const bucketWidth = 0.005;
150
- const mockedXAxisData = mockXAxisData(granularity);
151
- const mockedCandles = getPriceCandlesMock(mockedXAxisData.length);
152
-
153
- const orderPositionData = mockedCandles.map((item, index) => {
154
- return {
155
- time: mockedXAxisData[index],
156
- buckets: getOrderPositionDataMock({
157
- baseValue: item.high,
158
- bucketWidth,
159
- crossoverValue: item.high + (Math.random() - 0.5) * 0.3,
160
- }),
161
- bucketWidth: 0.005,
162
- };
163
- });
164
-
165
- const ordersPositionsChartData = orderPositionData
166
- .flatMap(
167
- ({ buckets, time }) =>
168
- buckets.map((bucket) => [
169
- time,
170
- bucket!.price,
171
- bucket!.longCountPercent - bucket!.shortCountPercent,
172
- ]) as [string, number, number][]
173
- )
174
- .filter((item) => Math.abs(item[2]) > 0.15);
175
-
176
- const candlesSeriesData: [number, number, number, number][] =
177
- mockedCandles.map(({ close, open, low, high }) => [
178
- +close.toFixed(5),
179
- +open.toFixed(5),
180
- +low.toFixed(5),
181
- +high.toFixed(5),
182
- ]);
183
-
184
- return {
185
- xAxisData: mockedXAxisData,
186
- ordersPositionsChartData,
187
- ordersPositionsBucketWidth: bucketWidth,
188
- candlesSeriesData,
189
- granularity,
190
- };
191
- };
@@ -1,62 +0,0 @@
1
- enum TimeSpan {
2
- HOUR_1
3
- HOUR_12
4
- DAY_1
5
- DAY_2
6
- WEEK_1
7
- WEEK_2
8
- WEEK_3
9
- MONTH_1
10
- MONTH_3
11
- MONTH_6
12
- YEAR_1
13
- }
14
-
15
- enum Granularity {
16
- MINUTE_5
17
- MINUTE_15
18
- MINUTE_30
19
- HOUR_1
20
- HOUR_4
21
- DAY_1
22
- }
23
-
24
- enum Division {
25
- OAP
26
- OAU
27
- OC
28
- OCAN
29
- OEL
30
- OGM
31
- OJ
32
- OPT
33
- OTMS
34
- }
35
-
36
- type Candle {
37
- high: Float!
38
- low: Float!
39
- open: Float!
40
- close: Float!
41
- }
42
-
43
- type Instrument {
44
- name: String!
45
- displayName: String!
46
- }
47
-
48
- type CandlesData {
49
- time: String!
50
- unixTime: Int!
51
- candle: Candle!
52
- timeSpan: TimeSpan!
53
- }
54
-
55
- type Query {
56
- getPriceCandles(
57
- division: Division
58
- instrument: String!
59
- granularity: Granularity!
60
- timeSpan: TimeSpan!
61
- ): [CandlesData!]!
62
- }
@@ -1,10 +0,0 @@
1
- import { gql } from '@apollo/client';
2
-
3
- export const validateInstruments = gql`
4
- query validateInstruments($instruments: [String]!, $division: Division) {
5
- mapInstrumentNames(instruments: $instruments, division: $division) {
6
- name
7
- displayName
8
- }
9
- }
10
- `;