@oanda/labs-order-book-widget 1.0.70 → 1.0.72
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 +548 -0
- package/dist/main/OrderBookWidget/ChartWithData.js +62 -0
- package/dist/main/OrderBookWidget/ChartWithData.js.map +1 -0
- package/dist/main/OrderBookWidget/Main.js +46 -0
- package/dist/main/OrderBookWidget/Main.js.map +1 -0
- package/dist/main/OrderBookWidget/OrderBookWidget.js +2 -2
- package/dist/main/OrderBookWidget/OrderBookWidget.js.map +1 -1
- package/dist/main/OrderBookWidget/components/Chart/Chart.js +16 -7
- package/dist/main/OrderBookWidget/components/Chart/Chart.js.map +1 -1
- package/dist/main/OrderBookWidget/components/Chart/constants.js +5 -3
- package/dist/main/OrderBookWidget/components/Chart/constants.js.map +1 -1
- package/dist/main/OrderBookWidget/components/Chart/formatters.js +10 -4
- package/dist/main/OrderBookWidget/components/Chart/formatters.js.map +1 -1
- package/dist/main/OrderBookWidget/components/Chart/getOption.js +81 -36
- package/dist/main/OrderBookWidget/components/Chart/getOption.js.map +1 -1
- package/dist/main/OrderBookWidget/components/Chart/types.js.map +1 -1
- package/dist/main/OrderBookWidget/config.js +69 -1
- package/dist/main/OrderBookWidget/config.js.map +1 -1
- package/dist/main/OrderBookWidget/types.js +20 -0
- package/dist/main/OrderBookWidget/types.js.map +1 -1
- package/dist/main/translations/sources/en.json +3 -0
- package/dist/main/translations/sources/zh_TW.json +3 -0
- package/dist/module/OrderBookWidget/ChartWithData.js +55 -0
- package/dist/module/OrderBookWidget/ChartWithData.js.map +1 -0
- package/dist/module/OrderBookWidget/Main.js +38 -0
- package/dist/module/OrderBookWidget/Main.js.map +1 -0
- package/dist/module/OrderBookWidget/OrderBookWidget.js +2 -2
- package/dist/module/OrderBookWidget/OrderBookWidget.js.map +1 -1
- package/dist/module/OrderBookWidget/components/Chart/Chart.js +17 -8
- package/dist/module/OrderBookWidget/components/Chart/Chart.js.map +1 -1
- package/dist/module/OrderBookWidget/components/Chart/constants.js +4 -2
- package/dist/module/OrderBookWidget/components/Chart/constants.js.map +1 -1
- package/dist/module/OrderBookWidget/components/Chart/formatters.js +10 -4
- package/dist/module/OrderBookWidget/components/Chart/formatters.js.map +1 -1
- package/dist/module/OrderBookWidget/components/Chart/getOption.js +80 -35
- package/dist/module/OrderBookWidget/components/Chart/getOption.js.map +1 -1
- package/dist/module/OrderBookWidget/components/Chart/types.js.map +1 -1
- package/dist/module/OrderBookWidget/config.js +69 -1
- package/dist/module/OrderBookWidget/config.js.map +1 -1
- package/dist/module/OrderBookWidget/types.js +19 -1
- package/dist/module/OrderBookWidget/types.js.map +1 -1
- package/dist/module/translations/sources/en.json +3 -0
- package/dist/module/translations/sources/zh_TW.json +3 -0
- package/dist/types/OrderBookWidget/ChartWithData.d.ts +4 -0
- package/dist/types/OrderBookWidget/Main.d.ts +4 -0
- package/dist/types/OrderBookWidget/components/Chart/Chart.d.ts +1 -1
- package/dist/types/OrderBookWidget/components/Chart/constants.d.ts +4 -2
- package/dist/types/OrderBookWidget/components/Chart/getOption.d.ts +16 -1
- package/dist/types/OrderBookWidget/components/Chart/types.d.ts +11 -1
- package/dist/types/OrderBookWidget/config.d.ts +7 -1
- package/dist/types/OrderBookWidget/types.d.ts +26 -3
- package/package.json +3 -3
- package/src/OrderBookWidget/ChartWithData.tsx +78 -0
- package/src/OrderBookWidget/Main.tsx +40 -0
- package/src/OrderBookWidget/OrderBookWidget.tsx +2 -2
- package/src/OrderBookWidget/components/Chart/Chart.tsx +12 -6
- package/src/OrderBookWidget/components/Chart/constants.ts +4 -2
- package/src/OrderBookWidget/components/Chart/formatters.ts +6 -4
- package/src/OrderBookWidget/components/Chart/getOption.ts +93 -39
- package/src/OrderBookWidget/components/Chart/types.ts +11 -3
- package/src/OrderBookWidget/config.ts +70 -1
- package/src/OrderBookWidget/types.ts +28 -3
- package/src/translations/sources/en.json +3 -0
- package/src/translations/sources/zh_TW.json +3 -0
- package/test/Main.test.tsx +129 -0
- package/test/chartOptions.test.ts +20 -0
- package/dist/main/OrderBookWidget/Widget.js +0 -61
- package/dist/main/OrderBookWidget/Widget.js.map +0 -1
- package/dist/module/OrderBookWidget/Widget.js +0 -53
- package/dist/module/OrderBookWidget/Widget.js.map +0 -1
- package/dist/types/OrderBookWidget/Widget.d.ts +0 -4
- package/src/OrderBookWidget/Widget.tsx +0 -62
- package/test/Widget.test.tsx +0 -71
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { useQuery } from '@apollo/client';
|
|
3
|
-
import { ChartError, Spinner, SpinnerSize, Tabs } from '@oanda/labs-widget-common';
|
|
4
|
-
import { useLocale } from '@oanda/mono-i18n';
|
|
5
|
-
import { getOrderPositionBooks } from '../gql/getOrderPositionBooks';
|
|
6
|
-
import { BookType } from '../gql/types/graphql';
|
|
7
|
-
import { Chart } from './components/Chart/Chart';
|
|
8
|
-
import { navigationConfig } from './config';
|
|
9
|
-
const Widget = _ref => {
|
|
10
|
-
let {
|
|
11
|
-
instrument
|
|
12
|
-
} = _ref;
|
|
13
|
-
const [bookType, setBookType] = useState(BookType.Order);
|
|
14
|
-
const {
|
|
15
|
-
lang
|
|
16
|
-
} = useLocale();
|
|
17
|
-
const {
|
|
18
|
-
loading,
|
|
19
|
-
data,
|
|
20
|
-
error
|
|
21
|
-
} = useQuery(getOrderPositionBooks, {
|
|
22
|
-
variables: {
|
|
23
|
-
instrument,
|
|
24
|
-
bookType,
|
|
25
|
-
recentHours: 1
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const isError = !loading && !data || !!error;
|
|
29
|
-
return React.createElement("div", {
|
|
30
|
-
"data-testid": "order-book-widget",
|
|
31
|
-
className: "lw-p-4 lw-text-sm lw-tracking-normal lw-text-black"
|
|
32
|
-
}, React.createElement(Tabs, {
|
|
33
|
-
activeTab: bookType,
|
|
34
|
-
handleClick: e => setBookType(e.currentTarget.value),
|
|
35
|
-
labelCallback: lang,
|
|
36
|
-
items: navigationConfig
|
|
37
|
-
}), React.createElement("div", {
|
|
38
|
-
className: "lw-relative lw-h-[450px] lw-w-full"
|
|
39
|
-
}, isError && React.createElement("div", {
|
|
40
|
-
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary"
|
|
41
|
-
}, React.createElement(ChartError, null)), loading && React.createElement("div", {
|
|
42
|
-
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary"
|
|
43
|
-
}, React.createElement(Spinner, {
|
|
44
|
-
size: SpinnerSize.lg
|
|
45
|
-
})), data && React.createElement("div", {
|
|
46
|
-
className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full"
|
|
47
|
-
}, React.createElement(Chart, {
|
|
48
|
-
data: data,
|
|
49
|
-
isOrderBook: bookType === BookType.Order
|
|
50
|
-
}))));
|
|
51
|
-
};
|
|
52
|
-
export { Widget };
|
|
53
|
-
//# sourceMappingURL=Widget.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Widget.js","names":["React","useState","useQuery","ChartError","Spinner","SpinnerSize","Tabs","useLocale","getOrderPositionBooks","BookType","Chart","navigationConfig","Widget","_ref","instrument","bookType","setBookType","Order","lang","loading","data","error","variables","recentHours","isError","createElement","className","activeTab","handleClick","e","currentTarget","value","labelCallback","items","size","lg","isOrderBook"],"sources":["../../../src/OrderBookWidget/Widget.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { useQuery } from '@apollo/client';\nimport {\n ChartError, Spinner, SpinnerSize, Tabs,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { WidgetProps } from './types';\nimport { getOrderPositionBooks } from '../gql/getOrderPositionBooks';\nimport { GetOrderPositionBooksQuery, GetOrderPositionBooksQueryVariables, BookType } from '../gql/types/graphql';\nimport { Chart } from './components/Chart/Chart';\nimport { navigationConfig } from './config';\n\nconst Widget = ({\n instrument,\n}: WidgetProps) => {\n const [bookType, setBookType] = useState(BookType.Order);\n const { lang } = useLocale();\n\n const { loading, data, error } = useQuery<\n GetOrderPositionBooksQuery,\n GetOrderPositionBooksQueryVariables\n >(getOrderPositionBooks, {\n variables: {\n instrument,\n bookType,\n recentHours: 1,\n },\n });\n\n const isError = (!loading && !data) || !!error;\n\n return (\n <div data-testid=\"order-book-widget\" className=\"lw-p-4 lw-text-sm lw-tracking-normal lw-text-black\">\n <Tabs\n activeTab={bookType}\n handleClick={(e) => setBookType(e.currentTarget.value as BookType)}\n labelCallback={lang}\n items={navigationConfig}\n />\n {/* @todo: chart height */}\n <div className=\"lw-relative lw-h-[450px] lw-w-full\">\n {isError && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary\">\n <ChartError />\n </div>\n )}\n {loading && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data} isOrderBook={bookType === BookType.Order} />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Widget };\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SACEC,UAAU,EAAEC,OAAO,EAAEC,WAAW,EAAEC,IAAI,QACjC,2BAA2B;AAClC,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,SAASC,qBAAqB,QAAQ,8BAA8B;AACpE,SAA0EC,QAAQ,QAAQ,sBAAsB;AAChH,SAASC,KAAK,QAAQ,0BAA0B;AAChD,SAASC,gBAAgB,QAAQ,UAAU;AAE3C,MAAMC,MAAM,GAAGC,IAAA,IAEI;EAAA,IAFH;IACdC;EACW,CAAC,GAAAD,IAAA;EACZ,MAAM,CAACE,QAAQ,EAAEC,WAAW,CAAC,GAAGf,QAAQ,CAACQ,QAAQ,CAACQ,KAAK,CAAC;EACxD,MAAM;IAAEC;EAAK,CAAC,GAAGX,SAAS,CAAC,CAAC;EAE5B,MAAM;IAAEY,OAAO;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAGnB,QAAQ,CAGvCM,qBAAqB,EAAE;IACvBc,SAAS,EAAE;MACTR,UAAU;MACVC,QAAQ;MACRQ,WAAW,EAAE;IACf;EACF,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAI,CAACL,OAAO,IAAI,CAACC,IAAI,IAAK,CAAC,CAACC,KAAK;EAE9C,OACErB,KAAA,CAAAyB,aAAA;IAAK,eAAY,mBAAmB;IAACC,SAAS,EAAC;EAAoD,GACjG1B,KAAA,CAAAyB,aAAA,CAACnB,IAAI;IACHqB,SAAS,EAAEZ,QAAS;IACpBa,WAAW,EAAGC,CAAC,IAAKb,WAAW,CAACa,CAAC,CAACC,aAAa,CAACC,KAAiB,CAAE;IACnEC,aAAa,EAAEd,IAAK;IACpBe,KAAK,EAAEtB;EAAiB,CACzB,CAAC,EAEFX,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAC;EAAoC,GAChDF,OAAO,IACNxB,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAC;EAAiJ,GAC9J1B,KAAA,CAAAyB,aAAA,CAACtB,UAAU,MAAE,CACV,CACN,EACAgB,OAAO,IACNnB,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAC;EAAiJ,GAC9J1B,KAAA,CAAAyB,aAAA,CAACrB,OAAO;IAAC8B,IAAI,EAAE7B,WAAW,CAAC8B;EAAG,CAAE,CAC7B,CACN,EACAf,IAAI,IACHpB,KAAA,CAAAyB,aAAA;IAAKC,SAAS,EAAC;EAA4D,GACzE1B,KAAA,CAAAyB,aAAA,CAACf,KAAK;IAACU,IAAI,EAAEA,IAAK;IAACgB,WAAW,EAAErB,QAAQ,KAAKN,QAAQ,CAACQ;EAAM,CAAE,CAC3D,CAEJ,CACF,CAAC;AAEV,CAAC;AAED,SAASL,MAAM"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { useQuery } from '@apollo/client';
|
|
3
|
-
import {
|
|
4
|
-
ChartError, Spinner, SpinnerSize, Tabs,
|
|
5
|
-
} from '@oanda/labs-widget-common';
|
|
6
|
-
import { useLocale } from '@oanda/mono-i18n';
|
|
7
|
-
import { WidgetProps } from './types';
|
|
8
|
-
import { getOrderPositionBooks } from '../gql/getOrderPositionBooks';
|
|
9
|
-
import { GetOrderPositionBooksQuery, GetOrderPositionBooksQueryVariables, BookType } from '../gql/types/graphql';
|
|
10
|
-
import { Chart } from './components/Chart/Chart';
|
|
11
|
-
import { navigationConfig } from './config';
|
|
12
|
-
|
|
13
|
-
const Widget = ({
|
|
14
|
-
instrument,
|
|
15
|
-
}: WidgetProps) => {
|
|
16
|
-
const [bookType, setBookType] = useState(BookType.Order);
|
|
17
|
-
const { lang } = useLocale();
|
|
18
|
-
|
|
19
|
-
const { loading, data, error } = useQuery<
|
|
20
|
-
GetOrderPositionBooksQuery,
|
|
21
|
-
GetOrderPositionBooksQueryVariables
|
|
22
|
-
>(getOrderPositionBooks, {
|
|
23
|
-
variables: {
|
|
24
|
-
instrument,
|
|
25
|
-
bookType,
|
|
26
|
-
recentHours: 1,
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const isError = (!loading && !data) || !!error;
|
|
31
|
-
|
|
32
|
-
return (
|
|
33
|
-
<div data-testid="order-book-widget" className="lw-p-4 lw-text-sm lw-tracking-normal lw-text-black">
|
|
34
|
-
<Tabs
|
|
35
|
-
activeTab={bookType}
|
|
36
|
-
handleClick={(e) => setBookType(e.currentTarget.value as BookType)}
|
|
37
|
-
labelCallback={lang}
|
|
38
|
-
items={navigationConfig}
|
|
39
|
-
/>
|
|
40
|
-
{/* @todo: chart height */}
|
|
41
|
-
<div className="lw-relative lw-h-[450px] lw-w-full">
|
|
42
|
-
{isError && (
|
|
43
|
-
<div className="lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary">
|
|
44
|
-
<ChartError />
|
|
45
|
-
</div>
|
|
46
|
-
)}
|
|
47
|
-
{loading && (
|
|
48
|
-
<div className="lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary">
|
|
49
|
-
<Spinner size={SpinnerSize.lg} />
|
|
50
|
-
</div>
|
|
51
|
-
)}
|
|
52
|
-
{data && (
|
|
53
|
-
<div className="lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full">
|
|
54
|
-
<Chart data={data} isOrderBook={bookType === BookType.Order} />
|
|
55
|
-
</div>
|
|
56
|
-
)}
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export { Widget };
|
package/test/Widget.test.tsx
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @jest-environment jsdom
|
|
3
|
-
*/
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import { render } from '@testing-library/react';
|
|
6
|
-
import { MockedProvider } from '@apollo/client/testing';
|
|
7
|
-
import { Widget } from '../src/OrderBookWidget/Widget';
|
|
8
|
-
import { getOrderPositionBooks } from '../src/gql/getOrderPositionBooks';
|
|
9
|
-
import { BookType } from '../src/gql/types/graphql';
|
|
10
|
-
|
|
11
|
-
const mocks = [
|
|
12
|
-
{
|
|
13
|
-
request: {
|
|
14
|
-
query: getOrderPositionBooks,
|
|
15
|
-
variables: {
|
|
16
|
-
instrument: 'EUR_USD',
|
|
17
|
-
bookType: BookType.Order,
|
|
18
|
-
recentHours: 1,
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
result: {
|
|
22
|
-
data: {
|
|
23
|
-
orderPositionBooks: [
|
|
24
|
-
{
|
|
25
|
-
bucketWidth: '0.0005',
|
|
26
|
-
price: '0.8',
|
|
27
|
-
buckets: [
|
|
28
|
-
{
|
|
29
|
-
price: '0.02',
|
|
30
|
-
longCountPercent: '0.0582',
|
|
31
|
-
shortCountPercent: '0.0',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
price: '0.7',
|
|
35
|
-
longCountPercent: '0.0582',
|
|
36
|
-
shortCountPercent: '0.0',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
price: '0.9925',
|
|
40
|
-
longCountPercent: '0.0582',
|
|
41
|
-
shortCountPercent: '0.0',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
price: '1.0',
|
|
45
|
-
longCountPercent: '0.1163',
|
|
46
|
-
shortCountPercent: '0.0',
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
],
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
];
|
|
56
|
-
|
|
57
|
-
jest.mock('../src/OrderBookWidget/components/Chart/Chart', () => ({
|
|
58
|
-
Chart: () => <p data-testid="chart-test-component">Chart</p>,
|
|
59
|
-
}));
|
|
60
|
-
|
|
61
|
-
describe('Widget component', () => {
|
|
62
|
-
it('should render widget component', async () => {
|
|
63
|
-
const { findByTestId } = render(
|
|
64
|
-
<MockedProvider mocks={mocks}>
|
|
65
|
-
<Widget instrument="EUR_USD" />
|
|
66
|
-
</MockedProvider>,
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
expect(await findByTestId('order-book-widget')).toBeInTheDocument();
|
|
70
|
-
});
|
|
71
|
-
});
|