@oanda/labs-instruments-price-chart-widget 1.0.13 → 1.0.15
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 +124 -0
- package/codegen.ts +2 -5
- package/dist/main/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.js +6 -2
- package/dist/main/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/Main.js +32 -16
- package/dist/main/InstrumentsPriceChartWidget/Main.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/components/Chart.js +4 -2
- package/dist/main/InstrumentsPriceChartWidget/components/Chart.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/components/TimeZoneLabel.js +29 -0
- package/dist/main/InstrumentsPriceChartWidget/components/TimeZoneLabel.js.map +1 -0
- package/dist/main/InstrumentsPriceChartWidget/components/formatters.js +50 -11
- package/dist/main/InstrumentsPriceChartWidget/components/formatters.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/components/getOption.js +13 -13
- package/dist/main/InstrumentsPriceChartWidget/components/getOption.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/components/types.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/config.js +14 -7
- package/dist/main/InstrumentsPriceChartWidget/config.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/render.js +10 -2
- package/dist/main/InstrumentsPriceChartWidget/render.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/types.js.map +1 -1
- package/dist/main/InstrumentsPriceChartWidget/utils.js +12 -0
- package/dist/main/InstrumentsPriceChartWidget/utils.js.map +1 -0
- package/dist/main/gql/{mock/getPriceCandles.js → priceCandles.js} +9 -8
- package/dist/main/gql/priceCandles.js.map +1 -0
- package/dist/main/gql/types/gql.js +1 -1
- package/dist/main/gql/types/gql.js.map +1 -1
- package/dist/main/gql/types/graphql.js +53 -24
- package/dist/main/gql/types/graphql.js.map +1 -1
- package/dist/main/translations/sources/en.json +2 -1
- package/dist/module/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.js +6 -2
- package/dist/module/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/Main.js +33 -17
- package/dist/module/InstrumentsPriceChartWidget/Main.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/components/Chart.js +4 -2
- package/dist/module/InstrumentsPriceChartWidget/components/Chart.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/components/TimeZoneLabel.js +21 -0
- package/dist/module/InstrumentsPriceChartWidget/components/TimeZoneLabel.js.map +1 -0
- package/dist/module/InstrumentsPriceChartWidget/components/formatters.js +47 -9
- package/dist/module/InstrumentsPriceChartWidget/components/formatters.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/components/getOption.js +14 -14
- package/dist/module/InstrumentsPriceChartWidget/components/getOption.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/components/types.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/config.js +14 -7
- package/dist/module/InstrumentsPriceChartWidget/config.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/render.js +11 -3
- package/dist/module/InstrumentsPriceChartWidget/render.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/types.js.map +1 -1
- package/dist/module/InstrumentsPriceChartWidget/utils.js +4 -0
- package/dist/module/InstrumentsPriceChartWidget/utils.js.map +1 -0
- package/dist/module/gql/{mock/getPriceCandles.js → priceCandles.js} +9 -8
- package/dist/module/gql/priceCandles.js.map +1 -0
- package/dist/module/gql/types/gql.js +1 -1
- package/dist/module/gql/types/gql.js.map +1 -1
- package/dist/module/gql/types/graphql.js +52 -23
- package/dist/module/gql/types/graphql.js.map +1 -1
- package/dist/module/translations/sources/en.json +2 -1
- package/dist/types/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.d.ts +1 -1
- package/dist/types/InstrumentsPriceChartWidget/Main.d.ts +1 -1
- package/dist/types/InstrumentsPriceChartWidget/components/Chart.d.ts +1 -1
- package/dist/types/InstrumentsPriceChartWidget/components/TimeZoneLabel.d.ts +2 -0
- package/dist/types/InstrumentsPriceChartWidget/components/formatters.d.ts +5 -1
- package/dist/types/InstrumentsPriceChartWidget/components/types.d.ts +6 -4
- package/dist/types/InstrumentsPriceChartWidget/config.d.ts +5 -3
- package/dist/types/InstrumentsPriceChartWidget/types.d.ts +5 -1
- package/dist/types/InstrumentsPriceChartWidget/utils.d.ts +3 -0
- package/dist/types/gql/priceCandles.d.ts +2 -0
- package/dist/types/gql/types/gql.d.ts +4 -3
- package/dist/types/gql/types/graphql.d.ts +31 -27
- package/package.json +5 -3
- package/src/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.tsx +7 -1
- package/src/InstrumentsPriceChartWidget/Main.tsx +45 -19
- package/src/InstrumentsPriceChartWidget/components/Chart.tsx +2 -1
- package/src/InstrumentsPriceChartWidget/components/TimeZoneLabel.tsx +24 -0
- package/src/InstrumentsPriceChartWidget/components/formatters.ts +72 -13
- package/src/InstrumentsPriceChartWidget/components/getOption.ts +20 -21
- package/src/InstrumentsPriceChartWidget/components/types.ts +6 -4
- package/src/InstrumentsPriceChartWidget/config.ts +16 -7
- package/src/InstrumentsPriceChartWidget/render.tsx +12 -2
- package/src/InstrumentsPriceChartWidget/types.ts +5 -1
- package/src/InstrumentsPriceChartWidget/utils.ts +16 -0
- package/src/gql/{mock/getPriceCandles.ts → priceCandles.ts} +8 -7
- package/src/gql/types/gql.ts +4 -4
- package/src/gql/types/graphql.ts +62 -37
- package/src/translations/sources/en.json +2 -1
- package/test/Main.test.tsx +6 -2
- package/test/mocks/chartMock.ts +201 -37
- package/dist/main/InstrumentsPriceChartWidget/getPriceCandlesMock.js +0 -83
- package/dist/main/InstrumentsPriceChartWidget/getPriceCandlesMock.js.map +0 -1
- package/dist/main/gql/mock/getPriceCandles.js.map +0 -1
- package/dist/main/gql/mock/schema.graphqls +0 -62
- package/dist/module/InstrumentsPriceChartWidget/getPriceCandlesMock.js +0 -76
- package/dist/module/InstrumentsPriceChartWidget/getPriceCandlesMock.js.map +0 -1
- package/dist/module/gql/mock/getPriceCandles.js.map +0 -1
- package/dist/module/gql/mock/schema.graphqls +0 -62
- package/dist/types/InstrumentsPriceChartWidget/getPriceCandlesMock.d.ts +0 -9
- package/dist/types/gql/mock/getPriceCandles.d.ts +0 -2
- package/src/InstrumentsPriceChartWidget/getPriceCandlesMock.tsx +0 -75
- package/src/gql/mock/schema.graphqls +0 -62
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,130 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 1.0.15 (2025-09-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 1.0.218 (2025-09-01)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 1.0.217 (2025-08-25)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 1.0.216 (2025-08-18)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 1.0.215 (2025-08-18)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## 1.0.214 (2025-08-14)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## 1.0.213 (2025-08-12)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## 1.0.212 (2025-08-05)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 1.0.211 (2025-08-05)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## 1.0.210 (2025-07-31)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## 1.0.209 (2025-07-31)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## 1.0.208 (2025-07-24)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## 1.0.207 (2025-07-18)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## 1.0.206 (2025-07-18)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
## 1.0.205 (2025-07-17)
|
|
63
|
+
|
|
64
|
+
**Note:** Version bump only for package @oanda/labs-instruments-price-chart-widget
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## 1.0.14 (2025-09-01)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## 1.0.217 (2025-08-25)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 1.0.216 (2025-08-18)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## 1.0.215 (2025-08-18)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 1.0.214 (2025-08-14)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## 1.0.213 (2025-08-12)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## 1.0.212 (2025-08-05)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## 1.0.211 (2025-08-05)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## 1.0.210 (2025-07-31)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## 1.0.209 (2025-07-31)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## 1.0.208 (2025-07-24)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## 1.0.207 (2025-07-18)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
## 1.0.206 (2025-07-18)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## 1.0.205 (2025-07-17)
|
|
123
|
+
|
|
124
|
+
**Note:** Version bump only for package @oanda/labs-instruments-price-chart-widget
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
6
130
|
## 1.0.13 (2025-08-25)
|
|
7
131
|
|
|
8
132
|
|
package/codegen.ts
CHANGED
|
@@ -2,11 +2,8 @@ import type { CodegenConfig } from '@graphql-codegen/cli';
|
|
|
2
2
|
|
|
3
3
|
const config: CodegenConfig = {
|
|
4
4
|
overwrite: true,
|
|
5
|
-
schema:
|
|
6
|
-
|
|
7
|
-
'src/gql/mock/schema.graphqls',
|
|
8
|
-
],
|
|
9
|
-
documents: ['src/gql/**/*.ts', 'src/**/*.ts'],
|
|
5
|
+
schema: 'https://labs-api.uat.oanda.com/graphql',
|
|
6
|
+
documents: 'src/**/*.ts',
|
|
10
7
|
generates: {
|
|
11
8
|
'src/gql/types/': {
|
|
12
9
|
preset: 'client',
|
|
@@ -17,7 +17,9 @@ const InstrumentsPriceChartWidget = _ref => {
|
|
|
17
17
|
theme,
|
|
18
18
|
isParamError,
|
|
19
19
|
logoLink,
|
|
20
|
-
division
|
|
20
|
+
division,
|
|
21
|
+
instrument,
|
|
22
|
+
dataSource
|
|
21
23
|
} = _ref;
|
|
22
24
|
const client = new _client.ApolloClient({
|
|
23
25
|
uri: graphqlUrl,
|
|
@@ -33,7 +35,9 @@ const InstrumentsPriceChartWidget = _ref => {
|
|
|
33
35
|
linkArea: "logo",
|
|
34
36
|
logoLink: logoLink
|
|
35
37
|
}, _react.default.createElement(_Main.Main, {
|
|
36
|
-
|
|
38
|
+
dataSource: dataSource,
|
|
39
|
+
division: division,
|
|
40
|
+
instrument: instrument
|
|
37
41
|
})));
|
|
38
42
|
};
|
|
39
43
|
exports.InstrumentsPriceChartWidget = InstrumentsPriceChartWidget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstrumentsPriceChartWidget.js","names":["_client","require","_labsWidgetCommon","_react","_interopRequireDefault","_translations","_Main","e","__esModule","default","InstrumentsPriceChartWidget","_ref","graphqlUrl","locale","theme","isParamError","logoLink","division","client","ApolloClient","uri","cache","InMemoryCache","createElement","WidgetProvider","translations","WidgetWrapper","linkArea","Main","exports"],"sources":["../../../src/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport type { InstrumentsPriceChartConfig } from './types';\n\nconst InstrumentsPriceChartWidget = ({\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n division,\n}: InstrumentsPriceChartConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n return (\n <WidgetProvider\n client={client}\n locale={locale}\n theme={theme}\n translations={translations}\n >\n <WidgetWrapper\n isParamError={isParamError}\n linkArea=\"logo\"\n logoLink={logoLink}\n >\n <Main
|
|
1
|
+
{"version":3,"file":"InstrumentsPriceChartWidget.js","names":["_client","require","_labsWidgetCommon","_react","_interopRequireDefault","_translations","_Main","e","__esModule","default","InstrumentsPriceChartWidget","_ref","graphqlUrl","locale","theme","isParamError","logoLink","division","instrument","dataSource","client","ApolloClient","uri","cache","InMemoryCache","createElement","WidgetProvider","translations","WidgetWrapper","linkArea","Main","exports"],"sources":["../../../src/InstrumentsPriceChartWidget/InstrumentsPriceChartWidget.tsx"],"sourcesContent":["import { ApolloClient, InMemoryCache } from '@apollo/client';\nimport { WidgetProvider, WidgetWrapper } from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { translations } from '../translations';\nimport { Main } from './Main';\nimport type { InstrumentsPriceChartConfig } from './types';\n\nconst InstrumentsPriceChartWidget = ({\n graphqlUrl,\n locale,\n theme,\n isParamError,\n logoLink,\n division,\n instrument,\n dataSource,\n}: InstrumentsPriceChartConfig) => {\n const client = new ApolloClient({\n uri: graphqlUrl,\n cache: new InMemoryCache(),\n });\n\n return (\n <WidgetProvider\n client={client}\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 dataSource={dataSource}\n division={division}\n instrument={instrument}\n />\n </WidgetWrapper>\n </WidgetProvider>\n );\n};\n\nexport { InstrumentsPriceChartWidget };\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAA8B,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG9B,MAAMG,2BAA2B,GAAGC,IAAA,IASD;EAAA,IATE;IACnCC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,QAAQ;IACRC,UAAU;IACVC;EAC2B,CAAC,GAAAR,IAAA;EAC5B,MAAMS,MAAM,GAAG,IAAIC,oBAAY,CAAC;IAC9BC,GAAG,EAAEV,UAAU;IACfW,KAAK,EAAE,IAAIC,qBAAa,CAAC;EAC3B,CAAC,CAAC;EAEF,OACErB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACvB,iBAAA,CAAAwB,cAAc;IACbN,MAAM,EAAEA,MAAO;IACfP,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACba,YAAY,EAAEA;EAAa,GAE3BxB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACvB,iBAAA,CAAA0B,aAAa;IACZb,YAAY,EAAEA,YAAa;IAC3Bc,QAAQ,EAAC,MAAM;IACfb,QAAQ,EAAEA;EAAS,GAEnBb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,KAAA,CAAAwB,IAAI;IACHX,UAAU,EAAEA,UAAW;IACvBF,QAAQ,EAAEA,QAAS;IACnBC,UAAU,EAAEA;EAAW,CACxB,CACY,CACD,CAAC;AAErB,CAAC;AAACa,OAAA,CAAArB,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|
|
@@ -4,44 +4,60 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Main = void 0;
|
|
7
|
+
var _client = require("@apollo/client");
|
|
7
8
|
var _labsWidgetCommon = require("@oanda/labs-widget-common");
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _priceCandles = require("../gql/priceCandles");
|
|
11
|
+
var _graphql = require("../gql/types/graphql");
|
|
9
12
|
var _Chart = require("./components/Chart");
|
|
13
|
+
var _TimeZoneLabel = require("./components/TimeZoneLabel");
|
|
10
14
|
var _config = require("./config");
|
|
11
|
-
var
|
|
12
|
-
var _types = require("./types");
|
|
15
|
+
var _utils = require("./utils");
|
|
13
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
18
|
const Main = _ref => {
|
|
16
19
|
let {
|
|
17
|
-
division
|
|
20
|
+
division,
|
|
21
|
+
instrument,
|
|
22
|
+
dataSource
|
|
18
23
|
} = _ref;
|
|
19
|
-
const [selectedTimeUnit, setSelectedTimeUnit] = (0, _react.useState)(
|
|
24
|
+
const [selectedTimeUnit, setSelectedTimeUnit] = (0, _react.useState)(_graphql.TimeSpan.Day_1);
|
|
20
25
|
const {
|
|
21
26
|
loading,
|
|
22
27
|
data,
|
|
23
28
|
error
|
|
24
|
-
} = (0,
|
|
25
|
-
|
|
29
|
+
} = (0, _client.useQuery)(_priceCandles.priceCandles, {
|
|
30
|
+
variables: {
|
|
31
|
+
dataSource,
|
|
32
|
+
division,
|
|
33
|
+
instrument,
|
|
34
|
+
granularity: (0, _utils.getGranularityForTimeSpan)(selectedTimeUnit),
|
|
35
|
+
timeSpan: selectedTimeUnit
|
|
36
|
+
},
|
|
37
|
+
fetchPolicy: 'cache-and-network'
|
|
26
38
|
});
|
|
27
|
-
const
|
|
39
|
+
const candles = (0, _utils.getCandles)(data);
|
|
40
|
+
const showError = candles?.length === 0 || !candles || !!error;
|
|
28
41
|
return _react.default.createElement("div", {
|
|
29
42
|
"data-testid": "instruments-price-chart-wrapper"
|
|
30
|
-
}, loading && _react.default.createElement("div", {
|
|
31
|
-
className: "lw-mb-[50px] lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary"
|
|
32
|
-
}, _react.default.createElement(_labsWidgetCommon.Spinner, {
|
|
33
|
-
size: _labsWidgetCommon.SpinnerSize.lg
|
|
34
|
-
})), !loading && !showError && _react.default.createElement("div", {
|
|
35
|
-
"data-testid": "instruments-price-chart-widget"
|
|
36
43
|
}, _react.default.createElement("div", {
|
|
37
44
|
className: "lw-flex lw-pt-2"
|
|
38
45
|
}, _react.default.createElement(_labsWidgetCommon.TimeUnitSwitch, {
|
|
39
46
|
callback: setSelectedTimeUnit,
|
|
40
47
|
options: _config.timeUnitConfig,
|
|
41
48
|
selected: selectedTimeUnit
|
|
42
|
-
})), _react.default.createElement(
|
|
43
|
-
|
|
44
|
-
}
|
|
49
|
+
})), loading && _react.default.createElement("div", {
|
|
50
|
+
className: "lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary"
|
|
51
|
+
}, _react.default.createElement(_labsWidgetCommon.Spinner, {
|
|
52
|
+
size: _labsWidgetCommon.SpinnerSize.lg
|
|
53
|
+
})), !loading && showError && _react.default.createElement("div", {
|
|
54
|
+
className: "lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary"
|
|
55
|
+
}, _react.default.createElement(_labsWidgetCommon.ChartError, null)), !loading && !showError && _react.default.createElement("div", {
|
|
56
|
+
"data-testid": "instruments-price-chart-widget"
|
|
57
|
+
}, _react.default.createElement(_Chart.Chart, {
|
|
58
|
+
timeSpan: selectedTimeUnit,
|
|
59
|
+
values: candles
|
|
60
|
+
})), _react.default.createElement(_TimeZoneLabel.TimeZoneLabel, null));
|
|
45
61
|
};
|
|
46
62
|
exports.Main = Main;
|
|
47
63
|
//# sourceMappingURL=Main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_client","require","_labsWidgetCommon","_react","_interopRequireWildcard","_priceCandles","_graphql","_Chart","_TimeZoneLabel","_config","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Main","_ref","division","instrument","dataSource","selectedTimeUnit","setSelectedTimeUnit","useState","TimeSpan","Day_1","loading","data","error","useQuery","priceCandles","variables","granularity","getGranularityForTimeSpan","timeSpan","fetchPolicy","candles","getCandles","showError","length","createElement","className","TimeUnitSwitch","callback","options","timeUnitConfig","selected","Spinner","size","SpinnerSize","lg","ChartError","Chart","values","TimeZoneLabel","exports"],"sources":["../../../src/InstrumentsPriceChartWidget/Main.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client';\nimport {\n ChartError,\n Spinner,\n SpinnerSize,\n TimeUnitSwitch,\n} from '@oanda/labs-widget-common';\nimport React, { useState } from 'react';\n\nimport { priceCandles } from '../gql/priceCandles';\nimport {\n type PriceCandlesQuery,\n type PriceCandlesQueryVariables,\n TimeSpan,\n} from '../gql/types/graphql';\nimport { Chart } from './components/Chart';\nimport { TimeZoneLabel } from './components/TimeZoneLabel';\nimport { timeUnitConfig } from './config';\nimport { type MainProps } from './types';\nimport { getCandles, getGranularityForTimeSpan } from './utils';\n\nconst Main = ({ division, instrument, dataSource }: MainProps) => {\n const [selectedTimeUnit, setSelectedTimeUnit] = useState(TimeSpan.Day_1);\n\n const { loading, data, error } = useQuery<\n PriceCandlesQuery,\n PriceCandlesQueryVariables\n >(priceCandles, {\n variables: {\n dataSource,\n division,\n instrument,\n granularity: getGranularityForTimeSpan(selectedTimeUnit),\n timeSpan: selectedTimeUnit,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n const candles = getCandles(data);\n const showError = candles?.length === 0 || !candles || !!error;\n\n return (\n <div data-testid=\"instruments-price-chart-wrapper\">\n <div className=\"lw-flex lw-pt-2\">\n <TimeUnitSwitch<TimeSpan>\n callback={setSelectedTimeUnit}\n options={timeUnitConfig}\n selected={selectedTimeUnit}\n />\n </div>\n\n {loading && (\n <div className=\"lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n\n {!loading && showError && (\n <div className=\"lw-flex lw-h-[425px] lw-w-full lw-items-center lw-border lw-border-solid lw-border-border-primary\">\n <ChartError />\n </div>\n )}\n\n {!loading && !showError && (\n <div data-testid=\"instruments-price-chart-widget\">\n <Chart timeSpan={selectedTimeUnit} values={candles} />\n </div>\n )}\n <TimeZoneLabel />\n </div>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,7 +21,8 @@ echarts.registerTheme('dark_theme', (0, _labsWidgetCommon.getChartTheme)(_labsWi
|
|
|
21
21
|
echarts.registerTheme('light_theme', (0, _labsWidgetCommon.getChartTheme)(_labsWidgetCommon.Theme.Light));
|
|
22
22
|
const Chart = _ref => {
|
|
23
23
|
let {
|
|
24
|
-
values
|
|
24
|
+
values,
|
|
25
|
+
timeSpan
|
|
25
26
|
} = _ref;
|
|
26
27
|
const {
|
|
27
28
|
isDark
|
|
@@ -36,7 +37,8 @@ const Chart = _ref => {
|
|
|
36
37
|
option: (0, _getOption.getOption)({
|
|
37
38
|
values,
|
|
38
39
|
isDark,
|
|
39
|
-
lang
|
|
40
|
+
lang,
|
|
41
|
+
timeSpan
|
|
40
42
|
})
|
|
41
43
|
});
|
|
42
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","names":["_labsWidgetCommon","require","_monoI18n","_charts","_components","echarts","_interopRequireWildcard","_renderers","_react","_interopRequireDefault","_constants","_getOption","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","use","GridSimpleComponent","GraphicComponent","LineChart","DatasetComponent","CustomChart","CanvasRenderer","TooltipComponent","registerTheme","getChartTheme","Theme","Dark","Light","Chart","_ref","values","isDark","useLayoutProvider","lang","useLocale","createElement","BaseChart","chartHeight","CHART_HEIGHT","option","getOption","exports"],"sources":["../../../../src/InstrumentsPriceChartWidget/components/Chart.tsx"],"sourcesContent":["import {\n BaseChart,\n getChartTheme,\n Theme,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { CustomChart, LineChart } from 'echarts/charts';\nimport {\n DatasetComponent,\n GraphicComponent,\n GridSimpleComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport React from 'react';\n\nimport { CHART_HEIGHT } from './constants';\nimport { getOption } from './getOption';\nimport type { ChartProps } from './types';\n\necharts.use([\n GridSimpleComponent,\n GraphicComponent,\n LineChart,\n DatasetComponent,\n CustomChart,\n CanvasRenderer,\n TooltipComponent,\n]);\n\necharts.registerTheme('dark_theme', getChartTheme(Theme.Dark));\necharts.registerTheme('light_theme', getChartTheme(Theme.Light));\n\nexport const Chart = ({ values }: ChartProps) => {\n const { isDark } = useLayoutProvider();\n const { lang } = useLocale();\n\n return (\n <BaseChart\n chartHeight={CHART_HEIGHT}\n echarts={echarts}\n isDark={isDark}\n option={getOption({\n values,\n isDark,\n lang,\n })}\n />\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAMA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAMA,IAAAI,OAAA,GAAAC,uBAAA,CAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAC,sBAAA,CAAAR,OAAA;AAEA,IAAAS,UAAA,GAAAT,OAAA;AACA,IAAAU,UAAA,GAAAV,OAAA;AAAwC,SAAAQ,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAGxChB,OAAO,CAAC2B,GAAG,CAAC,CACVC,+BAAmB,EACnBC,4BAAgB,EAChBC,iBAAS,EACTC,4BAAgB,EAChBC,mBAAW,EACXC,yBAAc,EACdC,4BAAgB,CACjB,CAAC;AAEFlC,OAAO,CAACmC,aAAa,CAAC,YAAY,EAAE,IAAAC,+BAAa,EAACC,uBAAK,CAACC,IAAI,CAAC,CAAC;AAC9DtC,OAAO,CAACmC,aAAa,CAAC,aAAa,EAAE,IAAAC,+BAAa,EAACC,uBAAK,CAACE,KAAK,CAAC,CAAC;AAEzD,MAAMC,KAAK,GAAGC,IAAA,
|
|
1
|
+
{"version":3,"file":"Chart.js","names":["_labsWidgetCommon","require","_monoI18n","_charts","_components","echarts","_interopRequireWildcard","_renderers","_react","_interopRequireDefault","_constants","_getOption","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","use","GridSimpleComponent","GraphicComponent","LineChart","DatasetComponent","CustomChart","CanvasRenderer","TooltipComponent","registerTheme","getChartTheme","Theme","Dark","Light","Chart","_ref","values","timeSpan","isDark","useLayoutProvider","lang","useLocale","createElement","BaseChart","chartHeight","CHART_HEIGHT","option","getOption","exports"],"sources":["../../../../src/InstrumentsPriceChartWidget/components/Chart.tsx"],"sourcesContent":["import {\n BaseChart,\n getChartTheme,\n Theme,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport { CustomChart, LineChart } from 'echarts/charts';\nimport {\n DatasetComponent,\n GraphicComponent,\n GridSimpleComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport React from 'react';\n\nimport { CHART_HEIGHT } from './constants';\nimport { getOption } from './getOption';\nimport type { ChartProps } from './types';\n\necharts.use([\n GridSimpleComponent,\n GraphicComponent,\n LineChart,\n DatasetComponent,\n CustomChart,\n CanvasRenderer,\n TooltipComponent,\n]);\n\necharts.registerTheme('dark_theme', getChartTheme(Theme.Dark));\necharts.registerTheme('light_theme', getChartTheme(Theme.Light));\n\nexport const Chart = ({ values, timeSpan }: ChartProps) => {\n const { isDark } = useLayoutProvider();\n const { lang } = useLocale();\n\n return (\n <BaseChart\n chartHeight={CHART_HEIGHT}\n echarts={echarts}\n isDark={isDark}\n option={getOption({\n values,\n isDark,\n lang,\n timeSpan,\n })}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TimeZoneLabel = void 0;
|
|
7
|
+
var _monoI18n = require("@oanda/mono-i18n");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
const getBrowserOffsetLabel = () => {
|
|
11
|
+
const parts = new Intl.DateTimeFormat(undefined, {
|
|
12
|
+
timeZoneName: 'longOffset'
|
|
13
|
+
}).formatToParts(new Date());
|
|
14
|
+
const tzPart = parts.find(p => p.type === 'timeZoneName');
|
|
15
|
+
return tzPart ? tzPart.value : '';
|
|
16
|
+
};
|
|
17
|
+
const TimeZoneLabel = () => {
|
|
18
|
+
const {
|
|
19
|
+
lang
|
|
20
|
+
} = (0, _monoI18n.useLocale)();
|
|
21
|
+
return _react.default.createElement("span", {
|
|
22
|
+
className: "lw-ml-1 lw-font-sans lw-text-xs lw-font-bold",
|
|
23
|
+
"data-testid": "timezone-label"
|
|
24
|
+
}, `${lang('timezone_display', {
|
|
25
|
+
timezone: getBrowserOffsetLabel()
|
|
26
|
+
})}`);
|
|
27
|
+
};
|
|
28
|
+
exports.TimeZoneLabel = TimeZoneLabel;
|
|
29
|
+
//# sourceMappingURL=TimeZoneLabel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeZoneLabel.js","names":["_monoI18n","require","_react","_interopRequireDefault","e","__esModule","default","getBrowserOffsetLabel","parts","Intl","DateTimeFormat","undefined","timeZoneName","formatToParts","Date","tzPart","find","p","type","value","TimeZoneLabel","lang","useLocale","createElement","className","timezone","exports"],"sources":["../../../../src/InstrumentsPriceChartWidget/components/TimeZoneLabel.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport React from 'react';\n\nconst getBrowserOffsetLabel = (): string => {\n const parts = new Intl.DateTimeFormat(undefined, {\n timeZoneName: 'longOffset',\n }).formatToParts(new Date());\n\n const tzPart = parts.find((p) => p.type === 'timeZoneName');\n return tzPart ? tzPart.value : '';\n};\n\nexport const TimeZoneLabel = () => {\n const { lang } = useLocale();\n\n return (\n <span\n className=\"lw-ml-1 lw-font-sans lw-text-xs lw-font-bold\"\n data-testid=\"timezone-label\"\n >{`${lang('timezone_display', {\n timezone: getBrowserOffsetLabel(),\n })}`}</span>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B,MAAMG,qBAAqB,GAAGA,CAAA,KAAc;EAC1C,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAACC,cAAc,CAACC,SAAS,EAAE;IAC/CC,YAAY,EAAE;EAChB,CAAC,CAAC,CAACC,aAAa,CAAC,IAAIC,IAAI,CAAC,CAAC,CAAC;EAE5B,MAAMC,MAAM,GAAGP,KAAK,CAACQ,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAK,cAAc,CAAC;EAC3D,OAAOH,MAAM,GAAGA,MAAM,CAACI,KAAK,GAAG,EAAE;AACnC,CAAC;AAEM,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM;IAAEC;EAAK,CAAC,GAAG,IAAAC,mBAAS,EAAC,CAAC;EAE5B,OACEpB,MAAA,CAAAI,OAAA,CAAAiB,aAAA;IACEC,SAAS,EAAC,8CAA8C;IACxD,eAAY;EAAgB,GAC5B,GAAGH,IAAI,CAAC,kBAAkB,EAAE;IAC5BI,QAAQ,EAAElB,qBAAqB,CAAC;EAClC,CAAC,CAAC,EAAS,CAAC;AAEhB,CAAC;AAACmB,OAAA,CAAAN,aAAA,GAAAA,aAAA","ignoreList":[]}
|
|
@@ -3,16 +3,55 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.tooltipFormatter = exports.
|
|
7
|
-
var
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
return
|
|
11
|
-
hour: 'numeric',
|
|
12
|
-
hour12: true
|
|
13
|
-
});
|
|
6
|
+
exports.tooltipFormatter = exports.showSplitLine = exports.labelFormatter = void 0;
|
|
7
|
+
var _graphql = require("../../gql/types/graphql");
|
|
8
|
+
const showSplitLine = (index, total) => {
|
|
9
|
+
const interval = Math.max(1, Math.floor(total / 6));
|
|
10
|
+
return index % interval === 0;
|
|
14
11
|
};
|
|
15
|
-
exports.
|
|
12
|
+
exports.showSplitLine = showSplitLine;
|
|
13
|
+
const showChartIntervalLabel = (timeSpan, values, index) => {
|
|
14
|
+
const date = new Date(values[index].point);
|
|
15
|
+
const labelInterval = Math.max(1, Math.floor(values.length / 6));
|
|
16
|
+
if (timeSpan === _graphql.TimeSpan.Month_6 || timeSpan === _graphql.TimeSpan.Year_1 || timeSpan === _graphql.TimeSpan.Year_5) {
|
|
17
|
+
const prev = index > 0 ? new Date(values[index - 1].point) : null;
|
|
18
|
+
const monthChanged = !prev || date.getMonth() !== prev.getMonth() || date.getFullYear() !== prev.getFullYear();
|
|
19
|
+
return monthChanged;
|
|
20
|
+
}
|
|
21
|
+
return index % labelInterval === 0;
|
|
22
|
+
};
|
|
23
|
+
const labelFormatter = (timeSpan, values) => (_, index) => {
|
|
24
|
+
const date = new Date(values[index].point);
|
|
25
|
+
if (!showChartIntervalLabel(timeSpan, values, index)) return '';
|
|
26
|
+
switch (timeSpan) {
|
|
27
|
+
case _graphql.TimeSpan.Day_1:
|
|
28
|
+
const hour = date.getHours();
|
|
29
|
+
return `${String(hour).padStart(2, '0')}:00`;
|
|
30
|
+
case _graphql.TimeSpan.Week_1:
|
|
31
|
+
case _graphql.TimeSpan.Month_1:
|
|
32
|
+
return date.toLocaleDateString(undefined, {
|
|
33
|
+
day: '2-digit',
|
|
34
|
+
month: 'short'
|
|
35
|
+
});
|
|
36
|
+
case _graphql.TimeSpan.Month_6:
|
|
37
|
+
case _graphql.TimeSpan.Year_1:
|
|
38
|
+
case _graphql.TimeSpan.Year_5:
|
|
39
|
+
return date.toLocaleDateString(undefined, {
|
|
40
|
+
month: 'short'
|
|
41
|
+
});
|
|
42
|
+
default:
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.labelFormatter = labelFormatter;
|
|
47
|
+
const chartDateTimeFormat = iso => new Date(iso).toLocaleString(undefined, {
|
|
48
|
+
year: 'numeric',
|
|
49
|
+
month: '2-digit',
|
|
50
|
+
day: '2-digit',
|
|
51
|
+
hour: '2-digit',
|
|
52
|
+
minute: '2-digit',
|
|
53
|
+
hour12: false
|
|
54
|
+
});
|
|
16
55
|
const tooltipFormatter = _ref => {
|
|
17
56
|
let {
|
|
18
57
|
lang,
|
|
@@ -23,9 +62,9 @@ const tooltipFormatter = _ref => {
|
|
|
23
62
|
high,
|
|
24
63
|
close,
|
|
25
64
|
low,
|
|
26
|
-
|
|
65
|
+
point
|
|
27
66
|
} = data;
|
|
28
|
-
const date =
|
|
67
|
+
const date = chartDateTimeFormat(point);
|
|
29
68
|
return `
|
|
30
69
|
<div style="display:flex; flex-direction:column;">
|
|
31
70
|
<span style="margin-bottom:5px;">${date}</span>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","names":["
|
|
1
|
+
{"version":3,"file":"formatters.js","names":["_graphql","require","showSplitLine","index","total","interval","Math","max","floor","exports","showChartIntervalLabel","timeSpan","values","date","Date","point","labelInterval","length","TimeSpan","Month_6","Year_1","Year_5","prev","monthChanged","getMonth","getFullYear","labelFormatter","_","Day_1","hour","getHours","String","padStart","Week_1","Month_1","toLocaleDateString","undefined","day","month","chartDateTimeFormat","iso","toLocaleString","year","minute","hour12","tooltipFormatter","_ref","lang","data","open","high","close","low","toFixed"],"sources":["../../../../src/InstrumentsPriceChartWidget/components/formatters.ts"],"sourcesContent":["import { TimeSpan } from '../../gql/types/graphql';\nimport type { TooltipFormatterParams } from './types';\n\nexport const showSplitLine = (index: number, total: number): boolean => {\n const interval = Math.max(1, Math.floor(total / 6));\n return index % interval === 0;\n};\n\nconst showChartIntervalLabel = (\n timeSpan: TimeSpan,\n values: { point: string }[],\n index: number\n): boolean => {\n const date = new Date(values[index].point);\n const labelInterval = Math.max(1, Math.floor(values.length / 6));\n\n if (\n timeSpan === TimeSpan.Month_6 ||\n timeSpan === TimeSpan.Year_1 ||\n timeSpan === TimeSpan.Year_5\n ) {\n const prev = index > 0 ? new Date(values[index - 1].point) : null;\n const monthChanged =\n !prev ||\n date.getMonth() !== prev.getMonth() ||\n date.getFullYear() !== prev.getFullYear();\n\n return monthChanged;\n }\n\n return index % labelInterval === 0;\n};\n\nexport const labelFormatter =\n (timeSpan: TimeSpan, values: { point: string }[]) =>\n (_: string, index: number): string => {\n const date = new Date(values[index].point);\n\n if (!showChartIntervalLabel(timeSpan, values, index)) return '';\n\n switch (timeSpan) {\n case TimeSpan.Day_1:\n const hour = date.getHours();\n return `${String(hour).padStart(2, '0')}:00`;\n\n case TimeSpan.Week_1:\n case TimeSpan.Month_1:\n return date.toLocaleDateString(undefined, {\n day: '2-digit',\n month: 'short',\n });\n\n case TimeSpan.Month_6:\n case TimeSpan.Year_1:\n case TimeSpan.Year_5:\n return date.toLocaleDateString(undefined, {\n month: 'short',\n });\n\n default:\n return '';\n }\n };\n\nconst chartDateTimeFormat = (iso: string) =>\n new Date(iso).toLocaleString(undefined, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n\nexport const tooltipFormatter = ({ lang, data }: TooltipFormatterParams) => {\n const { open, high, close, low, point } = data;\n const date = chartDateTimeFormat(point);\n\n return `\n <div style=\"display:flex; flex-direction:column;\">\n <span style=\"margin-bottom:5px;\">${date}</span>\n ${lang('open')}: ${open.toFixed(4)}<br />\n ${lang('high')}: ${high.toFixed(4)}<br />\n ${lang('low')}: ${low.toFixed(4)}<br />\n ${lang('close')}: ${close.toFixed(4)}\n </div>\n `;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,11 +11,10 @@ const getOption = _ref => {
|
|
|
11
11
|
let {
|
|
12
12
|
values,
|
|
13
13
|
isDark,
|
|
14
|
-
lang
|
|
14
|
+
lang,
|
|
15
|
+
timeSpan
|
|
15
16
|
} = _ref;
|
|
16
|
-
const priceValues = values.map(d => d.
|
|
17
|
-
const timestamps = values.map(d => (0, _formatters.dailyFormatter)(d.time));
|
|
18
|
-
const labelInterval = Math.max(1, Math.floor(timestamps.length / 6));
|
|
17
|
+
const priceValues = values.map(d => d.high);
|
|
19
18
|
const gridLines = (0, _labsWidgetCommon.getGridLines)({
|
|
20
19
|
isDark,
|
|
21
20
|
chartWidth: _constants.CHART_WIDTH,
|
|
@@ -25,6 +24,7 @@ const getOption = _ref => {
|
|
|
25
24
|
bottomLeftBox: false
|
|
26
25
|
});
|
|
27
26
|
return {
|
|
27
|
+
animation: false,
|
|
28
28
|
tooltip: {
|
|
29
29
|
trigger: 'axis',
|
|
30
30
|
axisPointer: {
|
|
@@ -42,18 +42,18 @@ const getOption = _ref => {
|
|
|
42
42
|
xAxis: {
|
|
43
43
|
type: 'category',
|
|
44
44
|
boundaryGap: false,
|
|
45
|
-
data:
|
|
45
|
+
data: values.map(d => d.point),
|
|
46
46
|
axisTick: {
|
|
47
47
|
show: false
|
|
48
48
|
},
|
|
49
49
|
axisLabel: {
|
|
50
|
-
|
|
51
|
-
interval:
|
|
52
|
-
formatter: (
|
|
50
|
+
padding: [0, 0, 0, 30],
|
|
51
|
+
interval: 'auto',
|
|
52
|
+
formatter: (0, _formatters.labelFormatter)(timeSpan, values)
|
|
53
53
|
},
|
|
54
54
|
splitLine: {
|
|
55
55
|
show: true,
|
|
56
|
-
interval: index => index
|
|
56
|
+
interval: index => (0, _formatters.showSplitLine)(index, values.length)
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
yAxis: {
|
|
@@ -69,7 +69,7 @@ const getOption = _ref => {
|
|
|
69
69
|
show: false
|
|
70
70
|
},
|
|
71
71
|
axisLabel: {
|
|
72
|
-
margin:
|
|
72
|
+
margin: 10,
|
|
73
73
|
formatter: value => {
|
|
74
74
|
const dataMin = Math.floor(Math.min(...priceValues) * 100) / 100;
|
|
75
75
|
const dataMax = Math.ceil(Math.max(...priceValues) * 100) / 100;
|
|
@@ -87,9 +87,9 @@ const getOption = _ref => {
|
|
|
87
87
|
name: 'price-close',
|
|
88
88
|
type: 'line',
|
|
89
89
|
data: values.map(d => ({
|
|
90
|
-
value: d.
|
|
91
|
-
...d
|
|
92
|
-
time: d.
|
|
90
|
+
value: d.high,
|
|
91
|
+
...d,
|
|
92
|
+
time: d.point
|
|
93
93
|
})),
|
|
94
94
|
smooth: true,
|
|
95
95
|
symbol: 'none',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOption.js","names":["_labsWidgetCommon","require","_constants","_formatters","getOption","_ref","values","isDark","lang","priceValues","map","d","
|
|
1
|
+
{"version":3,"file":"getOption.js","names":["_labsWidgetCommon","require","_constants","_formatters","getOption","_ref","values","isDark","lang","timeSpan","priceValues","map","d","high","gridLines","getGridLines","chartWidth","CHART_WIDTH","chartHeight","CHART_HEIGHT","xLabelsSize","X_LABEL_SIZE","yLabelSize","Y_LABEL_SIZE_DESKTOP","bottomLeftBox","animation","tooltip","trigger","axisPointer","axis","formatter","params","p","Array","isArray","data","tooltipFormatter","xAxis","type","boundaryGap","point","axisTick","show","axisLabel","padding","interval","labelFormatter","splitLine","index","showSplitLine","length","yAxis","position","min","value","Math","floor","CHART_INTERVAL","max","ceil","axisLine","margin","dataMin","dataMax","toFixed","series","name","time","smooth","symbol","lineStyle","color","colorPalette","navyBlue","width","areaStyle","x","y","x2","y2","colorStops","offset","brightBlue30","brightBlue","grid","top","left","right","bottom","graphic","getLineCommons","shape","x1","y1","exports"],"sources":["../../../../src/InstrumentsPriceChartWidget/components/getOption.ts"],"sourcesContent":["import {\n colorPalette,\n getGridLines,\n getLineCommons,\n} from '@oanda/labs-widget-common';\n\nimport {\n CHART_HEIGHT,\n CHART_INTERVAL,\n CHART_WIDTH,\n X_LABEL_SIZE,\n Y_LABEL_SIZE_DESKTOP,\n} from './constants';\nimport { labelFormatter, showSplitLine, tooltipFormatter } from './formatters';\nimport type { ChartValue, GetOptionType } from './types';\n\nexport const getOption: GetOptionType = ({\n values,\n isDark,\n lang,\n timeSpan,\n}) => {\n const priceValues = values.map((d) => d.high);\n\n const gridLines = getGridLines({\n isDark,\n chartWidth: CHART_WIDTH,\n chartHeight: CHART_HEIGHT,\n xLabelsSize: X_LABEL_SIZE,\n yLabelSize: Y_LABEL_SIZE_DESKTOP,\n bottomLeftBox: false,\n });\n\n return {\n animation: false,\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n axis: 'x',\n },\n formatter: (params) => {\n const p = Array.isArray(params) ? params[0] : params;\n const data = p.data as {\n point: string;\n open: number;\n high: number;\n low: number;\n close: number;\n };\n\n return tooltipFormatter({ lang, data });\n },\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: values.map((d) => d.point),\n axisTick: { show: false },\n axisLabel: {\n padding: [0, 0, 0, 30],\n interval: 'auto',\n formatter: labelFormatter(timeSpan, values),\n },\n splitLine: {\n show: true,\n interval: (index: number) => showSplitLine(index, values.length),\n },\n },\n yAxis: {\n type: 'value',\n position: 'right',\n min: (value: ChartValue) =>\n Math.floor(value.min * 100) / 100 - CHART_INTERVAL,\n max: (value: ChartValue) =>\n Math.ceil(value.max * 100) / 100 + CHART_INTERVAL,\n interval: CHART_INTERVAL,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n margin: 10,\n formatter: (value: number) => {\n const dataMin = Math.floor(Math.min(...priceValues) * 100) / 100;\n const dataMax = Math.ceil(Math.max(...priceValues) * 100) / 100;\n if (value < dataMin || value > dataMax) {\n return '';\n }\n return value.toFixed(2);\n },\n },\n splitLine: {\n show: true,\n },\n },\n series: [\n {\n name: 'price-close',\n type: 'line',\n data: values.map((d) => ({\n value: d.high,\n ...d,\n time: d.point,\n })),\n smooth: true,\n symbol: 'none',\n lineStyle: {\n color: colorPalette.navyBlue,\n width: 2,\n },\n areaStyle: {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n { offset: 0, color: colorPalette.brightBlue30 },\n { offset: 1, color: colorPalette.brightBlue },\n ],\n },\n },\n },\n ],\n grid: [\n {\n name: 'main-grid',\n top: 0,\n left: 0,\n right: `${Y_LABEL_SIZE_DESKTOP}px`,\n bottom: `${X_LABEL_SIZE}px`,\n },\n ],\n graphic: [\n ...gridLines,\n {\n ...getLineCommons(isDark),\n top: 0,\n right: 0,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n },\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/InstrumentsPriceChartWidget/components/types.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts';\n\nimport type {
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/InstrumentsPriceChartWidget/components/types.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts';\n\nimport type { Candle, TimeSpan } from '../../gql/types/graphql';\n\nexport interface ChartProps {\n values: Candle[];\n timeSpan: TimeSpan;\n}\n\nexport interface GetOptionProps {\n values: Candle[];\n isDark: boolean;\n lang: (label: string) => string;\n timeSpan: TimeSpan;\n}\n\nexport type GetOptionType = (props: GetOptionProps) => EChartsOption;\n\nexport interface ChartValue {\n min: number;\n max: number;\n}\n\nexport interface TooltipData {\n point: string;\n open: number;\n high: number;\n low: number;\n close: number;\n}\n\nexport interface TooltipFormatterParams {\n data: TooltipData;\n lang: (label: string) => string;\n}\n"],"mappings":"","ignoreList":[]}
|