@oanda/labs-live-rates-table-widget 1.0.38 → 1.0.39
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 +160 -0
- package/dist/main/LiveRatesTableWidget/LiveRatesTableWidget.js +23 -25
- package/dist/main/LiveRatesTableWidget/LiveRatesTableWidget.js.map +1 -1
- package/dist/main/LiveRatesTableWidget/Main.js +1 -1
- package/dist/main/LiveRatesTableWidget/Main.js.map +1 -1
- package/dist/main/LiveRatesTableWidget/components/RowWithData/RowWithData.js +2 -4
- package/dist/main/LiveRatesTableWidget/components/RowWithData/RowWithData.js.map +1 -1
- package/dist/module/LiveRatesTableWidget/LiveRatesTableWidget.js +25 -27
- package/dist/module/LiveRatesTableWidget/LiveRatesTableWidget.js.map +1 -1
- package/dist/module/LiveRatesTableWidget/Main.js +3 -3
- package/dist/module/LiveRatesTableWidget/Main.js.map +1 -1
- package/dist/module/LiveRatesTableWidget/components/RowWithData/RowWithData.js +3 -3
- package/dist/module/LiveRatesTableWidget/components/RowWithData/RowWithData.js.map +1 -1
- package/package.json +3 -3
- package/src/LiveRatesTableWidget/LiveRatesTableWidget.tsx +29 -33
- package/src/LiveRatesTableWidget/Main.tsx +3 -3
- package/src/LiveRatesTableWidget/components/RowWithData/RowWithData.tsx +3 -3
- package/test/CardWithData.test.tsx +10 -7
- package/test/Cards.test.tsx +23 -18
- package/test/Main.test.tsx +9 -7
- package/test/RowWithData.test.tsx +15 -12
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,166 @@
|
|
|
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.39 (2024-12-11)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 1.0.172 (2024-11-29)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 1.0.171 (2024-11-28)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 1.0.170 (2024-11-28)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 1.0.169 (2024-11-20)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## 1.0.168 (2024-11-19)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## 1.0.167 (2024-10-14)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## 1.0.166 (2024-10-07)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 1.0.165 (2024-10-03)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## 1.0.164 (2024-09-26)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## 1.0.163 (2024-09-18)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## 1.0.162 (2024-09-12)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## 1.0.161 (2024-09-11)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## 1.0.160 (2024-09-10)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## 1.0.159 (2024-09-09)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## 1.0.158 (2024-09-04)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## 1.0.157 (2024-09-04)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## 1.0.156 (2024-09-02)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 1.0.155 (2024-08-29)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## 1.0.154 (2024-08-29)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 1.0.153 (2024-08-23)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## 1.0.152 (2024-08-23)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## 1.0.151 (2024-08-20)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## 1.0.150 (2024-08-19)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## 1.0.149 (2024-08-07)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 1.0.148 (2024-08-01)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## 1.0.147 (2024-08-01)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## 1.0.146 (2024-07-26)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## 1.0.145 (2024-07-25)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## 1.0.144 (2024-07-22)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## 1.0.143 (2024-07-19)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## 1.0.142 (2024-07-16)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
## 1.0.141 (2024-07-16)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## 1.0.140 (2024-07-12)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## 1.0.139 (2024-07-12)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## 1.0.138 (2024-07-10)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
## 1.0.137 (2024-07-05)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## 1.0.136 (2024-07-03)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
## 1.0.135 (2024-07-03)
|
|
159
|
+
|
|
160
|
+
**Note:** Version bump only for package @oanda/labs-live-rates-table-widget
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
6
166
|
## 1.0.38 (2024-11-29)
|
|
7
167
|
|
|
8
168
|
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.LiveRatesTableWidget = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _client = require("@apollo/client");
|
|
9
|
-
var _monoI18n = require("@oanda/mono-i18n");
|
|
10
9
|
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
11
10
|
var _translations = require("../translations");
|
|
12
11
|
var _Main = require("./Main");
|
|
@@ -33,32 +32,31 @@ const LiveRatesTableWidget = _ref => {
|
|
|
33
32
|
});
|
|
34
33
|
const divisionCode = division === _types.Division.Opt ? _types.Division.Ogm : division;
|
|
35
34
|
const dataSource = divisionCode === _types.Division.Ogm ? 'MT5' : 'V20';
|
|
36
|
-
return _react.default.createElement(_labsWidgetCommon.
|
|
37
|
-
|
|
35
|
+
return _react.default.createElement(_labsWidgetCommon.WidgetProvider, {
|
|
36
|
+
locale: locale,
|
|
37
|
+
translations: _translations.translations,
|
|
38
|
+
client: client,
|
|
38
39
|
theme: theme,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
styling: {
|
|
41
|
+
removePadding,
|
|
42
|
+
size: view && _config.sizeConfig[view]
|
|
43
|
+
},
|
|
44
|
+
liveRates: {
|
|
45
|
+
url: liveRatesUrl,
|
|
46
|
+
options: {
|
|
47
|
+
divisionCode,
|
|
48
|
+
dataSource
|
|
49
|
+
}
|
|
48
50
|
}
|
|
49
|
-
}, _react.default.createElement(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}, _react.default.createElement(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}),
|
|
59
|
-
logoLink,
|
|
60
|
-
linkArea: 'logo'
|
|
61
|
-
})))));
|
|
51
|
+
}, _react.default.createElement(_labsWidgetCommon.WidgetWrapper, {
|
|
52
|
+
logoLink: logoLink,
|
|
53
|
+
linkArea: "logo",
|
|
54
|
+
isParamError: isParamError
|
|
55
|
+
}, _react.default.createElement(_Main.Main, {
|
|
56
|
+
instruments: instruments,
|
|
57
|
+
division: division,
|
|
58
|
+
columns: columns
|
|
59
|
+
})));
|
|
62
60
|
};
|
|
63
61
|
exports.LiveRatesTableWidget = LiveRatesTableWidget;
|
|
64
62
|
//# sourceMappingURL=LiveRatesTableWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveRatesTableWidget.js","names":["_react","_interopRequireDefault","require","_client","
|
|
1
|
+
{"version":3,"file":"LiveRatesTableWidget.js","names":["_react","_interopRequireDefault","require","_client","_labsWidgetCommon","_translations","_Main","_types","_config","e","__esModule","default","LiveRatesTableWidget","_ref","graphqlUrl","liveRatesUrl","instruments","division","columns","locale","theme","isParamError","removePadding","view","logoLink","client","ApolloClient","uri","cache","InMemoryCache","divisionCode","Division","Opt","Ogm","dataSource","createElement","WidgetProvider","translations","styling","size","sizeConfig","liveRates","url","options","WidgetWrapper","linkArea","Main","exports"],"sources":["../../../src/LiveRatesTableWidget/LiveRatesTableWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { ApolloClient, InMemoryCache } from '@apollo/client';\nimport { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { Division, LiveRatesTableConfig } from './types';\nimport { sizeConfig } from './config';\n\nconst LiveRatesTableWidget = ({\n graphqlUrl,\n liveRatesUrl,\n instruments,\n division,\n columns,\n locale,\n theme,\n isParamError,\n removePadding,\n view,\n logoLink,\n}: LiveRatesTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = division === Division.Opt ? Division.Ogm : division;\n const dataSource = divisionCode === Division.Ogm ? 'MT5' : 'V20';\n\n return (\n <WidgetProvider\n locale={locale}\n translations={translations}\n client={client}\n theme={theme}\n styling={{\n removePadding,\n size: view && sizeConfig[view],\n }}\n liveRates={{\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }}\n >\n <WidgetWrapper\n logoLink={logoLink}\n linkArea=\"logo\"\n isParamError={isParamError}\n >\n <Main\n instruments={instruments}\n division={division}\n columns={columns}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { LiveRatesTableWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAAsC,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtC,MAAMG,oBAAoB,GAAGC,IAAA,IAYD;EAAA,IAZE;IAC5BC,UAAU;IACVC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,OAAO;IACPC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,aAAa;IACbC,IAAI;IACJC;EACoB,CAAC,GAAAX,IAAA;EACrB,MAAMY,MAAM,GAAG,IAAIC,oBAAY,CAAC;IAC9BC,GAAG,EAAEb,UAAU;IACfc,KAAK,EAAE,IAAIC,qBAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMC,YAAY,GAAGb,QAAQ,KAAKc,eAAQ,CAACC,GAAG,GAAGD,eAAQ,CAACE,GAAG,GAAGhB,QAAQ;EACxE,MAAMiB,UAAU,GAAGJ,YAAY,KAAKC,eAAQ,CAACE,GAAG,GAAG,KAAK,GAAG,KAAK;EAEhE,OACEjC,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAC/B,iBAAA,CAAAgC,cAAc;IACbjB,MAAM,EAAEA,MAAO;IACfkB,YAAY,EAAEA,0BAAa;IAC3BZ,MAAM,EAAEA,MAAO;IACfL,KAAK,EAAEA,KAAM;IACbkB,OAAO,EAAE;MACPhB,aAAa;MACbiB,IAAI,EAAEhB,IAAI,IAAIiB,kBAAU,CAACjB,IAAI;IAC/B,CAAE;IACFkB,SAAS,EAAE;MACTC,GAAG,EAAE3B,YAAY;MACjB4B,OAAO,EAAE;QAAEb,YAAY;QAAEI;MAAW;IACtC;EAAE,GAEFlC,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAC/B,iBAAA,CAAAwC,aAAa;IACZpB,QAAQ,EAAEA,QAAS;IACnBqB,QAAQ,EAAC,MAAM;IACfxB,YAAY,EAAEA;EAAa,GAE3BrB,MAAA,CAAAW,OAAA,CAAAwB,aAAA,CAAC7B,KAAA,CAAAwC,IAAI;IACH9B,WAAW,EAAEA,WAAY;IACzBC,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA;EAAQ,CAClB,CACY,CACD,CAAC;AAErB,CAAC;AAAC6B,OAAA,CAAAnC,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["_react","_interopRequireWildcard","require","_client","_labsWidgetCommon","_utils","_components","_constant","_validateInstruments","_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","
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_react","_interopRequireWildcard","require","_client","_labsWidgetCommon","_utils","_components","_constant","_validateInstruments","_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","loading","data","error","useQuery","validateInstruments","variables","fetchPolicy","useEffect","getRecords","instrumentsNames","map","_ref2","instrument","showError","createElement","Fragment","className","Table","isError","headerConfig","getHeaderConfig","renderRow","record","index","isScrolled","RowWithData","key","hasBackgroundColor","activeColumns","Cards","isLoading","Tooltip","id","INSTRUMENT_TOOLTIP_ID","exports"],"sources":["../../../src/LiveRatesTableWidget/Main.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useQuery } from '@apollo/client';\nimport {\n Size,\n Table,\n useLayoutProvider,\n Tooltip,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { getHeaderConfig, getRecords } from './utils';\nimport { DataRecord, MainProps } from './types';\nimport { RowWithData, Cards } from './components';\nimport {\n DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID,\n} from './constant';\nimport { validateInstruments } from '../gql/validateInstruments';\nimport { ValidateInstrumentsQuery, ValidateInstrumentsQueryVariables } from '../gql/types/graphql';\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[]>(new Array(instruments.length).fill({}));\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 data-testid=\"live-rates-table-wrapper\" className=\"lw-relative lw-text-sm lw-tracking-normal lw-text-text-primary\">\n {isDesktop ? (\n <div className=\"lw-border lw-border-solid lw-border-border-primary\">\n <Table<DataRecord>\n isError={showError}\n records={records}\n headerConfig={getHeaderConfig(columns)}\n renderRow={(record, index, isScrolled) => (\n <RowWithData\n isScrolled={isScrolled}\n loading={loading}\n key={`row_${index}`}\n record={record}\n target={target}\n hasBackgroundColor={index % 2 === 0}\n activeColumns={columns}\n division={division}\n />\n )}\n />\n </div>\n ) : (\n <Cards\n records={records}\n division={division}\n target={target}\n columns={columns}\n isError={showError}\n isLoading={loading}\n />\n )}\n <Tooltip id={INSTRUMENT_TOOLTIP_ID} />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.RowWithData = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
9
|
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
10
10
|
var _types = require("../../types");
|
|
@@ -12,8 +12,6 @@ var _LineChartWithData = require("../LineChartWithData");
|
|
|
12
12
|
var _utils = require("../../utils");
|
|
13
13
|
var _constant = require("../../constant");
|
|
14
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
15
|
const RowWithData = _ref => {
|
|
18
16
|
let {
|
|
19
17
|
loading,
|
|
@@ -26,7 +24,7 @@ const RowWithData = _ref => {
|
|
|
26
24
|
} = _ref;
|
|
27
25
|
const {
|
|
28
26
|
isDark
|
|
29
|
-
} = (0,
|
|
27
|
+
} = (0, _labsWidgetCommon.useLayoutProvider)();
|
|
30
28
|
const {
|
|
31
29
|
updatedRecord,
|
|
32
30
|
error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowWithData.js","names":["_react","
|
|
1
|
+
{"version":3,"file":"RowWithData.js","names":["_react","_interopRequireDefault","require","_classnames","_labsWidgetCommon","_types","_LineChartWithData","_utils","_constant","e","__esModule","default","RowWithData","_ref","loading","record","hasBackgroundColor","target","activeColumns","division","isScrolled","isDark","useLayoutProvider","updatedRecord","error","ref","useRecords","instrument","checkLoading","id","undefined","createElement","TableRow","Fragment","TableCell","type","classNames","classnames","key","ColumnsNames","INSTRUMENT","isLoading","Truncate","maxWidth","text","displayName","tooltipId","INSTRUMENT_TOOLTIP_ID","map","item","SELL","isError","additionalPaddingRight","Price","priceMovement","sellPriceMovement","movementIndicator","sell","toFixed","displayPrecision","BUY","buyPriceMovement","buy","DAILY_CHANGE","dailyPercentChange","CHART","className","LineChartWithData","SPREAD","loaderSize","LoaderSize","sm","spread","exports"],"sources":["../../../../../src/LiveRatesTableWidget/components/RowWithData/RowWithData.tsx"],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport {\n TableCell, TableRow, Price, LoaderSize, Truncate, useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { ColumnsNames, RowWithDataProps } from '../../types';\nimport { LineChartWithData } from '../LineChartWithData';\nimport { useRecords } from '../../utils';\nimport { INSTRUMENT_TOOLTIP_ID } from '../../constant';\n\nconst RowWithData = ({\n loading,\n record,\n hasBackgroundColor,\n target,\n activeColumns,\n division,\n isScrolled,\n}: RowWithDataProps) => {\n const { isDark } = useLayoutProvider();\n const { updatedRecord, error, ref } = useRecords(record, record.instrument ? target : null);\n\n const checkLoading = (id: string) => loading || (!error && updatedRecord?.[id] === undefined);\n\n return (\n <TableRow ref={ref} isScrolled={isScrolled} hasBackgroundColor={hasBackgroundColor}>\n <>\n <TableCell\n type=\"text\"\n classNames={classnames(\n 'lw-font-bold',\n {\n '[&>*:first-child]:lw-border-r [&>*:first-child]:lw-border-border-primary': isDark && isScrolled,\n },\n )}\n key={ColumnsNames.INSTRUMENT}\n isLoading={checkLoading(ColumnsNames.INSTRUMENT)}\n >\n <Truncate maxWidth={130} text={record.displayName} tooltipId={INSTRUMENT_TOOLTIP_ID} />\n </TableCell>\n {activeColumns.map((item) => {\n if (item === ColumnsNames.SELL) {\n return (\n <TableCell\n key={ColumnsNames.SELL}\n isLoading={checkLoading(ColumnsNames.SELL)}\n isError={!!error}\n additionalPaddingRight\n >\n <Price priceMovement={updatedRecord.sellPriceMovement} movementIndicator=\"arrow\">\n <span>{updatedRecord.sell?.toFixed(updatedRecord.displayPrecision)}</span>\n </Price>\n </TableCell>\n );\n }\n\n if (item === ColumnsNames.BUY) {\n return (\n <TableCell\n key={ColumnsNames.BUY}\n isLoading={checkLoading(ColumnsNames.BUY)}\n isError={!!error}\n additionalPaddingRight\n >\n <Price priceMovement={updatedRecord.buyPriceMovement} movementIndicator=\"arrow\">\n <span>{updatedRecord.buy?.toFixed(updatedRecord.displayPrecision)}</span>\n </Price>\n </TableCell>\n );\n }\n\n if (item === ColumnsNames.DAILY_CHANGE) {\n return (\n <TableCell\n key={ColumnsNames.DAILY_CHANGE}\n isLoading={checkLoading('dailyPercentChange')}\n isError={!!error}\n >\n <span>{updatedRecord.dailyPercentChange}</span>\n </TableCell>\n );\n }\n\n if (item === ColumnsNames.CHART) {\n return (\n <td data-testid=\"chart-table-cell\" className=\"lw-relative lw-px-3 lw-py-0 lw-text-right\" key={ColumnsNames.CHART}>\n <div className=\"lw-flex lw-justify-center\">\n <LineChartWithData\n record={updatedRecord}\n isLoading={checkLoading('instrument')}\n division={division}\n />\n </div>\n </td>\n );\n }\n\n if (item === ColumnsNames.SPREAD) {\n return (\n <TableCell\n key={ColumnsNames.SPREAD}\n isLoading={checkLoading(ColumnsNames.SPREAD)}\n isError={!!error}\n loaderSize={LoaderSize.sm}\n >\n <span>{updatedRecord.spread}</span>\n </TableCell>\n );\n }\n return null;\n })}\n </>\n </TableRow>\n );\n};\n\nexport { RowWithData };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ApolloClient, InMemoryCache
|
|
3
|
-
import {
|
|
4
|
-
import { ChartError, LiveRatesProvider, ThemeProvider, getLocale, renderComponent } from '@oanda/labs-widget-common';
|
|
2
|
+
import { ApolloClient, InMemoryCache } from '@apollo/client';
|
|
3
|
+
import { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';
|
|
5
4
|
import { translations } from '../translations';
|
|
6
5
|
import { Main } from './Main';
|
|
7
6
|
import { Division } from './types';
|
|
@@ -26,32 +25,31 @@ const LiveRatesTableWidget = _ref => {
|
|
|
26
25
|
});
|
|
27
26
|
const divisionCode = division === Division.Opt ? Division.Ogm : division;
|
|
28
27
|
const dataSource = divisionCode === Division.Ogm ? 'MT5' : 'V20';
|
|
29
|
-
return React.createElement(
|
|
30
|
-
|
|
28
|
+
return React.createElement(WidgetProvider, {
|
|
29
|
+
locale: locale,
|
|
30
|
+
translations: translations,
|
|
31
|
+
client: client,
|
|
31
32
|
theme: theme,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
styling: {
|
|
34
|
+
removePadding,
|
|
35
|
+
size: view && sizeConfig[view]
|
|
36
|
+
},
|
|
37
|
+
liveRates: {
|
|
38
|
+
url: liveRatesUrl,
|
|
39
|
+
options: {
|
|
40
|
+
divisionCode,
|
|
41
|
+
dataSource
|
|
42
|
+
}
|
|
41
43
|
}
|
|
42
|
-
}, React.createElement(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}, React.createElement(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}),
|
|
52
|
-
logoLink,
|
|
53
|
-
linkArea: 'logo'
|
|
54
|
-
})))));
|
|
44
|
+
}, React.createElement(WidgetWrapper, {
|
|
45
|
+
logoLink: logoLink,
|
|
46
|
+
linkArea: "logo",
|
|
47
|
+
isParamError: isParamError
|
|
48
|
+
}, React.createElement(Main, {
|
|
49
|
+
instruments: instruments,
|
|
50
|
+
division: division,
|
|
51
|
+
columns: columns
|
|
52
|
+
})));
|
|
55
53
|
};
|
|
56
54
|
export { LiveRatesTableWidget };
|
|
57
55
|
//# sourceMappingURL=LiveRatesTableWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveRatesTableWidget.js","names":["React","ApolloClient","InMemoryCache","
|
|
1
|
+
{"version":3,"file":"LiveRatesTableWidget.js","names":["React","ApolloClient","InMemoryCache","WidgetProvider","WidgetWrapper","translations","Main","Division","sizeConfig","LiveRatesTableWidget","_ref","graphqlUrl","liveRatesUrl","instruments","division","columns","locale","theme","isParamError","removePadding","view","logoLink","client","uri","cache","divisionCode","Opt","Ogm","dataSource","createElement","styling","size","liveRates","url","options","linkArea"],"sources":["../../../src/LiveRatesTableWidget/LiveRatesTableWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { ApolloClient, InMemoryCache } from '@apollo/client';\nimport { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { Division, LiveRatesTableConfig } from './types';\nimport { sizeConfig } from './config';\n\nconst LiveRatesTableWidget = ({\n graphqlUrl,\n liveRatesUrl,\n instruments,\n division,\n columns,\n locale,\n theme,\n isParamError,\n removePadding,\n view,\n logoLink,\n}: LiveRatesTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const divisionCode = division === Division.Opt ? Division.Ogm : division;\n const dataSource = divisionCode === Division.Ogm ? 'MT5' : 'V20';\n\n return (\n <WidgetProvider\n locale={locale}\n translations={translations}\n client={client}\n theme={theme}\n styling={{\n removePadding,\n size: view && sizeConfig[view],\n }}\n liveRates={{\n url: liveRatesUrl,\n options: { divisionCode, dataSource },\n }}\n >\n <WidgetWrapper\n logoLink={logoLink}\n linkArea=\"logo\"\n isParamError={isParamError}\n >\n <Main\n instruments={instruments}\n division={division}\n columns={columns}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { LiveRatesTableWidget };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SAASC,cAAc,EAAEC,aAAa,QAAQ,2BAA2B;AAEzE,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAASC,QAAQ,QAA8B,SAAS;AACxD,SAASC,UAAU,QAAQ,UAAU;AAErC,MAAMC,oBAAoB,GAAGC,IAAA,IAYD;EAAA,IAZE;IAC5BC,UAAU;IACVC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,OAAO;IACPC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,aAAa;IACbC,IAAI;IACJC;EACoB,CAAC,GAAAX,IAAA;EACrB,MAAMY,MAAM,GAAG,IAAIrB,YAAY,CAAC;IAC9BsB,GAAG,EAAEZ,UAAU;IACfa,KAAK,EAAE,IAAItB,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMuB,YAAY,GAAGX,QAAQ,KAAKP,QAAQ,CAACmB,GAAG,GAAGnB,QAAQ,CAACoB,GAAG,GAAGb,QAAQ;EACxE,MAAMc,UAAU,GAAGH,YAAY,KAAKlB,QAAQ,CAACoB,GAAG,GAAG,KAAK,GAAG,KAAK;EAEhE,OACE3B,KAAA,CAAA6B,aAAA,CAAC1B,cAAc;IACba,MAAM,EAAEA,MAAO;IACfX,YAAY,EAAEA,YAAa;IAC3BiB,MAAM,EAAEA,MAAO;IACfL,KAAK,EAAEA,KAAM;IACba,OAAO,EAAE;MACPX,aAAa;MACbY,IAAI,EAAEX,IAAI,IAAIZ,UAAU,CAACY,IAAI;IAC/B,CAAE;IACFY,SAAS,EAAE;MACTC,GAAG,EAAErB,YAAY;MACjBsB,OAAO,EAAE;QAAET,YAAY;QAAEG;MAAW;IACtC;EAAE,GAEF5B,KAAA,CAAA6B,aAAA,CAACzB,aAAa;IACZiB,QAAQ,EAAEA,QAAS;IACnBc,QAAQ,EAAC,MAAM;IACfjB,YAAY,EAAEA;EAAa,GAE3BlB,KAAA,CAAA6B,aAAA,CAACvB,IAAI;IACHO,WAAW,EAAEA,WAAY;IACzBC,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA;EAAQ,CAClB,CACY,CACD,CAAC;AAErB,CAAC;AAED,SAASN,oBAAoB","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React, { useEffect, useState
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { useQuery } from '@apollo/client';
|
|
3
|
-
import { Size, Table,
|
|
3
|
+
import { Size, Table, useLayoutProvider, Tooltip, useLiveRatesQuery } from '@oanda/labs-widget-common';
|
|
4
4
|
import { getHeaderConfig, getRecords } from './utils';
|
|
5
5
|
import { RowWithData, Cards } from './components';
|
|
6
6
|
import { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID } from './constant';
|
|
@@ -13,7 +13,7 @@ const Main = _ref => {
|
|
|
13
13
|
} = _ref;
|
|
14
14
|
const {
|
|
15
15
|
size
|
|
16
|
-
} =
|
|
16
|
+
} = useLayoutProvider();
|
|
17
17
|
const isDesktop = size === Size.DESKTOP;
|
|
18
18
|
const {
|
|
19
19
|
target,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["React","useEffect","useState","
|
|
1
|
+
{"version":3,"file":"Main.js","names":["React","useEffect","useState","useQuery","Size","Table","useLayoutProvider","Tooltip","useLiveRatesQuery","getHeaderConfig","getRecords","RowWithData","Cards","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","validateInstruments","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","isError","headerConfig","renderRow","record","index","isScrolled","key","hasBackgroundColor","activeColumns","isLoading","id"],"sources":["../../../src/LiveRatesTableWidget/Main.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useQuery } from '@apollo/client';\nimport {\n Size,\n Table,\n useLayoutProvider,\n Tooltip,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { getHeaderConfig, getRecords } from './utils';\nimport { DataRecord, MainProps } from './types';\nimport { RowWithData, Cards } from './components';\nimport {\n DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID,\n} from './constant';\nimport { validateInstruments } from '../gql/validateInstruments';\nimport { ValidateInstrumentsQuery, ValidateInstrumentsQueryVariables } from '../gql/types/graphql';\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[]>(new Array(instruments.length).fill({}));\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 data-testid=\"live-rates-table-wrapper\" className=\"lw-relative lw-text-sm lw-tracking-normal lw-text-text-primary\">\n {isDesktop ? (\n <div className=\"lw-border lw-border-solid lw-border-border-primary\">\n <Table<DataRecord>\n isError={showError}\n records={records}\n headerConfig={getHeaderConfig(columns)}\n renderRow={(record, index, isScrolled) => (\n <RowWithData\n isScrolled={isScrolled}\n loading={loading}\n key={`row_${index}`}\n record={record}\n target={target}\n hasBackgroundColor={index % 2 === 0}\n activeColumns={columns}\n division={division}\n />\n )}\n />\n </div>\n ) : (\n <Cards\n records={records}\n division={division}\n target={target}\n columns={columns}\n isError={showError}\n isLoading={loading}\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,6 +1,6 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import classnames from 'classnames';
|
|
3
|
-
import { TableCell, TableRow, Price, LoaderSize, Truncate,
|
|
3
|
+
import { TableCell, TableRow, Price, LoaderSize, Truncate, useLayoutProvider } from '@oanda/labs-widget-common';
|
|
4
4
|
import { ColumnsNames } from '../../types';
|
|
5
5
|
import { LineChartWithData } from '../LineChartWithData';
|
|
6
6
|
import { useRecords } from '../../utils';
|
|
@@ -17,7 +17,7 @@ const RowWithData = _ref => {
|
|
|
17
17
|
} = _ref;
|
|
18
18
|
const {
|
|
19
19
|
isDark
|
|
20
|
-
} =
|
|
20
|
+
} = useLayoutProvider();
|
|
21
21
|
const {
|
|
22
22
|
updatedRecord,
|
|
23
23
|
error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowWithData.js","names":["React","
|
|
1
|
+
{"version":3,"file":"RowWithData.js","names":["React","classnames","TableCell","TableRow","Price","LoaderSize","Truncate","useLayoutProvider","ColumnsNames","LineChartWithData","useRecords","INSTRUMENT_TOOLTIP_ID","RowWithData","_ref","loading","record","hasBackgroundColor","target","activeColumns","division","isScrolled","isDark","updatedRecord","error","ref","instrument","checkLoading","id","undefined","createElement","Fragment","type","classNames","key","INSTRUMENT","isLoading","maxWidth","text","displayName","tooltipId","map","item","SELL","isError","additionalPaddingRight","priceMovement","sellPriceMovement","movementIndicator","sell","toFixed","displayPrecision","BUY","buyPriceMovement","buy","DAILY_CHANGE","dailyPercentChange","CHART","className","SPREAD","loaderSize","sm","spread"],"sources":["../../../../../src/LiveRatesTableWidget/components/RowWithData/RowWithData.tsx"],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport {\n TableCell, TableRow, Price, LoaderSize, Truncate, useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { ColumnsNames, RowWithDataProps } from '../../types';\nimport { LineChartWithData } from '../LineChartWithData';\nimport { useRecords } from '../../utils';\nimport { INSTRUMENT_TOOLTIP_ID } from '../../constant';\n\nconst RowWithData = ({\n loading,\n record,\n hasBackgroundColor,\n target,\n activeColumns,\n division,\n isScrolled,\n}: RowWithDataProps) => {\n const { isDark } = useLayoutProvider();\n const { updatedRecord, error, ref } = useRecords(record, record.instrument ? target : null);\n\n const checkLoading = (id: string) => loading || (!error && updatedRecord?.[id] === undefined);\n\n return (\n <TableRow ref={ref} isScrolled={isScrolled} hasBackgroundColor={hasBackgroundColor}>\n <>\n <TableCell\n type=\"text\"\n classNames={classnames(\n 'lw-font-bold',\n {\n '[&>*:first-child]:lw-border-r [&>*:first-child]:lw-border-border-primary': isDark && isScrolled,\n },\n )}\n key={ColumnsNames.INSTRUMENT}\n isLoading={checkLoading(ColumnsNames.INSTRUMENT)}\n >\n <Truncate maxWidth={130} text={record.displayName} tooltipId={INSTRUMENT_TOOLTIP_ID} />\n </TableCell>\n {activeColumns.map((item) => {\n if (item === ColumnsNames.SELL) {\n return (\n <TableCell\n key={ColumnsNames.SELL}\n isLoading={checkLoading(ColumnsNames.SELL)}\n isError={!!error}\n additionalPaddingRight\n >\n <Price priceMovement={updatedRecord.sellPriceMovement} movementIndicator=\"arrow\">\n <span>{updatedRecord.sell?.toFixed(updatedRecord.displayPrecision)}</span>\n </Price>\n </TableCell>\n );\n }\n\n if (item === ColumnsNames.BUY) {\n return (\n <TableCell\n key={ColumnsNames.BUY}\n isLoading={checkLoading(ColumnsNames.BUY)}\n isError={!!error}\n additionalPaddingRight\n >\n <Price priceMovement={updatedRecord.buyPriceMovement} movementIndicator=\"arrow\">\n <span>{updatedRecord.buy?.toFixed(updatedRecord.displayPrecision)}</span>\n </Price>\n </TableCell>\n );\n }\n\n if (item === ColumnsNames.DAILY_CHANGE) {\n return (\n <TableCell\n key={ColumnsNames.DAILY_CHANGE}\n isLoading={checkLoading('dailyPercentChange')}\n isError={!!error}\n >\n <span>{updatedRecord.dailyPercentChange}</span>\n </TableCell>\n );\n }\n\n if (item === ColumnsNames.CHART) {\n return (\n <td data-testid=\"chart-table-cell\" className=\"lw-relative lw-px-3 lw-py-0 lw-text-right\" key={ColumnsNames.CHART}>\n <div className=\"lw-flex lw-justify-center\">\n <LineChartWithData\n record={updatedRecord}\n isLoading={checkLoading('instrument')}\n division={division}\n />\n </div>\n </td>\n );\n }\n\n if (item === ColumnsNames.SPREAD) {\n return (\n <TableCell\n key={ColumnsNames.SPREAD}\n isLoading={checkLoading(ColumnsNames.SPREAD)}\n isError={!!error}\n loaderSize={LoaderSize.sm}\n >\n <span>{updatedRecord.spread}</span>\n </TableCell>\n );\n }\n return null;\n })}\n </>\n </TableRow>\n );\n};\n\nexport { RowWithData };\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-live-rates-table-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.39",
|
|
4
4
|
"description": "Labs Live Rates Table Widget",
|
|
5
5
|
"main": "dist/main/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"author": "OANDA",
|
|
13
13
|
"license": "UNLICENSED",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@oanda/labs-widget-common": "^1.0.
|
|
15
|
+
"@oanda/labs-widget-common": "^1.0.173",
|
|
16
16
|
"@oanda/mono-i18n": "10.0.1",
|
|
17
17
|
"graphql": "16.8.1"
|
|
18
18
|
},
|
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
"@graphql-codegen/cli": "5.0.0",
|
|
21
21
|
"@graphql-codegen/client-preset": "4.1.0"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "67a7801f99f0bab94dd6067a102761f51de786c1"
|
|
24
24
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ApolloClient, InMemoryCache
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
ChartError, LiveRatesProvider, ThemeProvider, getLocale,
|
|
6
|
-
renderComponent,
|
|
7
|
-
} from '@oanda/labs-widget-common';
|
|
2
|
+
import { ApolloClient, InMemoryCache } from '@apollo/client';
|
|
3
|
+
import { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';
|
|
4
|
+
|
|
8
5
|
import { translations } from '../translations';
|
|
9
6
|
import { Main } from './Main';
|
|
10
7
|
import { Division, LiveRatesTableConfig } from './types';
|
|
@@ -32,33 +29,32 @@ const LiveRatesTableWidget = ({
|
|
|
32
29
|
const dataSource = divisionCode === Division.Ogm ? 'MT5' : 'V20';
|
|
33
30
|
|
|
34
31
|
return (
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
</ThemeProvider>
|
|
32
|
+
<WidgetProvider
|
|
33
|
+
locale={locale}
|
|
34
|
+
translations={translations}
|
|
35
|
+
client={client}
|
|
36
|
+
theme={theme}
|
|
37
|
+
styling={{
|
|
38
|
+
removePadding,
|
|
39
|
+
size: view && sizeConfig[view],
|
|
40
|
+
}}
|
|
41
|
+
liveRates={{
|
|
42
|
+
url: liveRatesUrl,
|
|
43
|
+
options: { divisionCode, dataSource },
|
|
44
|
+
}}
|
|
45
|
+
>
|
|
46
|
+
<WidgetWrapper
|
|
47
|
+
logoLink={logoLink}
|
|
48
|
+
linkArea="logo"
|
|
49
|
+
isParamError={isParamError}
|
|
50
|
+
>
|
|
51
|
+
<Main
|
|
52
|
+
instruments={instruments}
|
|
53
|
+
division={division}
|
|
54
|
+
columns={columns}
|
|
55
|
+
/>
|
|
56
|
+
</WidgetWrapper>
|
|
57
|
+
</WidgetProvider>
|
|
62
58
|
);
|
|
63
59
|
};
|
|
64
60
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React, { useEffect, useState
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { useQuery } from '@apollo/client';
|
|
3
3
|
import {
|
|
4
4
|
Size,
|
|
5
5
|
Table,
|
|
6
|
-
|
|
6
|
+
useLayoutProvider,
|
|
7
7
|
Tooltip,
|
|
8
8
|
useLiveRatesQuery,
|
|
9
9
|
} from '@oanda/labs-widget-common';
|
|
@@ -21,7 +21,7 @@ const Main = ({
|
|
|
21
21
|
division,
|
|
22
22
|
columns = DEFAULT_COLUMNS,
|
|
23
23
|
}: MainProps) => {
|
|
24
|
-
const { size } =
|
|
24
|
+
const { size } = useLayoutProvider();
|
|
25
25
|
const isDesktop = size === Size.DESKTOP;
|
|
26
26
|
const { target, setQuery } = useLiveRatesQuery();
|
|
27
27
|
const [records, setRecords] = useState<DataRecord[]>(new Array(instruments.length).fill({}));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import classnames from 'classnames';
|
|
3
3
|
import {
|
|
4
|
-
TableCell, TableRow, Price, LoaderSize, Truncate,
|
|
4
|
+
TableCell, TableRow, Price, LoaderSize, Truncate, useLayoutProvider,
|
|
5
5
|
} from '@oanda/labs-widget-common';
|
|
6
6
|
import { ColumnsNames, RowWithDataProps } from '../../types';
|
|
7
7
|
import { LineChartWithData } from '../LineChartWithData';
|
|
@@ -17,7 +17,7 @@ const RowWithData = ({
|
|
|
17
17
|
division,
|
|
18
18
|
isScrolled,
|
|
19
19
|
}: RowWithDataProps) => {
|
|
20
|
-
const { isDark } =
|
|
20
|
+
const { isDark } = useLayoutProvider();
|
|
21
21
|
const { updatedRecord, error, ref } = useRecords(record, record.instrument ? target : null);
|
|
22
22
|
|
|
23
23
|
const checkLoading = (id: string) => loading || (!error && updatedRecord?.[id] === undefined);
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { render } from '@testing-library/react';
|
|
6
6
|
import { MockedProvider } from '@apollo/client/testing';
|
|
7
|
+
import { MockLayoutProvider } from '@oanda/labs-widget-common';
|
|
7
8
|
import { CardWithData } from '../src/LiveRatesTableWidget/components/CardWithData';
|
|
8
9
|
import { ColumnsNames } from '../src/LiveRatesTableWidget/types';
|
|
9
10
|
import { getInstrumentsChart } from '../src/gql/getInstrumentsChart';
|
|
@@ -54,13 +55,15 @@ describe('CardWithData component', () => {
|
|
|
54
55
|
it('should render card', () => {
|
|
55
56
|
const { getByTestId, getAllByTestId } = render(
|
|
56
57
|
<MockedProvider mocks={chartPointsMocks}>
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
<MockLayoutProvider>
|
|
59
|
+
<CardWithData
|
|
60
|
+
record={record}
|
|
61
|
+
index={0}
|
|
62
|
+
activeColumns={columns}
|
|
63
|
+
division={Division.Oc}
|
|
64
|
+
target={null}
|
|
65
|
+
/>
|
|
66
|
+
</MockLayoutProvider>
|
|
64
67
|
</MockedProvider>,
|
|
65
68
|
);
|
|
66
69
|
expect(getByTestId('card')).toBeInTheDocument();
|
package/test/Cards.test.tsx
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { render } from '@testing-library/react';
|
|
6
6
|
import { MockedProvider } from '@apollo/client/testing';
|
|
7
|
+
import { MockLayoutProvider } from '@oanda/labs-widget-common';
|
|
7
8
|
import { Cards } from '../src/LiveRatesTableWidget/components';
|
|
8
9
|
import { ColumnsNames } from '../src/LiveRatesTableWidget/types';
|
|
9
10
|
import { getInstrumentsChart } from '../src/gql/getInstrumentsChart';
|
|
@@ -87,15 +88,17 @@ describe('Cards component', () => {
|
|
|
87
88
|
it('should render card', () => {
|
|
88
89
|
const { getAllByTestId } = render(
|
|
89
90
|
<MockedProvider mocks={chartPointsMocks}>
|
|
90
|
-
<
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
91
|
+
<MockLayoutProvider>
|
|
92
|
+
<Cards
|
|
93
|
+
target={null}
|
|
94
|
+
records={records}
|
|
95
|
+
columns={columns}
|
|
96
|
+
emptyCardsCount={2}
|
|
97
|
+
isError={false}
|
|
98
|
+
isLoading={false}
|
|
99
|
+
division={Division.Oc}
|
|
100
|
+
/>
|
|
101
|
+
</MockLayoutProvider>
|
|
99
102
|
</MockedProvider>,
|
|
100
103
|
);
|
|
101
104
|
expect(getAllByTestId('card').length).toEqual(2);
|
|
@@ -105,15 +108,17 @@ describe('Cards component', () => {
|
|
|
105
108
|
it('should render error', () => {
|
|
106
109
|
const { getAllByTestId } = render(
|
|
107
110
|
<MockedProvider mocks={chartPointsMocks}>
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
<MockLayoutProvider>
|
|
112
|
+
<Cards
|
|
113
|
+
target={null}
|
|
114
|
+
records={records}
|
|
115
|
+
columns={columns}
|
|
116
|
+
emptyCardsCount={2}
|
|
117
|
+
isError
|
|
118
|
+
isLoading={false}
|
|
119
|
+
division={Division.Oc}
|
|
120
|
+
/>
|
|
121
|
+
</MockLayoutProvider>
|
|
117
122
|
</MockedProvider>,
|
|
118
123
|
);
|
|
119
124
|
expect(getAllByTestId('card').length).toEqual(1);
|
package/test/Main.test.tsx
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { render } from '@testing-library/react';
|
|
6
6
|
import { MockedProvider } from '@apollo/client/testing';
|
|
7
|
-
import {
|
|
7
|
+
import { LiveRatesProvider, MockLayoutProvider } from '@oanda/labs-widget-common';
|
|
8
8
|
import { Main } from '../src/LiveRatesTableWidget/Main';
|
|
9
9
|
import { Division } from '../src/gql/types/graphql';
|
|
10
10
|
import { widgetMocks } from './mocks';
|
|
@@ -13,12 +13,14 @@ describe('Main component', () => {
|
|
|
13
13
|
it('should render table component', async () => {
|
|
14
14
|
const { findByTestId, findAllByTestId } = render(
|
|
15
15
|
<MockedProvider mocks={widgetMocks}>
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
<LiveRatesProvider url="oanda.com">
|
|
17
|
+
<MockLayoutProvider>
|
|
18
|
+
<Main
|
|
19
|
+
division={Division.Oc}
|
|
20
|
+
instruments={['EUR_USD', 'GBP_USD']}
|
|
21
|
+
/>
|
|
22
|
+
</MockLayoutProvider>
|
|
23
|
+
</LiveRatesProvider>
|
|
22
24
|
</MockedProvider>,
|
|
23
25
|
);
|
|
24
26
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { render } from '@testing-library/react';
|
|
6
6
|
import { MockedProvider } from '@apollo/client/testing';
|
|
7
|
+
import { MockLayoutProvider } from '@oanda/labs-widget-common';
|
|
7
8
|
import { RowWithData } from '../src/LiveRatesTableWidget/components/RowWithData';
|
|
8
9
|
import { ColumnsNames } from '../src/LiveRatesTableWidget/types';
|
|
9
10
|
import { getInstrumentsChart } from '../src/gql/getInstrumentsChart';
|
|
@@ -55,18 +56,20 @@ describe('RowWithData component', () => {
|
|
|
55
56
|
it('should render table row', async () => {
|
|
56
57
|
const { getByTestId, getAllByTestId, findByTestId } = render(
|
|
57
58
|
<MockedProvider mocks={chartPointsMocks}>
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
59
|
+
<MockLayoutProvider>
|
|
60
|
+
<table>
|
|
61
|
+
<tbody>
|
|
62
|
+
<RowWithData
|
|
63
|
+
loading={false}
|
|
64
|
+
division={Division.Oc}
|
|
65
|
+
record={record}
|
|
66
|
+
hasBackgroundColor
|
|
67
|
+
activeColumns={columns}
|
|
68
|
+
target={null}
|
|
69
|
+
/>
|
|
70
|
+
</tbody>
|
|
71
|
+
</table>
|
|
72
|
+
</MockLayoutProvider>
|
|
70
73
|
</MockedProvider>,
|
|
71
74
|
);
|
|
72
75
|
|