@oanda/labs-live-rates-table-widget 1.0.48 → 1.0.50

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 (108) hide show
  1. package/CHANGELOG.md +404 -0
  2. package/dist/main/LiveRatesTableWidget/Main.js +26 -33
  3. package/dist/main/LiveRatesTableWidget/Main.js.map +1 -1
  4. package/dist/main/LiveRatesTableWidget/config.js +12 -7
  5. package/dist/main/LiveRatesTableWidget/config.js.map +1 -1
  6. package/dist/main/LiveRatesTableWidget/constant.js +2 -2
  7. package/dist/main/LiveRatesTableWidget/constant.js.map +1 -1
  8. package/dist/main/LiveRatesTableWidget/types.js +0 -10
  9. package/dist/main/LiveRatesTableWidget/types.js.map +1 -1
  10. package/dist/main/LiveRatesTableWidget/utils.js +8 -49
  11. package/dist/main/LiveRatesTableWidget/utils.js.map +1 -1
  12. package/dist/module/LiveRatesTableWidget/Main.js +28 -35
  13. package/dist/module/LiveRatesTableWidget/Main.js.map +1 -1
  14. package/dist/module/LiveRatesTableWidget/config.js +13 -9
  15. package/dist/module/LiveRatesTableWidget/config.js.map +1 -1
  16. package/dist/module/LiveRatesTableWidget/constant.js +2 -2
  17. package/dist/module/LiveRatesTableWidget/constant.js.map +1 -1
  18. package/dist/module/LiveRatesTableWidget/types.js +0 -9
  19. package/dist/module/LiveRatesTableWidget/types.js.map +1 -1
  20. package/dist/module/LiveRatesTableWidget/utils.js +8 -47
  21. package/dist/module/LiveRatesTableWidget/utils.js.map +1 -1
  22. package/dist/types/LiveRatesTableWidget/config.d.ts +9 -28
  23. package/dist/types/LiveRatesTableWidget/constant.d.ts +2 -2
  24. package/dist/types/LiveRatesTableWidget/types.d.ts +6 -47
  25. package/dist/types/LiveRatesTableWidget/utils.d.ts +4 -15
  26. package/package.json +3 -3
  27. package/src/LiveRatesTableWidget/Main.tsx +44 -51
  28. package/src/LiveRatesTableWidget/config.ts +27 -10
  29. package/src/LiveRatesTableWidget/constant.ts +6 -6
  30. package/src/LiveRatesTableWidget/types.tsx +11 -53
  31. package/src/LiveRatesTableWidget/utils.ts +21 -65
  32. package/test/mocks.ts +1 -16
  33. package/dist/main/LiveRatesTableWidget/components/CardWithData/CardWithData.js +0 -96
  34. package/dist/main/LiveRatesTableWidget/components/CardWithData/CardWithData.js.map +0 -1
  35. package/dist/main/LiveRatesTableWidget/components/CardWithData/index.js +0 -17
  36. package/dist/main/LiveRatesTableWidget/components/CardWithData/index.js.map +0 -1
  37. package/dist/main/LiveRatesTableWidget/components/Cards/Cards.js +0 -37
  38. package/dist/main/LiveRatesTableWidget/components/Cards/Cards.js.map +0 -1
  39. package/dist/main/LiveRatesTableWidget/components/Cards/index.js +0 -17
  40. package/dist/main/LiveRatesTableWidget/components/Cards/index.js.map +0 -1
  41. package/dist/main/LiveRatesTableWidget/components/Cards/types.js +0 -6
  42. package/dist/main/LiveRatesTableWidget/components/Cards/types.js.map +0 -1
  43. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/LineChartWithData.js +0 -46
  44. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/LineChartWithData.js.map +0 -1
  45. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/index.js +0 -17
  46. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/index.js.map +0 -1
  47. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/types.js +0 -6
  48. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/types.js.map +0 -1
  49. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/utils.js +0 -20
  50. package/dist/main/LiveRatesTableWidget/components/LineChartWithData/utils.js.map +0 -1
  51. package/dist/main/LiveRatesTableWidget/components/RowWithData/RowWithData.js +0 -104
  52. package/dist/main/LiveRatesTableWidget/components/RowWithData/RowWithData.js.map +0 -1
  53. package/dist/main/LiveRatesTableWidget/components/RowWithData/index.js +0 -17
  54. package/dist/main/LiveRatesTableWidget/components/RowWithData/index.js.map +0 -1
  55. package/dist/main/LiveRatesTableWidget/components/index.js +0 -50
  56. package/dist/main/LiveRatesTableWidget/components/index.js.map +0 -1
  57. package/dist/module/LiveRatesTableWidget/components/CardWithData/CardWithData.js +0 -89
  58. package/dist/module/LiveRatesTableWidget/components/CardWithData/CardWithData.js.map +0 -1
  59. package/dist/module/LiveRatesTableWidget/components/CardWithData/index.js +0 -2
  60. package/dist/module/LiveRatesTableWidget/components/CardWithData/index.js.map +0 -1
  61. package/dist/module/LiveRatesTableWidget/components/Cards/Cards.js +0 -30
  62. package/dist/module/LiveRatesTableWidget/components/Cards/Cards.js.map +0 -1
  63. package/dist/module/LiveRatesTableWidget/components/Cards/index.js +0 -2
  64. package/dist/module/LiveRatesTableWidget/components/Cards/index.js.map +0 -1
  65. package/dist/module/LiveRatesTableWidget/components/Cards/types.js +0 -2
  66. package/dist/module/LiveRatesTableWidget/components/Cards/types.js.map +0 -1
  67. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/LineChartWithData.js +0 -39
  68. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/LineChartWithData.js.map +0 -1
  69. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/index.js +0 -2
  70. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/index.js.map +0 -1
  71. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/types.js +0 -2
  72. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/types.js.map +0 -1
  73. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/utils.js +0 -13
  74. package/dist/module/LiveRatesTableWidget/components/LineChartWithData/utils.js.map +0 -1
  75. package/dist/module/LiveRatesTableWidget/components/RowWithData/RowWithData.js +0 -97
  76. package/dist/module/LiveRatesTableWidget/components/RowWithData/RowWithData.js.map +0 -1
  77. package/dist/module/LiveRatesTableWidget/components/RowWithData/index.js +0 -2
  78. package/dist/module/LiveRatesTableWidget/components/RowWithData/index.js.map +0 -1
  79. package/dist/module/LiveRatesTableWidget/components/index.js +0 -5
  80. package/dist/module/LiveRatesTableWidget/components/index.js.map +0 -1
  81. package/dist/types/LiveRatesTableWidget/components/CardWithData/CardWithData.d.ts +0 -4
  82. package/dist/types/LiveRatesTableWidget/components/CardWithData/index.d.ts +0 -1
  83. package/dist/types/LiveRatesTableWidget/components/Cards/Cards.d.ts +0 -4
  84. package/dist/types/LiveRatesTableWidget/components/Cards/index.d.ts +0 -1
  85. package/dist/types/LiveRatesTableWidget/components/Cards/types.d.ts +0 -12
  86. package/dist/types/LiveRatesTableWidget/components/LineChartWithData/LineChartWithData.d.ts +0 -4
  87. package/dist/types/LiveRatesTableWidget/components/LineChartWithData/index.d.ts +0 -1
  88. package/dist/types/LiveRatesTableWidget/components/LineChartWithData/types.d.ts +0 -11
  89. package/dist/types/LiveRatesTableWidget/components/LineChartWithData/utils.d.ts +0 -1
  90. package/dist/types/LiveRatesTableWidget/components/RowWithData/RowWithData.d.ts +0 -4
  91. package/dist/types/LiveRatesTableWidget/components/RowWithData/index.d.ts +0 -1
  92. package/dist/types/LiveRatesTableWidget/components/index.d.ts +0 -4
  93. package/src/LiveRatesTableWidget/components/CardWithData/CardWithData.tsx +0 -133
  94. package/src/LiveRatesTableWidget/components/CardWithData/index.ts +0 -1
  95. package/src/LiveRatesTableWidget/components/Cards/Cards.tsx +0 -44
  96. package/src/LiveRatesTableWidget/components/Cards/index.ts +0 -1
  97. package/src/LiveRatesTableWidget/components/Cards/types.tsx +0 -13
  98. package/src/LiveRatesTableWidget/components/LineChartWithData/LineChartWithData.tsx +0 -53
  99. package/src/LiveRatesTableWidget/components/LineChartWithData/index.ts +0 -1
  100. package/src/LiveRatesTableWidget/components/LineChartWithData/types.tsx +0 -13
  101. package/src/LiveRatesTableWidget/components/LineChartWithData/utils.ts +0 -14
  102. package/src/LiveRatesTableWidget/components/RowWithData/RowWithData.tsx +0 -150
  103. package/src/LiveRatesTableWidget/components/RowWithData/index.ts +0 -1
  104. package/src/LiveRatesTableWidget/components/index.ts +0 -4
  105. package/test/CardWithData.test.tsx +0 -74
  106. package/test/Cards.test.tsx +0 -130
  107. package/test/LineChartWithData.test.tsx +0 -263
  108. package/test/RowWithData.test.tsx +0 -81
@@ -3,54 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useRecords = exports.getRecords = exports.getHeaderConfig = void 0;
7
- var _labsWidgetCommon = require("@oanda/labs-widget-common");
8
- var _react = require("react");
9
- var _usehooksTs = require("usehooks-ts");
10
- var _config = require("./config");
11
- var _types = require("./types");
12
- const getRecords = data => data?.mapInstrumentNames?.map(item => ({
13
- instrument: item?.name || '',
14
- displayName: item?.displayName || ''
15
- }));
6
+ exports.getRecords = void 0;
7
+ const getRecords = (data, chart) => ({
8
+ records: data?.mapInstrumentNames?.map(item => ({
9
+ instrument: item?.name || '',
10
+ displayName: item?.displayName || '',
11
+ chart: chart?.topicalInstrumentsCharts?.find(ti => ti.name === item?.displayName)?.chart || []
12
+ })) ?? []
13
+ });
16
14
  exports.getRecords = getRecords;
17
- const getHeaderConfig = activeColumns => [_types.ColumnsNames.INSTRUMENT, ...activeColumns].map(item => _config.headerConfig[item]);
18
- exports.getHeaderConfig = getHeaderConfig;
19
- const useRecords = (record, target) => {
20
- const [updatedRecord, setUpdatedRecord] = (0, _react.useState)({
21
- displayName: record.displayName,
22
- instrument: record.instrument,
23
- sentiment: record.sentiment
24
- });
25
- const [error, setError] = (0, _react.useState)(null);
26
- const entry = (0, _usehooksTs.useIntersectionObserver)();
27
- const isVisible = !!entry?.isIntersecting;
28
- const {
29
- update,
30
- error: liveRatesError
31
- } = (0, _labsWidgetCommon.useLiveRatesMessage)(record.instrument, target);
32
- (0, _react.useEffect)(() => {
33
- if (isVisible) {
34
- setUpdatedRecord({
35
- displayName: record.displayName,
36
- instrument: record.instrument,
37
- sentiment: record.sentiment,
38
- buy: update?.ask,
39
- sell: update?.bid,
40
- sellPriceMovement: update?.bidPriceMovement,
41
- buyPriceMovement: update?.askPriceMovement,
42
- dailyPercentChange: update?.dailyPercentChangeFromOpen,
43
- spread: update?.spread,
44
- displayPrecision: update?.displayPrecision
45
- });
46
- setError(liveRatesError);
47
- }
48
- }, [update, record, isVisible, liveRatesError]);
49
- return {
50
- updatedRecord,
51
- error,
52
- ref: entry.ref
53
- };
54
- };
55
- exports.useRecords = useRecords;
56
15
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_labsWidgetCommon","require","_react","_usehooksTs","_config","_types","getRecords","data","mapInstrumentNames","map","item","instrument","name","displayName","exports","getHeaderConfig","activeColumns","ColumnsNames","INSTRUMENT","headerConfig","useRecords","record","target","updatedRecord","setUpdatedRecord","useState","sentiment","error","setError","entry","useIntersectionObserver","isVisible","isIntersecting","update","liveRatesError","useLiveRatesMessage","useEffect","buy","ask","sell","bid","sellPriceMovement","bidPriceMovement","buyPriceMovement","askPriceMovement","dailyPercentChange","dailyPercentChangeFromOpen","spread","displayPrecision","ref"],"sources":["../../../src/LiveRatesTableWidget/utils.ts"],"sourcesContent":["import type {\n HeaderColumns,\n LiveRatesErrorMessage,\n} from '@oanda/labs-widget-common';\nimport { useLiveRatesMessage } from '@oanda/labs-widget-common';\nimport { useEffect, useState } from 'react';\nimport { useIntersectionObserver } from 'usehooks-ts';\n\nimport type { ValidateInstrumentsQuery } from '../gql/types/graphql';\nimport { headerConfig } from './config';\nimport type { DataRecord, EmptyRecord } from './types';\nimport { ColumnsNames } from './types';\n\nconst getRecords = (data: ValidateInstrumentsQuery) =>\n data?.mapInstrumentNames?.map((item) => ({\n instrument: item?.name || '',\n displayName: item?.displayName || '',\n }));\n\nconst getHeaderConfig = (activeColumns: ColumnsNames[]): HeaderColumns[] =>\n [ColumnsNames.INSTRUMENT, ...activeColumns].map((item) => headerConfig[item]);\n\nconst useRecords = (\n record: DataRecord | EmptyRecord,\n target: EventTarget | null\n) => {\n const [updatedRecord, setUpdatedRecord] = useState<DataRecord>({\n displayName: record.displayName,\n instrument: record.instrument,\n sentiment: record.sentiment,\n });\n const [error, setError] = useState<LiveRatesErrorMessage | null>(null);\n const entry = useIntersectionObserver();\n const isVisible = !!entry?.isIntersecting;\n\n const { update, error: liveRatesError } = useLiveRatesMessage(\n record.instrument,\n target\n );\n\n useEffect(() => {\n if (isVisible) {\n setUpdatedRecord({\n displayName: record.displayName,\n instrument: record.instrument,\n sentiment: record.sentiment,\n buy: update?.ask,\n sell: update?.bid,\n sellPriceMovement: update?.bidPriceMovement,\n buyPriceMovement: update?.askPriceMovement,\n dailyPercentChange: update?.dailyPercentChangeFromOpen,\n spread: update?.spread,\n displayPrecision: update?.displayPrecision,\n });\n setError(liveRatesError);\n }\n }, [update, record, isVisible, liveRatesError]);\n\n return {\n updatedRecord,\n error,\n ref: entry.ref,\n };\n};\n\nexport { getHeaderConfig, getRecords, useRecords };\n"],"mappings":";;;;;;AAIA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,MAAMK,UAAU,GAAIC,IAA8B,IAChDA,IAAI,EAAEC,kBAAkB,EAAEC,GAAG,CAAEC,IAAI,KAAM;EACvCC,UAAU,EAAED,IAAI,EAAEE,IAAI,IAAI,EAAE;EAC5BC,WAAW,EAAEH,IAAI,EAAEG,WAAW,IAAI;AACpC,CAAC,CAAC,CAAC;AAACC,OAAA,CAAAR,UAAA,GAAAA,UAAA;AAEN,MAAMS,eAAe,GAAIC,aAA6B,IACpD,CAACC,mBAAY,CAACC,UAAU,EAAE,GAAGF,aAAa,CAAC,CAACP,GAAG,CAAEC,IAAI,IAAKS,oBAAY,CAACT,IAAI,CAAC,CAAC;AAACI,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEhF,MAAMK,UAAU,GAAGA,CACjBC,MAAgC,EAChCC,MAA0B,KACvB;EACH,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAC,eAAQ,EAAa;IAC7DZ,WAAW,EAAEQ,MAAM,CAACR,WAAW;IAC/BF,UAAU,EAAEU,MAAM,CAACV,UAAU;IAC7Be,SAAS,EAAEL,MAAM,CAACK;EACpB,CAAC,CAAC;EACF,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAH,eAAQ,EAA+B,IAAI,CAAC;EACtE,MAAMI,KAAK,GAAG,IAAAC,mCAAuB,EAAC,CAAC;EACvC,MAAMC,SAAS,GAAG,CAAC,CAACF,KAAK,EAAEG,cAAc;EAEzC,MAAM;IAAEC,MAAM;IAAEN,KAAK,EAAEO;EAAe,CAAC,GAAG,IAAAC,qCAAmB,EAC3Dd,MAAM,CAACV,UAAU,EACjBW,MACF,CAAC;EAED,IAAAc,gBAAS,EAAC,MAAM;IACd,IAAIL,SAAS,EAAE;MACbP,gBAAgB,CAAC;QACfX,WAAW,EAAEQ,MAAM,CAACR,WAAW;QAC/BF,UAAU,EAAEU,MAAM,CAACV,UAAU;QAC7Be,SAAS,EAAEL,MAAM,CAACK,SAAS;QAC3BW,GAAG,EAAEJ,MAAM,EAAEK,GAAG;QAChBC,IAAI,EAAEN,MAAM,EAAEO,GAAG;QACjBC,iBAAiB,EAAER,MAAM,EAAES,gBAAgB;QAC3CC,gBAAgB,EAAEV,MAAM,EAAEW,gBAAgB;QAC1CC,kBAAkB,EAAEZ,MAAM,EAAEa,0BAA0B;QACtDC,MAAM,EAAEd,MAAM,EAAEc,MAAM;QACtBC,gBAAgB,EAAEf,MAAM,EAAEe;MAC5B,CAAC,CAAC;MACFpB,QAAQ,CAACM,cAAc,CAAC;IAC1B;EACF,CAAC,EAAE,CAACD,MAAM,EAAEZ,MAAM,EAAEU,SAAS,EAAEG,cAAc,CAAC,CAAC;EAE/C,OAAO;IACLX,aAAa;IACbI,KAAK;IACLsB,GAAG,EAAEpB,KAAK,CAACoB;EACb,CAAC;AACH,CAAC;AAACnC,OAAA,CAAAM,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["getRecords","data","chart","records","mapInstrumentNames","map","item","instrument","name","displayName","topicalInstrumentsCharts","find","ti","exports"],"sources":["../../../src/LiveRatesTableWidget/utils.ts"],"sourcesContent":["import type {\n GetInstrumentsChartQuery,\n ValidateInstrumentsQuery,\n} from '../gql/types/graphql';\nimport type { ValidateInstrumentsData } from './types';\n\nconst getRecords = (\n data: ValidateInstrumentsQuery,\n chart?: GetInstrumentsChartQuery\n): ValidateInstrumentsData => ({\n records:\n data?.mapInstrumentNames?.map((item) => ({\n instrument: item?.name || '',\n displayName: item?.displayName || '',\n chart:\n chart?.topicalInstrumentsCharts?.find(\n (ti) => ti.name === item?.displayName\n )?.chart || [],\n })) ?? [],\n});\n\nexport { getRecords };\n"],"mappings":";;;;;;AAMA,MAAMA,UAAU,GAAGA,CACjBC,IAA8B,EAC9BC,KAAgC,MACH;EAC7BC,OAAO,EACLF,IAAI,EAAEG,kBAAkB,EAAEC,GAAG,CAAEC,IAAI,KAAM;IACvCC,UAAU,EAAED,IAAI,EAAEE,IAAI,IAAI,EAAE;IAC5BC,WAAW,EAAEH,IAAI,EAAEG,WAAW,IAAI,EAAE;IACpCP,KAAK,EACHA,KAAK,EAAEQ,wBAAwB,EAAEC,IAAI,CAClCC,EAAE,IAAKA,EAAE,CAACJ,IAAI,KAAKF,IAAI,EAAEG,WAC5B,CAAC,EAAEP,KAAK,IAAI;EAChB,CAAC,CAAC,CAAC,IAAI;AACX,CAAC,CAAC;AAACW,OAAA,CAAAb,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import { useQuery } from '@apollo/client';
2
- import { Size, Table, Tooltip, useLayoutProvider, useLiveRatesQuery } from '@oanda/labs-widget-common';
1
+ import { Size, TableWidget, useFetchCombinedDataRecords, useLayoutProvider, useLiveRatesQuery } from '@oanda/labs-widget-common';
3
2
  import React, { useEffect, useState } from 'react';
3
+ import { getInstrumentsChart } from '../gql/getInstrumentsChart';
4
4
  import { validateInstruments } from '../gql/validateInstruments';
5
- import { Cards, RowWithData } from './components';
5
+ import { getHeaderConfig } from './config';
6
6
  import { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';
7
- import { getHeaderConfig, getRecords } from './utils';
7
+ import { getRecords } from './utils';
8
8
  const Main = _ref => {
9
9
  let {
10
10
  instruments,
@@ -21,19 +21,29 @@ const Main = _ref => {
21
21
  } = useLiveRatesQuery();
22
22
  const [records, setRecords] = useState(new Array(instruments.length).fill({}));
23
23
  const {
24
- loading,
25
24
  data,
25
+ loading,
26
26
  error
27
- } = useQuery(validateInstruments, {
28
- variables: {
27
+ } = useFetchCombinedDataRecords({
28
+ mainQuery: validateInstruments,
29
+ mainVariables: {
29
30
  instruments,
30
31
  division
31
32
  },
33
+ batchQuery: getInstrumentsChart,
34
+ getBatchVariables: mainData => {
35
+ const intrumentsByDivision = mainData?.mapInstrumentNames?.filter(i => !!i?.displayName)?.map(i => i.displayName);
36
+ return intrumentsByDivision?.length ? {
37
+ instruments: intrumentsByDivision,
38
+ division
39
+ } : undefined;
40
+ },
41
+ merge: (mainData, chartData) => getRecords(mainData, chartData),
32
42
  fetchPolicy: 'network-only'
33
43
  });
34
44
  useEffect(() => {
35
45
  if (!loading && data) {
36
- setRecords(getRecords(data));
46
+ setRecords(data.records ?? []);
37
47
  }
38
48
  }, [loading, data]);
39
49
  const instrumentsNames = records.map(_ref2 => {
@@ -50,35 +60,18 @@ const Main = _ref => {
50
60
  }
51
61
  }, [records, isDesktop]);
52
62
  const showError = !loading && !!error || !loading && !data;
53
- return React.createElement(React.Fragment, null, size && React.createElement("div", {
54
- className: "lw-relative lw-text-sm lw-tracking-normal lw-text-text-primary",
55
- "data-testid": "live-rates-table-wrapper"
56
- }, isDesktop ? React.createElement("div", {
57
- className: "lw-border lw-border-solid lw-border-border-primary"
58
- }, React.createElement(Table, {
59
- headerConfig: getHeaderConfig(columns),
60
- isError: showError,
61
- records: records,
62
- renderRow: (record, index, isScrolled) => React.createElement(RowWithData, {
63
- key: `row_${index}`,
64
- activeColumns: columns,
65
- division: division,
66
- hasBackgroundColor: index % 2 === 0,
67
- isScrolled: isScrolled,
68
- loading: loading,
69
- record: record,
70
- target: target
71
- })
72
- })) : React.createElement(Cards, {
73
- columns: columns,
74
- division: division,
75
- isError: showError,
63
+ return React.createElement(TableWidget, {
64
+ activeColumns: columns,
65
+ count: 0,
66
+ hasError: showError,
67
+ headerColumns: getHeaderConfig(columns),
76
68
  isLoading: loading,
69
+ pageNumber: 0,
77
70
  records: records,
78
- target: target
79
- }), React.createElement(Tooltip, {
80
- id: INSTRUMENT_TOOLTIP_ID
81
- })));
71
+ target: target,
72
+ testId: "live-rates-table-wrapper",
73
+ toolTipId: INSTRUMENT_TOOLTIP_ID
74
+ });
82
75
  };
83
76
  export { Main };
84
77
  //# sourceMappingURL=Main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["useQuery","Size","Table","Tooltip","useLayoutProvider","useLiveRatesQuery","React","useEffect","useState","validateInstruments","Cards","RowWithData","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","getHeaderConfig","getRecords","Main","_ref","instruments","division","columns","size","isDesktop","DESKTOP","target","setQuery","records","setRecords","Array","length","fill","loading","data","error","variables","fetchPolicy","instrumentsNames","map","_ref2","instrument","showError","createElement","Fragment","className","headerConfig","isError","renderRow","record","index","isScrolled","key","activeColumns","hasBackgroundColor","isLoading","id"],"sources":["../../../src/LiveRatesTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport {\n Size,\n Table,\n Tooltip,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport React, { useEffect, useState } from 'react';\n\nimport type {\n ValidateInstrumentsQuery,\n ValidateInstrumentsQueryVariables,\n} from '../gql/types/graphql';\nimport { validateInstruments } from '../gql/validateInstruments';\nimport { Cards, RowWithData } from './components';\nimport { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';\nimport type { DataRecord, MainProps } from './types';\nimport { getHeaderConfig, 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 const [records, setRecords] = useState<DataRecord[]>(\n new Array(instruments.length).fill({})\n );\n\n const { loading, data, error } = useQuery<\n ValidateInstrumentsQuery,\n ValidateInstrumentsQueryVariables\n >(validateInstruments, {\n variables: {\n instruments,\n division,\n },\n fetchPolicy: 'network-only',\n });\n\n useEffect(() => {\n if (!loading && data) {\n setRecords(getRecords(data)!);\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 <>\n {size && (\n <div\n className=\"lw-relative lw-text-sm lw-tracking-normal lw-text-text-primary\"\n data-testid=\"live-rates-table-wrapper\"\n >\n {isDesktop ? (\n <div className=\"lw-border lw-border-solid lw-border-border-primary\">\n <Table<DataRecord>\n headerConfig={getHeaderConfig(columns)}\n isError={showError}\n records={records}\n renderRow={(record, index, isScrolled) => (\n <RowWithData\n key={`row_${index}`}\n activeColumns={columns}\n division={division}\n hasBackgroundColor={index % 2 === 0}\n isScrolled={isScrolled}\n loading={loading}\n record={record}\n target={target}\n />\n )}\n />\n </div>\n ) : (\n <Cards\n columns={columns}\n division={division}\n isError={showError}\n isLoading={loading}\n records={records}\n target={target}\n />\n )}\n <Tooltip id={INSTRUMENT_TOOLTIP_ID} />\n </div>\n )}\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","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,34 +1,38 @@
1
- import { Size } from '@oanda/labs-widget-common';
2
- import { ColumnsNames, View } from './types';
1
+ import { DataRecordType, Size } from '@oanda/labs-widget-common';
2
+ import { View } from './types';
3
3
  const headerConfig = {
4
- [ColumnsNames.INSTRUMENT]: {
4
+ [DataRecordType.INSTRUMENT]: {
5
5
  displayName: 'instrument',
6
6
  additionalStyles: 'lw-text-left lw-min-w-[130px]'
7
7
  },
8
- [ColumnsNames.SELL]: {
8
+ [DataRecordType.SELL]: {
9
9
  displayName: 'sell',
10
10
  additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4'
11
11
  },
12
- [ColumnsNames.BUY]: {
12
+ [DataRecordType.BUY]: {
13
13
  displayName: 'buy',
14
14
  additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4'
15
15
  },
16
- [ColumnsNames.DAILY_CHANGE]: {
16
+ [DataRecordType.DAILY_CHANGE]: {
17
17
  displayName: 'daily_percent_change',
18
18
  additionalStyles: 'lw-text-right lw-min-w-[80px]'
19
19
  },
20
- [ColumnsNames.CHART]: {
20
+ [DataRecordType.CHART]: {
21
21
  displayName: '24h_chart',
22
22
  additionalStyles: 'lw-text-center lw-min-w-[100px]'
23
23
  },
24
- [ColumnsNames.SPREAD]: {
24
+ [DataRecordType.SPREAD]: {
25
25
  displayName: 'spread',
26
26
  additionalStyles: 'lw-text-right lw-min-w-[50px]'
27
27
  }
28
28
  };
29
+ const getHeaderConfig = activeColumns => {
30
+ const columns = [DataRecordType.INSTRUMENT, ...activeColumns].filter(item => item !== DataRecordType.SENTIMENT);
31
+ return columns.map(item => headerConfig[item]);
32
+ };
29
33
  const sizeConfig = {
30
34
  [View.CARDS]: Size.MOBILE,
31
35
  [View.TABLE]: Size.DESKTOP
32
36
  };
33
- export { headerConfig, sizeConfig };
37
+ export { getHeaderConfig, headerConfig, sizeConfig };
34
38
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":["Size","ColumnsNames","View","headerConfig","INSTRUMENT","displayName","additionalStyles","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","sizeConfig","CARDS","MOBILE","TABLE","DESKTOP"],"sources":["../../../src/LiveRatesTableWidget/config.ts"],"sourcesContent":["import { Size } from '@oanda/labs-widget-common';\n\nimport { ColumnsNames, View } from './types';\n\nconst headerConfig = {\n [ColumnsNames.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: 'lw-text-left lw-min-w-[130px]',\n },\n [ColumnsNames.SELL]: {\n displayName: 'sell',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [ColumnsNames.BUY]: {\n displayName: 'buy',\n additionalStyles: 'lw-text-right lw-min-w-[75px] lw-pr-4',\n },\n [ColumnsNames.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: 'lw-text-right lw-min-w-[80px]',\n },\n [ColumnsNames.CHART]: {\n displayName: '24h_chart',\n additionalStyles: 'lw-text-center lw-min-w-[100px]',\n },\n [ColumnsNames.SPREAD]: {\n displayName: 'spread',\n additionalStyles: 'lw-text-right lw-min-w-[50px]',\n },\n};\n\nconst sizeConfig = {\n [View.CARDS]: Size.MOBILE,\n [View.TABLE]: Size.DESKTOP,\n};\n\nexport { headerConfig, sizeConfig };\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,2BAA2B;AAEhD,SAASC,YAAY,EAAEC,IAAI,QAAQ,SAAS;AAE5C,MAAMC,YAAY,GAAG;EACnB,CAACF,YAAY,CAACG,UAAU,GAAG;IACzBC,WAAW,EAAE,YAAY;IACzBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACL,YAAY,CAACM,IAAI,GAAG;IACnBF,WAAW,EAAE,MAAM;IACnBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACL,YAAY,CAACO,GAAG,GAAG;IAClBH,WAAW,EAAE,KAAK;IAClBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACL,YAAY,CAACQ,YAAY,GAAG;IAC3BJ,WAAW,EAAE,sBAAsB;IACnCC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACL,YAAY,CAACS,KAAK,GAAG;IACpBL,WAAW,EAAE,WAAW;IACxBC,gBAAgB,EAAE;EACpB,CAAC;EACD,CAACL,YAAY,CAACU,MAAM,GAAG;IACrBN,WAAW,EAAE,QAAQ;IACrBC,gBAAgB,EAAE;EACpB;AACF,CAAC;AAED,MAAMM,UAAU,GAAG;EACjB,CAACV,IAAI,CAACW,KAAK,GAAGb,IAAI,CAACc,MAAM;EACzB,CAACZ,IAAI,CAACa,KAAK,GAAGf,IAAI,CAACgB;AACrB,CAAC;AAED,SAASb,YAAY,EAAES,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 = 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,7 +1,7 @@
1
- import { ColumnsNames } from './types';
1
+ import { DataRecordType } from '@oanda/labs-widget-common';
2
2
  const DEFAULT_COUNT = 10;
3
3
  const DEFAULT_TOTAL_COUNT = 50;
4
- const DEFAULT_COLUMNS = [ColumnsNames.SELL, ColumnsNames.BUY, ColumnsNames.DAILY_CHANGE, ColumnsNames.CHART, ColumnsNames.SPREAD];
4
+ const DEFAULT_COLUMNS = [DataRecordType.SELL, DataRecordType.BUY, DataRecordType.DAILY_CHANGE, DataRecordType.CHART, DataRecordType.SPREAD];
5
5
  const INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';
6
6
  export { DEFAULT_COLUMNS, DEFAULT_COUNT, DEFAULT_TOTAL_COUNT, INSTRUMENT_TOOLTIP_ID };
7
7
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","names":["ColumnsNames","DEFAULT_COUNT","DEFAULT_TOTAL_COUNT","DEFAULT_COLUMNS","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","INSTRUMENT_TOOLTIP_ID"],"sources":["../../../src/LiveRatesTableWidget/constant.ts"],"sourcesContent":["import { ColumnsNames } from './types';\n\nconst DEFAULT_COUNT = 10;\n\nconst DEFAULT_TOTAL_COUNT = 50;\n\nconst DEFAULT_COLUMNS = [\n ColumnsNames.SELL,\n ColumnsNames.BUY,\n ColumnsNames.DAILY_CHANGE,\n ColumnsNames.CHART,\n ColumnsNames.SPREAD,\n];\n\nconst INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';\n\nexport {\n DEFAULT_COLUMNS,\n DEFAULT_COUNT,\n DEFAULT_TOTAL_COUNT,\n INSTRUMENT_TOOLTIP_ID,\n};\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,SAAS;AAEtC,MAAMC,aAAa,GAAG,EAAE;AAExB,MAAMC,mBAAmB,GAAG,EAAE;AAE9B,MAAMC,eAAe,GAAG,CACtBH,YAAY,CAACI,IAAI,EACjBJ,YAAY,CAACK,GAAG,EAChBL,YAAY,CAACM,YAAY,EACzBN,YAAY,CAACO,KAAK,EAClBP,YAAY,CAACQ,MAAM,CACpB;AAED,MAAMC,qBAAqB,GAAG,uBAAuB;AAErD,SACEN,eAAe,EACfF,aAAa,EACbC,mBAAmB,EACnBO,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"constant.js","names":["DataRecordType","DEFAULT_COUNT","DEFAULT_TOTAL_COUNT","DEFAULT_COLUMNS","SELL","BUY","DAILY_CHANGE","CHART","SPREAD","INSTRUMENT_TOOLTIP_ID"],"sources":["../../../src/LiveRatesTableWidget/constant.ts"],"sourcesContent":["import { DataRecordType } from '@oanda/labs-widget-common';\n\nconst DEFAULT_COUNT = 10;\n\nconst DEFAULT_TOTAL_COUNT = 50;\n\nconst DEFAULT_COLUMNS = [\n DataRecordType.SELL,\n DataRecordType.BUY,\n DataRecordType.DAILY_CHANGE,\n DataRecordType.CHART,\n DataRecordType.SPREAD,\n];\n\nconst INSTRUMENT_TOOLTIP_ID = 'instrument_tooltip_id';\n\nexport {\n DEFAULT_COLUMNS,\n DEFAULT_COUNT,\n DEFAULT_TOTAL_COUNT,\n INSTRUMENT_TOOLTIP_ID,\n};\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,2BAA2B;AAE1D,MAAMC,aAAa,GAAG,EAAE;AAExB,MAAMC,mBAAmB,GAAG,EAAE;AAE9B,MAAMC,eAAe,GAAG,CACtBH,cAAc,CAACI,IAAI,EACnBJ,cAAc,CAACK,GAAG,EAClBL,cAAc,CAACM,YAAY,EAC3BN,cAAc,CAACO,KAAK,EACpBP,cAAc,CAACQ,MAAM,CACtB;AAED,MAAMC,qBAAqB,GAAG,uBAAuB;AAErD,SACEN,eAAe,EACfF,aAAa,EACbC,mBAAmB,EACnBO,qBAAqB","ignoreList":[]}
@@ -5,13 +5,4 @@ export let View = function (View) {
5
5
  View["CARDS"] = "cards";
6
6
  return View;
7
7
  }({});
8
- export let ColumnsNames = function (ColumnsNames) {
9
- ColumnsNames["INSTRUMENT"] = "instrument";
10
- ColumnsNames["SELL"] = "sell";
11
- ColumnsNames["BUY"] = "buy";
12
- ColumnsNames["DAILY_CHANGE"] = "dailyChange";
13
- ColumnsNames["CHART"] = "chart";
14
- ColumnsNames["SPREAD"] = "spread";
15
- return ColumnsNames;
16
- }({});
17
8
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Division","Locale","View","ColumnsNames"],"sources":["../../../src/LiveRatesTableWidget/types.tsx"],"sourcesContent":["import type { WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type { Division } from '../gql/types/graphql';\n\nexport { Division } from '../gql/types/graphql';\nexport { Locale } from '@oanda/mono-i18n';\n\nexport enum View {\n TABLE = 'table',\n CARDS = 'cards',\n}\n\nexport interface LiveRatesTableConfig extends WidgetConfig {\n division: Division;\n liveRatesUrl: string;\n instruments: string[];\n columns?: ColumnsNames[];\n removePadding?: boolean;\n view?: View;\n}\n\nexport enum ColumnsNames {\n INSTRUMENT = 'instrument',\n SELL = 'sell',\n BUY = 'buy',\n DAILY_CHANGE = 'dailyChange',\n CHART = 'chart',\n SPREAD = 'spread',\n}\n\nexport interface MainProps {\n instruments: string[];\n division: Division;\n columns?: ColumnsNames[];\n}\n\nexport interface Sentiment {\n shortPercent: number;\n longPercent: number;\n}\n\nexport type EmptyRecord = Record<string, never>;\n\nexport interface DataRecord {\n [key: string]: string | number | undefined;\n instrument: string;\n displayName: string;\n buy?: number;\n sell?: number;\n spread?: number;\n sellPriceMovement?: number;\n buyPriceMovement?: number;\n dailyPercentChange?: string;\n displayPrecision?: number;\n}\n\nexport interface RowWithDataProps {\n loading: boolean;\n record: DataRecord;\n hasBackgroundColor: boolean;\n target: EventTarget | null;\n activeColumns: ColumnsNames[];\n division: Division;\n isScrolled?: boolean;\n}\n\nexport interface CardWithDataProps {\n index: number;\n isLoading?: boolean;\n isError?: boolean;\n record: DataRecord;\n target: EventTarget | null;\n activeColumns: ColumnsNames[];\n division: Division;\n isLast?: boolean;\n}\n"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,WAAYC,IAAI,aAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAchB,WAAYC,YAAY,aAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["Division","Locale","View"],"sources":["../../../src/LiveRatesTableWidget/types.tsx"],"sourcesContent":["import type {\n DataRecord,\n DataRecordType,\n WidgetConfig,\n} from '@oanda/labs-widget-common';\n\nimport type { Division } from '../gql/types/graphql';\n\nexport { Division } from '../gql/types/graphql';\nexport { Locale } from '@oanda/mono-i18n';\n\nexport enum View {\n TABLE = 'table',\n CARDS = 'cards',\n}\n\nexport interface ValidateInstrumentsData {\n records?: DataRecord[];\n}\n\nexport interface LiveRatesTableConfig extends WidgetConfig {\n division: Division;\n liveRatesUrl: string;\n instruments: string[];\n columns?: DataRecordType[];\n removePadding?: boolean;\n view?: View;\n}\n\nexport interface MainProps {\n instruments: string[];\n division: Division;\n columns?: DataRecordType[];\n}\n"],"mappings":"AAQA,SAASA,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,WAAYC,IAAI,aAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA","ignoreList":[]}
@@ -1,48 +1,9 @@
1
- import { useLiveRatesMessage } from '@oanda/labs-widget-common';
2
- import { useEffect, useState } from 'react';
3
- import { useIntersectionObserver } from 'usehooks-ts';
4
- import { headerConfig } from './config';
5
- import { ColumnsNames } from './types';
6
- const getRecords = data => data?.mapInstrumentNames?.map(item => ({
7
- instrument: item?.name || '',
8
- displayName: item?.displayName || ''
9
- }));
10
- const getHeaderConfig = activeColumns => [ColumnsNames.INSTRUMENT, ...activeColumns].map(item => headerConfig[item]);
11
- const useRecords = (record, target) => {
12
- const [updatedRecord, setUpdatedRecord] = useState({
13
- displayName: record.displayName,
14
- instrument: record.instrument,
15
- sentiment: record.sentiment
16
- });
17
- const [error, setError] = useState(null);
18
- const entry = useIntersectionObserver();
19
- const isVisible = !!entry?.isIntersecting;
20
- const {
21
- update,
22
- error: liveRatesError
23
- } = useLiveRatesMessage(record.instrument, target);
24
- useEffect(() => {
25
- if (isVisible) {
26
- setUpdatedRecord({
27
- displayName: record.displayName,
28
- instrument: record.instrument,
29
- sentiment: record.sentiment,
30
- buy: update?.ask,
31
- sell: update?.bid,
32
- sellPriceMovement: update?.bidPriceMovement,
33
- buyPriceMovement: update?.askPriceMovement,
34
- dailyPercentChange: update?.dailyPercentChangeFromOpen,
35
- spread: update?.spread,
36
- displayPrecision: update?.displayPrecision
37
- });
38
- setError(liveRatesError);
39
- }
40
- }, [update, record, isVisible, liveRatesError]);
41
- return {
42
- updatedRecord,
43
- error,
44
- ref: entry.ref
45
- };
46
- };
47
- export { getHeaderConfig, getRecords, useRecords };
1
+ const getRecords = (data, chart) => ({
2
+ records: data?.mapInstrumentNames?.map(item => ({
3
+ instrument: item?.name || '',
4
+ displayName: item?.displayName || '',
5
+ chart: chart?.topicalInstrumentsCharts?.find(ti => ti.name === item?.displayName)?.chart || []
6
+ })) ?? []
7
+ });
8
+ export { getRecords };
48
9
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["useLiveRatesMessage","useEffect","useState","useIntersectionObserver","headerConfig","ColumnsNames","getRecords","data","mapInstrumentNames","map","item","instrument","name","displayName","getHeaderConfig","activeColumns","INSTRUMENT","useRecords","record","target","updatedRecord","setUpdatedRecord","sentiment","error","setError","entry","isVisible","isIntersecting","update","liveRatesError","buy","ask","sell","bid","sellPriceMovement","bidPriceMovement","buyPriceMovement","askPriceMovement","dailyPercentChange","dailyPercentChangeFromOpen","spread","displayPrecision","ref"],"sources":["../../../src/LiveRatesTableWidget/utils.ts"],"sourcesContent":["import type {\n HeaderColumns,\n LiveRatesErrorMessage,\n} from '@oanda/labs-widget-common';\nimport { useLiveRatesMessage } from '@oanda/labs-widget-common';\nimport { useEffect, useState } from 'react';\nimport { useIntersectionObserver } from 'usehooks-ts';\n\nimport type { ValidateInstrumentsQuery } from '../gql/types/graphql';\nimport { headerConfig } from './config';\nimport type { DataRecord, EmptyRecord } from './types';\nimport { ColumnsNames } from './types';\n\nconst getRecords = (data: ValidateInstrumentsQuery) =>\n data?.mapInstrumentNames?.map((item) => ({\n instrument: item?.name || '',\n displayName: item?.displayName || '',\n }));\n\nconst getHeaderConfig = (activeColumns: ColumnsNames[]): HeaderColumns[] =>\n [ColumnsNames.INSTRUMENT, ...activeColumns].map((item) => headerConfig[item]);\n\nconst useRecords = (\n record: DataRecord | EmptyRecord,\n target: EventTarget | null\n) => {\n const [updatedRecord, setUpdatedRecord] = useState<DataRecord>({\n displayName: record.displayName,\n instrument: record.instrument,\n sentiment: record.sentiment,\n });\n const [error, setError] = useState<LiveRatesErrorMessage | null>(null);\n const entry = useIntersectionObserver();\n const isVisible = !!entry?.isIntersecting;\n\n const { update, error: liveRatesError } = useLiveRatesMessage(\n record.instrument,\n target\n );\n\n useEffect(() => {\n if (isVisible) {\n setUpdatedRecord({\n displayName: record.displayName,\n instrument: record.instrument,\n sentiment: record.sentiment,\n buy: update?.ask,\n sell: update?.bid,\n sellPriceMovement: update?.bidPriceMovement,\n buyPriceMovement: update?.askPriceMovement,\n dailyPercentChange: update?.dailyPercentChangeFromOpen,\n spread: update?.spread,\n displayPrecision: update?.displayPrecision,\n });\n setError(liveRatesError);\n }\n }, [update, record, isVisible, liveRatesError]);\n\n return {\n updatedRecord,\n error,\n ref: entry.ref,\n };\n};\n\nexport { getHeaderConfig, getRecords, useRecords };\n"],"mappings":"AAIA,SAASA,mBAAmB,QAAQ,2BAA2B;AAC/D,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,uBAAuB,QAAQ,aAAa;AAGrD,SAASC,YAAY,QAAQ,UAAU;AAEvC,SAASC,YAAY,QAAQ,SAAS;AAEtC,MAAMC,UAAU,GAAIC,IAA8B,IAChDA,IAAI,EAAEC,kBAAkB,EAAEC,GAAG,CAAEC,IAAI,KAAM;EACvCC,UAAU,EAAED,IAAI,EAAEE,IAAI,IAAI,EAAE;EAC5BC,WAAW,EAAEH,IAAI,EAAEG,WAAW,IAAI;AACpC,CAAC,CAAC,CAAC;AAEL,MAAMC,eAAe,GAAIC,aAA6B,IACpD,CAACV,YAAY,CAACW,UAAU,EAAE,GAAGD,aAAa,CAAC,CAACN,GAAG,CAAEC,IAAI,IAAKN,YAAY,CAACM,IAAI,CAAC,CAAC;AAE/E,MAAMO,UAAU,GAAGA,CACjBC,MAAgC,EAChCC,MAA0B,KACvB;EACH,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGnB,QAAQ,CAAa;IAC7DW,WAAW,EAAEK,MAAM,CAACL,WAAW;IAC/BF,UAAU,EAAEO,MAAM,CAACP,UAAU;IAC7BW,SAAS,EAAEJ,MAAM,CAACI;EACpB,CAAC,CAAC;EACF,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGtB,QAAQ,CAA+B,IAAI,CAAC;EACtE,MAAMuB,KAAK,GAAGtB,uBAAuB,CAAC,CAAC;EACvC,MAAMuB,SAAS,GAAG,CAAC,CAACD,KAAK,EAAEE,cAAc;EAEzC,MAAM;IAAEC,MAAM;IAAEL,KAAK,EAAEM;EAAe,CAAC,GAAG7B,mBAAmB,CAC3DkB,MAAM,CAACP,UAAU,EACjBQ,MACF,CAAC;EAEDlB,SAAS,CAAC,MAAM;IACd,IAAIyB,SAAS,EAAE;MACbL,gBAAgB,CAAC;QACfR,WAAW,EAAEK,MAAM,CAACL,WAAW;QAC/BF,UAAU,EAAEO,MAAM,CAACP,UAAU;QAC7BW,SAAS,EAAEJ,MAAM,CAACI,SAAS;QAC3BQ,GAAG,EAAEF,MAAM,EAAEG,GAAG;QAChBC,IAAI,EAAEJ,MAAM,EAAEK,GAAG;QACjBC,iBAAiB,EAAEN,MAAM,EAAEO,gBAAgB;QAC3CC,gBAAgB,EAAER,MAAM,EAAES,gBAAgB;QAC1CC,kBAAkB,EAAEV,MAAM,EAAEW,0BAA0B;QACtDC,MAAM,EAAEZ,MAAM,EAAEY,MAAM;QACtBC,gBAAgB,EAAEb,MAAM,EAAEa;MAC5B,CAAC,CAAC;MACFjB,QAAQ,CAACK,cAAc,CAAC;IAC1B;EACF,CAAC,EAAE,CAACD,MAAM,EAAEV,MAAM,EAAEQ,SAAS,EAAEG,cAAc,CAAC,CAAC;EAE/C,OAAO;IACLT,aAAa;IACbG,KAAK;IACLmB,GAAG,EAAEjB,KAAK,CAACiB;EACb,CAAC;AACH,CAAC;AAED,SAAS5B,eAAe,EAAER,UAAU,EAAEW,UAAU","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["getRecords","data","chart","records","mapInstrumentNames","map","item","instrument","name","displayName","topicalInstrumentsCharts","find","ti"],"sources":["../../../src/LiveRatesTableWidget/utils.ts"],"sourcesContent":["import type {\n GetInstrumentsChartQuery,\n ValidateInstrumentsQuery,\n} from '../gql/types/graphql';\nimport type { ValidateInstrumentsData } from './types';\n\nconst getRecords = (\n data: ValidateInstrumentsQuery,\n chart?: GetInstrumentsChartQuery\n): ValidateInstrumentsData => ({\n records:\n data?.mapInstrumentNames?.map((item) => ({\n instrument: item?.name || '',\n displayName: item?.displayName || '',\n chart:\n chart?.topicalInstrumentsCharts?.find(\n (ti) => ti.name === item?.displayName\n )?.chart || [],\n })) ?? [],\n});\n\nexport { getRecords };\n"],"mappings":"AAMA,MAAMA,UAAU,GAAGA,CACjBC,IAA8B,EAC9BC,KAAgC,MACH;EAC7BC,OAAO,EACLF,IAAI,EAAEG,kBAAkB,EAAEC,GAAG,CAAEC,IAAI,KAAM;IACvCC,UAAU,EAAED,IAAI,EAAEE,IAAI,IAAI,EAAE;IAC5BC,WAAW,EAAEH,IAAI,EAAEG,WAAW,IAAI,EAAE;IACpCP,KAAK,EACHA,KAAK,EAAEQ,wBAAwB,EAAEC,IAAI,CAClCC,EAAE,IAAKA,EAAE,CAACJ,IAAI,KAAKF,IAAI,EAAEG,WAC5B,CAAC,EAAEP,KAAK,IAAI;EAChB,CAAC,CAAC,CAAC,IAAI;AACX,CAAC,CAAC;AAEF,SAASF,UAAU","ignoreList":[]}
@@ -1,32 +1,13 @@
1
- import { Size } from '@oanda/labs-widget-common';
2
- declare const headerConfig: {
3
- instrument: {
4
- displayName: string;
5
- additionalStyles: string;
6
- };
7
- sell: {
8
- displayName: string;
9
- additionalStyles: string;
10
- };
11
- buy: {
12
- displayName: string;
13
- additionalStyles: string;
14
- };
15
- dailyChange: {
16
- displayName: string;
17
- additionalStyles: string;
18
- };
19
- chart: {
20
- displayName: string;
21
- additionalStyles: string;
22
- };
23
- spread: {
24
- displayName: string;
25
- additionalStyles: string;
26
- };
27
- };
1
+ import type { HeaderColumns } from '@oanda/labs-widget-common';
2
+ import { DataRecordType, Size } from '@oanda/labs-widget-common';
3
+ type HeaderRecordType = Exclude<DataRecordType, DataRecordType.SENTIMENT>;
4
+ declare const headerConfig: Record<HeaderRecordType, {
5
+ displayName: string;
6
+ additionalStyles: string;
7
+ }>;
8
+ declare const getHeaderConfig: (activeColumns: DataRecordType[]) => HeaderColumns[];
28
9
  declare const sizeConfig: {
29
10
  cards: Size;
30
11
  table: Size;
31
12
  };
32
- export { headerConfig, sizeConfig };
13
+ export { getHeaderConfig, headerConfig, sizeConfig };
@@ -1,6 +1,6 @@
1
- import { ColumnsNames } from './types';
1
+ import { DataRecordType } from '@oanda/labs-widget-common';
2
2
  declare const DEFAULT_COUNT = 10;
3
3
  declare const DEFAULT_TOTAL_COUNT = 50;
4
- declare const DEFAULT_COLUMNS: ColumnsNames[];
4
+ declare const DEFAULT_COLUMNS: DataRecordType[];
5
5
  declare const INSTRUMENT_TOOLTIP_ID = "instrument_tooltip_id";
6
6
  export { DEFAULT_COLUMNS, DEFAULT_COUNT, DEFAULT_TOTAL_COUNT, INSTRUMENT_TOOLTIP_ID, };
@@ -1,4 +1,4 @@
1
- import type { WidgetConfig } from '@oanda/labs-widget-common';
1
+ import type { DataRecord, DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';
2
2
  import type { Division } from '../gql/types/graphql';
3
3
  export { Division } from '../gql/types/graphql';
4
4
  export { Locale } from '@oanda/mono-i18n';
@@ -6,60 +6,19 @@ export declare enum View {
6
6
  TABLE = "table",
7
7
  CARDS = "cards"
8
8
  }
9
+ export interface ValidateInstrumentsData {
10
+ records?: DataRecord[];
11
+ }
9
12
  export interface LiveRatesTableConfig extends WidgetConfig {
10
13
  division: Division;
11
14
  liveRatesUrl: string;
12
15
  instruments: string[];
13
- columns?: ColumnsNames[];
16
+ columns?: DataRecordType[];
14
17
  removePadding?: boolean;
15
18
  view?: View;
16
19
  }
17
- export declare enum ColumnsNames {
18
- INSTRUMENT = "instrument",
19
- SELL = "sell",
20
- BUY = "buy",
21
- DAILY_CHANGE = "dailyChange",
22
- CHART = "chart",
23
- SPREAD = "spread"
24
- }
25
20
  export interface MainProps {
26
21
  instruments: string[];
27
22
  division: Division;
28
- columns?: ColumnsNames[];
29
- }
30
- export interface Sentiment {
31
- shortPercent: number;
32
- longPercent: number;
33
- }
34
- export type EmptyRecord = Record<string, never>;
35
- export interface DataRecord {
36
- [key: string]: string | number | undefined;
37
- instrument: string;
38
- displayName: string;
39
- buy?: number;
40
- sell?: number;
41
- spread?: number;
42
- sellPriceMovement?: number;
43
- buyPriceMovement?: number;
44
- dailyPercentChange?: string;
45
- displayPrecision?: number;
46
- }
47
- export interface RowWithDataProps {
48
- loading: boolean;
49
- record: DataRecord;
50
- hasBackgroundColor: boolean;
51
- target: EventTarget | null;
52
- activeColumns: ColumnsNames[];
53
- division: Division;
54
- isScrolled?: boolean;
55
- }
56
- export interface CardWithDataProps {
57
- index: number;
58
- isLoading?: boolean;
59
- isError?: boolean;
60
- record: DataRecord;
61
- target: EventTarget | null;
62
- activeColumns: ColumnsNames[];
63
- division: Division;
64
- isLast?: boolean;
23
+ columns?: DataRecordType[];
65
24
  }
@@ -1,15 +1,4 @@
1
- import type { HeaderColumns, LiveRatesErrorMessage } from '@oanda/labs-widget-common';
2
- import type { ValidateInstrumentsQuery } from '../gql/types/graphql';
3
- import type { DataRecord, EmptyRecord } from './types';
4
- import { ColumnsNames } from './types';
5
- declare const getRecords: (data: ValidateInstrumentsQuery) => {
6
- instrument: string;
7
- displayName: string;
8
- }[] | undefined;
9
- declare const getHeaderConfig: (activeColumns: ColumnsNames[]) => HeaderColumns[];
10
- declare const useRecords: (record: DataRecord | EmptyRecord, target: EventTarget | null) => {
11
- updatedRecord: DataRecord;
12
- error: LiveRatesErrorMessage | null;
13
- ref: (node?: Element | null) => void;
14
- };
15
- export { getHeaderConfig, getRecords, useRecords };
1
+ import type { GetInstrumentsChartQuery, ValidateInstrumentsQuery } from '../gql/types/graphql';
2
+ import type { ValidateInstrumentsData } from './types';
3
+ declare const getRecords: (data: ValidateInstrumentsQuery, chart?: GetInstrumentsChartQuery) => ValidateInstrumentsData;
4
+ export { getRecords };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oanda/labs-live-rates-table-widget",
3
- "version": "1.0.48",
3
+ "version": "1.0.50",
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.182",
15
+ "@oanda/labs-widget-common": "^1.0.184",
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": "ffd7ce8696e2fbf13c54a47fd21d5b6f6badc4b3"
23
+ "gitHead": "17da254f84365ded339ad48cb6fb9efba1c1f2cc"
24
24
  }