@oanda/labs-order-book-widget 1.0.23 → 1.0.26
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 +264 -0
- package/dist/main/OrderBookWidget/Main.js +8 -4
- package/dist/main/OrderBookWidget/Main.js.map +1 -1
- package/dist/main/OrderBookWidget/OrderBookWidget.js +10 -3
- package/dist/main/OrderBookWidget/OrderBookWidget.js.map +1 -1
- package/dist/main/OrderBookWidget/components/Chart/Chart.js +2 -2
- package/dist/main/OrderBookWidget/components/Chart/Chart.js.map +1 -1
- package/dist/main/OrderBookWidget/render.js +3 -1
- package/dist/main/OrderBookWidget/render.js.map +1 -1
- package/dist/main/OrderBookWidget/types.js.map +1 -1
- package/dist/main/translations/index.js +19 -0
- package/dist/main/translations/index.js.map +1 -0
- package/dist/main/translations/sources/en.json +4 -0
- package/dist/main/translations/sources/zh_TW.json +4 -0
- package/dist/main/translations/translations.js +8 -0
- package/dist/main/translations/translations.js.map +1 -0
- package/dist/module/OrderBookWidget/Main.js +6 -2
- package/dist/module/OrderBookWidget/Main.js.map +1 -1
- package/dist/module/OrderBookWidget/OrderBookWidget.js +10 -3
- package/dist/module/OrderBookWidget/OrderBookWidget.js.map +1 -1
- package/dist/module/OrderBookWidget/render.js +3 -1
- package/dist/module/OrderBookWidget/render.js.map +1 -1
- package/dist/module/OrderBookWidget/types.js.map +1 -1
- package/dist/module/translations/index.js +12 -0
- package/dist/module/translations/index.js.map +1 -0
- package/dist/module/translations/sources/en.json +4 -0
- package/dist/module/translations/sources/zh_TW.json +4 -0
- package/dist/module/translations/translations.js +2 -0
- package/dist/module/translations/translations.js.map +1 -0
- package/dist/types/OrderBookWidget/OrderBookWidget.d.ts +1 -1
- package/dist/types/OrderBookWidget/types.d.ts +2 -0
- package/dist/types/translations/index.d.ts +4 -0
- package/dist/types/translations/translations.d.ts +1 -0
- package/lokalise.config.json +18 -0
- package/package.json +4 -3
- package/src/OrderBookWidget/Main.tsx +4 -2
- package/src/OrderBookWidget/OrderBookWidget.tsx +11 -5
- package/src/OrderBookWidget/render.tsx +2 -0
- package/src/OrderBookWidget/types.ts +3 -0
- package/src/translations/index.ts +13 -0
- package/src/translations/sources/en.json +4 -0
- package/src/translations/sources/zh_TW.json +4 -0
- package/src/translations/translations.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,270 @@
|
|
|
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.26 (2023-10-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 1.0.25 (2023-10-17)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 1.0.24 (2023-10-13)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 1.0.23 (2023-10-13)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 1.0.22 (2023-10-11)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## 1.0.21 (2023-10-10)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## 1.0.20 (2023-10-06)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## 1.0.19 (2023-10-06)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 1.0.18 (2023-10-05)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## 1.0.17 (2023-10-04)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## 1.0.16 (2023-10-04)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## 1.0.15 (2023-10-04)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## 1.0.14 (2023-10-03)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## 1.0.13 (2023-10-03)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## 1.0.12 (2023-10-03)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## 1.0.11 (2023-10-02)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## 1.0.10 (2023-09-29)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## 1.0.9 (2023-09-28)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 1.0.8 (2023-09-27)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## 1.0.7 (2023-09-26)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 1.0.6 (2023-09-21)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## 1.0.5 (2023-09-13)
|
|
91
|
+
|
|
92
|
+
**Note:** Version bump only for package @oanda/labs-order-book-widget
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## 1.0.25 (2023-10-17)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## 1.0.24 (2023-10-13)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 1.0.23 (2023-10-13)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## 1.0.22 (2023-10-11)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## 1.0.21 (2023-10-10)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## 1.0.20 (2023-10-06)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## 1.0.19 (2023-10-06)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## 1.0.18 (2023-10-05)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## 1.0.17 (2023-10-04)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
## 1.0.16 (2023-10-04)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## 1.0.15 (2023-10-04)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## 1.0.14 (2023-10-03)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## 1.0.13 (2023-10-03)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
## 1.0.12 (2023-10-03)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## 1.0.11 (2023-10-02)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
## 1.0.10 (2023-09-29)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
## 1.0.9 (2023-09-28)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## 1.0.8 (2023-09-27)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## 1.0.7 (2023-09-26)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
## 1.0.6 (2023-09-21)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## 1.0.5 (2023-09-13)
|
|
179
|
+
|
|
180
|
+
**Note:** Version bump only for package @oanda/labs-order-book-widget
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
## 1.0.24 (2023-10-13)
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
## 1.0.23 (2023-10-13)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
## 1.0.22 (2023-10-11)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## 1.0.21 (2023-10-10)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
## 1.0.20 (2023-10-06)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
## 1.0.19 (2023-10-06)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
## 1.0.18 (2023-10-05)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
## 1.0.17 (2023-10-04)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## 1.0.16 (2023-10-04)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
## 1.0.15 (2023-10-04)
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
## 1.0.14 (2023-10-03)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
## 1.0.13 (2023-10-03)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
## 1.0.12 (2023-10-03)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
## 1.0.11 (2023-10-02)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## 1.0.10 (2023-09-29)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
## 1.0.9 (2023-09-28)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
## 1.0.8 (2023-09-27)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
## 1.0.7 (2023-09-26)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
## 1.0.6 (2023-09-21)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
## 1.0.5 (2023-09-13)
|
|
263
|
+
|
|
264
|
+
**Note:** Version bump only for package @oanda/labs-order-book-widget
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
6
270
|
## 1.0.23 (2023-10-13)
|
|
7
271
|
|
|
8
272
|
|
|
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Main = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
9
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
9
10
|
var _Chart = require("./components/Chart/Chart");
|
|
10
11
|
var _types = require("./types");
|
|
11
12
|
var _utils = require("./utils");
|
|
12
|
-
function _getRequireWildcardCache(
|
|
13
|
-
function _interopRequireWildcard(
|
|
13
|
+
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); }
|
|
14
|
+
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 && Object.prototype.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; }
|
|
14
15
|
const Main = _ref => {
|
|
15
16
|
let {
|
|
16
17
|
apiUrl,
|
|
@@ -21,6 +22,9 @@ const Main = _ref => {
|
|
|
21
22
|
const [error, setError] = (0, _react.useState)(undefined);
|
|
22
23
|
const [dataType, setDataType] = (0, _react.useState)(_types.DataType.Order);
|
|
23
24
|
const [data, setData] = (0, _react.useState)(undefined);
|
|
25
|
+
const {
|
|
26
|
+
lang
|
|
27
|
+
} = (0, _monoI18n.useLocale)();
|
|
24
28
|
(0, _react.useEffect)(() => {
|
|
25
29
|
setIsLoading(true);
|
|
26
30
|
setData(undefined);
|
|
@@ -48,10 +52,10 @@ const Main = _ref => {
|
|
|
48
52
|
}, _react.default.createElement(_labsWidgetCommon.Button, {
|
|
49
53
|
variant: isTypeOrder ? _labsWidgetCommon.ButtonVariant.primary : _labsWidgetCommon.ButtonVariant.secondary,
|
|
50
54
|
onClick: () => setDataType(_types.DataType.Order)
|
|
51
|
-
},
|
|
55
|
+
}, lang('order_book')), _react.default.createElement(_labsWidgetCommon.Button, {
|
|
52
56
|
variant: isTypeOrder ? _labsWidgetCommon.ButtonVariant.secondary : _labsWidgetCommon.ButtonVariant.primary,
|
|
53
57
|
onClick: () => setDataType(_types.DataType.Position)
|
|
54
|
-
},
|
|
58
|
+
}, lang('position_book'))), _react.default.createElement("div", {
|
|
55
59
|
className: "lw-relative lw-h-[600px] lw-w-full"
|
|
56
60
|
}, error && _react.default.createElement("div", {
|
|
57
61
|
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["_react","_interopRequireWildcard","require","_labsWidgetCommon","_Chart","_types","_utils","_getRequireWildcardCache","
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_react","_interopRequireWildcard","require","_labsWidgetCommon","_monoI18n","_Chart","_types","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","useState","error","setError","undefined","dataType","setDataType","DataType","Order","data","setData","lang","useLocale","useEffect","getData","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","Button","variant","ButtonVariant","primary","secondary","onClick","ChartError","Spinner","size","SpinnerSize","lg","Chart","exports"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n const { lang } = useLocale();\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n {lang('order_book')}\n </Button>\n <Button\n variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}\n onClick={() => setDataType(DataType.Position)}\n >\n {lang('position_book')}\n </Button>\n </div>\n {/* @todo: chart height */}\n <div className=\"lw-relative lw-h-[600px] lw-w-full\">\n {error && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <ChartError />\n </div>\n )}\n {isLoading && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data[data.length - 1]} isTypeOrder={isTypeOrder} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Main };\n"],"mappings":"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"}
|
|
@@ -5,19 +5,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.OrderBookWidget = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
9
|
+
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
8
10
|
var _Main = require("./Main");
|
|
11
|
+
var _translations = require("../translations");
|
|
9
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
13
|
const OrderBookWidget = _ref => {
|
|
11
14
|
let {
|
|
12
15
|
apiUrl,
|
|
13
16
|
instrument,
|
|
14
|
-
division
|
|
17
|
+
division,
|
|
18
|
+
locale
|
|
15
19
|
} = _ref;
|
|
16
|
-
return _react.default.createElement(
|
|
20
|
+
return _react.default.createElement(_monoI18n.LocaleProvider, {
|
|
21
|
+
locale: (0, _labsWidgetCommon.getLocale)(locale),
|
|
22
|
+
translations: _translations.translations
|
|
23
|
+
}, _react.default.createElement(_Main.Main, {
|
|
17
24
|
apiUrl: apiUrl,
|
|
18
25
|
instrument: instrument,
|
|
19
26
|
division: division
|
|
20
|
-
});
|
|
27
|
+
}));
|
|
21
28
|
};
|
|
22
29
|
exports.OrderBookWidget = OrderBookWidget;
|
|
23
30
|
//# sourceMappingURL=OrderBookWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBookWidget.js","names":["_react","_interopRequireDefault","require","_Main","obj","__esModule","default","OrderBookWidget","_ref","apiUrl","instrument","division","createElement","Main","exports"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n}: OrderBookWidgetConfig) => (\n <Main\n
|
|
1
|
+
{"version":3,"file":"OrderBookWidget.js","names":["_react","_interopRequireDefault","require","_monoI18n","_labsWidgetCommon","_Main","_translations","obj","__esModule","default","OrderBookWidget","_ref","apiUrl","instrument","division","locale","createElement","LocaleProvider","getLocale","translations","Main","exports"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { LocaleProvider } from '@oanda/mono-i18n';\nimport { getLocale } from '@oanda/labs-widget-common';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\nimport { translations } from '../translations';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n locale,\n}: OrderBookWidgetConfig) => (\n <LocaleProvider locale={getLocale(locale)} translations={translations}>\n <Main\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />\n </LocaleProvider>\n);\n\nexport { OrderBookWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AAA+C,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE/C,MAAMG,eAAe,GAAGC,IAAA;EAAA,IAAC;IACvBC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC;EACqB,CAAC,GAAAJ,IAAA;EAAA,OACtBX,MAAA,CAAAS,OAAA,CAAAO,aAAA,CAACb,SAAA,CAAAc,cAAc;IAACF,MAAM,EAAE,IAAAG,2BAAS,EAACH,MAAM,CAAE;IAACI,YAAY,EAAEA;EAAa,GACpEnB,MAAA,CAAAS,OAAA,CAAAO,aAAA,CAACX,KAAA,CAAAe,IAAI;IACHR,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA;EAAS,CACpB,CACa,CAAC;AAAA,CAClB;AAACO,OAAA,CAAAX,eAAA,GAAAA,eAAA"}
|
|
@@ -11,8 +11,8 @@ var _reactChartjs = require("react-chartjs-2");
|
|
|
11
11
|
var _config = require("./config");
|
|
12
12
|
var _utils = require("./utils");
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
function _getRequireWildcardCache(
|
|
15
|
-
function _interopRequireWildcard(
|
|
14
|
+
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); }
|
|
15
|
+
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 && Object.prototype.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; }
|
|
16
16
|
_chart.Chart.register(_chart.CategoryScale, _chart.LinearScale, _chart.BarElement, _chart.Tooltip, _chartjsPluginZoom.default);
|
|
17
17
|
const Chart = _ref => {
|
|
18
18
|
let {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","names":["_react","_interopRequireWildcard","require","_chart","_chartjsPluginZoom","_interopRequireDefault","_reactChartjs","_config","_utils","obj","__esModule","default","_getRequireWildcardCache","
|
|
1
|
+
{"version":3,"file":"Chart.js","names":["_react","_interopRequireWildcard","require","_chart","_chartjsPluginZoom","_interopRequireDefault","_reactChartjs","_config","_utils","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ChartJS","register","CategoryScale","LinearScale","BarElement","Tooltip","zoomPlugin","Chart","_ref","data","isTypeOrder","chartRef","useRef","sell","buckets","map","item","Number","shortCountPercent","buy","longCountPercent","price","maxSell","Math","abs","min","maxBuy","max","rangeX","ceil","minRangeY","maxRangeY","chartData","labels","datasets","backgroundColor","colorNeg","label","barPercentage","borderWidth","categoryPercentage","borderColor","colorPos","useEffect","current","zoomScale","getInitialRange","createElement","className","Fragment","Bar","ref","options","getChartOptions","exports"],"sources":["../../../../../src/OrderBookWidget/components/Chart/Chart.tsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Tooltip,\n} from 'chart.js';\nimport zoomPlugin from 'chartjs-plugin-zoom';\nimport { Bar } from 'react-chartjs-2';\nimport type { ChartData } from 'chart.js';\nimport { colorNeg, colorPos, getChartOptions } from './config';\nimport { OrderBookData } from '../../types';\nimport { getInitialRange } from './utils';\n\nChartJS.register(CategoryScale, LinearScale, BarElement, Tooltip, zoomPlugin);\n\nexport const Chart = ({ data, isTypeOrder }: { data: OrderBookData, isTypeOrder: boolean }) => {\n const chartRef = useRef<ChartJS | null>(null);\n\n const sell = data.buckets.map((item) => Number(item.shortCountPercent) * -1);\n const buy = data.buckets.map((item) => Number(item.longCountPercent));\n const price = data.buckets.map((item) => Number(item.price));\n\n const maxSell = Math.abs(Math.min(...sell));\n const maxBuy = Math.max(...buy);\n const rangeX = Math.ceil((Math.max(maxSell, maxBuy)));\n const minRangeY = (Math.min(...price));\n const maxRangeY = (Math.max(...price));\n\n const chartData: ChartData<'bar'> = {\n labels: price,\n datasets: [\n {\n data: sell,\n backgroundColor: colorNeg,\n label: isTypeOrder ? 'Sell Orders' : 'Short Positions',\n barPercentage: 1,\n borderWidth: 1,\n categoryPercentage: 1,\n borderColor: 'transparent',\n },\n {\n data: buy,\n backgroundColor: colorPos,\n label: isTypeOrder ? 'Buy Orders' : 'Long Positions',\n borderColor: 'transparent',\n borderWidth: 1,\n barPercentage: 1,\n categoryPercentage: 1,\n },\n ],\n };\n\n useEffect(() => {\n if (chartRef && chartRef.current) {\n chartRef.current.zoomScale('y', getInitialRange(price), 'none');\n }\n }, [price]);\n\n return (\n <div className=\"lw-w-full\">\n {/* @todo: set correct margin when new designs are available */}\n <div className=\"lw-mb-0 lw-ml-[70px] lw-mr-2.5 lw-mt-[30px] lw-flex lw-justify-between lw-text-xs lw-text-darkGrey\">\n {isTypeOrder ? (\n <>\n <div>Sell</div>\n <div>Open Orders</div>\n <div>Buy</div>\n </>\n ) : (\n <>\n <div>Short</div>\n <div>Open Positions</div>\n <div>Long</div>\n </>\n )}\n </div>\n <Bar\n ref={chartRef as any}\n options={getChartOptions(rangeX, minRangeY, maxRangeY)}\n data={chartData}\n />\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -8,9 +8,11 @@ const {
|
|
|
8
8
|
apiUrl,
|
|
9
9
|
instrument,
|
|
10
10
|
division,
|
|
11
|
-
renderElementId
|
|
11
|
+
renderElementId,
|
|
12
|
+
locale
|
|
12
13
|
} = window.orderBookWidgetConfig;
|
|
13
14
|
(0, _reactDom.render)(_react.default.createElement(_OrderBookWidget.OrderBookWidget, {
|
|
15
|
+
locale: locale,
|
|
14
16
|
apiUrl: apiUrl,
|
|
15
17
|
instrument: instrument,
|
|
16
18
|
division: division
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","names":["_react","_interopRequireDefault","require","_reactDom","_OrderBookWidget","obj","__esModule","default","apiUrl","instrument","division","renderElementId","window","orderBookWidgetConfig","render","createElement","OrderBookWidget","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAAoD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASpD,MAAM;EACJG,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;AAEhC,IAAAC,gBAAM,
|
|
1
|
+
{"version":3,"file":"render.js","names":["_react","_interopRequireDefault","require","_reactDom","_OrderBookWidget","obj","__esModule","default","apiUrl","instrument","division","renderElementId","locale","window","orderBookWidgetConfig","render","createElement","OrderBookWidget","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n locale,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n locale={locale}\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAAoD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASpD,MAAM;EACJG,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC,eAAe;EACfC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;AAEhC,IAAAC,gBAAM,EACJf,MAAA,CAAAO,OAAA,CAAAS,aAAA,CAACZ,gBAAA,CAAAa,eAAe;EACdL,MAAM,EAAEA,MAAO;EACfJ,MAAM,EAAEA,MAAO;EACfC,UAAU,EAAEA,UAAW;EACvBC,QAAQ,EAAEA;AAAS,CACpB,CAAC,EACFQ,QAAQ,CAACC,cAAc,CAACR,eAAe,CACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["DataType","exports"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"types.js","names":["DataType","exports"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["import { Locale } from '@oanda/mono-i18n';\n\n// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n locale: Locale;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":";;;;;;IAkBYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,aAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.translations = void 0;
|
|
7
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
8
|
+
var _en = _interopRequireDefault(require("./sources/en.json"));
|
|
9
|
+
var _zh_TW = _interopRequireDefault(require("./sources/zh_TW.json"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
const translations = exports.translations = {
|
|
12
|
+
[_monoI18n.Locale.en]: {
|
|
13
|
+
translation: _en.default
|
|
14
|
+
},
|
|
15
|
+
[_monoI18n.Locale.zhTW]: {
|
|
16
|
+
translation: _zh_TW.default
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_monoI18n","require","_en","_interopRequireDefault","_zh_TW","obj","__esModule","default","translations","exports","Locale","en","translation","zhTW"],"sources":["../../../src/translations/index.ts"],"sourcesContent":["import { Locale, Translations } from '@oanda/mono-i18n';\n\nimport en from './sources/en.json';\nimport zhTW from './sources/zh_TW.json';\n\nimport { defaultTranslations } from './translations';\n\nexport type TranslationKey = keyof typeof defaultTranslations;\n\nexport const translations: Translations = {\n [Locale.en]: { translation: en },\n [Locale.zhTW]: { translation: zhTW },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,GAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAwC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAMjC,MAAMG,YAA0B,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACxC,CAACE,gBAAM,CAACC,EAAE,GAAG;IAAEC,WAAW,EAAED;EAAG,CAAC;EAChC,CAACD,gBAAM,CAACG,IAAI,GAAG;IAAED,WAAW,EAAEC;EAAK;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","names":["defaultTranslations","exports"],"sources":["../../../src/translations/translations.ts"],"sourcesContent":["export const defaultTranslations = {\n\n};\n"],"mappings":";;;;;;AAAO,MAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,CAEnC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { Button, ButtonVariant, ChartError, Spinner, SpinnerSize } from '@oanda/labs-widget-common';
|
|
3
|
+
import { useLocale } from '@oanda/mono-i18n';
|
|
3
4
|
import { Chart } from './components/Chart/Chart';
|
|
4
5
|
import { DataType } from './types';
|
|
5
6
|
import { getData } from './utils';
|
|
@@ -13,6 +14,9 @@ const Main = _ref => {
|
|
|
13
14
|
const [error, setError] = useState(undefined);
|
|
14
15
|
const [dataType, setDataType] = useState(DataType.Order);
|
|
15
16
|
const [data, setData] = useState(undefined);
|
|
17
|
+
const {
|
|
18
|
+
lang
|
|
19
|
+
} = useLocale();
|
|
16
20
|
useEffect(() => {
|
|
17
21
|
setIsLoading(true);
|
|
18
22
|
setData(undefined);
|
|
@@ -40,10 +44,10 @@ const Main = _ref => {
|
|
|
40
44
|
}, React.createElement(Button, {
|
|
41
45
|
variant: isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary,
|
|
42
46
|
onClick: () => setDataType(DataType.Order)
|
|
43
|
-
},
|
|
47
|
+
}, lang('order_book')), React.createElement(Button, {
|
|
44
48
|
variant: isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary,
|
|
45
49
|
onClick: () => setDataType(DataType.Position)
|
|
46
|
-
},
|
|
50
|
+
}, lang('position_book'))), React.createElement("div", {
|
|
47
51
|
className: "lw-relative lw-h-[600px] lw-w-full"
|
|
48
52
|
}, error && React.createElement("div", {
|
|
49
53
|
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["React","useState","useEffect","Button","ButtonVariant","ChartError","Spinner","SpinnerSize","Chart","DataType","getData","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","error","setError","undefined","dataType","setDataType","Order","data","setData","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","variant","primary","secondary","onClick","size","lg"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n
|
|
1
|
+
{"version":3,"file":"Main.js","names":["React","useState","useEffect","Button","ButtonVariant","ChartError","Spinner","SpinnerSize","useLocale","Chart","DataType","getData","Main","_ref","apiUrl","instrument","division","isLoading","setIsLoading","error","setError","undefined","dataType","setDataType","Order","data","setData","lang","then","result","orderBooks","length","Position","positionBooks","catch","err","JSON","stringify","isTypeOrder","createElement","className","variant","primary","secondary","onClick","size","lg"],"sources":["../../../src/OrderBookWidget/Main.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Button, ButtonVariant, ChartError, Spinner, SpinnerSize,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { Chart } from './components/Chart/Chart';\nimport { DataType, MainProps, OrderBookData } from './types';\nimport { getData } from './utils';\n\nconst Main = ({\n apiUrl,\n instrument,\n division,\n}: MainProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const [dataType, setDataType] = useState(DataType.Order);\n const [data, setData] = useState<OrderBookData[] | undefined>(undefined);\n const { lang } = useLocale();\n\n useEffect(() => {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n getData(apiUrl, instrument, division, dataType)\n .then((result) => {\n setIsLoading(false);\n if (dataType === DataType.Order && result?.orderBooks.length > 0) {\n setData(result.orderBooks);\n } else if (dataType === DataType.Position && result?.positionBooks.length > 0) {\n setData(result.positionBooks);\n } else {\n setData(undefined);\n }\n }).catch((err) => {\n setIsLoading(false);\n setError(JSON.stringify(err));\n });\n }, [dataType, apiUrl, instrument, division]);\n\n const isTypeOrder = dataType === DataType.Order;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-border lw-border-solid lw-border-grey lw-p-4 lw-text-sm lw-text-black\">\n <div className=\"lw-flex lw-gap-2\">\n <Button\n variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}\n onClick={() => setDataType(DataType.Order)}\n >\n {lang('order_book')}\n </Button>\n <Button\n variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}\n onClick={() => setDataType(DataType.Position)}\n >\n {lang('position_book')}\n </Button>\n </div>\n {/* @todo: chart height */}\n <div className=\"lw-relative lw-h-[600px] lw-w-full\">\n {error && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <ChartError />\n </div>\n )}\n {isLoading && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-bg-lightGrey/[0.4]\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data[data.length - 1]} isTypeOrder={isTypeOrder} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Main };\n"],"mappings":"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"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { LocaleProvider } from '@oanda/mono-i18n';
|
|
3
|
+
import { getLocale } from '@oanda/labs-widget-common';
|
|
2
4
|
import { Main } from './Main';
|
|
5
|
+
import { translations } from '../translations';
|
|
3
6
|
const OrderBookWidget = _ref => {
|
|
4
7
|
let {
|
|
5
8
|
apiUrl,
|
|
6
9
|
instrument,
|
|
7
|
-
division
|
|
10
|
+
division,
|
|
11
|
+
locale
|
|
8
12
|
} = _ref;
|
|
9
|
-
return React.createElement(
|
|
13
|
+
return React.createElement(LocaleProvider, {
|
|
14
|
+
locale: getLocale(locale),
|
|
15
|
+
translations: translations
|
|
16
|
+
}, React.createElement(Main, {
|
|
10
17
|
apiUrl: apiUrl,
|
|
11
18
|
instrument: instrument,
|
|
12
19
|
division: division
|
|
13
|
-
});
|
|
20
|
+
}));
|
|
14
21
|
};
|
|
15
22
|
export { OrderBookWidget };
|
|
16
23
|
//# sourceMappingURL=OrderBookWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBookWidget.js","names":["React","Main","OrderBookWidget","_ref","apiUrl","instrument","division","createElement"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n}: OrderBookWidgetConfig) => (\n <Main\n
|
|
1
|
+
{"version":3,"file":"OrderBookWidget.js","names":["React","LocaleProvider","getLocale","Main","translations","OrderBookWidget","_ref","apiUrl","instrument","division","locale","createElement"],"sources":["../../../src/OrderBookWidget/OrderBookWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { LocaleProvider } from '@oanda/mono-i18n';\nimport { getLocale } from '@oanda/labs-widget-common';\nimport { Main } from './Main';\nimport { OrderBookWidgetConfig } from './types';\nimport { translations } from '../translations';\n\nconst OrderBookWidget = ({\n apiUrl,\n instrument,\n division,\n locale,\n}: OrderBookWidgetConfig) => (\n <LocaleProvider locale={getLocale(locale)} translations={translations}>\n <Main\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />\n </LocaleProvider>\n);\n\nexport { OrderBookWidget };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,eAAe,GAAGC,IAAA;EAAA,IAAC;IACvBC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC;EACqB,CAAC,GAAAJ,IAAA;EAAA,OACtBN,KAAA,CAAAW,aAAA,CAACV,cAAc;IAACS,MAAM,EAAER,SAAS,CAACQ,MAAM,CAAE;IAACN,YAAY,EAAEA;EAAa,GACpEJ,KAAA,CAAAW,aAAA,CAACR,IAAI;IACHI,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,QAAQ,EAAEA;EAAS,CACpB,CACa,CAAC;AAAA,CAClB;AAED,SAASJ,eAAe"}
|
|
@@ -5,9 +5,11 @@ const {
|
|
|
5
5
|
apiUrl,
|
|
6
6
|
instrument,
|
|
7
7
|
division,
|
|
8
|
-
renderElementId
|
|
8
|
+
renderElementId,
|
|
9
|
+
locale
|
|
9
10
|
} = window.orderBookWidgetConfig;
|
|
10
11
|
render(React.createElement(OrderBookWidget, {
|
|
12
|
+
locale: locale,
|
|
11
13
|
apiUrl: apiUrl,
|
|
12
14
|
instrument: instrument,
|
|
13
15
|
division: division
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","names":["React","render","OrderBookWidget","apiUrl","instrument","division","renderElementId","window","orderBookWidgetConfig","createElement","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,eAAe,QAAQ,mBAAmB;AASnD,MAAM;EACJC,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"render.js","names":["React","render","OrderBookWidget","apiUrl","instrument","division","renderElementId","locale","window","orderBookWidgetConfig","createElement","document","getElementById"],"sources":["../../../src/OrderBookWidget/render.tsx"],"sourcesContent":["import React from 'react';\nimport { render } from 'react-dom';\nimport { OrderBookWidget } from './OrderBookWidget';\nimport { OrderBookWrapperConfig } from './types';\n\ndeclare global {\n interface Window {\n orderBookWidgetConfig: OrderBookWrapperConfig;\n }\n}\n\nconst {\n apiUrl,\n instrument,\n division,\n renderElementId,\n locale,\n} = window.orderBookWidgetConfig;\n\nrender(\n <OrderBookWidget\n locale={locale}\n apiUrl={apiUrl}\n instrument={instrument}\n division={division}\n />,\n document.getElementById(renderElementId),\n);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,eAAe,QAAQ,mBAAmB;AASnD,MAAM;EACJC,MAAM;EACNC,UAAU;EACVC,QAAQ;EACRC,eAAe;EACfC;AACF,CAAC,GAAGC,MAAM,CAACC,qBAAqB;AAEhCR,MAAM,CACJD,KAAA,CAAAU,aAAA,CAACR,eAAe;EACdK,MAAM,EAAEA,MAAO;EACfJ,MAAM,EAAEA,MAAO;EACfC,UAAU,EAAEA,UAAW;EACvBC,QAAQ,EAAEA;AAAS,CACpB,CAAC,EACFM,QAAQ,CAACC,cAAc,CAACN,eAAe,CACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["DataType"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","names":["DataType"],"sources":["../../../src/OrderBookWidget/types.ts"],"sourcesContent":["import { Locale } from '@oanda/mono-i18n';\n\n// @todo get from graphql schema\nexport interface OrderBookData {\n instrument: string;\n price: string;\n bucketWidth: string;\n buckets: {\n price: string;\n longCountPercent: string;\n shortCountPercent: string;\n }[];\n time: string;\n unixTime: string;\n region: string;\n division: string;\n}\n\nexport enum DataType {\n Order = 'ORDER',\n Position = 'POSITION',\n}\nexport interface OrderBookWidgetConfig {\n apiUrl: string;\n instrument: string;\n division: string;\n locale: Locale;\n}\n\nexport interface OrderBookWrapperConfig extends OrderBookWidgetConfig {\n renderElementId: string;\n}\n\nexport interface MainProps {\n apiUrl: string;\n instrument: string;\n division: string;\n}\n"],"mappings":"AAkBA,WAAYA,QAAQ,aAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Locale } from '@oanda/mono-i18n';
|
|
2
|
+
import en from './sources/en.json';
|
|
3
|
+
import zhTW from './sources/zh_TW.json';
|
|
4
|
+
export const translations = {
|
|
5
|
+
[Locale.en]: {
|
|
6
|
+
translation: en
|
|
7
|
+
},
|
|
8
|
+
[Locale.zhTW]: {
|
|
9
|
+
translation: zhTW
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Locale","en","zhTW","translations","translation"],"sources":["../../../src/translations/index.ts"],"sourcesContent":["import { Locale, Translations } from '@oanda/mono-i18n';\n\nimport en from './sources/en.json';\nimport zhTW from './sources/zh_TW.json';\n\nimport { defaultTranslations } from './translations';\n\nexport type TranslationKey = keyof typeof defaultTranslations;\n\nexport const translations: Translations = {\n [Locale.en]: { translation: en },\n [Locale.zhTW]: { translation: zhTW },\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAsB,kBAAkB;AAEvD,OAAOC,EAAE,MAAM,mBAAmB;AAClC,OAAOC,IAAI,MAAM,sBAAsB;AAMvC,OAAO,MAAMC,YAA0B,GAAG;EACxC,CAACH,MAAM,CAACC,EAAE,GAAG;IAAEG,WAAW,EAAEH;EAAG,CAAC;EAChC,CAACD,MAAM,CAACE,IAAI,GAAG;IAAEE,WAAW,EAAEF;EAAK;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","names":["defaultTranslations"],"sources":["../../../src/translations/translations.ts"],"sourcesContent":["export const defaultTranslations = {\n\n};\n"],"mappings":"AAAA,OAAO,MAAMA,mBAAmB,GAAG,CAEnC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { OrderBookWidgetConfig } from './types';
|
|
3
|
-
declare const OrderBookWidget: ({ apiUrl, instrument, division, }: OrderBookWidgetConfig) => JSX.Element;
|
|
3
|
+
declare const OrderBookWidget: ({ apiUrl, instrument, division, locale, }: OrderBookWidgetConfig) => JSX.Element;
|
|
4
4
|
export { OrderBookWidget };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Locale } from '@oanda/mono-i18n';
|
|
1
2
|
export interface OrderBookData {
|
|
2
3
|
instrument: string;
|
|
3
4
|
price: string;
|
|
@@ -20,6 +21,7 @@ export interface OrderBookWidgetConfig {
|
|
|
20
21
|
apiUrl: string;
|
|
21
22
|
instrument: string;
|
|
22
23
|
division: string;
|
|
24
|
+
locale: Locale;
|
|
23
25
|
}
|
|
24
26
|
export interface OrderBookWrapperConfig extends OrderBookWidgetConfig {
|
|
25
27
|
renderElementId: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultTranslations: {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"projectId": "19607517615e88022ba782.45168463",
|
|
3
|
+
"outputDir": "src/translations/sources",
|
|
4
|
+
"esModuleTranslations": "src/translations/translations.ts",
|
|
5
|
+
"messagesFormat": "esModule",
|
|
6
|
+
"esModuleConstName": "defaultTranslations",
|
|
7
|
+
"includeEmptyTranslations": true,
|
|
8
|
+
"downloadOptions": {
|
|
9
|
+
"format": "json",
|
|
10
|
+
"add_newline_eof": true,
|
|
11
|
+
"placeholder_format": "i18n",
|
|
12
|
+
"indentation": "2sp",
|
|
13
|
+
"plural_format": "i18next",
|
|
14
|
+
"export_empty_as": "skip",
|
|
15
|
+
"include_tags": ["common_widgets, order_book_widgets"],
|
|
16
|
+
"filter_langs": ["en", "zh_TW"]
|
|
17
|
+
}
|
|
18
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-order-book-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26",
|
|
4
4
|
"description": "Labs Order Book Widget",
|
|
5
5
|
"main": "dist/main/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
"author": "OANDA",
|
|
11
11
|
"license": "UNLICENSED",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@oanda/labs-widget-common": "^1.0.
|
|
13
|
+
"@oanda/labs-widget-common": "^1.0.26",
|
|
14
|
+
"@oanda/mono-i18n": "9.0.0",
|
|
14
15
|
"chart.js": "4.3.3",
|
|
15
16
|
"chartjs-plugin-zoom": "2.0.1",
|
|
16
17
|
"react-chartjs-2": "5.2.0"
|
|
17
18
|
},
|
|
18
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "1c59d814fdb1e15659d977474c873233848a944e"
|
|
19
20
|
}
|
|
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
|
|
|
2
2
|
import {
|
|
3
3
|
Button, ButtonVariant, ChartError, Spinner, SpinnerSize,
|
|
4
4
|
} from '@oanda/labs-widget-common';
|
|
5
|
+
import { useLocale } from '@oanda/mono-i18n';
|
|
5
6
|
import { Chart } from './components/Chart/Chart';
|
|
6
7
|
import { DataType, MainProps, OrderBookData } from './types';
|
|
7
8
|
import { getData } from './utils';
|
|
@@ -15,6 +16,7 @@ const Main = ({
|
|
|
15
16
|
const [error, setError] = useState<string | undefined>(undefined);
|
|
16
17
|
const [dataType, setDataType] = useState(DataType.Order);
|
|
17
18
|
const [data, setData] = useState<OrderBookData[] | undefined>(undefined);
|
|
19
|
+
const { lang } = useLocale();
|
|
18
20
|
|
|
19
21
|
useEffect(() => {
|
|
20
22
|
setIsLoading(true);
|
|
@@ -46,13 +48,13 @@ const Main = ({
|
|
|
46
48
|
variant={isTypeOrder ? ButtonVariant.primary : ButtonVariant.secondary}
|
|
47
49
|
onClick={() => setDataType(DataType.Order)}
|
|
48
50
|
>
|
|
49
|
-
|
|
51
|
+
{lang('order_book')}
|
|
50
52
|
</Button>
|
|
51
53
|
<Button
|
|
52
54
|
variant={isTypeOrder ? ButtonVariant.secondary : ButtonVariant.primary}
|
|
53
55
|
onClick={() => setDataType(DataType.Position)}
|
|
54
56
|
>
|
|
55
|
-
|
|
57
|
+
{lang('position_book')}
|
|
56
58
|
</Button>
|
|
57
59
|
</div>
|
|
58
60
|
{/* @todo: chart height */}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { LocaleProvider } from '@oanda/mono-i18n';
|
|
3
|
+
import { getLocale } from '@oanda/labs-widget-common';
|
|
2
4
|
import { Main } from './Main';
|
|
3
5
|
import { OrderBookWidgetConfig } from './types';
|
|
6
|
+
import { translations } from '../translations';
|
|
4
7
|
|
|
5
8
|
const OrderBookWidget = ({
|
|
6
9
|
apiUrl,
|
|
7
10
|
instrument,
|
|
8
11
|
division,
|
|
12
|
+
locale,
|
|
9
13
|
}: OrderBookWidgetConfig) => (
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
<LocaleProvider locale={getLocale(locale)} translations={translations}>
|
|
15
|
+
<Main
|
|
16
|
+
apiUrl={apiUrl}
|
|
17
|
+
instrument={instrument}
|
|
18
|
+
division={division}
|
|
19
|
+
/>
|
|
20
|
+
</LocaleProvider>
|
|
15
21
|
);
|
|
16
22
|
|
|
17
23
|
export { OrderBookWidget };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Locale } from '@oanda/mono-i18n';
|
|
2
|
+
|
|
1
3
|
// @todo get from graphql schema
|
|
2
4
|
export interface OrderBookData {
|
|
3
5
|
instrument: string;
|
|
@@ -22,6 +24,7 @@ export interface OrderBookWidgetConfig {
|
|
|
22
24
|
apiUrl: string;
|
|
23
25
|
instrument: string;
|
|
24
26
|
division: string;
|
|
27
|
+
locale: Locale;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
export interface OrderBookWrapperConfig extends OrderBookWidgetConfig {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Locale, Translations } from '@oanda/mono-i18n';
|
|
2
|
+
|
|
3
|
+
import en from './sources/en.json';
|
|
4
|
+
import zhTW from './sources/zh_TW.json';
|
|
5
|
+
|
|
6
|
+
import { defaultTranslations } from './translations';
|
|
7
|
+
|
|
8
|
+
export type TranslationKey = keyof typeof defaultTranslations;
|
|
9
|
+
|
|
10
|
+
export const translations: Translations = {
|
|
11
|
+
[Locale.en]: { translation: en },
|
|
12
|
+
[Locale.zhTW]: { translation: zhTW },
|
|
13
|
+
};
|