@oanda/labs-instruments-table-widget 1.0.40 → 1.0.42
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 +340 -0
- package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js +4 -2
- package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/render.js +1 -1
- package/dist/main/InstrumentsTableWidget/render.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/types.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/utils.js +4 -4
- package/dist/main/InstrumentsTableWidget/utils.js.map +1 -1
- package/dist/main/gql/resolveInstrumentsWithFilters.js +1 -1
- package/dist/main/gql/resolveInstrumentsWithFilters.js.map +1 -1
- package/dist/main/gql/types/gql.js +1 -1
- package/dist/main/gql/types/gql.js.map +1 -1
- package/dist/main/gql/types/graphql.js +39 -11
- package/dist/main/gql/types/graphql.js.map +1 -1
- package/dist/main/translations/index.js +32 -0
- package/dist/main/translations/index.js.map +1 -1
- package/dist/main/translations/sources/de.json +27 -0
- package/dist/main/translations/sources/en.json +2 -2
- package/dist/main/translations/sources/es.json +28 -0
- package/dist/main/translations/sources/fr.json +27 -0
- package/dist/main/translations/sources/it.json +27 -0
- package/dist/main/translations/sources/pt.json +27 -0
- package/dist/main/translations/sources/th.json +27 -0
- package/dist/main/translations/sources/vi.json +26 -0
- package/dist/main/translations/sources/zh_CN.json +27 -0
- package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js +4 -2
- package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/render.js +2 -2
- package/dist/module/InstrumentsTableWidget/render.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/types.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/utils.js +5 -5
- package/dist/module/InstrumentsTableWidget/utils.js.map +1 -1
- package/dist/module/gql/resolveInstrumentsWithFilters.js +1 -1
- package/dist/module/gql/resolveInstrumentsWithFilters.js.map +1 -1
- package/dist/module/gql/types/gql.js +1 -1
- package/dist/module/gql/types/gql.js.map +1 -1
- package/dist/module/gql/types/graphql.js +38 -10
- package/dist/module/gql/types/graphql.js.map +1 -1
- package/dist/module/translations/index.js +32 -0
- package/dist/module/translations/index.js.map +1 -1
- package/dist/module/translations/sources/de.json +27 -0
- package/dist/module/translations/sources/en.json +2 -2
- package/dist/module/translations/sources/es.json +28 -0
- package/dist/module/translations/sources/fr.json +27 -0
- package/dist/module/translations/sources/it.json +27 -0
- package/dist/module/translations/sources/pt.json +27 -0
- package/dist/module/translations/sources/th.json +27 -0
- package/dist/module/translations/sources/vi.json +26 -0
- package/dist/module/translations/sources/zh_CN.json +27 -0
- package/dist/types/InstrumentsTableWidget/types.d.ts +3 -3
- package/dist/types/InstrumentsTableWidget/utils.d.ts +3 -2
- package/dist/types/gql/types/gql.d.ts +3 -3
- package/dist/types/gql/types/graphql.d.ts +70 -9
- package/lokalise.config.json +16 -3
- package/package.json +5 -4
- package/src/InstrumentsTableWidget/InstrumentsTableWidget.tsx +6 -2
- package/src/InstrumentsTableWidget/render.tsx +3 -3
- package/src/InstrumentsTableWidget/types.ts +3 -3
- package/src/InstrumentsTableWidget/utils.ts +8 -6
- package/src/gql/resolveInstrumentsWithFilters.ts +1 -1
- package/src/gql/types/gql.ts +3 -3
- package/src/gql/types/graphql.ts +83 -12
- package/src/translations/index.ts +16 -0
- package/src/translations/sources/de.json +27 -0
- package/src/translations/sources/en.json +2 -2
- package/src/translations/sources/es.json +28 -0
- package/src/translations/sources/fr.json +27 -0
- package/src/translations/sources/it.json +27 -0
- package/src/translations/sources/pt.json +27 -0
- package/src/translations/sources/th.json +27 -0
- package/src/translations/sources/vi.json +26 -0
- package/src/translations/sources/zh_CN.json +27 -0
- package/test/Main.test.tsx +8 -12
- package/test/utils.test.ts +5 -5
|
@@ -11,10 +11,10 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
|
|
|
11
11
|
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
|
12
12
|
*/
|
|
13
13
|
declare const documents: {
|
|
14
|
-
'\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource:
|
|
14
|
+
'\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n': DocumentNode<types.ResolveInstrumentsWithFiltersQuery, types.Exact<{
|
|
15
15
|
division: types.Division;
|
|
16
16
|
assetClass?: types.InputMaybe<Array<types.InputMaybe<types.AssetClassName>> | types.InputMaybe<types.AssetClassName>>;
|
|
17
|
-
dataSource
|
|
17
|
+
dataSource: types.DataSource;
|
|
18
18
|
instruments?: types.InputMaybe<Array<types.InputMaybe<types.Scalars["String"]["input"]>> | types.InputMaybe<types.Scalars["String"]["input"]>>;
|
|
19
19
|
searchPattern?: types.InputMaybe<types.Scalars["String"]["input"]>;
|
|
20
20
|
tradeModes?: types.InputMaybe<Array<types.InputMaybe<types.TradeMode>> | types.InputMaybe<types.TradeMode>>;
|
|
@@ -39,6 +39,6 @@ export declare function graphql(source: string): unknown;
|
|
|
39
39
|
/**
|
|
40
40
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
41
41
|
*/
|
|
42
|
-
export declare function graphql(source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource:
|
|
42
|
+
export declare function graphql(source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n'): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n'];
|
|
43
43
|
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;
|
|
44
44
|
export {};
|
|
@@ -61,6 +61,23 @@ export declare enum BookType {
|
|
|
61
61
|
Order = "ORDER",
|
|
62
62
|
Position = "POSITION"
|
|
63
63
|
}
|
|
64
|
+
export type Candle = {
|
|
65
|
+
__typename?: 'Candle';
|
|
66
|
+
close: Scalars['Float']['output'];
|
|
67
|
+
high: Scalars['Float']['output'];
|
|
68
|
+
low: Scalars['Float']['output'];
|
|
69
|
+
open: Scalars['Float']['output'];
|
|
70
|
+
/** UTC Timestamp */
|
|
71
|
+
point: Scalars['String']['output'];
|
|
72
|
+
};
|
|
73
|
+
export type CandlesData = {
|
|
74
|
+
__typename?: 'CandlesData';
|
|
75
|
+
candle: Array<Maybe<Candle>>;
|
|
76
|
+
granularity: Granularity;
|
|
77
|
+
instrument: Instrument;
|
|
78
|
+
pipsLocation: Scalars['Int']['output'];
|
|
79
|
+
timeSpan: TimeSpan;
|
|
80
|
+
};
|
|
64
81
|
export type CorrelationHeatmap = {
|
|
65
82
|
__typename?: 'CorrelationHeatmap';
|
|
66
83
|
baseInstrument: Instrument;
|
|
@@ -120,8 +137,9 @@ export type CurrencyStrength = {
|
|
|
120
137
|
updatedAt: Scalars['String']['output'];
|
|
121
138
|
};
|
|
122
139
|
export declare enum DataSource {
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
All = "ALL",
|
|
141
|
+
Mt5 = "MT5",
|
|
142
|
+
V20 = "V20"
|
|
125
143
|
}
|
|
126
144
|
export declare enum Division {
|
|
127
145
|
Oap = "OAP",
|
|
@@ -136,10 +154,18 @@ export declare enum Division {
|
|
|
136
154
|
}
|
|
137
155
|
export type ExtendedInstrument = {
|
|
138
156
|
__typename?: 'ExtendedInstrument';
|
|
157
|
+
dataSource: DataSource;
|
|
139
158
|
displayName: Scalars['String']['output'];
|
|
140
159
|
name: Scalars['String']['output'];
|
|
141
160
|
tradeMode: TradeMode;
|
|
142
161
|
};
|
|
162
|
+
export declare enum Granularity {
|
|
163
|
+
D1 = "D1",
|
|
164
|
+
H1 = "H1",
|
|
165
|
+
H4 = "H4",
|
|
166
|
+
M1 = "M1",
|
|
167
|
+
M15 = "M15"
|
|
168
|
+
}
|
|
143
169
|
export type Heatmap = {
|
|
144
170
|
__typename?: 'Heatmap';
|
|
145
171
|
instrument: Instrument;
|
|
@@ -155,21 +181,27 @@ export type InstrumentCorrelation = {
|
|
|
155
181
|
instrument: Instrument;
|
|
156
182
|
value?: Maybe<Scalars['Float']['output']>;
|
|
157
183
|
};
|
|
158
|
-
export declare enum InstrumentDataSource {
|
|
159
|
-
Mt5 = "MT5",
|
|
160
|
-
V20 = "V20"
|
|
161
|
-
}
|
|
162
184
|
export type InstrumentTableResult = {
|
|
163
185
|
__typename?: 'InstrumentTableResult';
|
|
164
186
|
instruments: Array<ExtendedInstrument>;
|
|
165
187
|
totalCount: Scalars['Int']['output'];
|
|
166
188
|
updatedAt: Scalars['String']['output'];
|
|
167
189
|
};
|
|
190
|
+
export type MarginRate = {
|
|
191
|
+
__typename?: 'MarginRate';
|
|
192
|
+
instrument: Instrument;
|
|
193
|
+
rate: Scalars['Float']['output'];
|
|
194
|
+
};
|
|
168
195
|
export type Matrix = {
|
|
169
196
|
__typename?: 'Matrix';
|
|
170
197
|
instrument: Instrument;
|
|
171
198
|
instrumentCorrelation: Array<InstrumentCorrelation>;
|
|
172
199
|
};
|
|
200
|
+
export declare enum OrderBookDataSource {
|
|
201
|
+
Ny4 = "NY4",
|
|
202
|
+
Ny4Mt5 = "NY4_MT5",
|
|
203
|
+
Ty3 = "TY3"
|
|
204
|
+
}
|
|
173
205
|
export type OrderPositionBucket = {
|
|
174
206
|
__typename?: 'OrderPositionBucket';
|
|
175
207
|
longCountPercent: Scalars['Float']['output'];
|
|
@@ -196,7 +228,9 @@ export type Query = {
|
|
|
196
228
|
currencyStrength?: Maybe<Array<CurrencyStrength>>;
|
|
197
229
|
isAllowedPartner?: Maybe<Scalars['Boolean']['output']>;
|
|
198
230
|
mapInstrumentNames?: Maybe<Array<Maybe<Instrument>>>;
|
|
231
|
+
marginRates?: Maybe<Array<MarginRate>>;
|
|
199
232
|
orderPositionBooks: Array<Maybe<OrderPositionData>>;
|
|
233
|
+
priceCandles: CandlesData;
|
|
200
234
|
resolveInstrumentsByDivision?: Maybe<Array<Instrument>>;
|
|
201
235
|
resolveInstrumentsWithFilters?: Maybe<InstrumentTableResult>;
|
|
202
236
|
sentiment?: Maybe<Array<SentimentInstrument>>;
|
|
@@ -231,13 +265,26 @@ export type QueryMapInstrumentNamesArgs = {
|
|
|
231
265
|
division?: InputMaybe<Division>;
|
|
232
266
|
instruments: Array<InputMaybe<Scalars['String']['input']>>;
|
|
233
267
|
};
|
|
268
|
+
export type QueryMarginRatesArgs = {
|
|
269
|
+
dataSource: DataSource;
|
|
270
|
+
division: Division;
|
|
271
|
+
instruments?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
272
|
+
tradingGroup: Scalars['Int']['input'];
|
|
273
|
+
};
|
|
234
274
|
export type QueryOrderPositionBooksArgs = {
|
|
235
275
|
bookType: BookType;
|
|
236
|
-
dataSource?: InputMaybe<
|
|
276
|
+
dataSource?: InputMaybe<OrderBookDataSource>;
|
|
237
277
|
instrument: Scalars['String']['input'];
|
|
238
278
|
recentHours?: InputMaybe<Scalars['Int']['input']>;
|
|
239
279
|
region?: InputMaybe<Region>;
|
|
240
280
|
};
|
|
281
|
+
export type QueryPriceCandlesArgs = {
|
|
282
|
+
dataSource: DataSource;
|
|
283
|
+
division: Division;
|
|
284
|
+
granularity: Granularity;
|
|
285
|
+
instrument: Scalars['String']['input'];
|
|
286
|
+
timeSpan: TimeSpan;
|
|
287
|
+
};
|
|
241
288
|
export type QueryResolveInstrumentsByDivisionArgs = {
|
|
242
289
|
division: Division;
|
|
243
290
|
instruments: Array<InputMaybe<Scalars['String']['input']>>;
|
|
@@ -245,7 +292,7 @@ export type QueryResolveInstrumentsByDivisionArgs = {
|
|
|
245
292
|
export type QueryResolveInstrumentsWithFiltersArgs = {
|
|
246
293
|
assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>>>;
|
|
247
294
|
count?: InputMaybe<Scalars['Int']['input']>;
|
|
248
|
-
dataSource
|
|
295
|
+
dataSource: DataSource;
|
|
249
296
|
division: Division;
|
|
250
297
|
instruments?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
|
251
298
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -325,6 +372,20 @@ export type TimeCorrelation = {
|
|
|
325
372
|
timeUnit: CorrelationTimeUnit;
|
|
326
373
|
value?: Maybe<Scalars['Float']['output']>;
|
|
327
374
|
};
|
|
375
|
+
export declare enum TimeSpan {
|
|
376
|
+
Day_1 = "DAY_1",
|
|
377
|
+
Day_2 = "DAY_2",
|
|
378
|
+
Hour_1 = "HOUR_1",
|
|
379
|
+
Hour_12 = "HOUR_12",
|
|
380
|
+
Month_1 = "MONTH_1",
|
|
381
|
+
Month_3 = "MONTH_3",
|
|
382
|
+
Month_6 = "MONTH_6",
|
|
383
|
+
Week_1 = "WEEK_1",
|
|
384
|
+
Week_2 = "WEEK_2",
|
|
385
|
+
Week_3 = "WEEK_3",
|
|
386
|
+
Year_1 = "YEAR_1",
|
|
387
|
+
Year_5 = "YEAR_5"
|
|
388
|
+
}
|
|
328
389
|
export type TopicalInstrument = {
|
|
329
390
|
__typename?: 'TopicalInstrument';
|
|
330
391
|
assetClass?: Maybe<AssetClassName>;
|
|
@@ -413,7 +474,7 @@ export declare enum VolatilityChartTimeUnit {
|
|
|
413
474
|
export type ResolveInstrumentsWithFiltersQueryVariables = Exact<{
|
|
414
475
|
division: Division;
|
|
415
476
|
assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>> | InputMaybe<AssetClassName>>;
|
|
416
|
-
dataSource
|
|
477
|
+
dataSource: DataSource;
|
|
417
478
|
instruments?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>;
|
|
418
479
|
searchPattern?: InputMaybe<Scalars['String']['input']>;
|
|
419
480
|
tradeModes?: InputMaybe<Array<InputMaybe<TradeMode>> | InputMaybe<TradeMode>>;
|
package/lokalise.config.json
CHANGED
|
@@ -12,7 +12,20 @@
|
|
|
12
12
|
"indentation": "2sp",
|
|
13
13
|
"plural_format": "i18next",
|
|
14
14
|
"export_empty_as": "skip",
|
|
15
|
-
"include_tags": [
|
|
16
|
-
|
|
15
|
+
"include_tags": [
|
|
16
|
+
"common_widgets",
|
|
17
|
+
"instruments_table_widget"
|
|
18
|
+
],
|
|
19
|
+
"filter_langs": [
|
|
20
|
+
"en",
|
|
21
|
+
"fr",
|
|
22
|
+
"de",
|
|
23
|
+
"es",
|
|
24
|
+
"pt",
|
|
25
|
+
"it",
|
|
26
|
+
"zh_CN",
|
|
27
|
+
"th",
|
|
28
|
+
"vi"
|
|
29
|
+
]
|
|
17
30
|
}
|
|
18
|
-
}
|
|
31
|
+
}
|
package/package.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-instruments-table-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.42",
|
|
4
4
|
"description": "Labs Instruments Table Widget",
|
|
5
5
|
"main": "dist/main/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
7
7
|
"types": "dist/types/index.d.ts",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"codegen": "graphql-codegen --config codegen.ts"
|
|
9
|
+
"codegen": "graphql-codegen --config codegen.ts",
|
|
10
|
+
"translations:pull": "lokalise pull"
|
|
10
11
|
},
|
|
11
12
|
"keywords": [],
|
|
12
13
|
"author": "OANDA",
|
|
13
14
|
"license": "UNLICENSED",
|
|
14
15
|
"dependencies": {
|
|
15
|
-
"@oanda/labs-widget-common": "^1.0.
|
|
16
|
+
"@oanda/labs-widget-common": "^1.0.222",
|
|
16
17
|
"@oanda/mono-i18n": "10.0.1",
|
|
17
18
|
"graphql": "16.8.1"
|
|
18
19
|
},
|
|
@@ -20,5 +21,5 @@
|
|
|
20
21
|
"@graphql-codegen/cli": "5.0.0",
|
|
21
22
|
"@graphql-codegen/client-preset": "4.1.0"
|
|
22
23
|
},
|
|
23
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "f3f3b89244e07294747fcce5c3828da9a36ba6c0"
|
|
24
25
|
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from '@oanda/labs-widget-common';
|
|
7
7
|
import React from 'react';
|
|
8
8
|
|
|
9
|
+
import { DataSource } from '../gql/types/graphql';
|
|
9
10
|
import { translations } from '../translations';
|
|
10
11
|
import { Main } from './Main';
|
|
11
12
|
import { type InstrumentsTableConfig, PriceType } from './types';
|
|
@@ -33,10 +34,13 @@ const InstrumentsTableWidget = ({
|
|
|
33
34
|
cache: new InMemoryCache(),
|
|
34
35
|
});
|
|
35
36
|
|
|
37
|
+
const liveRatesDataSource =
|
|
38
|
+
dataSource === DataSource.All ? undefined : dataSource;
|
|
39
|
+
|
|
36
40
|
const divisionCode = getLiveRatesDivisionCode(
|
|
37
41
|
division,
|
|
38
42
|
priceType,
|
|
39
|
-
|
|
43
|
+
liveRatesDataSource || DataSource.V20
|
|
40
44
|
);
|
|
41
45
|
|
|
42
46
|
const liveRates =
|
|
@@ -52,7 +56,7 @@ const InstrumentsTableWidget = ({
|
|
|
52
56
|
)
|
|
53
57
|
? {
|
|
54
58
|
url: liveRatesUrl,
|
|
55
|
-
options: { divisionCode, dataSource },
|
|
59
|
+
options: { divisionCode, dataSource: liveRatesDataSource },
|
|
56
60
|
}
|
|
57
61
|
: undefined;
|
|
58
62
|
|
|
@@ -3,7 +3,7 @@ import { validateLocale, validateToolParams } from '@oanda/labs-widget-common';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { createRoot } from 'react-dom/client';
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { DataSource, Division } from '../gql/types/graphql';
|
|
7
7
|
import { InstrumentsTableWidget } from './InstrumentsTableWidget';
|
|
8
8
|
|
|
9
9
|
const { graphqlUrl, liveRatesUrl } = window.widgetsConfig || {};
|
|
@@ -60,8 +60,8 @@ dataInstrumentsTableParamsElements.forEach((element) => {
|
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
name: 'dataSource',
|
|
63
|
-
valueCheck: (value:
|
|
64
|
-
Object.values(
|
|
63
|
+
valueCheck: (value: DataSource) =>
|
|
64
|
+
Object.values(DataSource).includes(value),
|
|
65
65
|
},
|
|
66
66
|
]
|
|
67
67
|
);
|
|
@@ -2,8 +2,8 @@ import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';
|
|
|
2
2
|
|
|
3
3
|
import type {
|
|
4
4
|
AssetClassName,
|
|
5
|
+
DataSource,
|
|
5
6
|
Division,
|
|
6
|
-
InstrumentDataSource,
|
|
7
7
|
} from '../gql/types/graphql';
|
|
8
8
|
|
|
9
9
|
export enum PriceType {
|
|
@@ -20,7 +20,7 @@ export interface InstrumentsTableConfig extends WidgetConfig {
|
|
|
20
20
|
isAssetClassFilterEnabled?: boolean;
|
|
21
21
|
isInstrumentSearchEnabled?: boolean;
|
|
22
22
|
recordsPerPage?: number;
|
|
23
|
-
dataSource:
|
|
23
|
+
dataSource: DataSource;
|
|
24
24
|
priceType?: PriceType;
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -32,6 +32,6 @@ export interface MainProps {
|
|
|
32
32
|
isAssetClassFilterEnabled?: boolean;
|
|
33
33
|
isInstrumentSearchEnabled?: boolean;
|
|
34
34
|
recordsPerPage?: number;
|
|
35
|
-
dataSource:
|
|
35
|
+
dataSource: DataSource;
|
|
36
36
|
isLiveRatesDisabled?: boolean;
|
|
37
37
|
}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { LiveRatesDataSource } from '@oanda/labs-widget-common';
|
|
2
|
+
|
|
3
|
+
import { DataSource, Division } from '../gql/types/graphql';
|
|
2
4
|
import { PriceType } from './types';
|
|
3
5
|
|
|
4
6
|
const getLiveRatesDivisionCode = (
|
|
5
7
|
division: Division,
|
|
6
8
|
priceType: PriceType,
|
|
7
|
-
dataSource:
|
|
9
|
+
dataSource: LiveRatesDataSource
|
|
8
10
|
): Division | string | undefined => {
|
|
9
11
|
const divisionMap = {
|
|
10
12
|
[PriceType.Raw]: {
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
+
[DataSource.Mt5]: Division.Oc,
|
|
14
|
+
[DataSource.V20]: 'MKTD',
|
|
13
15
|
},
|
|
14
16
|
[PriceType.Division]: {
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
+
[DataSource.Mt5]: division,
|
|
18
|
+
[DataSource.V20]: division,
|
|
17
19
|
},
|
|
18
20
|
};
|
|
19
21
|
return divisionMap[priceType]?.[dataSource];
|
|
@@ -4,7 +4,7 @@ export const resolveInstrumentsWithFilters = gql`
|
|
|
4
4
|
query resolveInstrumentsWithFilters(
|
|
5
5
|
$division: Division!
|
|
6
6
|
$assetClass: [AssetClassName]
|
|
7
|
-
$dataSource:
|
|
7
|
+
$dataSource: DataSource!
|
|
8
8
|
$instruments: [String]
|
|
9
9
|
$searchPattern: String
|
|
10
10
|
$tradeModes: [TradeMode]
|
package/src/gql/types/gql.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
|
|
|
13
13
|
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
|
14
14
|
*/
|
|
15
15
|
const documents = {
|
|
16
|
-
'\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource:
|
|
16
|
+
'\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n':
|
|
17
17
|
types.ResolveInstrumentsWithFiltersDocument,
|
|
18
18
|
};
|
|
19
19
|
|
|
@@ -35,8 +35,8 @@ export function graphql(source: string): unknown;
|
|
|
35
35
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
36
36
|
*/
|
|
37
37
|
export function graphql(
|
|
38
|
-
source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource:
|
|
39
|
-
): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource:
|
|
38
|
+
source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n'
|
|
39
|
+
): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: DataSource!\n $instruments: [String]\n $searchPattern: String\n $tradeModes: [TradeMode]\n $count: Int\n $offset: Int\n $withTradingModes: Boolean!\n ) {\n resolveInstrumentsWithFilters(\n division: $division\n assetClass: $assetClass\n dataSource: $dataSource\n instruments: $instruments\n searchPattern: $searchPattern\n count: $count\n offset: $offset\n tradeModes: $tradeModes\n ) {\n instruments {\n name\n displayName\n tradeMode @include(if: $withTradingModes)\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n'];
|
|
40
40
|
|
|
41
41
|
export function graphql(source: string) {
|
|
42
42
|
return (documents as any)[source] ?? {};
|
package/src/gql/types/graphql.ts
CHANGED
|
@@ -50,6 +50,25 @@ export enum BookType {
|
|
|
50
50
|
Position = 'POSITION',
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
export type Candle = {
|
|
54
|
+
__typename?: 'Candle';
|
|
55
|
+
close: Scalars['Float']['output'];
|
|
56
|
+
high: Scalars['Float']['output'];
|
|
57
|
+
low: Scalars['Float']['output'];
|
|
58
|
+
open: Scalars['Float']['output'];
|
|
59
|
+
/** UTC Timestamp */
|
|
60
|
+
point: Scalars['String']['output'];
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export type CandlesData = {
|
|
64
|
+
__typename?: 'CandlesData';
|
|
65
|
+
candle: Array<Maybe<Candle>>;
|
|
66
|
+
granularity: Granularity;
|
|
67
|
+
instrument: Instrument;
|
|
68
|
+
pipsLocation: Scalars['Int']['output'];
|
|
69
|
+
timeSpan: TimeSpan;
|
|
70
|
+
};
|
|
71
|
+
|
|
53
72
|
export type CorrelationHeatmap = {
|
|
54
73
|
__typename?: 'CorrelationHeatmap';
|
|
55
74
|
baseInstrument: Instrument;
|
|
@@ -117,8 +136,9 @@ export type CurrencyStrength = {
|
|
|
117
136
|
};
|
|
118
137
|
|
|
119
138
|
export enum DataSource {
|
|
120
|
-
|
|
121
|
-
|
|
139
|
+
All = 'ALL',
|
|
140
|
+
Mt5 = 'MT5',
|
|
141
|
+
V20 = 'V20',
|
|
122
142
|
}
|
|
123
143
|
|
|
124
144
|
export enum Division {
|
|
@@ -135,11 +155,20 @@ export enum Division {
|
|
|
135
155
|
|
|
136
156
|
export type ExtendedInstrument = {
|
|
137
157
|
__typename?: 'ExtendedInstrument';
|
|
158
|
+
dataSource: DataSource;
|
|
138
159
|
displayName: Scalars['String']['output'];
|
|
139
160
|
name: Scalars['String']['output'];
|
|
140
161
|
tradeMode: TradeMode;
|
|
141
162
|
};
|
|
142
163
|
|
|
164
|
+
export enum Granularity {
|
|
165
|
+
D1 = 'D1',
|
|
166
|
+
H1 = 'H1',
|
|
167
|
+
H4 = 'H4',
|
|
168
|
+
M1 = 'M1',
|
|
169
|
+
M15 = 'M15',
|
|
170
|
+
}
|
|
171
|
+
|
|
143
172
|
export type Heatmap = {
|
|
144
173
|
__typename?: 'Heatmap';
|
|
145
174
|
instrument: Instrument;
|
|
@@ -158,11 +187,6 @@ export type InstrumentCorrelation = {
|
|
|
158
187
|
value?: Maybe<Scalars['Float']['output']>;
|
|
159
188
|
};
|
|
160
189
|
|
|
161
|
-
export enum InstrumentDataSource {
|
|
162
|
-
Mt5 = 'MT5',
|
|
163
|
-
V20 = 'V20',
|
|
164
|
-
}
|
|
165
|
-
|
|
166
190
|
export type InstrumentTableResult = {
|
|
167
191
|
__typename?: 'InstrumentTableResult';
|
|
168
192
|
instruments: Array<ExtendedInstrument>;
|
|
@@ -170,12 +194,24 @@ export type InstrumentTableResult = {
|
|
|
170
194
|
updatedAt: Scalars['String']['output'];
|
|
171
195
|
};
|
|
172
196
|
|
|
197
|
+
export type MarginRate = {
|
|
198
|
+
__typename?: 'MarginRate';
|
|
199
|
+
instrument: Instrument;
|
|
200
|
+
rate: Scalars['Float']['output'];
|
|
201
|
+
};
|
|
202
|
+
|
|
173
203
|
export type Matrix = {
|
|
174
204
|
__typename?: 'Matrix';
|
|
175
205
|
instrument: Instrument;
|
|
176
206
|
instrumentCorrelation: Array<InstrumentCorrelation>;
|
|
177
207
|
};
|
|
178
208
|
|
|
209
|
+
export enum OrderBookDataSource {
|
|
210
|
+
Ny4 = 'NY4',
|
|
211
|
+
Ny4Mt5 = 'NY4_MT5',
|
|
212
|
+
Ty3 = 'TY3',
|
|
213
|
+
}
|
|
214
|
+
|
|
179
215
|
export type OrderPositionBucket = {
|
|
180
216
|
__typename?: 'OrderPositionBucket';
|
|
181
217
|
longCountPercent: Scalars['Float']['output'];
|
|
@@ -204,7 +240,9 @@ export type Query = {
|
|
|
204
240
|
currencyStrength?: Maybe<Array<CurrencyStrength>>;
|
|
205
241
|
isAllowedPartner?: Maybe<Scalars['Boolean']['output']>;
|
|
206
242
|
mapInstrumentNames?: Maybe<Array<Maybe<Instrument>>>;
|
|
243
|
+
marginRates?: Maybe<Array<MarginRate>>;
|
|
207
244
|
orderPositionBooks: Array<Maybe<OrderPositionData>>;
|
|
245
|
+
priceCandles: CandlesData;
|
|
208
246
|
resolveInstrumentsByDivision?: Maybe<Array<Instrument>>;
|
|
209
247
|
resolveInstrumentsWithFilters?: Maybe<InstrumentTableResult>;
|
|
210
248
|
sentiment?: Maybe<Array<SentimentInstrument>>;
|
|
@@ -246,14 +284,29 @@ export type QueryMapInstrumentNamesArgs = {
|
|
|
246
284
|
instruments: Array<InputMaybe<Scalars['String']['input']>>;
|
|
247
285
|
};
|
|
248
286
|
|
|
287
|
+
export type QueryMarginRatesArgs = {
|
|
288
|
+
dataSource: DataSource;
|
|
289
|
+
division: Division;
|
|
290
|
+
instruments?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
291
|
+
tradingGroup: Scalars['Int']['input'];
|
|
292
|
+
};
|
|
293
|
+
|
|
249
294
|
export type QueryOrderPositionBooksArgs = {
|
|
250
295
|
bookType: BookType;
|
|
251
|
-
dataSource?: InputMaybe<
|
|
296
|
+
dataSource?: InputMaybe<OrderBookDataSource>;
|
|
252
297
|
instrument: Scalars['String']['input'];
|
|
253
298
|
recentHours?: InputMaybe<Scalars['Int']['input']>;
|
|
254
299
|
region?: InputMaybe<Region>;
|
|
255
300
|
};
|
|
256
301
|
|
|
302
|
+
export type QueryPriceCandlesArgs = {
|
|
303
|
+
dataSource: DataSource;
|
|
304
|
+
division: Division;
|
|
305
|
+
granularity: Granularity;
|
|
306
|
+
instrument: Scalars['String']['input'];
|
|
307
|
+
timeSpan: TimeSpan;
|
|
308
|
+
};
|
|
309
|
+
|
|
257
310
|
export type QueryResolveInstrumentsByDivisionArgs = {
|
|
258
311
|
division: Division;
|
|
259
312
|
instruments: Array<InputMaybe<Scalars['String']['input']>>;
|
|
@@ -262,7 +315,7 @@ export type QueryResolveInstrumentsByDivisionArgs = {
|
|
|
262
315
|
export type QueryResolveInstrumentsWithFiltersArgs = {
|
|
263
316
|
assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>>>;
|
|
264
317
|
count?: InputMaybe<Scalars['Int']['input']>;
|
|
265
|
-
dataSource
|
|
318
|
+
dataSource: DataSource;
|
|
266
319
|
division: Division;
|
|
267
320
|
instruments?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
|
|
268
321
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -358,6 +411,21 @@ export type TimeCorrelation = {
|
|
|
358
411
|
value?: Maybe<Scalars['Float']['output']>;
|
|
359
412
|
};
|
|
360
413
|
|
|
414
|
+
export enum TimeSpan {
|
|
415
|
+
Day_1 = 'DAY_1',
|
|
416
|
+
Day_2 = 'DAY_2',
|
|
417
|
+
Hour_1 = 'HOUR_1',
|
|
418
|
+
Hour_12 = 'HOUR_12',
|
|
419
|
+
Month_1 = 'MONTH_1',
|
|
420
|
+
Month_3 = 'MONTH_3',
|
|
421
|
+
Month_6 = 'MONTH_6',
|
|
422
|
+
Week_1 = 'WEEK_1',
|
|
423
|
+
Week_2 = 'WEEK_2',
|
|
424
|
+
Week_3 = 'WEEK_3',
|
|
425
|
+
Year_1 = 'YEAR_1',
|
|
426
|
+
Year_5 = 'YEAR_5',
|
|
427
|
+
}
|
|
428
|
+
|
|
361
429
|
export type TopicalInstrument = {
|
|
362
430
|
__typename?: 'TopicalInstrument';
|
|
363
431
|
assetClass?: Maybe<AssetClassName>;
|
|
@@ -460,7 +528,7 @@ export type ResolveInstrumentsWithFiltersQueryVariables = Exact<{
|
|
|
460
528
|
assetClass?: InputMaybe<
|
|
461
529
|
Array<InputMaybe<AssetClassName>> | InputMaybe<AssetClassName>
|
|
462
530
|
>;
|
|
463
|
-
dataSource
|
|
531
|
+
dataSource: DataSource;
|
|
464
532
|
instruments?: InputMaybe<
|
|
465
533
|
| Array<InputMaybe<Scalars['String']['input']>>
|
|
466
534
|
| InputMaybe<Scalars['String']['input']>
|
|
@@ -530,8 +598,11 @@ export const ResolveInstrumentsWithFiltersDocument = {
|
|
|
530
598
|
name: { kind: 'Name', value: 'dataSource' },
|
|
531
599
|
},
|
|
532
600
|
type: {
|
|
533
|
-
kind: '
|
|
534
|
-
|
|
601
|
+
kind: 'NonNullType',
|
|
602
|
+
type: {
|
|
603
|
+
kind: 'NamedType',
|
|
604
|
+
name: { kind: 'Name', value: 'DataSource' },
|
|
605
|
+
},
|
|
535
606
|
},
|
|
536
607
|
},
|
|
537
608
|
{
|
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
import type { Translations } from '@oanda/mono-i18n';
|
|
2
2
|
import { Locale } from '@oanda/mono-i18n';
|
|
3
3
|
|
|
4
|
+
import de from './sources/de.json';
|
|
4
5
|
import en from './sources/en.json';
|
|
6
|
+
import es from './sources/es.json';
|
|
7
|
+
import fr from './sources/fr.json';
|
|
8
|
+
import it from './sources/it.json';
|
|
9
|
+
import pt from './sources/pt.json';
|
|
10
|
+
import th from './sources/th.json';
|
|
11
|
+
import vi from './sources/vi.json';
|
|
12
|
+
import zhCN from './sources/zh_CN.json';
|
|
5
13
|
import type { defaultTranslations } from './translations';
|
|
6
14
|
|
|
7
15
|
export type TranslationKey = keyof typeof defaultTranslations;
|
|
8
16
|
|
|
9
17
|
export const translations: Translations = {
|
|
10
18
|
[Locale.en]: { translation: en },
|
|
19
|
+
[Locale.fr]: { translation: fr },
|
|
20
|
+
[Locale.de]: { translation: de },
|
|
21
|
+
[Locale.es]: { translation: es },
|
|
22
|
+
[Locale.pt]: { translation: pt },
|
|
23
|
+
[Locale.it]: { translation: it },
|
|
24
|
+
[Locale.zhCN]: { translation: zhCN },
|
|
25
|
+
[Locale.th]: { translation: th },
|
|
26
|
+
[Locale.vi]: { translation: vi },
|
|
11
27
|
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"all": "Alle",
|
|
3
|
+
"asset_class": "Anlageklasse",
|
|
4
|
+
"bond": "Anleihe",
|
|
5
|
+
"buy": "Kaufen",
|
|
6
|
+
"close_only": "Nur Schließen",
|
|
7
|
+
"commodity": "Rohstoff",
|
|
8
|
+
"crypto": "Kryptowährungen",
|
|
9
|
+
"currency": "Währung",
|
|
10
|
+
"daily_percent_change": "Tägliche Veränderung in %",
|
|
11
|
+
"data_unavailable": "Daten nicht verfügbar",
|
|
12
|
+
"etf_cfds": "ETF-CFDs",
|
|
13
|
+
"index": "Index",
|
|
14
|
+
"instrument": "Instrument",
|
|
15
|
+
"instrument_name": "Instrumentenname",
|
|
16
|
+
"long_only": "Nur Long",
|
|
17
|
+
"margin": "Margin",
|
|
18
|
+
"search": "Suche",
|
|
19
|
+
"sell": "Verkaufen",
|
|
20
|
+
"share_cfds": "Aktien-CFDs",
|
|
21
|
+
"short_only": "Nur Short",
|
|
22
|
+
"spread": "Spread",
|
|
23
|
+
"symbol": "Symbol",
|
|
24
|
+
"today_high": "Heutiges Hoch",
|
|
25
|
+
"today_low": "Tagestief",
|
|
26
|
+
"trade_mode": "Handelsmodus"
|
|
27
|
+
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"instrument": "Instrument",
|
|
15
15
|
"instrument_name": "Instrument name",
|
|
16
16
|
"long_only": "Long only",
|
|
17
|
+
"margin": "Margin",
|
|
17
18
|
"no_matching_results": "No matching results",
|
|
18
19
|
"pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
|
|
19
20
|
"search": "Search",
|
|
@@ -24,6 +25,5 @@
|
|
|
24
25
|
"symbol": "Symbol",
|
|
25
26
|
"today_high": "Today high",
|
|
26
27
|
"today_low": "Today low",
|
|
27
|
-
"trade_mode": "Trade mode"
|
|
28
|
-
"last_updated": "Last updated"
|
|
28
|
+
"trade_mode": "Trade mode"
|
|
29
29
|
}
|