@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.
Files changed (73) hide show
  1. package/CHANGELOG.md +548 -0
  2. package/dist/main/OrderBookWidget/ChartWithData.js +62 -0
  3. package/dist/main/OrderBookWidget/ChartWithData.js.map +1 -0
  4. package/dist/main/OrderBookWidget/Main.js +46 -0
  5. package/dist/main/OrderBookWidget/Main.js.map +1 -0
  6. package/dist/main/OrderBookWidget/OrderBookWidget.js +2 -2
  7. package/dist/main/OrderBookWidget/OrderBookWidget.js.map +1 -1
  8. package/dist/main/OrderBookWidget/components/Chart/Chart.js +16 -7
  9. package/dist/main/OrderBookWidget/components/Chart/Chart.js.map +1 -1
  10. package/dist/main/OrderBookWidget/components/Chart/constants.js +5 -3
  11. package/dist/main/OrderBookWidget/components/Chart/constants.js.map +1 -1
  12. package/dist/main/OrderBookWidget/components/Chart/formatters.js +10 -4
  13. package/dist/main/OrderBookWidget/components/Chart/formatters.js.map +1 -1
  14. package/dist/main/OrderBookWidget/components/Chart/getOption.js +81 -36
  15. package/dist/main/OrderBookWidget/components/Chart/getOption.js.map +1 -1
  16. package/dist/main/OrderBookWidget/components/Chart/types.js.map +1 -1
  17. package/dist/main/OrderBookWidget/config.js +69 -1
  18. package/dist/main/OrderBookWidget/config.js.map +1 -1
  19. package/dist/main/OrderBookWidget/types.js +20 -0
  20. package/dist/main/OrderBookWidget/types.js.map +1 -1
  21. package/dist/main/translations/sources/en.json +3 -0
  22. package/dist/main/translations/sources/zh_TW.json +3 -0
  23. package/dist/module/OrderBookWidget/ChartWithData.js +55 -0
  24. package/dist/module/OrderBookWidget/ChartWithData.js.map +1 -0
  25. package/dist/module/OrderBookWidget/Main.js +38 -0
  26. package/dist/module/OrderBookWidget/Main.js.map +1 -0
  27. package/dist/module/OrderBookWidget/OrderBookWidget.js +2 -2
  28. package/dist/module/OrderBookWidget/OrderBookWidget.js.map +1 -1
  29. package/dist/module/OrderBookWidget/components/Chart/Chart.js +17 -8
  30. package/dist/module/OrderBookWidget/components/Chart/Chart.js.map +1 -1
  31. package/dist/module/OrderBookWidget/components/Chart/constants.js +4 -2
  32. package/dist/module/OrderBookWidget/components/Chart/constants.js.map +1 -1
  33. package/dist/module/OrderBookWidget/components/Chart/formatters.js +10 -4
  34. package/dist/module/OrderBookWidget/components/Chart/formatters.js.map +1 -1
  35. package/dist/module/OrderBookWidget/components/Chart/getOption.js +80 -35
  36. package/dist/module/OrderBookWidget/components/Chart/getOption.js.map +1 -1
  37. package/dist/module/OrderBookWidget/components/Chart/types.js.map +1 -1
  38. package/dist/module/OrderBookWidget/config.js +69 -1
  39. package/dist/module/OrderBookWidget/config.js.map +1 -1
  40. package/dist/module/OrderBookWidget/types.js +19 -1
  41. package/dist/module/OrderBookWidget/types.js.map +1 -1
  42. package/dist/module/translations/sources/en.json +3 -0
  43. package/dist/module/translations/sources/zh_TW.json +3 -0
  44. package/dist/types/OrderBookWidget/ChartWithData.d.ts +4 -0
  45. package/dist/types/OrderBookWidget/Main.d.ts +4 -0
  46. package/dist/types/OrderBookWidget/components/Chart/Chart.d.ts +1 -1
  47. package/dist/types/OrderBookWidget/components/Chart/constants.d.ts +4 -2
  48. package/dist/types/OrderBookWidget/components/Chart/getOption.d.ts +16 -1
  49. package/dist/types/OrderBookWidget/components/Chart/types.d.ts +11 -1
  50. package/dist/types/OrderBookWidget/config.d.ts +7 -1
  51. package/dist/types/OrderBookWidget/types.d.ts +26 -3
  52. package/package.json +3 -3
  53. package/src/OrderBookWidget/ChartWithData.tsx +78 -0
  54. package/src/OrderBookWidget/Main.tsx +40 -0
  55. package/src/OrderBookWidget/OrderBookWidget.tsx +2 -2
  56. package/src/OrderBookWidget/components/Chart/Chart.tsx +12 -6
  57. package/src/OrderBookWidget/components/Chart/constants.ts +4 -2
  58. package/src/OrderBookWidget/components/Chart/formatters.ts +6 -4
  59. package/src/OrderBookWidget/components/Chart/getOption.ts +93 -39
  60. package/src/OrderBookWidget/components/Chart/types.ts +11 -3
  61. package/src/OrderBookWidget/config.ts +70 -1
  62. package/src/OrderBookWidget/types.ts +28 -3
  63. package/src/translations/sources/en.json +3 -0
  64. package/src/translations/sources/zh_TW.json +3 -0
  65. package/test/Main.test.tsx +129 -0
  66. package/test/chartOptions.test.ts +20 -0
  67. package/dist/main/OrderBookWidget/Widget.js +0 -61
  68. package/dist/main/OrderBookWidget/Widget.js.map +0 -1
  69. package/dist/module/OrderBookWidget/Widget.js +0 -53
  70. package/dist/module/OrderBookWidget/Widget.js.map +0 -1
  71. package/dist/types/OrderBookWidget/Widget.d.ts +0 -4
  72. package/src/OrderBookWidget/Widget.tsx +0 -62
  73. 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,4 +0,0 @@
1
- /// <reference types="react" />
2
- import { WidgetProps } from './types';
3
- declare const Widget: ({ instrument, }: WidgetProps) => JSX.Element;
4
- export { Widget };
@@ -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 };
@@ -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
- });