@oanda/labs-instruments-table-widget 1.0.64 → 1.0.66
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 +532 -0
- package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js +1 -1
- package/dist/main/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/Main.js +13 -17
- package/dist/main/InstrumentsTableWidget/Main.js.map +1 -1
- package/dist/main/InstrumentsTableWidget/config.js +6 -9
- package/dist/main/InstrumentsTableWidget/config.js.map +1 -1
- package/dist/main/gql/resolveInstrumentsWithFilters.js +33 -3
- package/dist/main/gql/resolveInstrumentsWithFilters.js.map +1 -1
- package/dist/main/gql/types/fragment-masking.js +2 -3
- package/dist/main/gql/types/fragment-masking.js.map +1 -1
- package/dist/main/gql/types/gql.js +1 -2
- package/dist/main/gql/types/gql.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js +1 -1
- package/dist/module/InstrumentsTableWidget/InstrumentsTableWidget.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/Main.js +13 -17
- package/dist/module/InstrumentsTableWidget/Main.js.map +1 -1
- package/dist/module/InstrumentsTableWidget/config.js +6 -9
- package/dist/module/InstrumentsTableWidget/config.js.map +1 -1
- package/dist/module/gql/resolveInstrumentsWithFilters.js +33 -3
- package/dist/module/gql/resolveInstrumentsWithFilters.js.map +1 -1
- package/dist/module/gql/types/fragment-masking.js +2 -3
- package/dist/module/gql/types/fragment-masking.js.map +1 -1
- package/dist/module/gql/types/gql.js +1 -2
- package/dist/module/gql/types/gql.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["_client","require","_labsWidgetCommon","_monoI18n","_react","_interopRequireWildcard","_usehooksTs","_resolveInstrumentsWithFilters","_graphql","_components","_config","_constant","_types","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","Main","_ref","_headerConfig$instrum","_data$resolveInstrume2","instruments","division","assetClasses","columns","DEFAULT_COLUMNS","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","priceType","PriceType","Division","documentRef","useRef","document","size","useLayoutProvider","isDesktop","Size","DESKTOP","isTradingMode","includes","DataRecordType","TRADE_MODE","SYMBOL","lang","useLocale","target","setQuery","closeQuery","useLiveRatesQuery","records","setRecords","useState","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeMode","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","useQuery","resolveInstrumentsWithFilters","variables","fetchPolicy","errorPolicy","useEffect","_data$resolveInstrume","newRecords","map","record","instrument","name","displayName","tradeMode","tradeModeLabels","totalCount","setupQueries","recordsData","v20instruments","mt5instruments","groupNamesBySource","DataSource","Mt5","Oc","V20","RAW_PRICE_DIVISION","showError","onVisibilityChange","current","visibilityState","useEventListener","headerConfig","headerConfigs","mobile","longInstruments","normal","createElement","Fragment","TableWidget","PaginationComponent","Pagination","currentPage","disabled","onPageChange","numb","prev","TabsComponent","Filters","assetClassOptions","id","label","assetClassLabels","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","getHeaderConfig","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","INSTRUMENT_TOOLTIP_ID","viewType","className","LastUpdated","labelCallback","timestamp","updatedAt","exports"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n DataSource,\n Division,\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport {\n DEFAULT_COLUMNS,\n INSTRUMENT_TOOLTIP_ID,\n RAW_PRICE_DIVISION,\n} from './constant';\nimport { type MainProps, PriceType } from './types';\nimport { groupNamesBySource } from './utils';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n priceType = PriceType.Division,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n dataSource: record?.dataSource,\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n const setupQueries = (recordsData: DataRecord[]) => {\n const { v20instruments, mt5instruments } = groupNamesBySource(recordsData);\n\n if (mt5instruments[0]) {\n setQuery({\n instruments: mt5instruments,\n dataSource: DataSource.Mt5,\n division: priceType === PriceType.Division ? undefined : Division.Oc,\n });\n }\n if (v20instruments[0]) {\n setQuery({\n instruments: v20instruments,\n dataSource: DataSource.V20,\n division:\n priceType === PriceType.Division ? undefined : RAW_PRICE_DIVISION,\n });\n }\n };\n\n useEffect(() => {\n setupQueries(records);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n setupQueries(records);\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_client","require","_labsWidgetCommon","_monoI18n","_react","_interopRequireWildcard","_usehooksTs","_resolveInstrumentsWithFilters","_graphql","_components","_config","_constant","_types","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Main","_ref","instruments","division","assetClasses","columns","DEFAULT_COLUMNS","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","priceType","PriceType","Division","documentRef","useRef","document","size","useLayoutProvider","isDesktop","Size","DESKTOP","isTradingMode","includes","DataRecordType","TRADE_MODE","SYMBOL","lang","useLocale","target","setQuery","closeQuery","useLiveRatesQuery","records","setRecords","useState","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeMode","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","useQuery","resolveInstrumentsWithFilters","variables","fetchPolicy","errorPolicy","useEffect","newRecords","map","record","instrument","name","displayName","tradeMode","tradeModeLabels","totalCount","setupQueries","recordsData","v20instruments","mt5instruments","groupNamesBySource","DataSource","Mt5","Oc","V20","RAW_PRICE_DIVISION","showError","onVisibilityChange","current","visibilityState","useEventListener","headerConfig","headerConfigs","mobile","length","longInstruments","normal","createElement","Fragment","TableWidget","PaginationComponent","Pagination","currentPage","disabled","onPageChange","numb","prev","TabsComponent","Filters","assetClassOptions","id","label","assetClassLabels","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","getHeaderConfig","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","INSTRUMENT_TOOLTIP_ID","viewType","className","LastUpdated","labelCallback","timestamp","updatedAt","exports"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n DataSource,\n Division,\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport {\n DEFAULT_COLUMNS,\n INSTRUMENT_TOOLTIP_ID,\n RAW_PRICE_DIVISION,\n} from './constant';\nimport { type MainProps, PriceType } from './types';\nimport { groupNamesBySource } from './utils';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n priceType = PriceType.Division,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n dataSource: record?.dataSource,\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n const setupQueries = (recordsData: DataRecord[]) => {\n const { v20instruments, mt5instruments } = groupNamesBySource(recordsData);\n\n if (mt5instruments[0]) {\n setQuery({\n instruments: mt5instruments,\n dataSource: DataSource.Mt5,\n division: priceType === PriceType.Division ? undefined : Division.Oc,\n });\n }\n if (v20instruments[0]) {\n setQuery({\n instruments: v20instruments,\n dataSource: DataSource.V20,\n division:\n priceType === PriceType.Division ? undefined : RAW_PRICE_DIVISION,\n });\n }\n };\n\n useEffect(() => {\n setupQueries(records);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n setupQueries(records);\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,11 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.tradeModeLabels = exports.headerConfigs = exports.assetClassLabels = void 0;
|
|
7
7
|
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
8
8
|
var _graphql = require("../gql/types/graphql");
|
|
9
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
12
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
13
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
14
9
|
const tradeModeLabels = exports.tradeModeLabels = {
|
|
15
10
|
[_graphql.TradeMode.TradeLongonly]: 'long_only',
|
|
16
11
|
[_graphql.TradeMode.TradeShortonly]: 'short_only',
|
|
@@ -91,7 +86,8 @@ const normal = {
|
|
|
91
86
|
}
|
|
92
87
|
}
|
|
93
88
|
};
|
|
94
|
-
const longInstruments =
|
|
89
|
+
const longInstruments = {
|
|
90
|
+
...normal,
|
|
95
91
|
[_labsWidgetCommon.DataRecordType.INSTRUMENT]: {
|
|
96
92
|
displayName: 'instrument',
|
|
97
93
|
additionalStyles: {
|
|
@@ -99,8 +95,9 @@ const longInstruments = _objectSpread(_objectSpread({}, normal), {}, {
|
|
|
99
95
|
minWidth: '250px'
|
|
100
96
|
}
|
|
101
97
|
}
|
|
102
|
-
}
|
|
103
|
-
const mobile =
|
|
98
|
+
};
|
|
99
|
+
const mobile = {
|
|
100
|
+
...normal,
|
|
104
101
|
[_labsWidgetCommon.DataRecordType.INSTRUMENT]: {
|
|
105
102
|
displayName: 'instrument',
|
|
106
103
|
additionalStyles: {
|
|
@@ -108,7 +105,7 @@ const mobile = _objectSpread(_objectSpread({}, normal), {}, {
|
|
|
108
105
|
minWidth: '150px'
|
|
109
106
|
}
|
|
110
107
|
}
|
|
111
|
-
}
|
|
108
|
+
};
|
|
112
109
|
const headerConfigs = exports.headerConfigs = {
|
|
113
110
|
normal,
|
|
114
111
|
longInstruments,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":["_labsWidgetCommon","require","_graphql","
|
|
1
|
+
{"version":3,"file":"config.js","names":["_labsWidgetCommon","require","_graphql","tradeModeLabels","exports","TradeMode","TradeLongonly","TradeShortonly","TradeCloseonly","normal","DataRecordType","INSTRUMENT","displayName","additionalStyles","align","minWidth","SELL","paddingRight","BUY","SPREAD","DAILY_CHANGE","HIGH","LOW","TRADE_MODE","SYMBOL","DATA_SOURCE","longInstruments","mobile","headerConfigs","assetClassLabels","ALL","AssetClassName","Currency","Commodities","Metals","Rates","Cryptocurrency","EquityShares","Etfs","Indices"],"sources":["../../../src/InstrumentsTableWidget/config.ts"],"sourcesContent":["import type { HeaderConfigType } from '@oanda/labs-widget-common';\nimport { DataRecordType } from '@oanda/labs-widget-common';\n\nimport { AssetClassName, TradeMode } from '../gql/types/graphql';\nimport type { AssetClassLabels } from './components/Filters/types';\n\nconst tradeModeLabels: Record<\n TradeMode.TradeLongonly | TradeMode.TradeShortonly | TradeMode.TradeCloseonly,\n string\n> = {\n [TradeMode.TradeLongonly]: 'long_only',\n [TradeMode.TradeShortonly]: 'short_only',\n [TradeMode.TradeCloseonly]: 'close_only',\n};\nconst normal: HeaderConfigType = {\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '200px',\n },\n },\n [DataRecordType.SELL]: {\n displayName: 'sell',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.BUY]: {\n displayName: 'buy',\n additionalStyles: {\n align: 'right',\n minWidth: '75px',\n paddingRight: true,\n },\n },\n [DataRecordType.SPREAD]: {\n displayName: 'spread',\n additionalStyles: {\n align: 'right',\n minWidth: '50px',\n },\n },\n [DataRecordType.DAILY_CHANGE]: {\n displayName: 'daily_percent_change',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.HIGH]: {\n displayName: 'today_high',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.LOW]: {\n displayName: 'today_low',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n [DataRecordType.TRADE_MODE]: {\n displayName: 'trade_mode',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n paddingRight: true,\n },\n },\n [DataRecordType.SYMBOL]: {\n displayName: 'symbol',\n additionalStyles: {\n align: 'center',\n minWidth: '80px',\n },\n },\n [DataRecordType.DATA_SOURCE]: {\n displayName: 'Data Source',\n additionalStyles: {\n align: 'right',\n minWidth: '80px',\n },\n },\n};\n\nconst longInstruments: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '250px',\n },\n },\n};\n\nconst mobile: HeaderConfigType = {\n ...normal,\n [DataRecordType.INSTRUMENT]: {\n displayName: 'instrument',\n additionalStyles: {\n align: 'left',\n minWidth: '150px',\n },\n },\n};\n\nconst headerConfigs = {\n normal,\n longInstruments,\n mobile,\n};\n\nconst assetClassLabels: Record<AssetClassLabels, string> = {\n ALL: 'all',\n [AssetClassName.Currency]: 'currency',\n [AssetClassName.Commodities]: 'commodity',\n [AssetClassName.Metals]: 'metal',\n [AssetClassName.Rates]: 'bond',\n [AssetClassName.Cryptocurrency]: 'crypto',\n [AssetClassName.EquityShares]: 'share_cfds',\n [AssetClassName.Etfs]: 'etf_cfds',\n [AssetClassName.Indices]: 'index',\n};\n\nexport { assetClassLabels, headerConfigs, tradeModeLabels };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.resolveInstrumentsWithFilters = void 0;
|
|
7
7
|
var _client = require("@apollo/client");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const resolveInstrumentsWithFilters = exports.resolveInstrumentsWithFilters = (0, _client.gql)`
|
|
9
|
+
query resolveInstrumentsWithFilters(
|
|
10
|
+
$division: Division!
|
|
11
|
+
$assetClass: [AssetClassName]
|
|
12
|
+
$dataSource: DataSource!
|
|
13
|
+
$instruments: [String]
|
|
14
|
+
$searchPattern: String
|
|
15
|
+
$tradeModes: [TradeMode]
|
|
16
|
+
$count: Int
|
|
17
|
+
$offset: Int
|
|
18
|
+
$withTradingModes: Boolean!
|
|
19
|
+
) {
|
|
20
|
+
resolveInstrumentsWithFilters(
|
|
21
|
+
division: $division
|
|
22
|
+
assetClass: $assetClass
|
|
23
|
+
dataSource: $dataSource
|
|
24
|
+
instruments: $instruments
|
|
25
|
+
searchPattern: $searchPattern
|
|
26
|
+
count: $count
|
|
27
|
+
offset: $offset
|
|
28
|
+
tradeModes: $tradeModes
|
|
29
|
+
) {
|
|
30
|
+
instruments {
|
|
31
|
+
name
|
|
32
|
+
displayName
|
|
33
|
+
tradeMode @include(if: $withTradingModes)
|
|
34
|
+
dataSource
|
|
35
|
+
}
|
|
36
|
+
totalCount
|
|
37
|
+
updatedAt @include(if: $withTradingModes)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
11
41
|
//# sourceMappingURL=resolveInstrumentsWithFilters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveInstrumentsWithFilters.js","names":["_client","require","
|
|
1
|
+
{"version":3,"file":"resolveInstrumentsWithFilters.js","names":["_client","require","resolveInstrumentsWithFilters","exports","gql"],"sources":["../../../src/gql/resolveInstrumentsWithFilters.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const resolveInstrumentsWithFilters = gql`\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 dataSource\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,6BAA6B,GAAAC,OAAA,CAAAD,6BAAA,GAAG,IAAAE,WAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -13,11 +13,10 @@ function makeFragmentData(data, _fragment) {
|
|
|
13
13
|
return data;
|
|
14
14
|
}
|
|
15
15
|
function isFragmentReady(queryNode, fragmentNode, data) {
|
|
16
|
-
|
|
17
|
-
const deferredFields = (_meta__ = queryNode.__meta__) === null || _meta__ === void 0 ? void 0 : _meta__.deferredFields;
|
|
16
|
+
const deferredFields = queryNode.__meta__?.deferredFields;
|
|
18
17
|
if (!deferredFields) return true;
|
|
19
18
|
const fragDef = fragmentNode.definitions[0];
|
|
20
|
-
const fragName = fragDef
|
|
19
|
+
const fragName = fragDef?.name?.value;
|
|
21
20
|
const fields = fragName && deferredFields[fragName] || [];
|
|
22
21
|
return fields.length > 0 && fields.every(field => data && field in data);
|
|
23
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-masking.js","names":["useFragment","_documentNode","fragmentType","makeFragmentData","data","_fragment","isFragmentReady","queryNode","fragmentNode","
|
|
1
|
+
{"version":3,"file":"fragment-masking.js","names":["useFragment","_documentNode","fragmentType","makeFragmentData","data","_fragment","isFragmentReady","queryNode","fragmentNode","deferredFields","__meta__","fragDef","definitions","fragName","name","value","fields","length","every","field"],"sources":["../../../../src/gql/types/fragment-masking.ts"],"sourcesContent":["import {\n ResultOf,\n DocumentTypeDecoration,\n TypedDocumentNode,\n} from '@graphql-typed-document-node/core';\nimport { FragmentDefinitionNode } from 'graphql';\nimport { Incremental } from './graphql';\n\nexport type FragmentType<\n TDocumentType extends DocumentTypeDecoration<any, any>,\n> =\n TDocumentType extends DocumentTypeDecoration<infer TType, any>\n ? [TType] extends [{ ' $fragmentName'?: infer TKey }]\n ? TKey extends string\n ? { ' $fragmentRefs'?: { [key in TKey]: TType } }\n : never\n : never\n : never;\n\n// return non-nullable if `fragmentType` is non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>>\n): TType;\n// return nullable if `fragmentType` is nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | null\n | undefined\n): TType | null | undefined;\n// return array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n): ReadonlyArray<TType>;\n// return array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined\n): TType | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\n\nexport function makeFragmentData<\n F extends DocumentTypeDecoration<any, any>,\n FT extends ResultOf<F>,\n>(data: FT, _fragment: F): FragmentType<F> {\n return data as FragmentType<F>;\n}\nexport function isFragmentReady<TQuery, TFrag>(\n queryNode: DocumentTypeDecoration<TQuery, any>,\n fragmentNode: TypedDocumentNode<TFrag>,\n data:\n | FragmentType<TypedDocumentNode<Incremental<TFrag>, any>>\n | null\n | undefined\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (\n queryNode as {\n __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> };\n }\n ).__meta__?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as\n | FragmentDefinitionNode\n | undefined;\n const fragName = fragDef?.name?.value;\n\n const fields = (fragName && deferredFields[fragName]) || [];\n return fields.length > 0 && fields.every((field) => data && field in data);\n}\n"],"mappings":";;;;;;;;AA6CO,SAASA,WAAWA,CACzBC,aAAiD,EACjDC,YAIa,EACoC;EACjD,OAAOA,YAAY;AACrB;AAEO,SAASC,gBAAgBA,CAG9BC,IAAQ,EAAEC,SAAY,EAAmB;EACzC,OAAOD,IAAI;AACb;AACO,SAASE,eAAeA,CAC7BC,SAA8C,EAC9CC,YAAsC,EACtCJ,IAGa,EAC8B;EAC3C,MAAMK,cAAc,GAClBF,SAAS,CAGTG,QAAQ,EAAED,cAAc;EAE1B,IAAI,CAACA,cAAc,EAAE,OAAO,IAAI;EAEhC,MAAME,OAAO,GAAGH,YAAY,CAACI,WAAW,CAAC,CAAC,CAE7B;EACb,MAAMC,QAAQ,GAAGF,OAAO,EAAEG,IAAI,EAAEC,KAAK;EAErC,MAAMC,MAAM,GAAIH,QAAQ,IAAIJ,cAAc,CAACI,QAAQ,CAAC,IAAK,EAAE;EAC3D,OAAOG,MAAM,CAACC,MAAM,GAAG,CAAC,IAAID,MAAM,CAACE,KAAK,CAAEC,KAAK,IAAKf,IAAI,IAAIe,KAAK,IAAIf,IAAI,CAAC;AAC5E","ignoreList":[]}
|
|
@@ -10,7 +10,6 @@ const documents = {
|
|
|
10
10
|
'\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 dataSource\n }\n totalCount\n updatedAt @include(if: $withTradingModes)\n }\n }\n': types.ResolveInstrumentsWithFiltersDocument
|
|
11
11
|
};
|
|
12
12
|
function graphql(source) {
|
|
13
|
-
|
|
14
|
-
return (_source = documents[source]) !== null && _source !== void 0 ? _source : {};
|
|
13
|
+
return documents[source] ?? {};
|
|
15
14
|
}
|
|
16
15
|
//# sourceMappingURL=gql.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql.js","names":["types","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","documents","ResolveInstrumentsWithFiltersDocument","graphql","source"
|
|
1
|
+
{"version":3,"file":"gql.js","names":["types","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","documents","ResolveInstrumentsWithFiltersDocument","graphql","source"],"sources":["../../../../src/gql/types/gql.ts"],"sourcesContent":["/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n */\nconst documents = {\n '\\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 dataSource\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n':\n types.ResolveInstrumentsWithFiltersDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n 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 dataSource\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\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 dataSource\\n }\\n totalCount\\n updatedAt @include(if: $withTradingModes)\\n }\\n }\\n'];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> =\n TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAmC,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAanC,MAAMkB,SAAS,GAAG;EAChB,sxBAAsxB,EACpxBtB,KAAK,CAACuB;AACV,CAAC;AAuBM,SAASC,OAAOA,CAACC,MAAc,EAAE;EACtC,OAAQH,SAAS,CAASG,MAAM,CAAC,IAAI,CAAC,CAAC;AACzC","ignoreList":[]}
|
|
@@ -29,7 +29,7 @@ const InstrumentsTableWidget = _ref => {
|
|
|
29
29
|
});
|
|
30
30
|
const liveRatesDataSource = dataSource === DataSource.All ? undefined : dataSource;
|
|
31
31
|
const divisionCode = priceType === PriceType.Division ? division : undefined;
|
|
32
|
-
const liveRates = !columns || columns
|
|
32
|
+
const liveRates = !columns || columns?.some(column => column === DataRecordType.BUY || column === DataRecordType.SELL || column === DataRecordType.DAILY_CHANGE || column === DataRecordType.SPREAD || column === DataRecordType.HIGH || column === DataRecordType.LOW) ? {
|
|
33
33
|
url: liveRatesUrl,
|
|
34
34
|
options: {
|
|
35
35
|
divisionCode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstrumentsTableWidget.js","names":["ApolloClient","InMemoryCache","DataRecordType","WidgetProvider","WidgetWrapper","React","DataSource","translations","Main","PriceType","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","Division","client","uri","cache","liveRatesDataSource","All","undefined","divisionCode","liveRates","some","column","BUY","SELL","DAILY_CHANGE","SPREAD","HIGH","LOW","url","options","multipleDataSources","createElement","linkArea","isLiveRatesDisabled"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport {\n DataRecordType,\n WidgetProvider,\n WidgetWrapper,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { DataSource } from '../gql/types/graphql';\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const liveRatesDataSource =\n dataSource === DataSource.All ? undefined : dataSource;\n\n const divisionCode = priceType === PriceType.Division ? division : undefined;\n\n const liveRates =\n !columns ||\n columns?.some(\n (column) =>\n column === DataRecordType.BUY ||\n column === DataRecordType.SELL ||\n column === DataRecordType.DAILY_CHANGE ||\n column === DataRecordType.SPREAD ||\n column === DataRecordType.HIGH ||\n column === DataRecordType.LOW\n )\n ? {\n url: liveRatesUrl,\n options: { divisionCode, dataSource: liveRatesDataSource },\n multipleDataSources: dataSource === DataSource.All,\n }\n : undefined;\n\n return (\n <WidgetProvider\n client={client}\n liveRates={liveRates}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isLiveRatesDisabled={liveRates === undefined}\n priceType={priceType}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SACEC,cAAc,EACdC,cAAc,EACdC,aAAa,QACR,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAAsCC,SAAS,QAAQ,SAAS;AAEhE,MAAMC,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGjB,SAAS,CAACkB;EACA,CAAC,GAAAhB,IAAA;EACvB,MAAMiB,MAAM,GAAG,IAAI5B,YAAY,CAAC;IAC9B6B,GAAG,EAAEd,UAAU;IACfe,KAAK,EAAE,IAAI7B,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAM8B,mBAAmB,GACvBN,UAAU,KAAKnB,UAAU,CAAC0B,GAAG,GAAGC,SAAS,GAAGR,UAAU;EAExD,MAAMS,YAAY,GAAGR,SAAS,KAAKjB,SAAS,CAACkB,QAAQ,GAAGf,QAAQ,GAAGqB,SAAS;EAE5E,MAAME,SAAS,GACb,CAACrB,OAAO,IACRA,OAAO,
|
|
1
|
+
{"version":3,"file":"InstrumentsTableWidget.js","names":["ApolloClient","InMemoryCache","DataRecordType","WidgetProvider","WidgetWrapper","React","DataSource","translations","Main","PriceType","InstrumentsTableWidget","_ref","division","instruments","columns","graphqlUrl","locale","theme","isParamError","logoLink","liveRatesUrl","assetClasses","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","priceType","Division","client","uri","cache","liveRatesDataSource","All","undefined","divisionCode","liveRates","some","column","BUY","SELL","DAILY_CHANGE","SPREAD","HIGH","LOW","url","options","multipleDataSources","createElement","linkArea","isLiveRatesDisabled"],"sources":["../../../src/InstrumentsTableWidget/InstrumentsTableWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport {\n DataRecordType,\n WidgetProvider,\n WidgetWrapper,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { DataSource } from '../gql/types/graphql';\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport { type InstrumentsTableConfig, PriceType } from './types';\n\nconst InstrumentsTableWidget = ({\n division,\n instruments,\n columns,\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n liveRatesUrl,\n assetClasses,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n priceType = PriceType.Division,\n}: InstrumentsTableConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n const liveRatesDataSource =\n dataSource === DataSource.All ? undefined : dataSource;\n\n const divisionCode = priceType === PriceType.Division ? division : undefined;\n\n const liveRates =\n !columns ||\n columns?.some(\n (column) =>\n column === DataRecordType.BUY ||\n column === DataRecordType.SELL ||\n column === DataRecordType.DAILY_CHANGE ||\n column === DataRecordType.SPREAD ||\n column === DataRecordType.HIGH ||\n column === DataRecordType.LOW\n )\n ? {\n url: liveRatesUrl,\n options: { divisionCode, dataSource: liveRatesDataSource },\n multipleDataSources: dataSource === DataSource.All,\n }\n : undefined;\n\n return (\n <WidgetProvider\n client={client}\n liveRates={liveRates}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main\n assetClasses={assetClasses}\n columns={columns}\n dataSource={dataSource}\n division={division}\n instruments={instruments}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n isLiveRatesDisabled={liveRates === undefined}\n priceType={priceType}\n recordsPerPage={recordsPerPage}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsTableWidget };\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,aAAa,QAAQ,gBAAgB;AAC5D,SACEC,cAAc,EACdC,cAAc,EACdC,aAAa,QACR,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAAsCC,SAAS,QAAQ,SAAS;AAEhE,MAAMC,sBAAsB,GAAGC,IAAA,IAgBD;EAAA,IAhBE;IAC9BC,QAAQ;IACRC,WAAW;IACXC,OAAO;IACPC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,yBAAyB;IACzBC,cAAc;IACdC,UAAU;IACVC,SAAS,GAAGjB,SAAS,CAACkB;EACA,CAAC,GAAAhB,IAAA;EACvB,MAAMiB,MAAM,GAAG,IAAI5B,YAAY,CAAC;IAC9B6B,GAAG,EAAEd,UAAU;IACfe,KAAK,EAAE,IAAI7B,aAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAM8B,mBAAmB,GACvBN,UAAU,KAAKnB,UAAU,CAAC0B,GAAG,GAAGC,SAAS,GAAGR,UAAU;EAExD,MAAMS,YAAY,GAAGR,SAAS,KAAKjB,SAAS,CAACkB,QAAQ,GAAGf,QAAQ,GAAGqB,SAAS;EAE5E,MAAME,SAAS,GACb,CAACrB,OAAO,IACRA,OAAO,EAAEsB,IAAI,CACVC,MAAM,IACLA,MAAM,KAAKnC,cAAc,CAACoC,GAAG,IAC7BD,MAAM,KAAKnC,cAAc,CAACqC,IAAI,IAC9BF,MAAM,KAAKnC,cAAc,CAACsC,YAAY,IACtCH,MAAM,KAAKnC,cAAc,CAACuC,MAAM,IAChCJ,MAAM,KAAKnC,cAAc,CAACwC,IAAI,IAC9BL,MAAM,KAAKnC,cAAc,CAACyC,GAC9B,CAAC,GACG;IACEC,GAAG,EAAExB,YAAY;IACjByB,OAAO,EAAE;MAAEX,YAAY;MAAET,UAAU,EAAEM;IAAoB,CAAC;IAC1De,mBAAmB,EAAErB,UAAU,KAAKnB,UAAU,CAAC0B;EACjD,CAAC,GACDC,SAAS;EAEf,OACE5B,KAAA,CAAA0C,aAAA,CAAC5C,cAAc;IACbyB,MAAM,EAAEA,MAAO;IACfO,SAAS,EAAEA,SAAU;IACrBnB,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbV,YAAY,EAAEA;EAAa,GAE3BF,KAAA,CAAA0C,aAAA,CAAC3C,aAAa;IACZc,YAAY,EAAEA,YAAa;IAC3B8B,QAAQ,EAAC,MAAM;IACf7B,QAAQ,EAAEA;EAAS,GAEnBd,KAAA,CAAA0C,aAAA,CAACvC,IAAI;IACHa,YAAY,EAAEA,YAAa;IAC3BP,OAAO,EAAEA,OAAQ;IACjBW,UAAU,EAAEA,UAAW;IACvBb,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBS,yBAAyB,EAAEA,yBAA0B;IACrDC,yBAAyB,EAAEA,yBAA0B;IACrD0B,mBAAmB,EAAEd,SAAS,KAAKF,SAAU;IAC7CP,SAAS,EAAEA,SAAU;IACrBF,cAAc,EAAEA;EAAe,CAChC,CACY,CACD,CAAC;AAErB,CAAC;AAED,SAASd,sBAAsB","ignoreList":[]}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
1
|
import { useQuery } from '@apollo/client';
|
|
7
2
|
import { DataRecordType, getHeaderConfig, LastUpdated, Pagination, Size, TableWidget, useLayoutProvider, useLiveRatesQuery } from '@oanda/labs-widget-common';
|
|
8
3
|
import { useLocale } from '@oanda/mono-i18n';
|
|
@@ -16,7 +11,6 @@ import { DEFAULT_COLUMNS, INSTRUMENT_TOOLTIP_ID, RAW_PRICE_DIVISION } from './co
|
|
|
16
11
|
import { PriceType } from './types';
|
|
17
12
|
import { groupNamesBySource } from './utils';
|
|
18
13
|
const Main = _ref => {
|
|
19
|
-
var _headerConfig$instrum, _data$resolveInstrume2;
|
|
20
14
|
let {
|
|
21
15
|
instruments = [],
|
|
22
16
|
division,
|
|
@@ -67,16 +61,15 @@ const Main = _ref => {
|
|
|
67
61
|
errorPolicy: 'all'
|
|
68
62
|
});
|
|
69
63
|
useEffect(() => {
|
|
70
|
-
var _data$resolveInstrume;
|
|
71
64
|
if (loading) {
|
|
72
65
|
setRecords(new Array(recordsPerPage).fill({}));
|
|
73
66
|
}
|
|
74
|
-
if (!loading && data
|
|
67
|
+
if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {
|
|
75
68
|
const newRecords = data.resolveInstrumentsWithFilters.instruments.map(record => ({
|
|
76
|
-
instrument:
|
|
77
|
-
displayName:
|
|
78
|
-
dataSource: record
|
|
79
|
-
tradeMode: lang(tradeModeLabels[
|
|
69
|
+
instrument: record?.name || '',
|
|
70
|
+
displayName: record?.displayName || '',
|
|
71
|
+
dataSource: record?.dataSource,
|
|
72
|
+
tradeMode: lang(tradeModeLabels[record?.tradeMode || ''])
|
|
80
73
|
}));
|
|
81
74
|
setRecords(newRecords);
|
|
82
75
|
setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);
|
|
@@ -123,7 +116,8 @@ const Main = _ref => {
|
|
|
123
116
|
recordsPerPage: recordsPerPage,
|
|
124
117
|
totalRecords: totalRecords,
|
|
125
118
|
onPageChange: numb => {
|
|
126
|
-
setQueryVariables(prev =>
|
|
119
|
+
setQueryVariables(prev => ({
|
|
120
|
+
...prev,
|
|
127
121
|
offset: numb * recordsPerPage
|
|
128
122
|
}));
|
|
129
123
|
}
|
|
@@ -139,14 +133,16 @@ const Main = _ref => {
|
|
|
139
133
|
isAssetClassFilterEnabled: isAssetClassFilterEnabled,
|
|
140
134
|
isInstrumentSearchEnabled: isInstrumentSearchEnabled,
|
|
141
135
|
onAssetClassChange: assetClass => {
|
|
142
|
-
setQueryVariables(prev =>
|
|
136
|
+
setQueryVariables(prev => ({
|
|
137
|
+
...prev,
|
|
143
138
|
offset: 0,
|
|
144
139
|
searchPattern: '',
|
|
145
140
|
assetClass: assetClass[0] === 'ALL' ? assetClasses || [] : assetClass
|
|
146
141
|
}));
|
|
147
142
|
},
|
|
148
143
|
onSearchChange: searchPattern => {
|
|
149
|
-
setQueryVariables(prev =>
|
|
144
|
+
setQueryVariables(prev => ({
|
|
145
|
+
...prev,
|
|
150
146
|
offset: 0,
|
|
151
147
|
searchPattern
|
|
152
148
|
}));
|
|
@@ -156,7 +152,7 @@ const Main = _ref => {
|
|
|
156
152
|
count: totalRecords,
|
|
157
153
|
hasError: showError,
|
|
158
154
|
headerColumns: getHeaderConfig(columns, headerConfig),
|
|
159
|
-
instrumentColumnWidth:
|
|
155
|
+
instrumentColumnWidth: headerConfig.instrument?.additionalStyles.minWidth,
|
|
160
156
|
isLoading: loading,
|
|
161
157
|
pageNumber: pageNumber,
|
|
162
158
|
records: records,
|
|
@@ -168,7 +164,7 @@ const Main = _ref => {
|
|
|
168
164
|
className: "lw-mt-2 lw-h-8"
|
|
169
165
|
}, React.createElement(LastUpdated, {
|
|
170
166
|
labelCallback: lang,
|
|
171
|
-
timestamp: data
|
|
167
|
+
timestamp: data?.resolveInstrumentsWithFilters?.updatedAt
|
|
172
168
|
})));
|
|
173
169
|
};
|
|
174
170
|
export { Main };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["useQuery","DataRecordType","getHeaderConfig","LastUpdated","Pagination","Size","TableWidget","useLayoutProvider","useLiveRatesQuery","useLocale","React","useEffect","useRef","useState","useEventListener","resolveInstrumentsWithFilters","DataSource","Division","TradeMode","Filters","assetClassLabels","headerConfigs","tradeModeLabels","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","RAW_PRICE_DIVISION","PriceType","groupNamesBySource","Main","_ref","_headerConfig$instrum","_data$resolveInstrume2","instruments","division","assetClasses","columns","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","priceType","documentRef","document","size","isDesktop","DESKTOP","isTradingMode","includes","TRADE_MODE","SYMBOL","lang","target","setQuery","closeQuery","records","setRecords","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","variables","fetchPolicy","errorPolicy","_data$resolveInstrume","newRecords","map","record","instrument","name","displayName","tradeMode","totalCount","setupQueries","recordsData","v20instruments","mt5instruments","Mt5","Oc","V20","showError","onVisibilityChange","current","visibilityState","headerConfig","mobile","length","longInstruments","normal","createElement","Fragment","PaginationComponent","currentPage","disabled","onPageChange","numb","prev","_objectSpread","TabsComponent","assetClassOptions","id","label","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","viewType","className","labelCallback","timestamp","updatedAt"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n DataSource,\n Division,\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport {\n DEFAULT_COLUMNS,\n INSTRUMENT_TOOLTIP_ID,\n RAW_PRICE_DIVISION,\n} from './constant';\nimport { type MainProps, PriceType } from './types';\nimport { groupNamesBySource } from './utils';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n priceType = PriceType.Division,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n dataSource: record?.dataSource,\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n const setupQueries = (recordsData: DataRecord[]) => {\n const { v20instruments, mt5instruments } = groupNamesBySource(recordsData);\n\n if (mt5instruments[0]) {\n setQuery({\n instruments: mt5instruments,\n dataSource: DataSource.Mt5,\n division: priceType === PriceType.Division ? undefined : Division.Oc,\n });\n }\n if (v20instruments[0]) {\n setQuery({\n instruments: v20instruments,\n dataSource: DataSource.V20,\n division:\n priceType === PriceType.Division ? undefined : RAW_PRICE_DIVISION,\n });\n }\n };\n\n useEffect(() => {\n setupQueries(records);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n setupQueries(records);\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Main.js","names":["useQuery","DataRecordType","getHeaderConfig","LastUpdated","Pagination","Size","TableWidget","useLayoutProvider","useLiveRatesQuery","useLocale","React","useEffect","useRef","useState","useEventListener","resolveInstrumentsWithFilters","DataSource","Division","TradeMode","Filters","assetClassLabels","headerConfigs","tradeModeLabels","DEFAULT_COLUMNS","INSTRUMENT_TOOLTIP_ID","RAW_PRICE_DIVISION","PriceType","groupNamesBySource","Main","_ref","instruments","division","assetClasses","columns","isAssetClassFilterEnabled","isInstrumentSearchEnabled","recordsPerPage","dataSource","isLiveRatesDisabled","priceType","documentRef","document","size","isDesktop","DESKTOP","isTradingMode","includes","TRADE_MODE","SYMBOL","lang","target","setQuery","closeQuery","records","setRecords","Array","fill","totalRecords","setTotalRecords","queryVariables","setQueryVariables","count","searchPattern","offset","assetClass","withTradingModes","tradeModes","TradeLongonly","TradeShortonly","TradeCloseonly","undefined","pageNumber","Math","floor","data","error","loading","variables","fetchPolicy","errorPolicy","newRecords","map","record","instrument","name","displayName","tradeMode","totalCount","setupQueries","recordsData","v20instruments","mt5instruments","Mt5","Oc","V20","showError","onVisibilityChange","current","visibilityState","headerConfig","mobile","length","longInstruments","normal","createElement","Fragment","PaginationComponent","currentPage","disabled","onPageChange","numb","prev","TabsComponent","assetClassOptions","id","label","ALL","sort","a","b","localeCompare","onAssetClassChange","onSearchChange","activeColumns","hasError","headerColumns","instrumentColumnWidth","additionalStyles","minWidth","isLoading","testId","toolTipId","viewType","className","labelCallback","timestamp","updatedAt"],"sources":["../../../src/InstrumentsTableWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport type { DataRecord } from '@oanda/labs-widget-common';\nimport {\n DataRecordType,\n getHeaderConfig,\n LastUpdated,\n Pagination,\n Size,\n TableWidget,\n useLayoutProvider,\n useLiveRatesQuery,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport { resolveInstrumentsWithFilters } from '../gql/resolveInstrumentsWithFilters';\nimport type { AssetClassName } from '../gql/types/graphql';\nimport {\n DataSource,\n Division,\n type ResolveInstrumentsWithFiltersQuery,\n type ResolveInstrumentsWithFiltersQueryVariables,\n TradeMode,\n} from '../gql/types/graphql';\nimport { Filters } from './components';\nimport { assetClassLabels, headerConfigs, tradeModeLabels } from './config';\nimport {\n DEFAULT_COLUMNS,\n INSTRUMENT_TOOLTIP_ID,\n RAW_PRICE_DIVISION,\n} from './constant';\nimport { type MainProps, PriceType } from './types';\nimport { groupNamesBySource } from './utils';\n\nconst Main = ({\n instruments = [],\n division,\n assetClasses,\n columns = DEFAULT_COLUMNS,\n isAssetClassFilterEnabled,\n isInstrumentSearchEnabled,\n recordsPerPage,\n dataSource,\n isLiveRatesDisabled,\n priceType = PriceType.Division,\n}: MainProps) => {\n const documentRef = useRef<Document>(document);\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n const isTradingMode =\n columns.includes(DataRecordType.TRADE_MODE) &&\n columns.includes(DataRecordType.SYMBOL);\n\n const { lang } = useLocale();\n const { target, setQuery, closeQuery } =\n useLiveRatesQuery(isLiveRatesDisabled);\n\n const [records, setRecords] = useState<DataRecord[]>(\n new Array(recordsPerPage || 10).fill({})\n );\n\n const [totalRecords, setTotalRecords] = useState<number>(0);\n\n const [queryVariables, setQueryVariables] =\n useState<ResolveInstrumentsWithFiltersQueryVariables>({\n division,\n count: recordsPerPage,\n searchPattern: '',\n offset: 0,\n assetClass: assetClasses || [],\n instruments,\n dataSource,\n withTradingModes: isTradingMode,\n tradeModes: isTradingMode\n ? [\n TradeMode.TradeLongonly,\n TradeMode.TradeShortonly,\n TradeMode.TradeCloseonly,\n ]\n : undefined,\n });\n\n const pageNumber = queryVariables.offset\n ? Math.floor(queryVariables.offset / (recordsPerPage || 1))\n : 0;\n\n const { data, error, loading } = useQuery<\n ResolveInstrumentsWithFiltersQuery,\n ResolveInstrumentsWithFiltersQueryVariables\n >(resolveInstrumentsWithFilters, {\n variables: queryVariables,\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (loading) {\n setRecords(new Array(recordsPerPage).fill({}));\n }\n if (!loading && data?.resolveInstrumentsWithFilters?.instruments) {\n const newRecords = data.resolveInstrumentsWithFilters.instruments.map(\n (record) => ({\n instrument: record?.name || '',\n displayName: record?.displayName || '',\n dataSource: record?.dataSource,\n tradeMode: lang(\n tradeModeLabels[\n (record?.tradeMode as keyof typeof tradeModeLabels) || ''\n ]\n ),\n })\n );\n setRecords(newRecords);\n setTotalRecords(data.resolveInstrumentsWithFilters.totalCount);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loading, data]);\n\n const setupQueries = (recordsData: DataRecord[]) => {\n const { v20instruments, mt5instruments } = groupNamesBySource(recordsData);\n\n if (mt5instruments[0]) {\n setQuery({\n instruments: mt5instruments,\n dataSource: DataSource.Mt5,\n division: priceType === PriceType.Division ? undefined : Division.Oc,\n });\n }\n if (v20instruments[0]) {\n setQuery({\n instruments: v20instruments,\n dataSource: DataSource.V20,\n division:\n priceType === PriceType.Division ? undefined : RAW_PRICE_DIVISION,\n });\n }\n };\n\n useEffect(() => {\n setupQueries(records);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [records]);\n\n const showError = (!loading && !!error) || (!loading && !data);\n\n const onVisibilityChange = () => {\n if (documentRef.current.visibilityState === 'hidden') {\n closeQuery();\n }\n if (documentRef.current.visibilityState === 'visible') {\n setupQueries(records);\n }\n };\n\n useEventListener('visibilitychange', onVisibilityChange, documentRef);\n\n const headerConfig = !isDesktop\n ? headerConfigs.mobile\n : columns.length < 4\n ? headerConfigs.longInstruments\n : headerConfigs.normal;\n\n return (\n <>\n <TableWidget\n PaginationComponent={\n records.length > 0 && recordsPerPage ? (\n <Pagination\n currentPage={pageNumber}\n disabled={loading}\n recordsPerPage={recordsPerPage}\n totalRecords={totalRecords}\n onPageChange={(numb) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: numb * recordsPerPage,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n TabsComponent={\n isInstrumentSearchEnabled || isAssetClassFilterEnabled ? (\n <Filters\n assetClassOptions={[\n {\n id: 'ALL',\n label: lang(assetClassLabels.ALL),\n },\n ...(assetClasses || [])\n .map((assetClass) => ({\n id: assetClass,\n label: lang(assetClassLabels[assetClass]),\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]}\n isAssetClassFilterEnabled={isAssetClassFilterEnabled}\n isInstrumentSearchEnabled={isInstrumentSearchEnabled}\n onAssetClassChange={(assetClass) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern: '',\n assetClass:\n assetClass[0] === 'ALL'\n ? assetClasses || []\n : (assetClass as AssetClassName[]),\n }));\n }}\n onSearchChange={(searchPattern) => {\n setQueryVariables((prev) => ({\n ...prev,\n offset: 0,\n searchPattern,\n }));\n }}\n />\n ) : (\n <></>\n )\n }\n activeColumns={columns}\n count={totalRecords}\n hasError={showError}\n headerColumns={getHeaderConfig(columns, headerConfig)}\n instrumentColumnWidth={\n headerConfig.instrument?.additionalStyles.minWidth\n }\n isLoading={loading}\n pageNumber={pageNumber}\n records={records}\n target={target}\n testId=\"instruments-table-wrapper\"\n toolTipId={INSTRUMENT_TOOLTIP_ID}\n viewType=\"table\"\n />\n {isTradingMode && (\n <div className=\"lw-mt-2 lw-h-8\">\n <LastUpdated\n labelCallback={lang}\n timestamp={data?.resolveInstrumentsWithFilters?.updatedAt}\n />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
1
|
import { DataRecordType } from '@oanda/labs-widget-common';
|
|
7
2
|
import { AssetClassName, TradeMode } from '../gql/types/graphql';
|
|
8
3
|
const tradeModeLabels = {
|
|
@@ -85,7 +80,8 @@ const normal = {
|
|
|
85
80
|
}
|
|
86
81
|
}
|
|
87
82
|
};
|
|
88
|
-
const longInstruments =
|
|
83
|
+
const longInstruments = {
|
|
84
|
+
...normal,
|
|
89
85
|
[DataRecordType.INSTRUMENT]: {
|
|
90
86
|
displayName: 'instrument',
|
|
91
87
|
additionalStyles: {
|
|
@@ -93,8 +89,9 @@ const longInstruments = _objectSpread(_objectSpread({}, normal), {}, {
|
|
|
93
89
|
minWidth: '250px'
|
|
94
90
|
}
|
|
95
91
|
}
|
|
96
|
-
}
|
|
97
|
-
const mobile =
|
|
92
|
+
};
|
|
93
|
+
const mobile = {
|
|
94
|
+
...normal,
|
|
98
95
|
[DataRecordType.INSTRUMENT]: {
|
|
99
96
|
displayName: 'instrument',
|
|
100
97
|
additionalStyles: {
|
|
@@ -102,7 +99,7 @@ const mobile = _objectSpread(_objectSpread({}, normal), {}, {
|
|
|
102
99
|
minWidth: '150px'
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
|
-
}
|
|
102
|
+
};
|
|
106
103
|
const headerConfigs = {
|
|
107
104
|
normal,
|
|
108
105
|
longInstruments,
|