@oanda/labs-instruments-table-widget 1.0.23 → 1.0.25
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 +204 -0
- package/dist/main/InstrumentsTableWidget/Main.js +3 -4
- package/dist/main/InstrumentsTableWidget/Main.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/components/Filters/Filters.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/components/Filters/types.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/config.js +9 -6
- package/dist/main/InstrumentsTableWidget/config.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/types.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 +2 -1
- package/dist/main/gql/types/graphql.js.map +1 -1
- package/dist/main/translations/sources/en.json +2 -1
- package/dist/module/InstrumentsTableWidget/Main.js +3 -4
- package/dist/module/InstrumentsTableWidget/Main.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/components/Filters/Filters.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/components/Filters/types.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/config.js +9 -6
- package/dist/module/InstrumentsTableWidget/config.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/types.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 +2 -1
- package/dist/module/gql/types/graphql.js.map +1 -1
- package/dist/module/translations/sources/en.json +2 -1
- package/dist/types/InstrumentsTableWidget/Main.d.ts +1 -1
- package/dist/types/InstrumentsTableWidget/components/Filters/types.d.ts +3 -1
- package/dist/types/InstrumentsTableWidget/config.d.ts +2 -1
- package/dist/types/InstrumentsTableWidget/types.d.ts +3 -3
- package/dist/types/gql/types/gql.d.ts +3 -3
- package/dist/types/gql/types/graphql.d.ts +3 -2
- package/package.json +3 -3
- package/src/InstrumentsTableWidget/Main.tsx +19 -26
- package/src/InstrumentsTableWidget/components/Filters/Filters.tsx +2 -2
- package/src/InstrumentsTableWidget/components/Filters/types.ts +5 -1
- package/src/InstrumentsTableWidget/config.ts +12 -7
- package/src/InstrumentsTableWidget/types.ts +7 -3
- package/src/gql/resolveInstrumentsWithFilters.ts +1 -1
- package/src/gql/types/gql.ts +3 -3
- package/src/gql/types/graphql.ts +4 -4
- package/src/translations/sources/en.json +2 -1
- package/test/Main.test.tsx +7 -3
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { HeaderColumns } from '@oanda/labs-widget-common';
|
|
2
2
|
import { DataRecordType } from '@oanda/labs-widget-common';
|
|
3
|
+
import type { AssetClassLabels } from './components/Filters/types';
|
|
3
4
|
type HeaderRecordType = DataRecordType.INSTRUMENT | DataRecordType.SELL | DataRecordType.BUY | DataRecordType.DAILY_CHANGE | DataRecordType.SPREAD | DataRecordType.HIGH | DataRecordType.LOW;
|
|
4
5
|
declare const headerConfig: Record<HeaderRecordType, {
|
|
5
6
|
displayName: string;
|
|
6
7
|
additionalStyles: string;
|
|
7
8
|
}>;
|
|
8
|
-
declare const assetClassLabels: Record<
|
|
9
|
+
declare const assetClassLabels: Record<AssetClassLabels, string>;
|
|
9
10
|
declare const getHeaderConfig: (activeColumns: DataRecordType[]) => HeaderColumns[];
|
|
10
11
|
export { assetClassLabels, getHeaderConfig, headerConfig };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';
|
|
2
|
-
import type { Division, InstrumentDataSource } from '../gql/types/graphql';
|
|
2
|
+
import type { AssetClassName, Division, InstrumentDataSource } from '../gql/types/graphql';
|
|
3
3
|
export declare enum PriceType {
|
|
4
4
|
Raw = "raw",
|
|
5
5
|
Division = "division"
|
|
@@ -9,7 +9,7 @@ export interface InstrumentsTableConfig extends WidgetConfig {
|
|
|
9
9
|
instruments?: string[];
|
|
10
10
|
division: Division;
|
|
11
11
|
columns?: DataRecordType[];
|
|
12
|
-
assetClasses?:
|
|
12
|
+
assetClasses?: AssetClassName[];
|
|
13
13
|
isAssetClassFilterEnabled?: boolean;
|
|
14
14
|
isInstrumentSearchEnabled?: boolean;
|
|
15
15
|
recordsPerPage?: number;
|
|
@@ -20,7 +20,7 @@ export interface MainProps {
|
|
|
20
20
|
instruments?: string[];
|
|
21
21
|
division: Division;
|
|
22
22
|
columns?: DataRecordType[];
|
|
23
|
-
assetClasses?:
|
|
23
|
+
assetClasses?: AssetClassName[];
|
|
24
24
|
isAssetClassFilterEnabled?: boolean;
|
|
25
25
|
isInstrumentSearchEnabled?: boolean;
|
|
26
26
|
recordsPerPage?: number;
|
|
@@ -11,9 +11,9 @@ 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: [
|
|
14
|
+
'\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\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 ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n': DocumentNode<types.ResolveInstrumentsWithFiltersQuery, types.Exact<{
|
|
15
15
|
division: types.Division;
|
|
16
|
-
assetClass?: types.InputMaybe<Array<types.InputMaybe<types.
|
|
16
|
+
assetClass?: types.InputMaybe<Array<types.InputMaybe<types.AssetClassName>> | types.InputMaybe<types.AssetClassName>>;
|
|
17
17
|
dataSource?: types.InputMaybe<types.InstrumentDataSource>;
|
|
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"]>;
|
|
@@ -37,6 +37,6 @@ export declare function graphql(source: string): unknown;
|
|
|
37
37
|
/**
|
|
38
38
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
39
39
|
*/
|
|
40
|
-
export declare function graphql(source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [
|
|
40
|
+
export declare function graphql(source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\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 ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\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 ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'];
|
|
41
41
|
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;
|
|
42
42
|
export {};
|
|
@@ -53,6 +53,7 @@ export declare enum AssetClassName {
|
|
|
53
53
|
Cryptocurrency = "CRYPTOCURRENCY",
|
|
54
54
|
Currency = "CURRENCY",
|
|
55
55
|
EquityShares = "EQUITY_SHARES",
|
|
56
|
+
Etfs = "ETFS",
|
|
56
57
|
Indices = "INDICES",
|
|
57
58
|
Rates = "RATES"
|
|
58
59
|
}
|
|
@@ -235,7 +236,7 @@ export type QueryResolveInstrumentsByDivisionArgs = {
|
|
|
235
236
|
instruments: Array<InputMaybe<Scalars['String']['input']>>;
|
|
236
237
|
};
|
|
237
238
|
export type QueryResolveInstrumentsWithFiltersArgs = {
|
|
238
|
-
assetClass?: InputMaybe<Array<InputMaybe<
|
|
239
|
+
assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>>>;
|
|
239
240
|
count?: InputMaybe<Scalars['Int']['input']>;
|
|
240
241
|
dataSource?: InputMaybe<InstrumentDataSource>;
|
|
241
242
|
division: Division;
|
|
@@ -395,7 +396,7 @@ export declare enum VolatilityChartTimeUnit {
|
|
|
395
396
|
}
|
|
396
397
|
export type ResolveInstrumentsWithFiltersQueryVariables = Exact<{
|
|
397
398
|
division: Division;
|
|
398
|
-
assetClass?: InputMaybe<Array<InputMaybe<
|
|
399
|
+
assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>> | InputMaybe<AssetClassName>>;
|
|
399
400
|
dataSource?: InputMaybe<InstrumentDataSource>;
|
|
400
401
|
instruments?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>;
|
|
401
402
|
searchPattern?: InputMaybe<Scalars['String']['input']>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oanda/labs-instruments-table-widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"description": "Labs Instruments 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.205",
|
|
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": "c3d9e64eb9cf5a50d714b8147501b7dfe7aa4aed"
|
|
24
24
|
}
|
|
@@ -10,7 +10,7 @@ import React, { useEffect, useRef, useState } from 'react';
|
|
|
10
10
|
import { useEventListener } from 'usehooks-ts';
|
|
11
11
|
|
|
12
12
|
import { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';
|
|
13
|
-
import type {
|
|
13
|
+
import type { AssetClassName } from '../gql/types/graphql';
|
|
14
14
|
import {
|
|
15
15
|
type ResolveInstrumentsWithFiltersQuery,
|
|
16
16
|
type ResolveInstrumentsWithFiltersQueryVariables,
|
|
@@ -23,7 +23,7 @@ import type { MainProps } from './types';
|
|
|
23
23
|
const Main = ({
|
|
24
24
|
instruments = [],
|
|
25
25
|
division,
|
|
26
|
-
assetClasses
|
|
26
|
+
assetClasses,
|
|
27
27
|
columns = DEFAULT_COLUMNS,
|
|
28
28
|
isAssetClassFilterEnabled,
|
|
29
29
|
isInstrumentSearchEnabled,
|
|
@@ -38,31 +38,22 @@ const Main = ({
|
|
|
38
38
|
new Array(recordsPerPage).fill({})
|
|
39
39
|
);
|
|
40
40
|
|
|
41
|
-
const assetClasses = paramsAssetClasses?.map((assetClass) =>
|
|
42
|
-
assetClass.toUpperCase()
|
|
43
|
-
);
|
|
44
|
-
|
|
45
41
|
const [totalRecords, setTotalRecords] = useState<number>(0);
|
|
46
42
|
|
|
47
|
-
const [queryVariables, setQueryVariables] =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
count: recordsPerPage,
|
|
58
|
-
searchPattern: '',
|
|
59
|
-
offset: 0,
|
|
60
|
-
assetClass: assetClasses || [],
|
|
61
|
-
instruments,
|
|
62
|
-
dataSource,
|
|
63
|
-
});
|
|
43
|
+
const [queryVariables, setQueryVariables] =
|
|
44
|
+
useState<ResolveInstrumentsWithFiltersQueryVariables>({
|
|
45
|
+
division,
|
|
46
|
+
count: recordsPerPage,
|
|
47
|
+
searchPattern: '',
|
|
48
|
+
offset: 0,
|
|
49
|
+
assetClass: assetClasses || [],
|
|
50
|
+
instruments,
|
|
51
|
+
dataSource,
|
|
52
|
+
});
|
|
64
53
|
|
|
65
|
-
const pageNumber =
|
|
54
|
+
const pageNumber = queryVariables.offset
|
|
55
|
+
? Math.floor(queryVariables.offset / recordsPerPage)
|
|
56
|
+
: 0;
|
|
66
57
|
|
|
67
58
|
const { data, error, loading } = useQuery<
|
|
68
59
|
ResolveInstrumentsWithFiltersQuery,
|
|
@@ -141,7 +132,7 @@ const Main = ({
|
|
|
141
132
|
assetClassOptions={[
|
|
142
133
|
{
|
|
143
134
|
id: 'ALL',
|
|
144
|
-
label: lang(
|
|
135
|
+
label: lang(assetClassLabels.ALL),
|
|
145
136
|
},
|
|
146
137
|
...(assetClasses || []).map((assetClass) => ({
|
|
147
138
|
id: assetClass,
|
|
@@ -156,7 +147,9 @@ const Main = ({
|
|
|
156
147
|
offset: 0,
|
|
157
148
|
searchPattern: '',
|
|
158
149
|
assetClass:
|
|
159
|
-
assetClass[0] === 'ALL'
|
|
150
|
+
assetClass[0] === 'ALL'
|
|
151
|
+
? assetClasses || []
|
|
152
|
+
: (assetClass as AssetClassName[]),
|
|
160
153
|
}));
|
|
161
154
|
}}
|
|
162
155
|
onSearchChange={(searchPattern) => {
|
|
@@ -9,7 +9,7 @@ import { useLocale } from '@oanda/mono-i18n';
|
|
|
9
9
|
import React, { useState } from 'react';
|
|
10
10
|
import { useDebounceCallback } from 'usehooks-ts';
|
|
11
11
|
|
|
12
|
-
import type { FiltersProps } from './types';
|
|
12
|
+
import type { AssetClassLabels, FiltersProps } from './types';
|
|
13
13
|
|
|
14
14
|
export const Filters = ({
|
|
15
15
|
assetClassOptions,
|
|
@@ -62,7 +62,7 @@ export const Filters = ({
|
|
|
62
62
|
}
|
|
63
63
|
setSelectedOption={(option) => {
|
|
64
64
|
setAssetClass([option.id]);
|
|
65
|
-
onAssetClassChange([option.id]);
|
|
65
|
+
onAssetClassChange([option.id as AssetClassLabels]);
|
|
66
66
|
setSearchInputValue('');
|
|
67
67
|
onSearchChange('');
|
|
68
68
|
}}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { SelectOption } from '@oanda/labs-widget-common';
|
|
2
2
|
|
|
3
|
+
import type { AssetClassName } from '../../../gql/types/graphql';
|
|
4
|
+
|
|
5
|
+
export type AssetClassLabels = AssetClassName | 'ALL';
|
|
6
|
+
|
|
3
7
|
export interface FiltersProps {
|
|
4
|
-
onAssetClassChange: (assetClass:
|
|
8
|
+
onAssetClassChange: (assetClass: AssetClassLabels[]) => void;
|
|
5
9
|
onSearchChange: (searchPattern: string) => void;
|
|
6
10
|
isAssetClassFilterEnabled?: boolean;
|
|
7
11
|
isInstrumentSearchEnabled?: boolean;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { HeaderColumns } from '@oanda/labs-widget-common';
|
|
2
2
|
import { DataRecordType } from '@oanda/labs-widget-common';
|
|
3
3
|
|
|
4
|
+
import { AssetClassName } from '../gql/types/graphql';
|
|
5
|
+
import type { AssetClassLabels } from './components/Filters/types';
|
|
6
|
+
|
|
4
7
|
type HeaderRecordType =
|
|
5
8
|
| DataRecordType.INSTRUMENT
|
|
6
9
|
| DataRecordType.SELL
|
|
@@ -44,13 +47,15 @@ const headerConfig: Record<
|
|
|
44
47
|
},
|
|
45
48
|
};
|
|
46
49
|
|
|
47
|
-
const assetClassLabels: Record<
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const assetClassLabels: Record<AssetClassLabels, string> = {
|
|
51
|
+
ALL: 'all',
|
|
52
|
+
[AssetClassName.Currency]: 'currency',
|
|
53
|
+
[AssetClassName.Commodities]: 'commodity',
|
|
54
|
+
[AssetClassName.Rates]: 'bond',
|
|
55
|
+
[AssetClassName.Cryptocurrency]: 'crypto',
|
|
56
|
+
[AssetClassName.EquityShares]: 'share_cfds',
|
|
57
|
+
[AssetClassName.Etfs]: 'etf_cfds',
|
|
58
|
+
[AssetClassName.Indices]: 'index',
|
|
54
59
|
};
|
|
55
60
|
|
|
56
61
|
const getHeaderConfig = (activeColumns: DataRecordType[]): HeaderColumns[] => {
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { DataRecordType, WidgetConfig } from '@oanda/labs-widget-common';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
AssetClassName,
|
|
5
|
+
Division,
|
|
6
|
+
InstrumentDataSource,
|
|
7
|
+
} from '../gql/types/graphql';
|
|
4
8
|
|
|
5
9
|
export enum PriceType {
|
|
6
10
|
Raw = 'raw',
|
|
@@ -12,7 +16,7 @@ export interface InstrumentsTableConfig extends WidgetConfig {
|
|
|
12
16
|
instruments?: string[];
|
|
13
17
|
division: Division;
|
|
14
18
|
columns?: DataRecordType[];
|
|
15
|
-
assetClasses?:
|
|
19
|
+
assetClasses?: AssetClassName[];
|
|
16
20
|
isAssetClassFilterEnabled?: boolean;
|
|
17
21
|
isInstrumentSearchEnabled?: boolean;
|
|
18
22
|
recordsPerPage?: number;
|
|
@@ -24,7 +28,7 @@ export interface MainProps {
|
|
|
24
28
|
instruments?: string[];
|
|
25
29
|
division: Division;
|
|
26
30
|
columns?: DataRecordType[];
|
|
27
|
-
assetClasses?:
|
|
31
|
+
assetClasses?: AssetClassName[];
|
|
28
32
|
isAssetClassFilterEnabled?: boolean;
|
|
29
33
|
isInstrumentSearchEnabled?: boolean;
|
|
30
34
|
recordsPerPage?: number;
|
|
@@ -3,7 +3,7 @@ import { gql } from '@apollo/client';
|
|
|
3
3
|
export const resolveInstrumentsWithFilters = gql`
|
|
4
4
|
query resolveInstrumentsWithFilters(
|
|
5
5
|
$division: Division!
|
|
6
|
-
$assetClass: [
|
|
6
|
+
$assetClass: [AssetClassName]
|
|
7
7
|
$dataSource: InstrumentDataSource
|
|
8
8
|
$instruments: [String]
|
|
9
9
|
$searchPattern: String
|
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: [
|
|
16
|
+
'\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\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 ) {\n instruments {\n name\n displayName\n }\n totalCount\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: [
|
|
39
|
-
): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [
|
|
38
|
+
source: '\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\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 ) {\n instruments {\n name\n displayName\n }\n totalCount\n }\n }\n'
|
|
39
|
+
): (typeof documents)['\n query resolveInstrumentsWithFilters(\n $division: Division!\n $assetClass: [AssetClassName]\n $dataSource: InstrumentDataSource\n $instruments: [String]\n $searchPattern: String\n $count: Int\n $offset: Int\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 ) {\n instruments {\n name\n displayName\n }\n totalCount\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
|
@@ -40,6 +40,7 @@ export enum AssetClassName {
|
|
|
40
40
|
Cryptocurrency = 'CRYPTOCURRENCY',
|
|
41
41
|
Currency = 'CURRENCY',
|
|
42
42
|
EquityShares = 'EQUITY_SHARES',
|
|
43
|
+
Etfs = 'ETFS',
|
|
43
44
|
Indices = 'INDICES',
|
|
44
45
|
Rates = 'RATES',
|
|
45
46
|
}
|
|
@@ -251,7 +252,7 @@ export type QueryResolveInstrumentsByDivisionArgs = {
|
|
|
251
252
|
};
|
|
252
253
|
|
|
253
254
|
export type QueryResolveInstrumentsWithFiltersArgs = {
|
|
254
|
-
assetClass?: InputMaybe<Array<InputMaybe<
|
|
255
|
+
assetClass?: InputMaybe<Array<InputMaybe<AssetClassName>>>;
|
|
255
256
|
count?: InputMaybe<Scalars['Int']['input']>;
|
|
256
257
|
dataSource?: InputMaybe<InstrumentDataSource>;
|
|
257
258
|
division: Division;
|
|
@@ -439,8 +440,7 @@ export enum VolatilityChartTimeUnit {
|
|
|
439
440
|
export type ResolveInstrumentsWithFiltersQueryVariables = Exact<{
|
|
440
441
|
division: Division;
|
|
441
442
|
assetClass?: InputMaybe<
|
|
442
|
-
|
|
443
|
-
| InputMaybe<Scalars['String']['input']>
|
|
443
|
+
Array<InputMaybe<AssetClassName>> | InputMaybe<AssetClassName>
|
|
444
444
|
>;
|
|
445
445
|
dataSource?: InputMaybe<InstrumentDataSource>;
|
|
446
446
|
instruments?: InputMaybe<
|
|
@@ -497,7 +497,7 @@ export const ResolveInstrumentsWithFiltersDocument = {
|
|
|
497
497
|
kind: 'ListType',
|
|
498
498
|
type: {
|
|
499
499
|
kind: 'NamedType',
|
|
500
|
-
name: { kind: 'Name', value: '
|
|
500
|
+
name: { kind: 'Name', value: 'AssetClassName' },
|
|
501
501
|
},
|
|
502
502
|
},
|
|
503
503
|
},
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"currency": "Currency",
|
|
9
9
|
"daily_percent_change": "Daily % Change",
|
|
10
10
|
"data_unavailable": "Data unavailable",
|
|
11
|
+
"etf_cfds": "ETF CFDs",
|
|
11
12
|
"index": "Index",
|
|
12
13
|
"instrument": "Instrument",
|
|
13
14
|
"instrument_name": "Instrument name",
|
|
@@ -15,7 +16,7 @@
|
|
|
15
16
|
"pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
|
|
16
17
|
"search": "Search",
|
|
17
18
|
"sell": "Sell",
|
|
18
|
-
"
|
|
19
|
+
"share_cfds": "Share CFDs",
|
|
19
20
|
"spread": "Spread",
|
|
20
21
|
"today_high": "Today High",
|
|
21
22
|
"today_low": "Today Low"
|
package/test/Main.test.tsx
CHANGED
|
@@ -9,7 +9,11 @@ import {
|
|
|
9
9
|
import { fireEvent, render, waitFor } from '@testing-library/react';
|
|
10
10
|
import React from 'react';
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
AssetClassName,
|
|
14
|
+
Division,
|
|
15
|
+
InstrumentDataSource,
|
|
16
|
+
} from '../src/gql/types/graphql';
|
|
13
17
|
import { Main } from '../src/InstrumentsTableWidget/Main';
|
|
14
18
|
import {
|
|
15
19
|
mockErrorQuery,
|
|
@@ -47,7 +51,7 @@ describe('Main component', () => {
|
|
|
47
51
|
<Main
|
|
48
52
|
isAssetClassFilterEnabled
|
|
49
53
|
isInstrumentSearchEnabled
|
|
50
|
-
assetClasses={[
|
|
54
|
+
assetClasses={[AssetClassName.Etfs, AssetClassName.Currency]}
|
|
51
55
|
dataSource={InstrumentDataSource.V20}
|
|
52
56
|
division={Division.Oc}
|
|
53
57
|
instruments={['EUR_USD', 'GBP_USD']}
|
|
@@ -67,7 +71,7 @@ describe('Main component', () => {
|
|
|
67
71
|
<MockLayoutProvider>
|
|
68
72
|
<Main
|
|
69
73
|
isAssetClassFilterEnabled
|
|
70
|
-
assetClasses={[
|
|
74
|
+
assetClasses={[AssetClassName.Etfs, AssetClassName.Currency]}
|
|
71
75
|
dataSource={InstrumentDataSource.V20}
|
|
72
76
|
division={Division.Oc}
|
|
73
77
|
instruments={['EUR_USD', 'GBP_USD']}
|