@oanda/labs-live-rates-table-widget 1.0.52 → 1.0.54
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 +436 -0
- package/dist/main/LiveRatesTableWidget/Main.js +29 -14
- package/dist/main/LiveRatesTableWidget/Main.js.map +1 -1
- package/dist/main/LiveRatesTableWidget/config.js.map +1 -1
- package/dist/module/LiveRatesTableWidget/Main.js +29 -14
- package/dist/module/LiveRatesTableWidget/Main.js.map +1 -1
- package/dist/module/LiveRatesTableWidget/config.js.map +1 -1
- package/dist/types/LiveRatesTableWidget/config.d.ts +1 -1
- package/package.json +3 -3
- package/src/LiveRatesTableWidget/Main.tsx +18 -10
- package/src/LiveRatesTableWidget/config.ts +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,442 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 1.0.54 (2025-04-22)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 1.0.187 (2025-04-18)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 1.0.186 (2025-04-10)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 1.0.185 (2025-04-09)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 1.0.184 (2025-04-08)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## 1.0.183 (2025-04-04)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## 1.0.182 (2025-03-21)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## 1.0.181 (2025-03-13)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 1.0.180 (2025-01-30)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## 1.0.179 (2025-01-29)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## 1.0.178 (2025-01-12)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## 1.0.177 (2025-01-10)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## 1.0.176 (2025-01-10)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## 1.0.175 (2025-01-08)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## 1.0.174 (2024-12-16)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## 1.0.173 (2024-12-11)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## 1.0.172 (2024-11-29)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## 1.0.171 (2024-11-28)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 1.0.170 (2024-11-28)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## 1.0.169 (2024-11-20)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 1.0.168 (2024-11-19)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## 1.0.167 (2024-10-14)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## 1.0.166 (2024-10-07)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## 1.0.165 (2024-10-03)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## 1.0.164 (2024-09-26)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 1.0.163 (2024-09-18)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## 1.0.162 (2024-09-12)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## 1.0.161 (2024-09-11)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## 1.0.160 (2024-09-10)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## 1.0.159 (2024-09-09)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## 1.0.158 (2024-09-04)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## 1.0.157 (2024-09-04)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
## 1.0.156 (2024-09-02)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## 1.0.155 (2024-08-29)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## 1.0.154 (2024-08-29)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## 1.0.153 (2024-08-23)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
## 1.0.152 (2024-08-23)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## 1.0.151 (2024-08-20)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
## 1.0.150 (2024-08-19)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
## 1.0.149 (2024-08-07)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## 1.0.148 (2024-08-01)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## 1.0.147 (2024-08-01)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
## 1.0.146 (2024-07-26)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## 1.0.145 (2024-07-25)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## 1.0.144 (2024-07-22)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
## 1.0.143 (2024-07-19)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
## 1.0.142 (2024-07-16)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
## 1.0.141 (2024-07-16)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## 1.0.140 (2024-07-12)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
## 1.0.139 (2024-07-12)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
## 1.0.138 (2024-07-10)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
## 1.0.137 (2024-07-05)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
## 1.0.136 (2024-07-03)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## 1.0.135 (2024-07-03)
|
|
219
|
+
|
|
220
|
+
**Note:** Version bump only for package @oanda/labs-live-rates-table-widget
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
## 1.0.53 (2025-04-18)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
## 1.0.186 (2025-04-10)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
## 1.0.185 (2025-04-09)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
## 1.0.184 (2025-04-08)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## 1.0.183 (2025-04-04)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
## 1.0.182 (2025-03-21)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
## 1.0.181 (2025-03-13)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
## 1.0.180 (2025-01-30)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
## 1.0.179 (2025-01-29)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
## 1.0.178 (2025-01-12)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## 1.0.177 (2025-01-10)
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
## 1.0.176 (2025-01-10)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
## 1.0.175 (2025-01-08)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
## 1.0.174 (2024-12-16)
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
## 1.0.173 (2024-12-11)
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
## 1.0.172 (2024-11-29)
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
## 1.0.171 (2024-11-28)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
## 1.0.170 (2024-11-28)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
## 1.0.169 (2024-11-20)
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
## 1.0.168 (2024-11-19)
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
## 1.0.167 (2024-10-14)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
## 1.0.166 (2024-10-07)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
## 1.0.165 (2024-10-03)
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
## 1.0.164 (2024-09-26)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
## 1.0.163 (2024-09-18)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
## 1.0.162 (2024-09-12)
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
## 1.0.161 (2024-09-11)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
## 1.0.160 (2024-09-10)
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
## 1.0.159 (2024-09-09)
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
## 1.0.158 (2024-09-04)
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
## 1.0.157 (2024-09-04)
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
## 1.0.156 (2024-09-02)
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
## 1.0.155 (2024-08-29)
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
## 1.0.154 (2024-08-29)
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
## 1.0.153 (2024-08-23)
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
## 1.0.152 (2024-08-23)
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
## 1.0.151 (2024-08-20)
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
## 1.0.150 (2024-08-19)
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
## 1.0.149 (2024-08-07)
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
## 1.0.148 (2024-08-01)
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
## 1.0.147 (2024-08-01)
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
## 1.0.146 (2024-07-26)
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
## 1.0.145 (2024-07-25)
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
## 1.0.144 (2024-07-22)
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
## 1.0.143 (2024-07-19)
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
## 1.0.142 (2024-07-16)
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
## 1.0.141 (2024-07-16)
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
## 1.0.140 (2024-07-12)
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
## 1.0.139 (2024-07-12)
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
## 1.0.138 (2024-07-10)
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
## 1.0.137 (2024-07-05)
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
## 1.0.136 (2024-07-03)
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
## 1.0.135 (2024-07-03)
|
|
435
|
+
|
|
436
|
+
**Note:** Version bump only for package @oanda/labs-live-rates-table-widget
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
6
442
|
## 1.0.52 (2025-04-10)
|
|
7
443
|
|
|
8
444
|
|
|
@@ -31,6 +31,7 @@ const Main = _ref => {
|
|
|
31
31
|
const {
|
|
32
32
|
data,
|
|
33
33
|
loading,
|
|
34
|
+
mainLoading,
|
|
34
35
|
error
|
|
35
36
|
} = (0, _labsWidgetCommon.useFetchCombinedDataRecords)({
|
|
36
37
|
mainQuery: _validateInstruments.validateInstruments,
|
|
@@ -40,9 +41,9 @@ const Main = _ref => {
|
|
|
40
41
|
},
|
|
41
42
|
batchQuery: _getInstrumentsChart.getInstrumentsChart,
|
|
42
43
|
getBatchVariables: mainData => {
|
|
43
|
-
const
|
|
44
|
-
return
|
|
45
|
-
instruments:
|
|
44
|
+
const instrumentsByDivision = mainData?.mapInstrumentNames?.filter(i => !!i?.displayName)?.map(i => i.displayName);
|
|
45
|
+
return instrumentsByDivision?.length ? {
|
|
46
|
+
instruments: instrumentsByDivision,
|
|
46
47
|
division
|
|
47
48
|
} : undefined;
|
|
48
49
|
},
|
|
@@ -50,30 +51,44 @@ const Main = _ref => {
|
|
|
50
51
|
fetchPolicy: 'network-only'
|
|
51
52
|
});
|
|
52
53
|
(0, _react.useEffect)(() => {
|
|
53
|
-
if (!
|
|
54
|
+
if (!mainLoading && data) {
|
|
54
55
|
setRecords(data.records ?? []);
|
|
55
56
|
}
|
|
56
|
-
}, [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
}, [mainLoading, data]);
|
|
58
|
+
(0, _react.useEffect)(() => {
|
|
59
|
+
if (records[0].instrument) {
|
|
60
|
+
const instrumentsNames = records.map(_ref2 => {
|
|
61
|
+
let {
|
|
62
|
+
instrument
|
|
63
|
+
} = _ref2;
|
|
64
|
+
return instrument;
|
|
65
|
+
});
|
|
66
|
+
setQuery({
|
|
67
|
+
instruments: instrumentsNames
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}, [isDesktop]);
|
|
63
71
|
(0, _react.useEffect)(() => {
|
|
64
|
-
if (
|
|
72
|
+
if (records[0].instrument && records[0].chart?.length === 0) {
|
|
73
|
+
const instrumentsNames = records.map(_ref3 => {
|
|
74
|
+
let {
|
|
75
|
+
instrument
|
|
76
|
+
} = _ref3;
|
|
77
|
+
return instrument;
|
|
78
|
+
});
|
|
65
79
|
setQuery({
|
|
66
80
|
instruments: instrumentsNames
|
|
67
81
|
});
|
|
68
82
|
}
|
|
69
|
-
}, [records
|
|
83
|
+
}, [records]);
|
|
70
84
|
const showError = !loading && !!error || !loading && !data;
|
|
71
85
|
return _react.default.createElement(_labsWidgetCommon.TableWidget, {
|
|
72
86
|
activeColumns: columns,
|
|
73
87
|
count: 0,
|
|
74
88
|
hasError: showError,
|
|
75
89
|
headerColumns: (0, _config.getHeaderConfig)(columns),
|
|
76
|
-
|
|
90
|
+
isChartLoading: loading,
|
|
91
|
+
isLoading: mainLoading,
|
|
77
92
|
pageNumber: 0,
|
|
78
93
|
records: records,
|
|
79
94
|
target: target,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["_labsWidgetCommon","require","_react","_interopRequireWildcard","_getInstrumentsChart","_validateInstruments","_config","_constant","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Main","_ref","instruments","division","columns","DEFAULT_COLUMNS","size","useLayoutProvider","isDesktop","Size","DESKTOP","target","setQuery","useLiveRatesQuery","records","setRecords","useState","Array","length","fill","data","loading","error","useFetchCombinedDataRecords","mainQuery","validateInstruments","mainVariables","batchQuery","getInstrumentsChart","getBatchVariables","mainData","
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_labsWidgetCommon","require","_react","_interopRequireWildcard","_getInstrumentsChart","_validateInstruments","_config","_constant","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Main","_ref","instruments","division","columns","DEFAULT_COLUMNS","size","useLayoutProvider","isDesktop","Size","DESKTOP","target","setQuery","useLiveRatesQuery","records","setRecords","useState","Array","length","fill","data","loading","mainLoading","error","useFetchCombinedDataRecords","mainQuery","validateInstruments","mainVariables","batchQuery","getInstrumentsChart","getBatchVariables","mainData","instrumentsByDivision","mapInstrumentNames","filter","displayName","map","undefined","merge","chartData","getRecords","fetchPolicy","useEffect","instrument","instrumentsNames","_ref2","chart","_ref3","showError","createElement","TableWidget","activeColumns","count","hasError","headerColumns","getHeaderConfig","isChartLoading","isLoading","pageNumber","testId","toolTipId","INSTRUMENT_TOOLTIP_ID","exports"],"sources":["../../../src/LiveRatesTableWidget/Main.tsx"],"sourcesContent":["import type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n Size,\n TableWidget,\n useFetchCombinedDataRecords,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport React, { useEffect, useState } from 'react';\n\nimport { getInstrumentsChart } from '../gql/getInstrumentsChart';\nimport type {\n GetInstrumentsChartQuery,\n GetInstrumentsChartQueryVariables,\n ValidateInstrumentsQuery,\n ValidateInstrumentsQueryVariables,\n} from '../gql/types/graphql';\nimport { validateInstruments } from '../gql/validateInstruments';\nimport { getHeaderConfig } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps, ValidateInstrumentsData } from './types';\nimport { getRecords } from './utils';\n\nconst Main = ({\n instruments,\n division,\n columns = DEFAULT_COLUMNS,\n}: MainProps) => {\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const { target, setQuery } = useLiveRatesQuery();\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(instruments.length).fill({})\n );\n\n const { data, loading, mainLoading, error } = useFetchCombinedDataRecords<\n ValidateInstrumentsQuery,\n ValidateInstrumentsQueryVariables,\n GetInstrumentsChartQuery,\n GetInstrumentsChartQueryVariables,\n ValidateInstrumentsData\n >({\n mainQuery: validateInstruments,\n mainVariables: {\n instruments,\n division,\n },\n batchQuery: getInstrumentsChart,\n getBatchVariables: (mainData) => {\n const instrumentsByDivision = mainData?.mapInstrumentNames\n ?.filter(\n (i): i is { displayName: string; name: string } => !!i?.displayName\n )\n ?.map((i) => i.displayName);\n\n return instrumentsByDivision?.length\n ? { instruments: instrumentsByDivision, division }\n : undefined;\n },\n merge: (mainData, chartData) => getRecords(mainData, chartData),\n fetchPolicy: 'network-only',\n });\n\n useEffect(() => {\n if (!mainLoading && data) {\n setRecords(data.records ?? []);\n }\n }, [mainLoading, data]);\n\n useEffect(() => {\n if (records[0].instrument) {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDesktop]);\n\n useEffect(() => {\n if (records[0].instrument && records[0].chart?.length === 0) {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n return (\n <TableWidget\n activeColumns={columns}\n count={0}\n hasError={showError}\n headerColumns={getHeaderConfig(columns)}\n isChartLoading={loading}\n isLoading={mainLoading}\n pageNumber={0}\n records={records}\n target={target}\n testId=\"live-rates-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n />\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":["_labsWidgetCommon","require","_types","headerConfig","exports","DataRecordType","INSTRUMENT","displayName","additionalStyles","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","getHeaderConfig","activeColumns","columns","filter","item","SENTIMENT","map","sizeConfig","View","CARDS","Size","MOBILE","TABLE","DESKTOP"],"sources":["../../../src/LiveRatesTableWidget/config.ts"],"sourcesContent":["import type { HeaderColumns } from '@oanda/labs-widget-common';\nimport { DataRecordType, Size } from '@oanda/labs-widget-common';\n\nimport { View } from './types';\n\ntype HeaderRecordType
|
|
1
|
+
{"version":3,"file":"config.js","names":["_labsWidgetCommon","require","_types","headerConfig","exports","DataRecordType","INSTRUMENT","displayName","additionalStyles","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","getHeaderConfig","activeColumns","columns","filter","item","SENTIMENT","map","sizeConfig","View","CARDS","Size","MOBILE","TABLE","DESKTOP"],"sources":["../../../src/LiveRatesTableWidget/config.ts"],"sourcesContent":["import type { HeaderColumns } from '@oanda/labs-widget-common';\nimport { DataRecordType, Size } from '@oanda/labs-widget-common';\n\nimport { View } from './types';\n\ntype HeaderRecordType =\n | DataRecordType.INSTRUMENT\n | DataRecordType.SELL\n | DataRecordType.BUY\n | DataRecordType.DAILY_CHANGE\n | DataRecordType.CHART\n | DataRecordType.SPREAD;\n\nconst headerConfig: Record<\n HeaderRecordType,\n { displayName: string; additionalStyles: string }\n> = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: 'lw-text-left lw-min-w-[130px]',\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: 'lw-text-right lw-min-w-[80px]',\n },\n [DataRecordType.CHART]: {\n displayName: '24h_chart',\n additionalStyles: 'lw-text-center lw-min-w-[100px]',\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: 'lw-text-right lw-min-w-[50px]',\n },\n};\n\nconst getHeaderConfig = (activeColumns: DataRecordType[]): HeaderColumns[] => {\n const columns: HeaderRecordType[] = [\n DataRecordType.INSTRUMENT,\n ...activeColumns,\n ].filter(\n (item): item is HeaderRecordType => item !== DataRecordType.SENTIMENT\n );\n\n return columns.map((item) => headerConfig[item]);\n};\n\nconst sizeConfig = {\n [View.CARDS]: Size.MOBILE,\n [View.TABLE]: Size.DESKTOP,\n};\n\nexport { getHeaderConfig, headerConfig, sizeConfig };\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAUA,MAAME,YAGL,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACF,CAACE,gCAAc,CAACC,UAAU,GAAG;IAC3BC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACI,IAAI,GAAG;IACrBF,WAAW,EAAE,MAAM;IACnBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACK,GAAG,GAAG;IACpBH,WAAW,EAAE,KAAK;IAClBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACM,YAAY,GAAG;IAC7BJ,WAAW,EAAE,sBAAsB;IACnCC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACO,KAAK,GAAG;IACtBL,WAAW,EAAE,WAAW;IACxBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACH,gCAAc,CAACQ,MAAM,GAAG;IACvBN,WAAW,EAAE,QAAQ;IACrBC,gBAAgB,EAAE;EACpB;AACF,CAAC;AAED,MAAMM,eAAe,GAAIC,aAA+B,IAAsB;EAC5E,MAAMC,OAA2B,GAAG,CAClCX,gCAAc,CAACC,UAAU,EACzB,GAAGS,aAAa,CACjB,CAACE,MAAM,CACLC,IAAI,IAA+BA,IAAI,KAAKb,gCAAc,CAACc,SAC9D,CAAC;EAED,OAAOH,OAAO,CAACI,GAAG,CAAEF,IAAI,IAAKf,YAAY,CAACe,IAAI,CAAC,CAAC;AAClD,CAAC;AAACd,OAAA,CAAAU,eAAA,GAAAA,eAAA;AAEF,MAAMO,UAAU,GAAAjB,OAAA,CAAAiB,UAAA,GAAG;EACjB,CAACC,WAAI,CAACC,KAAK,GAAGC,sBAAI,CAACC,MAAM;EACzB,CAACH,WAAI,CAACI,KAAK,GAAGF,sBAAI,CAACG;AACrB,CAAC","ignoreList":[]}
|
|
@@ -23,6 +23,7 @@ const Main = _ref => {
|
|
|
23
23
|
const {
|
|
24
24
|
data,
|
|
25
25
|
loading,
|
|
26
|
+
mainLoading,
|
|
26
27
|
error
|
|
27
28
|
} = useFetchCombinedDataRecords({
|
|
28
29
|
mainQuery: validateInstruments,
|
|
@@ -32,9 +33,9 @@ const Main = _ref => {
|
|
|
32
33
|
},
|
|
33
34
|
batchQuery: getInstrumentsChart,
|
|
34
35
|
getBatchVariables: mainData => {
|
|
35
|
-
const
|
|
36
|
-
return
|
|
37
|
-
instruments:
|
|
36
|
+
const instrumentsByDivision = mainData?.mapInstrumentNames?.filter(i => !!i?.displayName)?.map(i => i.displayName);
|
|
37
|
+
return instrumentsByDivision?.length ? {
|
|
38
|
+
instruments: instrumentsByDivision,
|
|
38
39
|
division
|
|
39
40
|
} : undefined;
|
|
40
41
|
},
|
|
@@ -42,30 +43,44 @@ const Main = _ref => {
|
|
|
42
43
|
fetchPolicy: 'network-only'
|
|
43
44
|
});
|
|
44
45
|
useEffect(() => {
|
|
45
|
-
if (!
|
|
46
|
+
if (!mainLoading && data) {
|
|
46
47
|
setRecords(data.records ?? []);
|
|
47
48
|
}
|
|
48
|
-
}, [
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
}, [mainLoading, data]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (records[0].instrument) {
|
|
52
|
+
const instrumentsNames = records.map(_ref2 => {
|
|
53
|
+
let {
|
|
54
|
+
instrument
|
|
55
|
+
} = _ref2;
|
|
56
|
+
return instrument;
|
|
57
|
+
});
|
|
58
|
+
setQuery({
|
|
59
|
+
instruments: instrumentsNames
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}, [isDesktop]);
|
|
55
63
|
useEffect(() => {
|
|
56
|
-
if (
|
|
64
|
+
if (records[0].instrument && records[0].chart?.length === 0) {
|
|
65
|
+
const instrumentsNames = records.map(_ref3 => {
|
|
66
|
+
let {
|
|
67
|
+
instrument
|
|
68
|
+
} = _ref3;
|
|
69
|
+
return instrument;
|
|
70
|
+
});
|
|
57
71
|
setQuery({
|
|
58
72
|
instruments: instrumentsNames
|
|
59
73
|
});
|
|
60
74
|
}
|
|
61
|
-
}, [records
|
|
75
|
+
}, [records]);
|
|
62
76
|
const showError = !loading && !!error || !loading && !data;
|
|
63
77
|
return React.createElement(TableWidget, {
|
|
64
78
|
activeColumns: columns,
|
|
65
79
|
count: 0,
|
|
66
80
|
hasError: showError,
|
|
67
81
|
headerColumns: getHeaderConfig(columns),
|
|
68
|
-
|
|
82
|
+
isChartLoading: loading,
|
|
83
|
+
isLoading: mainLoading,
|
|
69
84
|
pageNumber: 0,
|
|
70
85
|
records: records,
|
|
71
86
|
target: target,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["Size","TableWidget","useFetchCombinedDataRecords","useLayoutProvider","useLiveRatesQuery","React","useEffect","useState","getInstrumentsChart","validateInstruments","getHeaderConfig","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","getRecords","Main","_ref","instruments","division","columns","size","isDesktop","DESKTOP","target","setQuery","records","setRecords","Array","length","fill","data","loading","error","mainQuery","mainVariables","batchQuery","getBatchVariables","mainData","
|
|
1
|
+
{"version":3,"file":"Main.js","names":["Size","TableWidget","useFetchCombinedDataRecords","useLayoutProvider","useLiveRatesQuery","React","useEffect","useState","getInstrumentsChart","validateInstruments","getHeaderConfig","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","getRecords","Main","_ref","instruments","division","columns","size","isDesktop","DESKTOP","target","setQuery","records","setRecords","Array","length","fill","data","loading","mainLoading","error","mainQuery","mainVariables","batchQuery","getBatchVariables","mainData","instrumentsByDivision","mapInstrumentNames","filter","i","displayName","map","undefined","merge","chartData","fetchPolicy","instrument","instrumentsNames","_ref2","chart","_ref3","showError","createElement","activeColumns","count","hasError","headerColumns","isChartLoading","isLoading","pageNumber","testId","toolTipId"],"sources":["../../../src/LiveRatesTableWidget/Main.tsx"],"sourcesContent":["import type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n Size,\n TableWidget,\n useFetchCombinedDataRecords,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport React, { useEffect, useState } from 'react';\n\nimport { getInstrumentsChart } from '../gql/getInstrumentsChart';\nimport type {\n GetInstrumentsChartQuery,\n GetInstrumentsChartQueryVariables,\n ValidateInstrumentsQuery,\n ValidateInstrumentsQueryVariables,\n} from '../gql/types/graphql';\nimport { validateInstruments } from '../gql/validateInstruments';\nimport { getHeaderConfig } from './config';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { MainProps, ValidateInstrumentsData } from './types';\nimport { getRecords } from './utils';\n\nconst Main = ({\n instruments,\n division,\n columns = DEFAULT_COLUMNS,\n}: MainProps) => {\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const { target, setQuery } = useLiveRatesQuery();\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(instruments.length).fill({})\n );\n\n const { data, loading, mainLoading, error } = useFetchCombinedDataRecords<\n ValidateInstrumentsQuery,\n ValidateInstrumentsQueryVariables,\n GetInstrumentsChartQuery,\n GetInstrumentsChartQueryVariables,\n ValidateInstrumentsData\n >({\n mainQuery: validateInstruments,\n mainVariables: {\n instruments,\n division,\n },\n batchQuery: getInstrumentsChart,\n getBatchVariables: (mainData) => {\n const instrumentsByDivision = mainData?.mapInstrumentNames\n ?.filter(\n (i): i is { displayName: string; name: string } => !!i?.displayName\n )\n ?.map((i) => i.displayName);\n\n return instrumentsByDivision?.length\n ? { instruments: instrumentsByDivision, division }\n : undefined;\n },\n merge: (mainData, chartData) => getRecords(mainData, chartData),\n fetchPolicy: 'network-only',\n });\n\n useEffect(() => {\n if (!mainLoading && data) {\n setRecords(data.records ?? []);\n }\n }, [mainLoading, data]);\n\n useEffect(() => {\n if (records[0].instrument) {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDesktop]);\n\n useEffect(() => {\n if (records[0].instrument && records[0].chart?.length === 0) {\n const instrumentsNames = records.map(({ instrument }) => instrument);\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n return (\n <TableWidget\n activeColumns={columns}\n count={0}\n hasError={showError}\n headerColumns={getHeaderConfig(columns)}\n isChartLoading={loading}\n isLoading={mainLoading}\n pageNumber={0}\n records={records}\n target={target}\n testId=\"live-rates-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n />\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":["DataRecordType","Size","View","headerConfig","INSTRUMENT","displayName","additionalStyles","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","getHeaderConfig","activeColumns","columns","filter","item","SENTIMENT","map","sizeConfig","CARDS","MOBILE","TABLE","DESKTOP"],"sources":["../../../src/LiveRatesTableWidget/config.ts"],"sourcesContent":["import type { HeaderColumns } from '@oanda/labs-widget-common';\nimport { DataRecordType, Size } from '@oanda/labs-widget-common';\n\nimport { View } from './types';\n\ntype HeaderRecordType
|
|
1
|
+
{"version":3,"file":"config.js","names":["DataRecordType","Size","View","headerConfig","INSTRUMENT","displayName","additionalStyles","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","getHeaderConfig","activeColumns","columns","filter","item","SENTIMENT","map","sizeConfig","CARDS","MOBILE","TABLE","DESKTOP"],"sources":["../../../src/LiveRatesTableWidget/config.ts"],"sourcesContent":["import type { HeaderColumns } from '@oanda/labs-widget-common';\nimport { DataRecordType, Size } from '@oanda/labs-widget-common';\n\nimport { View } from './types';\n\ntype HeaderRecordType =\n | DataRecordType.INSTRUMENT\n | DataRecordType.SELL\n | DataRecordType.BUY\n | DataRecordType.DAILY_CHANGE\n | DataRecordType.CHART\n | DataRecordType.SPREAD;\n\nconst headerConfig: Record<\n HeaderRecordType,\n { displayName: string; additionalStyles: string }\n> = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: 'lw-text-left lw-min-w-[130px]',\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: 'lw-text-right lw-min-w-[80px]',\n },\n [DataRecordType.CHART]: {\n displayName: '24h_chart',\n additionalStyles: 'lw-text-center lw-min-w-[100px]',\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: 'lw-text-right lw-min-w-[50px]',\n },\n};\n\nconst getHeaderConfig = (activeColumns: DataRecordType[]): HeaderColumns[] => {\n const columns: HeaderRecordType[] = [\n DataRecordType.INSTRUMENT,\n ...activeColumns,\n ].filter(\n (item): item is HeaderRecordType => item !== DataRecordType.SENTIMENT\n );\n\n return columns.map((item) => headerConfig[item]);\n};\n\nconst sizeConfig = {\n [View.CARDS]: Size.MOBILE,\n [View.TABLE]: Size.DESKTOP,\n};\n\nexport { getHeaderConfig, headerConfig, sizeConfig };\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,IAAI,QAAQ,2BAA2B;AAEhE,SAASC,IAAI,QAAQ,SAAS;AAU9B,MAAMC,YAGL,GAAG;EACF,CAACH,cAAc,CAACI,UAAU,GAAG;IAC3BC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACN,cAAc,CAACO,IAAI,GAAG;IACrBF,WAAW,EAAE,MAAM;IACnBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACN,cAAc,CAACQ,GAAG,GAAG;IACpBH,WAAW,EAAE,KAAK;IAClBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACN,cAAc,CAACS,YAAY,GAAG;IAC7BJ,WAAW,EAAE,sBAAsB;IACnCC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACN,cAAc,CAACU,KAAK,GAAG;IACtBL,WAAW,EAAE,WAAW;IACxBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACN,cAAc,CAACW,MAAM,GAAG;IACvBN,WAAW,EAAE,QAAQ;IACrBC,gBAAgB,EAAE;EACpB;AACF,CAAC;AAED,MAAMM,eAAe,GAAIC,aAA+B,IAAsB;EAC5E,MAAMC,OAA2B,GAAG,CAClCd,cAAc,CAACI,UAAU,EACzB,GAAGS,aAAa,CACjB,CAACE,MAAM,CACLC,IAAI,IAA+BA,IAAI,KAAKhB,cAAc,CAACiB,SAC9D,CAAC;EAED,OAAOH,OAAO,CAACI,GAAG,CAAEF,IAAI,IAAKb,YAAY,CAACa,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAMG,UAAU,GAAG;EACjB,CAACjB,IAAI,CAACkB,KAAK,GAAGnB,IAAI,CAACoB,MAAM;EACzB,CAACnB,IAAI,CAACoB,KAAK,GAAGrB,IAAI,CAACsB;AACrB,CAAC;AAED,SAASX,eAAe,EAAET,YAAY,EAAEgB,UAAU","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HeaderColumns } from '@oanda/labs-widget-common';
|
|
2
2
|
import { DataRecordType, Size } from '@oanda/labs-widget-common';
|
|
3
|
-
type HeaderRecordType =
|
|
3
|
+
type HeaderRecordType = DataRecordType.INSTRUMENT | DataRecordType.SELL | DataRecordType.BUY | DataRecordType.DAILY_CHANGE | DataRecordType.CHART | DataRecordType.SPREAD;
|
|
4
4
|
declare const headerConfig: Record<HeaderRecordType, {
|
|
5
5
|
displayName: string;
|
|
6
6
|
additionalStyles: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-live-rates-table-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.54",
|
|
4
4
|
"description": "Labs Live Rates Table Widget",
|
|
5
5
|
"main": "dist/main/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"author": "OANDA",
|
|
13
13
|
"license": "UNLICENSED",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@oanda/labs-widget-common": "^1.0.
|
|
15
|
+
"@oanda/labs-widget-common": "^1.0.188",
|
|
16
16
|
"@oanda/mono-i18n": "10.0.1",
|
|
17
17
|
"graphql": "16.8.1"
|
|
18
18
|
},
|
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
"@graphql-codegen/cli": "5.0.0",
|
|
21
21
|
"@graphql-codegen/client-preset": "4.1.0"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "430b38bbf525928f90d0eda1cee43f477a033faa"
|
|
24
24
|
}
|
|
@@ -34,7 +34,7 @@ const Main = ({
|
|
|
34
34
|
new Array(instruments.length).fill({})
|
|
35
35
|
);
|
|
36
36
|
|
|
37
|
-
const { data, loading, error } = useFetchCombinedDataRecords<
|
|
37
|
+
const { data, loading, mainLoading, error } = useFetchCombinedDataRecords<
|
|
38
38
|
ValidateInstrumentsQuery,
|
|
39
39
|
ValidateInstrumentsQueryVariables,
|
|
40
40
|
GetInstrumentsChartQuery,
|
|
@@ -48,14 +48,14 @@ const Main = ({
|
|
|
48
48
|
},
|
|
49
49
|
batchQuery: getInstrumentsChart,
|
|
50
50
|
getBatchVariables: (mainData) => {
|
|
51
|
-
const
|
|
51
|
+
const instrumentsByDivision = mainData?.mapInstrumentNames
|
|
52
52
|
?.filter(
|
|
53
53
|
(i): i is { displayName: string; name: string } => !!i?.displayName
|
|
54
54
|
)
|
|
55
55
|
?.map((i) => i.displayName);
|
|
56
56
|
|
|
57
|
-
return
|
|
58
|
-
? { instruments:
|
|
57
|
+
return instrumentsByDivision?.length
|
|
58
|
+
? { instruments: instrumentsByDivision, division }
|
|
59
59
|
: undefined;
|
|
60
60
|
},
|
|
61
61
|
merge: (mainData, chartData) => getRecords(mainData, chartData),
|
|
@@ -63,19 +63,26 @@ const Main = ({
|
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
useEffect(() => {
|
|
66
|
-
if (!
|
|
66
|
+
if (!mainLoading && data) {
|
|
67
67
|
setRecords(data.records ?? []);
|
|
68
68
|
}
|
|
69
|
-
}, [
|
|
69
|
+
}, [mainLoading, data]);
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (records[0].instrument) {
|
|
73
|
+
const instrumentsNames = records.map(({ instrument }) => instrument);
|
|
74
|
+
setQuery({ instruments: instrumentsNames });
|
|
75
|
+
}
|
|
76
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
|
+
}, [isDesktop]);
|
|
72
78
|
|
|
73
79
|
useEffect(() => {
|
|
74
|
-
if (
|
|
80
|
+
if (records[0].instrument && records[0].chart?.length === 0) {
|
|
81
|
+
const instrumentsNames = records.map(({ instrument }) => instrument);
|
|
75
82
|
setQuery({ instruments: instrumentsNames });
|
|
76
83
|
}
|
|
77
84
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
78
|
-
}, [records
|
|
85
|
+
}, [records]);
|
|
79
86
|
|
|
80
87
|
const showError = (!loading && !!error) || (!loading && !data);
|
|
81
88
|
|
|
@@ -85,7 +92,8 @@ const Main = ({
|
|
|
85
92
|
count={0}
|
|
86
93
|
hasError={showError}
|
|
87
94
|
headerColumns={getHeaderConfig(columns)}
|
|
88
|
-
|
|
95
|
+
isChartLoading={loading}
|
|
96
|
+
isLoading={mainLoading}
|
|
89
97
|
pageNumber={0}
|
|
90
98
|
records={records}
|
|
91
99
|
target={target}
|
|
@@ -3,7 +3,13 @@ import { DataRecordType, Size } from '@oanda/labs-widget-common';
|
|
|
3
3
|
|
|
4
4
|
import { View } from './types';
|
|
5
5
|
|
|
6
|
-
type HeaderRecordType =
|
|
6
|
+
type HeaderRecordType =
|
|
7
|
+
| DataRecordType.INSTRUMENT
|
|
8
|
+
| DataRecordType.SELL
|
|
9
|
+
| DataRecordType.BUY
|
|
10
|
+
| DataRecordType.DAILY_CHANGE
|
|
11
|
+
| DataRecordType.CHART
|
|
12
|
+
| DataRecordType.SPREAD;
|
|
7
13
|
|
|
8
14
|
const headerConfig: Record<
|
|
9
15
|
HeaderRecordType,
|