@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 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 intrumentsByDivision = mainData?.mapInstrumentNames?.filter(i => !!i?.displayName)?.map(i => i.displayName);
44
- return intrumentsByDivision?.length ? {
45
- instruments: intrumentsByDivision,
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 (!loading && data) {
54
+ if (!mainLoading && data) {
54
55
  setRecords(data.records ?? []);
55
56
  }
56
- }, [loading, data]);
57
- const instrumentsNames = records.map(_ref2 => {
58
- let {
59
- instrument
60
- } = _ref2;
61
- return instrument;
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 (instrumentsNames[0]) {
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, isDesktop]);
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
- isLoading: loading,
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","intrumentsByDivision","mapInstrumentNames","filter","displayName","map","undefined","merge","chartData","getRecords","fetchPolicy","useEffect","instrumentsNames","_ref2","instrument","showError","createElement","TableWidget","activeColumns","count","hasError","headerColumns","getHeaderConfig","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, 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 intrumentsByDivision = mainData?.mapInstrumentNames\n ?.filter(\n (i): i is { displayName: string; name: string } => !!i?.displayName\n )\n ?.map((i) => i.displayName);\n\n return intrumentsByDivision?.length\n ? { instruments: intrumentsByDivision, division }\n : undefined;\n },\n merge: (mainData, chartData) => getRecords(mainData, chartData),\n fetchPolicy: 'network-only',\n });\n\n useEffect(() => {\n if (!loading && data) {\n setRecords(data.records ?? []);\n }\n }, [loading, data]);\n\n const instrumentsNames = records.map(({ instrument }) => instrument);\n\n useEffect(() => {\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records, isDesktop]);\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 isLoading={loading}\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
+ {"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 = Exclude<DataRecordType, DataRecordType.SENTIMENT>;\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;AAIA,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":[]}
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 intrumentsByDivision = mainData?.mapInstrumentNames?.filter(i => !!i?.displayName)?.map(i => i.displayName);
36
- return intrumentsByDivision?.length ? {
37
- instruments: intrumentsByDivision,
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 (!loading && data) {
46
+ if (!mainLoading && data) {
46
47
  setRecords(data.records ?? []);
47
48
  }
48
- }, [loading, data]);
49
- const instrumentsNames = records.map(_ref2 => {
50
- let {
51
- instrument
52
- } = _ref2;
53
- return instrument;
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 (instrumentsNames[0]) {
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, isDesktop]);
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
- isLoading: loading,
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","intrumentsByDivision","mapInstrumentNames","filter","i","displayName","map","undefined","merge","chartData","fetchPolicy","instrumentsNames","_ref2","instrument","showError","createElement","activeColumns","count","hasError","headerColumns","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, 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 intrumentsByDivision = mainData?.mapInstrumentNames\n ?.filter(\n (i): i is { displayName: string; name: string } => !!i?.displayName\n )\n ?.map((i) => i.displayName);\n\n return intrumentsByDivision?.length\n ? { instruments: intrumentsByDivision, division }\n : undefined;\n },\n merge: (mainData, chartData) => getRecords(mainData, chartData),\n fetchPolicy: 'network-only',\n });\n\n useEffect(() => {\n if (!loading && data) {\n setRecords(data.records ?? []);\n }\n }, [loading, data]);\n\n const instrumentsNames = records.map(({ instrument }) => instrument);\n\n useEffect(() => {\n if (instrumentsNames[0]) {\n setQuery({ instruments: instrumentsNames });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records, isDesktop]);\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 isLoading={loading}\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
+ {"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 = Exclude<DataRecordType, DataRecordType.SENTIMENT>;\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;AAI9B,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
+ {"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 = Exclude<DataRecordType, DataRecordType.SENTIMENT>;
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.52",
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.186",
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": "62a1f7b8fc3926956c1cad4d38b365ad4a42c40a"
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 intrumentsByDivision = mainData?.mapInstrumentNames
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 intrumentsByDivision?.length
58
- ? { instruments: intrumentsByDivision, division }
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 (!loading && data) {
66
+ if (!mainLoading && data) {
67
67
  setRecords(data.records ?? []);
68
68
  }
69
- }, [loading, data]);
69
+ }, [mainLoading, data]);
70
70
 
71
- const instrumentsNames = records.map(({ instrument }) => instrument);
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 (instrumentsNames[0]) {
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, isDesktop]);
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
- isLoading={loading}
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 = Exclude<DataRecordType, DataRecordType.SENTIMENT>;
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,