@oanda/labs-order-book-widget 1.0.0
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 +8 -0
- package/dist/main/OrderBookWidget/Main.js +70 -0
- package/dist/main/OrderBookWidget/Main.js.map +1 -0
- package/dist/main/OrderBookWidget/OrderBookWidget.js +23 -0
- package/dist/main/OrderBookWidget/OrderBookWidget.js.map +1 -0
- package/dist/main/OrderBookWidget/components/Chart/Chart.js +67 -0
- package/dist/main/OrderBookWidget/components/Chart/Chart.js.map +1 -0
- package/dist/main/OrderBookWidget/components/Chart/config.js +106 -0
- package/dist/main/OrderBookWidget/components/Chart/config.js.map +1 -0
- package/dist/main/OrderBookWidget/components/Chart/utils.js +21 -0
- package/dist/main/OrderBookWidget/components/Chart/utils.js.map +1 -0
- package/dist/main/OrderBookWidget/render.js +17 -0
- package/dist/main/OrderBookWidget/render.js.map +1 -0
- package/dist/main/OrderBookWidget/types.js +13 -0
- package/dist/main/OrderBookWidget/types.js.map +1 -0
- package/dist/main/OrderBookWidget/utils.js +17 -0
- package/dist/main/OrderBookWidget/utils.js.map +1 -0
- package/dist/main/index.js +28 -0
- package/dist/main/index.js.map +1 -0
- package/dist/module/OrderBookWidget/Main.js +62 -0
- package/dist/module/OrderBookWidget/Main.js.map +1 -0
- package/dist/module/OrderBookWidget/OrderBookWidget.js +16 -0
- package/dist/module/OrderBookWidget/OrderBookWidget.js.map +1 -0
- package/dist/module/OrderBookWidget/components/Chart/Chart.js +57 -0
- package/dist/module/OrderBookWidget/components/Chart/Chart.js.map +1 -0
- package/dist/module/OrderBookWidget/components/Chart/config.js +97 -0
- package/dist/module/OrderBookWidget/components/Chart/config.js.map +1 -0
- package/dist/module/OrderBookWidget/components/Chart/utils.js +14 -0
- package/dist/module/OrderBookWidget/components/Chart/utils.js.map +1 -0
- package/dist/module/OrderBookWidget/render.js +14 -0
- package/dist/module/OrderBookWidget/render.js.map +1 -0
- package/dist/module/OrderBookWidget/types.js +6 -0
- package/dist/module/OrderBookWidget/types.js.map +1 -0
- package/dist/module/OrderBookWidget/utils.js +11 -0
- package/dist/module/OrderBookWidget/utils.js.map +1 -0
- package/dist/module/index.js +3 -0
- package/dist/module/index.js.map +1 -0
- package/dist/types/OrderBookWidget/Main.d.ts +4 -0
- package/dist/types/OrderBookWidget/OrderBookWidget.d.ts +4 -0
- package/dist/types/OrderBookWidget/components/Chart/Chart.d.ts +6 -0
- package/dist/types/OrderBookWidget/components/Chart/config.d.ts +4 -0
- package/dist/types/OrderBookWidget/components/Chart/utils.d.ts +4 -0
- package/dist/types/OrderBookWidget/render.d.ts +6 -0
- package/dist/types/OrderBookWidget/types.d.ts +28 -0
- package/dist/types/OrderBookWidget/utils.d.ts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/index.ts +1 -0
- package/package.json +19 -0
- package/src/OrderBookWidget/Main.tsx +80 -0
- package/src/OrderBookWidget/OrderBookWidget.tsx +17 -0
- package/src/OrderBookWidget/components/Chart/Chart.tsx +86 -0
- package/src/OrderBookWidget/components/Chart/config.tsx +100 -0
- package/src/OrderBookWidget/components/Chart/utils.tsx +13 -0
- package/src/OrderBookWidget/render.tsx +26 -0
- package/src/OrderBookWidget/types.ts +32 -0
- package/src/OrderBookWidget/utils.ts +25 -0
- package/src/index.ts +2 -0
- package/test/Main.test.tsx +57 -0
- package/tsconfig.types.json +12 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// @todo get from graphql schema
|
|
2
|
+
export interface OrderBookData {
|
|
3
|
+
instrument: string;
|
|
4
|
+
price: string;
|
|
5
|
+
bucketWidth: string;
|
|
6
|
+
buckets: {
|
|
7
|
+
price: string;
|
|
8
|
+
longCountPercent: string;
|
|
9
|
+
shortCountPercent: string;
|
|
10
|
+
}[];
|
|
11
|
+
time: string;
|
|
12
|
+
unixTime: string;
|
|
13
|
+
region: string;
|
|
14
|
+
division: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export enum DataType {
|
|
18
|
+
Order = 'ORDER',
|
|
19
|
+
Position = 'POSITION',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface OrderBookWidgetConfig {
|
|
23
|
+
apiUrl: string;
|
|
24
|
+
instrument: string;
|
|
25
|
+
division: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface MainProps {
|
|
29
|
+
apiUrl: string;
|
|
30
|
+
instrument: string;
|
|
31
|
+
division: string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DataType } from './types';
|
|
2
|
+
|
|
3
|
+
const getFetchUrl = (
|
|
4
|
+
apiUrl: string,
|
|
5
|
+
instrument: string,
|
|
6
|
+
division: string,
|
|
7
|
+
dataType: string,
|
|
8
|
+
) => {
|
|
9
|
+
const recentHourlyDataType = dataType === DataType.Order ? 'recentHourlyOrderBooks' : 'recentHourlyPositionBooks';
|
|
10
|
+
|
|
11
|
+
return `${apiUrl}/instruments/${instrument}/${recentHourlyDataType}?division=${division}`;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const getData = (
|
|
15
|
+
apiUrl: string,
|
|
16
|
+
instrument: string,
|
|
17
|
+
division: string,
|
|
18
|
+
dataType: string,
|
|
19
|
+
) => {
|
|
20
|
+
const fetchUrl = getFetchUrl(apiUrl, instrument, division, dataType);
|
|
21
|
+
|
|
22
|
+
return fetch(fetchUrl).then((res) => res.json());
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { getData };
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment jsdom
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { render } from '@testing-library/react';
|
|
6
|
+
import { Main } from '../src/OrderBookWidget/Main';
|
|
7
|
+
|
|
8
|
+
jest.mock('../src/OrderBookWidget/utils', () => ({
|
|
9
|
+
getData: () => Promise.resolve({
|
|
10
|
+
orderBooks: [{
|
|
11
|
+
instrument: 'GBP_USD',
|
|
12
|
+
price: '1.25933',
|
|
13
|
+
bucketWidth: '0.0005',
|
|
14
|
+
buckets: [
|
|
15
|
+
{
|
|
16
|
+
price: '0.02',
|
|
17
|
+
longCountPercent: '0.0582',
|
|
18
|
+
shortCountPercent: '0.0',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
price: '0.7',
|
|
22
|
+
longCountPercent: '0.0582',
|
|
23
|
+
shortCountPercent: '0.0',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
price: '0.9925',
|
|
27
|
+
longCountPercent: '0.0582',
|
|
28
|
+
shortCountPercent: '0.0',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
price: '1.0',
|
|
32
|
+
longCountPercent: '0.1163',
|
|
33
|
+
shortCountPercent: '0.0',
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
time: '2023-08-24T10:30:00Z',
|
|
37
|
+
unixTime: '1692873000',
|
|
38
|
+
region: '-',
|
|
39
|
+
division: 'OJ',
|
|
40
|
+
dataSource: '-',
|
|
41
|
+
}],
|
|
42
|
+
}),
|
|
43
|
+
}));
|
|
44
|
+
|
|
45
|
+
jest.mock('../src/OrderBookWidget/components/Chart/Chart', () => ({
|
|
46
|
+
Chart: () => <p data-testid="chart-test-component">Chart</p>,
|
|
47
|
+
}));
|
|
48
|
+
|
|
49
|
+
describe('Main component', () => {
|
|
50
|
+
it('should render main component', async () => {
|
|
51
|
+
const { findByTestId } = render(
|
|
52
|
+
<Main instrument="EUR/USD" division="OJ" apiUrl="http://test.com" />,
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
expect(await findByTestId('order-book-widget')).toBeInTheDocument();
|
|
56
|
+
});
|
|
57
|
+
});
|