@oanda/labs-crowd-view-widget 1.0.61 → 1.0.63
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 +508 -0
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js +11 -14
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js +19 -15
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js +10 -10
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js +2 -3
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js +2 -2
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js +3 -3
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js +56 -12
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js +1 -2
- package/dist/main/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processOrderPositionBooks.js +4 -6
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processOrderPositionBooks.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js +1 -2
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processSentiments.js +7 -11
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/processSentiments.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/validateData.js +2 -3
- package/dist/main/CrowdViewWidget/components/Chart/dataUtils/validateData.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/getOption.js +2 -2
- package/dist/main/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +5 -5
- package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
- package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js +2 -2
- package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
- package/dist/main/CrowdViewWidget/constants.js +4 -6
- package/dist/main/CrowdViewWidget/constants.js.map +1 -1
- package/dist/main/gql/getOrderPositionBooks.js +35 -3
- package/dist/main/gql/getOrderPositionBooks.js.map +1 -1
- package/dist/main/gql/getPriceCandles.js +26 -3
- package/dist/main/gql/getPriceCandles.js.map +1 -1
- package/dist/main/gql/getSentiments.js +21 -3
- package/dist/main/gql/getSentiments.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/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js +11 -14
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridConfig.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js +19 -15
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getGridLines.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js +10 -10
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js +2 -3
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js +2 -2
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js +3 -3
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js +56 -12
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js +1 -2
- package/dist/module/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processOrderPositionBooks.js +4 -6
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processOrderPositionBooks.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js +1 -2
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processPriceCandles.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processSentiments.js +7 -11
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/processSentiments.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/validateData.js +2 -3
- package/dist/module/CrowdViewWidget/components/Chart/dataUtils/validateData.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/getOption.js +2 -2
- package/dist/module/CrowdViewWidget/components/Chart/getOption.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +5 -5
- package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
- package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js +2 -2
- package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
- package/dist/module/CrowdViewWidget/constants.js +4 -6
- package/dist/module/CrowdViewWidget/constants.js.map +1 -1
- package/dist/module/gql/getOrderPositionBooks.js +35 -3
- package/dist/module/gql/getOrderPositionBooks.js.map +1 -1
- package/dist/module/gql/getPriceCandles.js +26 -3
- package/dist/module/gql/getPriceCandles.js.map +1 -1
- package/dist/module/gql/getSentiments.js +21 -3
- package/dist/module/gql/getSentiments.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":"getGridLines.js","names":["_labsWidgetCommon","require","_constants","
|
|
1
|
+
{"version":3,"file":"getGridLines.js","names":["_labsWidgetCommon","require","_constants","getGridLines","_ref","isDark","isDesktop","WIDTH","MAIN_HEIGHT_DESKTOP","MAIN_HEIGHT_MOBILE","X_LABEL_SIZE","TOOLTIP_HEIGHT_MOBILE","TOOLTIP_HEIGHT_DESKTOP","Y_SENTIMENT_LABEL_DESKTOP_SIZE","Y_SENTIMENT_LABEL_MOBILE_SIZE","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","TOP_LABEL_SPACE_MOBILE","CHART_CONFIG","mainHeight","ySentimentLabelSize","yLabelSize","topMargin","TOP_LABEL_SPACE_DESKTOP","tooltipHeight","getLineCommons","top","shape","x1","y1","x2","y2","z","right","bottom","left","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartOptions/getGridLines.ts"],"sourcesContent":["import { getLineCommons } from '@oanda/labs-widget-common';\nimport type { GraphicComponentOption } from 'echarts';\n\nimport { CHART_CONFIG } from '../../../constants';\n\ninterface GetGridLinesParams {\n isDark: boolean;\n isDesktop: boolean;\n}\n\nexport const getGridLines = ({\n isDark,\n isDesktop,\n}: GetGridLinesParams): GraphicComponentOption[] => {\n const {\n WIDTH,\n MAIN_HEIGHT_DESKTOP,\n MAIN_HEIGHT_MOBILE,\n X_LABEL_SIZE,\n TOOLTIP_HEIGHT_MOBILE,\n TOOLTIP_HEIGHT_DESKTOP,\n Y_SENTIMENT_LABEL_DESKTOP_SIZE,\n Y_SENTIMENT_LABEL_MOBILE_SIZE,\n Y_LABEL_SIZE_DESKTOP,\n Y_LABEL_SIZE_MOBILE,\n TOP_LABEL_SPACE_MOBILE,\n } = CHART_CONFIG;\n\n const mainHeight = isDesktop ? MAIN_HEIGHT_DESKTOP : MAIN_HEIGHT_MOBILE;\n const ySentimentLabelSize = isDesktop\n ? Y_SENTIMENT_LABEL_DESKTOP_SIZE\n : Y_SENTIMENT_LABEL_MOBILE_SIZE;\n\n const yLabelSize = isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE;\n\n const topMargin = isDesktop\n ? CHART_CONFIG.TOP_LABEL_SPACE_DESKTOP + TOOLTIP_HEIGHT_DESKTOP\n : TOP_LABEL_SPACE_MOBILE + TOOLTIP_HEIGHT_MOBILE;\n\n const tooltipHeight = isDesktop\n ? TOOLTIP_HEIGHT_DESKTOP\n : TOOLTIP_HEIGHT_MOBILE;\n\n return [\n // Top\n {\n ...getLineCommons(isDark),\n top: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n z: 30,\n },\n // Right\n {\n ...getLineCommons(isDark),\n right: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: mainHeight + topMargin + X_LABEL_SIZE + 2,\n },\n z: 30,\n },\n // Bottom\n {\n ...getLineCommons(isDark),\n bottom: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n z: 30,\n },\n // Left\n {\n ...getLineCommons(isDark),\n left: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: mainHeight + X_LABEL_SIZE + topMargin + 2,\n },\n z: 30,\n },\n // Y Label\n {\n ...getLineCommons(isDark),\n right: yLabelSize - 3,\n top: topMargin - 2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: mainHeight,\n },\n z: 30,\n },\n // Y Sentiment Label\n {\n ...getLineCommons(isDark),\n left: ySentimentLabelSize - 2,\n top: topMargin - 2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: mainHeight,\n },\n z: 30,\n },\n // X Label\n {\n ...getLineCommons(isDark),\n bottom: X_LABEL_SIZE - 3,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n z: 30,\n },\n // X Mobile Label\n {\n ...getLineCommons(isDark),\n top: topMargin - 3,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n z: 30,\n },\n // Mobile tooltip,\n {\n ...getLineCommons(isDark),\n top: tooltipHeight - 3,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n z: 30,\n },\n ];\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,8 +30,8 @@ const getLabelsConfig = _ref => {
|
|
|
30
30
|
const mainHeight = isDesktop ? _constants.CHART_CONFIG.MAIN_HEIGHT_DESKTOP : _constants.CHART_CONFIG.MAIN_HEIGHT_MOBILE;
|
|
31
31
|
return [{
|
|
32
32
|
type: 'group',
|
|
33
|
-
left:
|
|
34
|
-
top:
|
|
33
|
+
left: `${ySentimentLabelSize + 5}px'`,
|
|
34
|
+
top: `${topMargin + 5}px`,
|
|
35
35
|
silent: true,
|
|
36
36
|
children: [{
|
|
37
37
|
type: 'rect',
|
|
@@ -66,8 +66,8 @@ const getLabelsConfig = _ref => {
|
|
|
66
66
|
}]
|
|
67
67
|
}, {
|
|
68
68
|
type: 'group',
|
|
69
|
-
left:
|
|
70
|
-
top:
|
|
69
|
+
left: `${ySentimentLabelSize + 5}px'`,
|
|
70
|
+
top: `${topMargin + mainHeight - 24 - 5}px`,
|
|
71
71
|
silent: true,
|
|
72
72
|
children: [{
|
|
73
73
|
type: 'rect',
|
|
@@ -104,8 +104,8 @@ const getLabelsConfig = _ref => {
|
|
|
104
104
|
type: 'text',
|
|
105
105
|
z: 30,
|
|
106
106
|
rotation: isDesktop ? Math.PI / 2 : 0,
|
|
107
|
-
left:
|
|
108
|
-
top: isDesktop ?
|
|
107
|
+
left: `5px`,
|
|
108
|
+
top: isDesktop ? `${topMargin + mainHeight / 2 - sentimentVerticalOffset}px` : `${topMargin - 16}px`,
|
|
109
109
|
silent: true,
|
|
110
110
|
style: {
|
|
111
111
|
fontSize: 10,
|
|
@@ -118,8 +118,8 @@ const getLabelsConfig = _ref => {
|
|
|
118
118
|
type: 'text',
|
|
119
119
|
z: 30,
|
|
120
120
|
rotation: isDesktop ? -Math.PI / 2 : 0,
|
|
121
|
-
right:
|
|
122
|
-
top: isDesktop ?
|
|
121
|
+
right: `5px`,
|
|
122
|
+
top: isDesktop ? `${topMargin + mainHeight / 2 - priceVerticalOffset}px` : `${topMargin - 16}px`,
|
|
123
123
|
silent: true,
|
|
124
124
|
style: {
|
|
125
125
|
fontSize: 10,
|
|
@@ -132,7 +132,7 @@ const getLabelsConfig = _ref => {
|
|
|
132
132
|
type: 'rect',
|
|
133
133
|
z: 20,
|
|
134
134
|
right: '0px',
|
|
135
|
-
top:
|
|
135
|
+
top: `${topMargin}px`,
|
|
136
136
|
shape: {
|
|
137
137
|
width: yMainLabelSize,
|
|
138
138
|
height: mainHeight
|
|
@@ -145,7 +145,7 @@ const getLabelsConfig = _ref => {
|
|
|
145
145
|
type: 'rect',
|
|
146
146
|
z: 20,
|
|
147
147
|
left: '0px',
|
|
148
|
-
top:
|
|
148
|
+
top: `${topMargin}px`,
|
|
149
149
|
shape: {
|
|
150
150
|
width: ySentimentLabelSize,
|
|
151
151
|
height: mainHeight
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLabelsConfig.js","names":["_labsWidgetCommon","require","_chromaJs","_interopRequireDefault","_constants","e","__esModule","default","getLabelsConfig","_ref","isDark","isDesktop","labelCallback","ySentimentLabelSize","CHART_CONFIG","Y_SENTIMENT_LABEL_DESKTOP_SIZE","Y_SENTIMENT_LABEL_MOBILE_SIZE","yMainLabelSize","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","textColor","colorPalette","white","black","labelBackgroundColor","darkGray","backgroundColor","shadowColor","chroma","alpha","hex","sentimentText","toUpperCase","priceText","sentimentEstimatedWidth","length","priceEstimatedWidth","sentimentVerticalOffset","priceVerticalOffset","topMargin","TOP_LABEL_SPACE_DESKTOP","TOOLTIP_HEIGHT_DESKTOP","TOP_LABEL_SPACE_MOBILE","TOOLTIP_HEIGHT_MOBILE","mainHeight","MAIN_HEIGHT_DESKTOP","MAIN_HEIGHT_MOBILE","type","left","concat","top","silent","children","z","right","shape","width","height","style","fill","shadowBlur","shadowOffsetX","shadowOffsetY","fontSize","fontFamily","fontWeight","text","rotation","Math","PI","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\nimport chroma from 'chroma-js';\nimport type { GraphicComponentOption } from 'echarts';\n\nimport { CHART_CONFIG } from '../../../constants';\n\ninterface getLabelsConfigParams {\n isDark: boolean;\n isDesktop: boolean;\n labelCallback: (key: string, params?: Record<string, unknown>) => string;\n}\n\nexport const getLabelsConfig = ({\n isDark,\n isDesktop,\n labelCallback,\n}: getLabelsConfigParams): GraphicComponentOption[] => {\n const ySentimentLabelSize = isDesktop\n ? CHART_CONFIG.Y_SENTIMENT_LABEL_DESKTOP_SIZE\n : CHART_CONFIG.Y_SENTIMENT_LABEL_MOBILE_SIZE;\n\n const yMainLabelSize = isDesktop\n ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP\n : CHART_CONFIG.Y_LABEL_SIZE_MOBILE;\n\n const textColor = isDark ? colorPalette.white : colorPalette.black;\n const labelBackgroundColor = isDark\n ? colorPalette.darkGray\n : colorPalette.white;\n const backgroundColor = isDark ? colorPalette.black : colorPalette.white;\n const shadowColor = chroma(colorPalette.black).alpha(0.1).hex();\n\n // Estimate text width for centering rotated text\n // Approximate: fontSize * characterCount * 0.65 (typical character width ratio)\n const sentimentText = labelCallback('sentiment').toUpperCase();\n const priceText = labelCallback('price').toUpperCase();\n const sentimentEstimatedWidth = 10 * sentimentText.length * 0.65;\n const priceEstimatedWidth = 10 * priceText.length * 0.65;\n const sentimentVerticalOffset = sentimentEstimatedWidth / 2;\n const priceVerticalOffset = priceEstimatedWidth / 2;\n\n const topMargin = isDesktop\n ? CHART_CONFIG.TOP_LABEL_SPACE_DESKTOP + CHART_CONFIG.TOOLTIP_HEIGHT_DESKTOP\n : CHART_CONFIG.TOP_LABEL_SPACE_MOBILE + CHART_CONFIG.TOOLTIP_HEIGHT_MOBILE;\n\n const mainHeight = isDesktop\n ? CHART_CONFIG.MAIN_HEIGHT_DESKTOP\n : CHART_CONFIG.MAIN_HEIGHT_MOBILE;\n\n return [\n {\n type: 'group',\n left: `${ySentimentLabelSize + 5}px'`,\n top: `${topMargin + 5}px`,\n silent: true,\n children: [\n {\n type: 'rect',\n z: 100,\n right: 'center',\n top: 'middle',\n shape: {\n width: 50,\n height: 24,\n },\n style: {\n fill: labelBackgroundColor,\n shadowBlur: 8,\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n shadowColor: shadowColor,\n },\n },\n {\n type: 'text',\n z: 100,\n right: 'center',\n top: 'middle',\n style: {\n fontSize: 11,\n fontFamily: 'Sofia W03',\n fontWeight: 500,\n fill: textColor,\n width: 70,\n height: 30,\n text: labelCallback('short'),\n },\n },\n ],\n },\n {\n type: 'group',\n left: `${ySentimentLabelSize + 5}px'`,\n top: `${topMargin + mainHeight - 24 - 5}px`,\n silent: true,\n children: [\n {\n type: 'rect',\n z: 100,\n right: 'center',\n top: 'middle',\n shape: {\n width: 50,\n height: 24,\n },\n style: {\n fill: labelBackgroundColor,\n shadowBlur: 8,\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n shadowColor: shadowColor,\n },\n },\n {\n type: 'text',\n z: 100,\n right: 'center',\n top: 'middle',\n style: {\n fontSize: 11,\n fontFamily: 'Sofia W03',\n fontWeight: 500,\n fill: textColor,\n width: 70,\n height: 30,\n text: labelCallback('long'),\n },\n },\n ],\n },\n\n {\n type: 'text',\n z: 30,\n rotation: isDesktop ? Math.PI / 2 : 0,\n left: `5px`,\n top: isDesktop\n ? `${topMargin + mainHeight / 2 - sentimentVerticalOffset}px`\n : `${topMargin - 16}px`,\n silent: true,\n style: {\n fontSize: 10,\n fontFamily: 'Sofia W03',\n fontWeight: 300,\n fill: textColor,\n text: sentimentText,\n },\n },\n {\n type: 'text',\n z: 30,\n rotation: isDesktop ? -Math.PI / 2 : 0,\n right: `5px`,\n top: isDesktop\n ? `${topMargin + mainHeight / 2 - priceVerticalOffset}px`\n : `${topMargin - 16}px`,\n silent: true,\n style: {\n fontSize: 10,\n fontFamily: 'Sofia W03',\n fontWeight: 300,\n fill: textColor,\n text: priceText,\n },\n },\n {\n type: 'rect',\n z: 20,\n right: '0px',\n top: `${topMargin}px`,\n shape: {\n width: yMainLabelSize,\n height: mainHeight,\n },\n silent: true,\n style: {\n fill: backgroundColor,\n },\n },\n {\n type: 'rect',\n z: 20,\n left: '0px',\n top: `${topMargin}px`,\n shape: {\n width: ySentimentLabelSize,\n height: mainHeight,\n },\n silent: true,\n style: {\n fill: backgroundColor,\n },\n },\n {\n type: 'text',\n z: 20,\n left: 'center',\n top: isDesktop\n ? CHART_CONFIG.TOOLTIP_HEIGHT_DESKTOP / 2 - 5\n : CHART_CONFIG.TOOLTIP_HEIGHT_MOBILE / 2 - 5,\n silent: true,\n style: {\n fontSize: isDesktop ? 12 : 11,\n fill: textColor,\n text: isDesktop\n ? labelCallback('hover_chart_to_see_more_details')\n : labelCallback('tap_chart_to_see_more_details'),\n },\n },\n ];\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"getLabelsConfig.js","names":["_labsWidgetCommon","require","_chromaJs","_interopRequireDefault","_constants","e","__esModule","default","getLabelsConfig","_ref","isDark","isDesktop","labelCallback","ySentimentLabelSize","CHART_CONFIG","Y_SENTIMENT_LABEL_DESKTOP_SIZE","Y_SENTIMENT_LABEL_MOBILE_SIZE","yMainLabelSize","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","textColor","colorPalette","white","black","labelBackgroundColor","darkGray","backgroundColor","shadowColor","chroma","alpha","hex","sentimentText","toUpperCase","priceText","sentimentEstimatedWidth","length","priceEstimatedWidth","sentimentVerticalOffset","priceVerticalOffset","topMargin","TOP_LABEL_SPACE_DESKTOP","TOOLTIP_HEIGHT_DESKTOP","TOP_LABEL_SPACE_MOBILE","TOOLTIP_HEIGHT_MOBILE","mainHeight","MAIN_HEIGHT_DESKTOP","MAIN_HEIGHT_MOBILE","type","left","top","silent","children","z","right","shape","width","height","style","fill","shadowBlur","shadowOffsetX","shadowOffsetY","fontSize","fontFamily","fontWeight","text","rotation","Math","PI","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartOptions/getLabelsConfig.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\nimport chroma from 'chroma-js';\nimport type { GraphicComponentOption } from 'echarts';\n\nimport { CHART_CONFIG } from '../../../constants';\n\ninterface getLabelsConfigParams {\n isDark: boolean;\n isDesktop: boolean;\n labelCallback: (key: string, params?: Record<string, unknown>) => string;\n}\n\nexport const getLabelsConfig = ({\n isDark,\n isDesktop,\n labelCallback,\n}: getLabelsConfigParams): GraphicComponentOption[] => {\n const ySentimentLabelSize = isDesktop\n ? CHART_CONFIG.Y_SENTIMENT_LABEL_DESKTOP_SIZE\n : CHART_CONFIG.Y_SENTIMENT_LABEL_MOBILE_SIZE;\n\n const yMainLabelSize = isDesktop\n ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP\n : CHART_CONFIG.Y_LABEL_SIZE_MOBILE;\n\n const textColor = isDark ? colorPalette.white : colorPalette.black;\n const labelBackgroundColor = isDark\n ? colorPalette.darkGray\n : colorPalette.white;\n const backgroundColor = isDark ? colorPalette.black : colorPalette.white;\n const shadowColor = chroma(colorPalette.black).alpha(0.1).hex();\n\n // Estimate text width for centering rotated text\n // Approximate: fontSize * characterCount * 0.65 (typical character width ratio)\n const sentimentText = labelCallback('sentiment').toUpperCase();\n const priceText = labelCallback('price').toUpperCase();\n const sentimentEstimatedWidth = 10 * sentimentText.length * 0.65;\n const priceEstimatedWidth = 10 * priceText.length * 0.65;\n const sentimentVerticalOffset = sentimentEstimatedWidth / 2;\n const priceVerticalOffset = priceEstimatedWidth / 2;\n\n const topMargin = isDesktop\n ? CHART_CONFIG.TOP_LABEL_SPACE_DESKTOP + CHART_CONFIG.TOOLTIP_HEIGHT_DESKTOP\n : CHART_CONFIG.TOP_LABEL_SPACE_MOBILE + CHART_CONFIG.TOOLTIP_HEIGHT_MOBILE;\n\n const mainHeight = isDesktop\n ? CHART_CONFIG.MAIN_HEIGHT_DESKTOP\n : CHART_CONFIG.MAIN_HEIGHT_MOBILE;\n\n return [\n {\n type: 'group',\n left: `${ySentimentLabelSize + 5}px'`,\n top: `${topMargin + 5}px`,\n silent: true,\n children: [\n {\n type: 'rect',\n z: 100,\n right: 'center',\n top: 'middle',\n shape: {\n width: 50,\n height: 24,\n },\n style: {\n fill: labelBackgroundColor,\n shadowBlur: 8,\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n shadowColor: shadowColor,\n },\n },\n {\n type: 'text',\n z: 100,\n right: 'center',\n top: 'middle',\n style: {\n fontSize: 11,\n fontFamily: 'Sofia W03',\n fontWeight: 500,\n fill: textColor,\n width: 70,\n height: 30,\n text: labelCallback('short'),\n },\n },\n ],\n },\n {\n type: 'group',\n left: `${ySentimentLabelSize + 5}px'`,\n top: `${topMargin + mainHeight - 24 - 5}px`,\n silent: true,\n children: [\n {\n type: 'rect',\n z: 100,\n right: 'center',\n top: 'middle',\n shape: {\n width: 50,\n height: 24,\n },\n style: {\n fill: labelBackgroundColor,\n shadowBlur: 8,\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n shadowColor: shadowColor,\n },\n },\n {\n type: 'text',\n z: 100,\n right: 'center',\n top: 'middle',\n style: {\n fontSize: 11,\n fontFamily: 'Sofia W03',\n fontWeight: 500,\n fill: textColor,\n width: 70,\n height: 30,\n text: labelCallback('long'),\n },\n },\n ],\n },\n\n {\n type: 'text',\n z: 30,\n rotation: isDesktop ? Math.PI / 2 : 0,\n left: `5px`,\n top: isDesktop\n ? `${topMargin + mainHeight / 2 - sentimentVerticalOffset}px`\n : `${topMargin - 16}px`,\n silent: true,\n style: {\n fontSize: 10,\n fontFamily: 'Sofia W03',\n fontWeight: 300,\n fill: textColor,\n text: sentimentText,\n },\n },\n {\n type: 'text',\n z: 30,\n rotation: isDesktop ? -Math.PI / 2 : 0,\n right: `5px`,\n top: isDesktop\n ? `${topMargin + mainHeight / 2 - priceVerticalOffset}px`\n : `${topMargin - 16}px`,\n silent: true,\n style: {\n fontSize: 10,\n fontFamily: 'Sofia W03',\n fontWeight: 300,\n fill: textColor,\n text: priceText,\n },\n },\n {\n type: 'rect',\n z: 20,\n right: '0px',\n top: `${topMargin}px`,\n shape: {\n width: yMainLabelSize,\n height: mainHeight,\n },\n silent: true,\n style: {\n fill: backgroundColor,\n },\n },\n {\n type: 'rect',\n z: 20,\n left: '0px',\n top: `${topMargin}px`,\n shape: {\n width: ySentimentLabelSize,\n height: mainHeight,\n },\n silent: true,\n style: {\n fill: backgroundColor,\n },\n },\n {\n type: 'text',\n z: 20,\n left: 'center',\n top: isDesktop\n ? CHART_CONFIG.TOOLTIP_HEIGHT_DESKTOP / 2 - 5\n : CHART_CONFIG.TOOLTIP_HEIGHT_MOBILE / 2 - 5,\n silent: true,\n style: {\n fontSize: isDesktop ? 12 : 11,\n fill: textColor,\n text: isDesktop\n ? labelCallback('hover_chart_to_see_more_details')\n : labelCallback('tap_chart_to_see_more_details'),\n },\n },\n ];\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -78,7 +78,7 @@ const getYAxisConfig = _ref => {
|
|
|
78
78
|
verticalAlignMinLabel: 'bottom',
|
|
79
79
|
verticalAlignMaxLabel: 'top',
|
|
80
80
|
customValues: [_constants.CHART_CONFIG.SENTIMENT_MIN, _constants.CHART_CONFIG.SENTIMENT_MAX / 5, _constants.CHART_CONFIG.SENTIMENT_MAX / 2, _constants.CHART_CONFIG.SENTIMENT_MAX * 4 / 5, _constants.CHART_CONFIG.SENTIMENT_MAX],
|
|
81
|
-
formatter: value =>
|
|
81
|
+
formatter: value => `${value}%`
|
|
82
82
|
},
|
|
83
83
|
z: 30
|
|
84
84
|
}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getYAxisConfig.js","names":["_constants","require","_chartUtils","getYAxisConfig","_ref","bucketWidth","displayPrecision","selectedPriceRef","type","gridIndex","position","min","val","adjustedMin","Math","floor","max","adjustedMax","ceil","axisLine","show","axisTick","splitLine","axisLabel","lineHeight","margin","verticalAlignMinLabel","verticalAlignMaxLabel","formatter","formatYAxisLabel","axisPointer","label","padding","params","axisDimension","axisIndex","current","Number","value","toFixed","z","CHART_CONFIG","SENTIMENT_MIN","SENTIMENT_MAX","customValues","
|
|
1
|
+
{"version":3,"file":"getYAxisConfig.js","names":["_constants","require","_chartUtils","getYAxisConfig","_ref","bucketWidth","displayPrecision","selectedPriceRef","type","gridIndex","position","min","val","adjustedMin","Math","floor","max","adjustedMax","ceil","axisLine","show","axisTick","splitLine","axisLabel","lineHeight","margin","verticalAlignMinLabel","verticalAlignMaxLabel","formatter","formatYAxisLabel","axisPointer","label","padding","params","axisDimension","axisIndex","current","Number","value","toFixed","z","CHART_CONFIG","SENTIMENT_MIN","SENTIMENT_MAX","customValues","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartOptions/getYAxisConfig.ts"],"sourcesContent":["import type { YAXisComponentOption } from 'echarts';\n\nimport { CHART_CONFIG } from '../../../constants';\nimport { formatYAxisLabel } from '../chartUtils';\n\ninterface GetYAxisConfigParams {\n bucketWidth: number;\n displayPrecision: number;\n selectedPriceRef: { current: number };\n}\n\nexport const getYAxisConfig = ({\n bucketWidth,\n displayPrecision,\n selectedPriceRef,\n}: GetYAxisConfigParams): YAXisComponentOption[] => [\n {\n type: 'value',\n gridIndex: 0,\n position: 'right',\n min: (val: { min: number }) => {\n const adjustedMin = val.min - bucketWidth;\n return Math.floor(adjustedMin / bucketWidth) * bucketWidth;\n },\n max: (val: { max: number }) => {\n const adjustedMax = val.max + bucketWidth;\n return Math.ceil(adjustedMax / bucketWidth) * bucketWidth;\n },\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: {\n lineHeight: 20,\n margin: 4,\n verticalAlignMinLabel: 'bottom',\n verticalAlignMaxLabel: 'top',\n formatter: formatYAxisLabel,\n },\n axisPointer: {\n label: {\n padding: [4, 4, 4, 4],\n margin: -1,\n formatter: (params: {\n axisDimension?: string;\n axisIndex?: number;\n value: unknown;\n }) => {\n if (params.axisDimension === 'y' && params.axisIndex === 0) {\n selectedPriceRef.current = Number(params.value);\n return Number(params.value).toFixed(displayPrecision);\n }\n return '';\n },\n },\n },\n z: 30,\n },\n {\n type: 'value',\n gridIndex: 1,\n position: 'left',\n min: CHART_CONFIG.SENTIMENT_MIN,\n max: CHART_CONFIG.SENTIMENT_MAX,\n axisLine: { show: false },\n axisTick: { show: false },\n axisPointer: { show: false },\n splitLine: { show: false },\n axisLabel: {\n margin: 4,\n lineHeight: 20,\n verticalAlignMinLabel: 'bottom',\n verticalAlignMaxLabel: 'top',\n customValues: [\n CHART_CONFIG.SENTIMENT_MIN,\n CHART_CONFIG.SENTIMENT_MAX / 5,\n CHART_CONFIG.SENTIMENT_MAX / 2,\n (CHART_CONFIG.SENTIMENT_MAX * 4) / 5,\n CHART_CONFIG.SENTIMENT_MAX,\n ],\n formatter: (value: number) => `${value}%`,\n },\n z: 30,\n },\n];\n"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAQO,MAAME,cAAc,GAAGC,IAAA;EAAA,IAAC;IAC7BC,WAAW;IACXC,gBAAgB;IAChBC;EACoB,CAAC,GAAAH,IAAA;EAAA,OAA6B,CAClD;IACEI,IAAI,EAAE,OAAO;IACbC,SAAS,EAAE,CAAC;IACZC,QAAQ,EAAE,OAAO;IACjBC,GAAG,EAAGC,GAAoB,IAAK;MAC7B,MAAMC,WAAW,GAAGD,GAAG,CAACD,GAAG,GAAGN,WAAW;MACzC,OAAOS,IAAI,CAACC,KAAK,CAACF,WAAW,GAAGR,WAAW,CAAC,GAAGA,WAAW;IAC5D,CAAC;IACDW,GAAG,EAAGJ,GAAoB,IAAK;MAC7B,MAAMK,WAAW,GAAGL,GAAG,CAACI,GAAG,GAAGX,WAAW;MACzC,OAAOS,IAAI,CAACI,IAAI,CAACD,WAAW,GAAGZ,WAAW,CAAC,GAAGA,WAAW;IAC3D,CAAC;IACDc,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAM,CAAC;IACzBC,QAAQ,EAAE;MAAED,IAAI,EAAE;IAAM,CAAC;IACzBE,SAAS,EAAE;MAAEF,IAAI,EAAE;IAAM,CAAC;IAC1BG,SAAS,EAAE;MACTC,UAAU,EAAE,EAAE;MACdC,MAAM,EAAE,CAAC;MACTC,qBAAqB,EAAE,QAAQ;MAC/BC,qBAAqB,EAAE,KAAK;MAC5BC,SAAS,EAAEC;IACb,CAAC;IACDC,WAAW,EAAE;MACXC,KAAK,EAAE;QACLC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrBP,MAAM,EAAE,CAAC,CAAC;QACVG,SAAS,EAAGK,MAIX,IAAK;UACJ,IAAIA,MAAM,CAACC,aAAa,KAAK,GAAG,IAAID,MAAM,CAACE,SAAS,KAAK,CAAC,EAAE;YAC1D5B,gBAAgB,CAAC6B,OAAO,GAAGC,MAAM,CAACJ,MAAM,CAACK,KAAK,CAAC;YAC/C,OAAOD,MAAM,CAACJ,MAAM,CAACK,KAAK,CAAC,CAACC,OAAO,CAACjC,gBAAgB,CAAC;UACvD;UACA,OAAO,EAAE;QACX;MACF;IACF,CAAC;IACDkC,CAAC,EAAE;EACL,CAAC,EACD;IACEhC,IAAI,EAAE,OAAO;IACbC,SAAS,EAAE,CAAC;IACZC,QAAQ,EAAE,MAAM;IAChBC,GAAG,EAAE8B,uBAAY,CAACC,aAAa;IAC/B1B,GAAG,EAAEyB,uBAAY,CAACE,aAAa;IAC/BxB,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAM,CAAC;IACzBC,QAAQ,EAAE;MAAED,IAAI,EAAE;IAAM,CAAC;IACzBU,WAAW,EAAE;MAAEV,IAAI,EAAE;IAAM,CAAC;IAC5BE,SAAS,EAAE;MAAEF,IAAI,EAAE;IAAM,CAAC;IAC1BG,SAAS,EAAE;MACTE,MAAM,EAAE,CAAC;MACTD,UAAU,EAAE,EAAE;MACdE,qBAAqB,EAAE,QAAQ;MAC/BC,qBAAqB,EAAE,KAAK;MAC5BiB,YAAY,EAAE,CACZH,uBAAY,CAACC,aAAa,EAC1BD,uBAAY,CAACE,aAAa,GAAG,CAAC,EAC9BF,uBAAY,CAACE,aAAa,GAAG,CAAC,EAC7BF,uBAAY,CAACE,aAAa,GAAG,CAAC,GAAI,CAAC,EACpCF,uBAAY,CAACE,aAAa,CAC3B;MACDf,SAAS,EAAGU,KAAa,IAAK,GAAGA,KAAK;IACxC,CAAC;IACDE,CAAC,EAAE;EACL,CAAC,CACF;AAAA;AAACK,OAAA,CAAA1C,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.formatFullDate = void 0;
|
|
7
7
|
const formatFullDate = (date, locale) => {
|
|
8
|
-
var _parts$find;
|
|
9
8
|
const formattedDate = date.toLocaleDateString(locale, {
|
|
10
9
|
day: 'numeric',
|
|
11
10
|
month: '2-digit',
|
|
@@ -20,8 +19,8 @@ const formatFullDate = (date, locale) => {
|
|
|
20
19
|
timeZoneName: 'shortOffset'
|
|
21
20
|
});
|
|
22
21
|
const parts = formatter.formatToParts(date);
|
|
23
|
-
const timeZoneOffset =
|
|
24
|
-
return
|
|
22
|
+
const timeZoneOffset = parts.find(part => part.type === 'timeZoneName')?.value;
|
|
23
|
+
return `${formattedDate} ${formattedTime} ${timeZoneOffset}`;
|
|
25
24
|
};
|
|
26
25
|
exports.formatFullDate = formatFullDate;
|
|
27
26
|
//# sourceMappingURL=formatFullDate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatFullDate.js","names":["formatFullDate","date","locale","
|
|
1
|
+
{"version":3,"file":"formatFullDate.js","names":["formatFullDate","date","locale","formattedDate","toLocaleDateString","day","month","year","replace","formattedTime","toLocaleTimeString","hour","minute","hour12","formatter","Intl","DateTimeFormat","timeZoneName","parts","formatToParts","timeZoneOffset","find","part","type","value","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/formatFullDate.ts"],"sourcesContent":["export const formatFullDate = (date: Date, locale: string): string => {\n const formattedDate = date\n .toLocaleDateString(locale, {\n day: 'numeric',\n month: '2-digit',\n year: '2-digit',\n })\n .replace(/\\//g, '.');\n\n const formattedTime = date.toLocaleTimeString(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12: false,\n });\n\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZoneName: 'shortOffset',\n });\n\n const parts = formatter.formatToParts(date);\n const timeZoneOffset = parts.find(\n (part) => part.type === 'timeZoneName'\n )?.value;\n\n return `${formattedDate} ${formattedTime} ${timeZoneOffset}`;\n};\n"],"mappings":";;;;;;AAAO,MAAMA,cAAc,GAAGA,CAACC,IAAU,EAAEC,MAAc,KAAa;EACpE,MAAMC,aAAa,GAAGF,IAAI,CACvBG,kBAAkB,CAACF,MAAM,EAAE;IAC1BG,GAAG,EAAE,SAAS;IACdC,KAAK,EAAE,SAAS;IAChBC,IAAI,EAAE;EACR,CAAC,CAAC,CACDC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;EAEtB,MAAMC,aAAa,GAAGR,IAAI,CAACS,kBAAkB,CAACR,MAAM,EAAE;IACpDS,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAG,IAAIC,IAAI,CAACC,cAAc,CAAC,OAAO,EAAE;IACjDC,YAAY,EAAE;EAChB,CAAC,CAAC;EAEF,MAAMC,KAAK,GAAGJ,SAAS,CAACK,aAAa,CAAClB,IAAI,CAAC;EAC3C,MAAMmB,cAAc,GAAGF,KAAK,CAACG,IAAI,CAC9BC,IAAI,IAAKA,IAAI,CAACC,IAAI,KAAK,cAC1B,CAAC,EAAEC,KAAK;EAER,OAAO,GAAGrB,aAAa,IAAIM,aAAa,IAAIW,cAAc,EAAE;AAC9D,CAAC;AAACK,OAAA,CAAAzB,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -9,10 +9,10 @@ const formatXAxisAdditionalLabel = (value, isGreaterThanTwoWeeks, locale) => {
|
|
|
9
9
|
if (isNaN(date.getTime())) {
|
|
10
10
|
return '';
|
|
11
11
|
}
|
|
12
|
-
return
|
|
12
|
+
return `${date.toLocaleDateString(locale, {
|
|
13
13
|
month: isGreaterThanTwoWeeks ? 'short' : 'long',
|
|
14
14
|
day: isGreaterThanTwoWeeks ? 'numeric' : undefined
|
|
15
|
-
})
|
|
15
|
+
})}`;
|
|
16
16
|
};
|
|
17
17
|
exports.formatXAxisAdditionalLabel = formatXAxisAdditionalLabel;
|
|
18
18
|
//# sourceMappingURL=formatXAxisAdditionalLabel.js.map
|
package/dist/main/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatXAxisAdditionalLabel.js","names":["formatXAxisAdditionalLabel","value","isGreaterThanTwoWeeks","locale","date","Date","isNaN","getTime","
|
|
1
|
+
{"version":3,"file":"formatXAxisAdditionalLabel.js","names":["formatXAxisAdditionalLabel","value","isGreaterThanTwoWeeks","locale","date","Date","isNaN","getTime","toLocaleDateString","month","day","undefined","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/formatXAxisAdditionalLabel.ts"],"sourcesContent":["export const formatXAxisAdditionalLabel = (\n value: unknown,\n isGreaterThanTwoWeeks: boolean,\n locale: string\n) => {\n const date = new Date(value as string);\n if (isNaN(date.getTime())) {\n return '';\n }\n return `${date.toLocaleDateString(locale, {\n month: isGreaterThanTwoWeeks ? 'short' : 'long',\n day: isGreaterThanTwoWeeks ? 'numeric' : undefined,\n })}`;\n};\n"],"mappings":";;;;;;AAAO,MAAMA,0BAA0B,GAAGA,CACxCC,KAAc,EACdC,qBAA8B,EAC9BC,MAAc,KACX;EACH,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACJ,KAAe,CAAC;EACtC,IAAIK,KAAK,CAACF,IAAI,CAACG,OAAO,CAAC,CAAC,CAAC,EAAE;IACzB,OAAO,EAAE;EACX;EACA,OAAO,GAAGH,IAAI,CAACI,kBAAkB,CAACL,MAAM,EAAE;IACxCM,KAAK,EAAEP,qBAAqB,GAAG,OAAO,GAAG,MAAM;IAC/CQ,GAAG,EAAER,qBAAqB,GAAG,SAAS,GAAGS;EAC3C,CAAC,CAAC,EAAE;AACN,CAAC;AAACC,OAAA,CAAAZ,0BAAA,GAAAA,0BAAA","ignoreList":[]}
|
|
@@ -7,13 +7,13 @@ exports.formatXAxisLabel = void 0;
|
|
|
7
7
|
var _constants = require("../../../constants");
|
|
8
8
|
const formatXAxisLabel = (value, isGreaterThanTwoWeeks, locale) => {
|
|
9
9
|
const date = new Date(value);
|
|
10
|
-
return isGreaterThanTwoWeeks ?
|
|
10
|
+
return isGreaterThanTwoWeeks ? `${date.toLocaleTimeString(locale, {
|
|
11
11
|
hour: 'numeric',
|
|
12
12
|
minute: '2-digit',
|
|
13
13
|
hour12: false
|
|
14
|
-
})
|
|
14
|
+
})}` : `${_constants.CHART_CONFIG.X_AXIS_DATE_PADDING}${date.toLocaleDateString(locale, {
|
|
15
15
|
day: 'numeric'
|
|
16
|
-
})
|
|
16
|
+
})}${_constants.CHART_CONFIG.X_AXIS_DATE_PADDING}`;
|
|
17
17
|
};
|
|
18
18
|
exports.formatXAxisLabel = formatXAxisLabel;
|
|
19
19
|
//# sourceMappingURL=formatXAxisLabel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatXAxisLabel.js","names":["_constants","require","formatXAxisLabel","value","isGreaterThanTwoWeeks","locale","date","Date","
|
|
1
|
+
{"version":3,"file":"formatXAxisLabel.js","names":["_constants","require","formatXAxisLabel","value","isGreaterThanTwoWeeks","locale","date","Date","toLocaleTimeString","hour","minute","hour12","CHART_CONFIG","X_AXIS_DATE_PADDING","toLocaleDateString","day","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/formatXAxisLabel.ts"],"sourcesContent":["import { CHART_CONFIG } from '../../../constants';\n\nexport const formatXAxisLabel = (\n value: unknown,\n isGreaterThanTwoWeeks: boolean,\n locale: string\n) => {\n const date = new Date(value as string);\n return isGreaterThanTwoWeeks\n ? `${date.toLocaleTimeString(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12: false,\n })}`\n : `${CHART_CONFIG.X_AXIS_DATE_PADDING}${date.toLocaleDateString(locale, {\n day: 'numeric',\n })}${CHART_CONFIG.X_AXIS_DATE_PADDING}`;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAGA,CAC9BC,KAAc,EACdC,qBAA8B,EAC9BC,MAAc,KACX;EACH,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACJ,KAAe,CAAC;EACtC,OAAOC,qBAAqB,GACxB,GAAGE,IAAI,CAACE,kBAAkB,CAACH,MAAM,EAAE;IACjCI,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC,EAAE,GACJ,GAAGC,uBAAY,CAACC,mBAAmB,GAAGP,IAAI,CAACQ,kBAAkB,CAACT,MAAM,EAAE;IACpEU,GAAG,EAAE;EACP,CAAC,CAAC,GAAGH,uBAAY,CAACC,mBAAmB,EAAE;AAC7C,CAAC;AAACG,OAAA,CAAAd,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -14,18 +14,16 @@ const TOOLTIP_STYLES = {
|
|
|
14
14
|
FULL_WIDTH: '100%'
|
|
15
15
|
};
|
|
16
16
|
const calculateBucketDisplayPrecision = bucketWidth => {
|
|
17
|
-
|
|
18
|
-
return ((_bucketWidth$toString = bucketWidth.toString().split('.')[1]) === null || _bucketWidth$toString === void 0 ? void 0 : _bucketWidth$toString.length) || 0;
|
|
17
|
+
return bucketWidth.toString().split('.')[1]?.length || 0;
|
|
19
18
|
};
|
|
20
19
|
const findSeriesParam = (params, seriesId) => {
|
|
21
20
|
return params.find(series => series.seriesId === seriesId);
|
|
22
21
|
};
|
|
23
22
|
const findSentimentSeriesParam = (params, sentimentLongs, sentimentShorts) => {
|
|
24
|
-
var _sentimentLongs$index, _sentimentShorts$inde;
|
|
25
23
|
const index = params[0].dataIndex;
|
|
26
24
|
return {
|
|
27
|
-
sentimentLong:
|
|
28
|
-
sentimentShort:
|
|
25
|
+
sentimentLong: sentimentLongs[index] ?? null,
|
|
26
|
+
sentimentShort: sentimentShorts[index] ?? null
|
|
29
27
|
};
|
|
30
28
|
};
|
|
31
29
|
const getSentimentOverbalanceLabel = (sentiment, bookType) => {
|
|
@@ -41,7 +39,18 @@ const formatCandleData = (candleData, labelCallback, isDesktop) => {
|
|
|
41
39
|
const closeLabel = labelCallback('close');
|
|
42
40
|
const lowLabel = labelCallback('low');
|
|
43
41
|
const highLabel = labelCallback('high');
|
|
44
|
-
return isDesktop ?
|
|
42
|
+
return isDesktop ? `<div><b>${candleLabel}:</b></div>
|
|
43
|
+
<div style="display: flex; gap: 4px; margin-right: 4px;">
|
|
44
|
+
<div>${openLabel}: ${open} </div>
|
|
45
|
+
<div>${highLabel}: ${high} </div>
|
|
46
|
+
<div>${lowLabel}: ${low} </div>
|
|
47
|
+
<div>${closeLabel}: ${close} </div>
|
|
48
|
+
</div>` : `<div><b>${candleLabel}:</b></div>
|
|
49
|
+
<div>${openLabel}: ${open} </div>
|
|
50
|
+
<div>${highLabel}: ${high} </div>
|
|
51
|
+
<div>${lowLabel}: ${low} </div>
|
|
52
|
+
<div>${closeLabel}: ${close} </div>
|
|
53
|
+
`;
|
|
45
54
|
};
|
|
46
55
|
const formatBookData = _ref => {
|
|
47
56
|
let {
|
|
@@ -57,10 +66,20 @@ const formatBookData = _ref => {
|
|
|
57
66
|
const priceRangeEnd = (matchedBucket.price + bucketWidth).toFixed(bucketDisplayPrecision);
|
|
58
67
|
const sentimentLabel = getSentimentOverbalanceLabel(matchedBucket.sentiment, bookType);
|
|
59
68
|
const sentimentValue = Math.abs(matchedBucket.sentiment);
|
|
60
|
-
return isDesktop ?
|
|
69
|
+
return isDesktop ? `<div><b>${labelCallback(bookLabelKey)}:</b></div>
|
|
70
|
+
<span style="margin-right: 4px;">${labelCallback('price_range')}: ${priceRangeStart} - ${priceRangeEnd} </span>
|
|
71
|
+
<span style="margin-right: 4px;">${labelCallback(sentimentLabel)}: ${sentimentValue}% </span>` : `<div><b>${labelCallback(bookLabelKey)}:</b></div>
|
|
72
|
+
<div>${labelCallback('price_range')}:</div>
|
|
73
|
+
<div>${priceRangeStart} - ${priceRangeEnd} </div>
|
|
74
|
+
<div>${labelCallback(sentimentLabel)}:</div>
|
|
75
|
+
<div>${sentimentValue}% </div>`;
|
|
61
76
|
};
|
|
62
77
|
const formatSentimentData = (sentimentLong, sentimentShort, labelCallback, isDesktop) => {
|
|
63
|
-
return isDesktop ?
|
|
78
|
+
return isDesktop ? `<div><b>${labelCallback('sentiment')}:</b></div>
|
|
79
|
+
<span style="margin-right: 4px;">${labelCallback('long')}: ${sentimentLong.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </span>
|
|
80
|
+
<span style="margin-right: 4px;">${labelCallback('short')}: ${sentimentShort.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </span>` : `<div><b>${labelCallback('sentiment')}:</b></div>
|
|
81
|
+
<div>${labelCallback('long')}: ${sentimentLong.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </div>
|
|
82
|
+
<div>${labelCallback('short')}: ${sentimentShort.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </div>`;
|
|
64
83
|
};
|
|
65
84
|
const hasValidCandleData = candleData => !!candleData[1] && !!candleData[2] && !!candleData[3] && !!candleData[4];
|
|
66
85
|
const hasValidSentimentData = (sentimentLong, sentimentShort) => sentimentLong !== null && sentimentShort !== null;
|
|
@@ -69,7 +88,7 @@ const findMatchingBucket = (buckets, bucketsIndex, selectedPrice, bucketWidth) =
|
|
|
69
88
|
return undefined;
|
|
70
89
|
}
|
|
71
90
|
const selectedBuckets = buckets[bucketsIndex];
|
|
72
|
-
return selectedBuckets
|
|
91
|
+
return selectedBuckets?.find(_ref2 => {
|
|
73
92
|
let {
|
|
74
93
|
price
|
|
75
94
|
} = _ref2;
|
|
@@ -105,7 +124,7 @@ const getTooltipFormatter = _ref3 => {
|
|
|
105
124
|
const bucketDisplayPrecision = calculateBucketDisplayPrecision(bucketWidth);
|
|
106
125
|
const time = new Date(candleParam.axisValue);
|
|
107
126
|
const candleData = candleParam.value;
|
|
108
|
-
const bucketsIndex = booksParam
|
|
127
|
+
const bucketsIndex = booksParam?.value[2];
|
|
109
128
|
const matchedBucket = findMatchingBucket(buckets, bucketsIndex, selectedPrice, bucketWidth);
|
|
110
129
|
const showCandles = hasValidCandleData(candleData);
|
|
111
130
|
const showSentiment = hasValidSentimentData(sentimentLong, sentimentShort);
|
|
@@ -150,7 +169,19 @@ const buildDesktopTooltip = _ref4 => {
|
|
|
150
169
|
} = _ref4;
|
|
151
170
|
const backgroundColor = isDark ? _labsWidgetCommon.colorPalette.black : _labsWidgetCommon.colorPalette.white;
|
|
152
171
|
const fullWidth = TOOLTIP_STYLES.FULL_WIDTH;
|
|
153
|
-
return
|
|
172
|
+
return `<div style="width: ${fullWidth}; background-color: ${backgroundColor};">
|
|
173
|
+
<div style="width: ${fullWidth}; display: flex; justify-content: space-between;">
|
|
174
|
+
<div style="width: 40%;">
|
|
175
|
+
${candleSection}
|
|
176
|
+
</div>
|
|
177
|
+
<div style="width: 22%;">
|
|
178
|
+
${sentimentSection}
|
|
179
|
+
</div>
|
|
180
|
+
<div style="width: 38%;">
|
|
181
|
+
${bookSection}
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
</div>`;
|
|
154
185
|
};
|
|
155
186
|
const buildMobileTooltip = _ref5 => {
|
|
156
187
|
let {
|
|
@@ -164,6 +195,19 @@ const buildMobileTooltip = _ref5 => {
|
|
|
164
195
|
const columnWidth = TOOLTIP_STYLES.MOBILE_COLUMN_WIDTH;
|
|
165
196
|
const fullWidth = TOOLTIP_STYLES.FULL_WIDTH;
|
|
166
197
|
const padding = TOOLTIP_STYLES.PADDING_BOTTOM;
|
|
167
|
-
return
|
|
198
|
+
return `<div style="width: ${fullWidth}; background-color: ${backgroundColor};">
|
|
199
|
+
<div style="padding-bottom: ${padding};">${timeFormatted}</div>
|
|
200
|
+
<div style="width: ${fullWidth}; display: flex; justify-content: space-between;">
|
|
201
|
+
<div style="width: ${columnWidth};">
|
|
202
|
+
${candleSection}
|
|
203
|
+
</div>
|
|
204
|
+
<div style="width: ${columnWidth};">
|
|
205
|
+
${sentimentSection}
|
|
206
|
+
</div>
|
|
207
|
+
<div style="width: ${columnWidth};">
|
|
208
|
+
${bookSection}
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
</div>`;
|
|
168
212
|
};
|
|
169
213
|
//# sourceMappingURL=getTooltipFormatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTooltipFormatter.js","names":["_labsWidgetCommon","require","_graphql","_formatFullDate","SENTIMENT_DISPLAY_PRECISION","TOOLTIP_STYLES","MOBILE_COLUMN_WIDTH","PADDING_BOTTOM","FULL_WIDTH","calculateBucketDisplayPrecision","bucketWidth","_bucketWidth$toString","toString","split","length","findSeriesParam","params","seriesId","find","series","findSentimentSeriesParam","sentimentLongs","sentimentShorts","_sentimentLongs$index","_sentimentShorts$inde","index","dataIndex","sentimentLong","sentimentShort","getSentimentOverbalanceLabel","sentiment","bookType","BookType","Order","formatCandleData","candleData","labelCallback","isDesktop","open","close","low","high","candleLabel","openLabel","closeLabel","lowLabel","highLabel","concat","formatBookData","_ref","matchedBucket","bucketDisplayPrecision","bookLabelKey","priceRangeStart","price","toFixed","priceRangeEnd","sentimentLabel","sentimentValue","Math","abs","formatSentimentData","hasValidCandleData","hasValidSentimentData","findMatchingBucket","buckets","bucketsIndex","selectedPrice","undefined","selectedBuckets","_ref2","getTooltipFormatter","_ref3","locale","isDark","Array","isArray","candleParam","booksParam","time","Date","axisValue","value","showCandles","showSentiment","timeFormatted","formatFullDate","candleSection","bookSection","sentimentSection","buildDesktopTooltip","buildMobileTooltip","exports","_ref4","backgroundColor","colorPalette","black","white","fullWidth","_ref5","columnWidth","padding"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\n\nimport { BookType } from '../../../../gql/types/graphql';\nimport type { Bucket, TooltipParam } from '../types';\nimport { formatFullDate } from './formatFullDate';\n\nconst SENTIMENT_DISPLAY_PRECISION = 2;\n\nconst TOOLTIP_STYLES = {\n MOBILE_COLUMN_WIDTH: '33.3%',\n PADDING_BOTTOM: '4px',\n FULL_WIDTH: '100%',\n} as const;\n\nconst calculateBucketDisplayPrecision = (bucketWidth: number): number => {\n return bucketWidth.toString().split('.')[1]?.length || 0;\n};\n\nconst findSeriesParam = <T extends TooltipParam['seriesId']>(\n params: TooltipParam[],\n seriesId: T\n): Extract<TooltipParam, { seriesId: T }> | undefined => {\n return params.find(\n (series): series is Extract<TooltipParam, { seriesId: T }> =>\n series.seriesId === seriesId\n );\n};\n\nconst findSentimentSeriesParam = (\n params: TooltipParam[],\n sentimentLongs: (number | null)[],\n sentimentShorts: (number | null)[]\n): {\n sentimentLong: number | null;\n sentimentShort: number | null;\n} => {\n const index = params[0].dataIndex as number;\n\n return {\n sentimentLong: sentimentLongs[index] ?? null,\n sentimentShort: sentimentShorts[index] ?? null,\n };\n};\n\nconst getSentimentOverbalanceLabel = (\n sentiment: number,\n bookType: BookType\n): string => {\n if (sentiment < 0) {\n return bookType === BookType.Order\n ? 'sell_overbalance'\n : 'short_overbalance';\n }\n return bookType === BookType.Order ? 'buy_overbalance' : 'long_overbalance';\n};\n\nconst formatCandleData = (\n candleData: [number, number, number, number, number],\n labelCallback: (key: string) => string,\n isDesktop: boolean\n): string => {\n const [, open, close, low, high] = candleData;\n const candleLabel = labelCallback('candle');\n const openLabel = labelCallback('open');\n const closeLabel = labelCallback('close');\n const lowLabel = labelCallback('low');\n const highLabel = labelCallback('high');\n\n return isDesktop\n ? `<div><b>${candleLabel}:</b></div>\n<div style=\"display: flex; gap: 4px; margin-right: 4px;\">\n<div>${openLabel}: ${open} </div>\n<div>${highLabel}: ${high} </div>\n<div>${lowLabel}: ${low} </div>\n<div>${closeLabel}: ${close} </div>\n</div>`\n : `<div><b>${candleLabel}:</b></div>\n<div>${openLabel}: ${open} </div>\n<div>${highLabel}: ${high} </div>\n<div>${lowLabel}: ${low} </div>\n<div>${closeLabel}: ${close} </div>\n`;\n};\n\nconst formatBookData = ({\n matchedBucket,\n bucketWidth,\n bucketDisplayPrecision,\n bookType,\n labelCallback,\n isDesktop,\n}: {\n matchedBucket: Bucket;\n bucketWidth: number;\n bucketDisplayPrecision: number;\n bookType: BookType;\n labelCallback: (key: string) => string;\n isDesktop: boolean;\n}): string => {\n const bookLabelKey = bookType === BookType.Order ? 'orders' : 'trades';\n const priceRangeStart = matchedBucket.price.toFixed(bucketDisplayPrecision);\n const priceRangeEnd = (matchedBucket.price + bucketWidth).toFixed(\n bucketDisplayPrecision\n );\n const sentimentLabel = getSentimentOverbalanceLabel(\n matchedBucket.sentiment,\n bookType\n );\n const sentimentValue = Math.abs(matchedBucket.sentiment);\n\n return isDesktop\n ? `<div><b>${labelCallback(bookLabelKey)}:</b></div>\n<span style=\"margin-right: 4px;\">${labelCallback('price_range')}: ${priceRangeStart} - ${priceRangeEnd} </span>\n<span style=\"margin-right: 4px;\">${labelCallback(sentimentLabel)}: ${sentimentValue}% </span>`\n : `<div><b>${labelCallback(bookLabelKey)}:</b></div>\n<div>${labelCallback('price_range')}:</div>\n<div>${priceRangeStart} - ${priceRangeEnd} </div>\n<div>${labelCallback(sentimentLabel)}:</div>\n<div>${sentimentValue}% </div>`;\n};\n\nconst formatSentimentData = (\n sentimentLong: number,\n sentimentShort: number,\n labelCallback: (key: string) => string,\n isDesktop: boolean\n): string => {\n return isDesktop\n ? `<div><b>${labelCallback('sentiment')}:</b></div>\n <span style=\"margin-right: 4px;\">${labelCallback('long')}: ${sentimentLong.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </span>\n <span style=\"margin-right: 4px;\">${labelCallback('short')}: ${sentimentShort.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </span>`\n : `<div><b>${labelCallback('sentiment')}:</b></div>\n<div>${labelCallback('long')}: ${sentimentLong.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </div>\n<div>${labelCallback('short')}: ${sentimentShort.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </div>`;\n};\n\nconst hasValidCandleData = (\n candleData: [number, number, number, number, number]\n): boolean =>\n !!candleData[1] && !!candleData[2] && !!candleData[3] && !!candleData[4];\n\nconst hasValidSentimentData = (\n sentimentLong: number | null,\n sentimentShort: number | null\n): boolean => sentimentLong !== null && sentimentShort !== null;\n\nconst findMatchingBucket = (\n buckets: Bucket[][],\n bucketsIndex: number | undefined,\n selectedPrice: number,\n bucketWidth: number\n): Bucket | undefined => {\n if (bucketsIndex === undefined) {\n return undefined;\n }\n const selectedBuckets = buckets[bucketsIndex];\n return selectedBuckets?.find(\n ({ price }) => selectedPrice >= price && selectedPrice < price + bucketWidth\n );\n};\n\nexport const getTooltipFormatter = ({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n bookType,\n labelCallback,\n sentimentLongs,\n sentimentShorts,\n isDesktop,\n locale,\n isDark,\n}: {\n params: TooltipParam[];\n buckets: Bucket[][];\n bucketWidth: number;\n selectedPrice: number;\n bookType: BookType;\n labelCallback: (key: string) => string;\n sentimentLongs: (number | null)[];\n sentimentShorts: (number | null)[];\n isDesktop: boolean;\n locale: string;\n isDark: boolean;\n}) => {\n if (!params || !Array.isArray(params) || params.length === 0) {\n return '';\n }\n\n const candleParam = findSeriesParam(params, 'candlestick');\n const booksParam = findSeriesParam(params, 'heatmap');\n const { sentimentLong, sentimentShort } = findSentimentSeriesParam(\n params,\n sentimentLongs,\n sentimentShorts\n );\n\n if (!candleParam) {\n return '';\n }\n\n const bucketDisplayPrecision = calculateBucketDisplayPrecision(bucketWidth);\n const time = new Date(candleParam.axisValue as string);\n const candleData = candleParam.value;\n const bucketsIndex = booksParam?.value[2];\n const matchedBucket = findMatchingBucket(\n buckets,\n bucketsIndex,\n selectedPrice,\n bucketWidth\n );\n const showCandles = hasValidCandleData(candleData);\n const showSentiment = hasValidSentimentData(sentimentLong, sentimentShort);\n\n if (!showCandles && !matchedBucket) {\n return '';\n }\n\n const timeFormatted = formatFullDate(time, locale);\n const candleSection = showCandles\n ? formatCandleData(candleData, labelCallback, isDesktop)\n : '';\n\n const bookSection = matchedBucket\n ? formatBookData({\n matchedBucket,\n bucketWidth,\n bucketDisplayPrecision,\n bookType,\n labelCallback,\n isDesktop,\n })\n : '';\n\n const sentimentSection =\n showSentiment && sentimentLong && sentimentShort\n ? formatSentimentData(\n sentimentLong,\n sentimentShort,\n labelCallback,\n isDesktop\n )\n : '';\n\n if (isDesktop) {\n return buildDesktopTooltip({\n timeFormatted,\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n });\n }\n\n return buildMobileTooltip({\n timeFormatted,\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n });\n};\n\ninterface TooltipSections {\n timeFormatted: string;\n candleSection: string;\n sentimentSection: string;\n bookSection: string;\n}\n\nconst buildDesktopTooltip = ({\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n}: TooltipSections & {\n isDark: boolean;\n}): string => {\n const backgroundColor = isDark ? colorPalette.black : colorPalette.white;\n const fullWidth = TOOLTIP_STYLES.FULL_WIDTH;\n\n return `<div style=\"width: ${fullWidth}; background-color: ${backgroundColor};\">\n <div style=\"width: ${fullWidth}; display: flex; justify-content: space-between;\">\n <div style=\"width: 40%;\">\n${candleSection}\n</div>\n<div style=\"width: 22%;\">\n${sentimentSection}\n</div>\n<div style=\"width: 38%;\">\n${bookSection}\n</div>\n</div>\n</div>`;\n};\n\nconst buildMobileTooltip = ({\n timeFormatted,\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n}: TooltipSections & { isDark: boolean }): string => {\n const backgroundColor = isDark ? colorPalette.black : colorPalette.white;\n const columnWidth = TOOLTIP_STYLES.MOBILE_COLUMN_WIDTH;\n const fullWidth = TOOLTIP_STYLES.FULL_WIDTH;\n const padding = TOOLTIP_STYLES.PADDING_BOTTOM;\n\n return `<div style=\"width: ${fullWidth}; background-color: ${backgroundColor};\">\n <div style=\"padding-bottom: ${padding};\">${timeFormatted}</div>\n <div style=\"width: ${fullWidth}; display: flex; justify-content: space-between;\">\n <div style=\"width: ${columnWidth};\">\n${candleSection}\n</div>\n<div style=\"width: ${columnWidth};\">\n${sentimentSection}\n</div>\n<div style=\"width: ${columnWidth};\">\n${bookSection}\n</div>\n</div>\n</div>`;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"getTooltipFormatter.js","names":["_labsWidgetCommon","require","_graphql","_formatFullDate","SENTIMENT_DISPLAY_PRECISION","TOOLTIP_STYLES","MOBILE_COLUMN_WIDTH","PADDING_BOTTOM","FULL_WIDTH","calculateBucketDisplayPrecision","bucketWidth","toString","split","length","findSeriesParam","params","seriesId","find","series","findSentimentSeriesParam","sentimentLongs","sentimentShorts","index","dataIndex","sentimentLong","sentimentShort","getSentimentOverbalanceLabel","sentiment","bookType","BookType","Order","formatCandleData","candleData","labelCallback","isDesktop","open","close","low","high","candleLabel","openLabel","closeLabel","lowLabel","highLabel","formatBookData","_ref","matchedBucket","bucketDisplayPrecision","bookLabelKey","priceRangeStart","price","toFixed","priceRangeEnd","sentimentLabel","sentimentValue","Math","abs","formatSentimentData","hasValidCandleData","hasValidSentimentData","findMatchingBucket","buckets","bucketsIndex","selectedPrice","undefined","selectedBuckets","_ref2","getTooltipFormatter","_ref3","locale","isDark","Array","isArray","candleParam","booksParam","time","Date","axisValue","value","showCandles","showSentiment","timeFormatted","formatFullDate","candleSection","bookSection","sentimentSection","buildDesktopTooltip","buildMobileTooltip","exports","_ref4","backgroundColor","colorPalette","black","white","fullWidth","_ref5","columnWidth","padding"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/getTooltipFormatter.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\n\nimport { BookType } from '../../../../gql/types/graphql';\nimport type { Bucket, TooltipParam } from '../types';\nimport { formatFullDate } from './formatFullDate';\n\nconst SENTIMENT_DISPLAY_PRECISION = 2;\n\nconst TOOLTIP_STYLES = {\n MOBILE_COLUMN_WIDTH: '33.3%',\n PADDING_BOTTOM: '4px',\n FULL_WIDTH: '100%',\n} as const;\n\nconst calculateBucketDisplayPrecision = (bucketWidth: number): number => {\n return bucketWidth.toString().split('.')[1]?.length || 0;\n};\n\nconst findSeriesParam = <T extends TooltipParam['seriesId']>(\n params: TooltipParam[],\n seriesId: T\n): Extract<TooltipParam, { seriesId: T }> | undefined => {\n return params.find(\n (series): series is Extract<TooltipParam, { seriesId: T }> =>\n series.seriesId === seriesId\n );\n};\n\nconst findSentimentSeriesParam = (\n params: TooltipParam[],\n sentimentLongs: (number | null)[],\n sentimentShorts: (number | null)[]\n): {\n sentimentLong: number | null;\n sentimentShort: number | null;\n} => {\n const index = params[0].dataIndex as number;\n\n return {\n sentimentLong: sentimentLongs[index] ?? null,\n sentimentShort: sentimentShorts[index] ?? null,\n };\n};\n\nconst getSentimentOverbalanceLabel = (\n sentiment: number,\n bookType: BookType\n): string => {\n if (sentiment < 0) {\n return bookType === BookType.Order\n ? 'sell_overbalance'\n : 'short_overbalance';\n }\n return bookType === BookType.Order ? 'buy_overbalance' : 'long_overbalance';\n};\n\nconst formatCandleData = (\n candleData: [number, number, number, number, number],\n labelCallback: (key: string) => string,\n isDesktop: boolean\n): string => {\n const [, open, close, low, high] = candleData;\n const candleLabel = labelCallback('candle');\n const openLabel = labelCallback('open');\n const closeLabel = labelCallback('close');\n const lowLabel = labelCallback('low');\n const highLabel = labelCallback('high');\n\n return isDesktop\n ? `<div><b>${candleLabel}:</b></div>\n<div style=\"display: flex; gap: 4px; margin-right: 4px;\">\n<div>${openLabel}: ${open} </div>\n<div>${highLabel}: ${high} </div>\n<div>${lowLabel}: ${low} </div>\n<div>${closeLabel}: ${close} </div>\n</div>`\n : `<div><b>${candleLabel}:</b></div>\n<div>${openLabel}: ${open} </div>\n<div>${highLabel}: ${high} </div>\n<div>${lowLabel}: ${low} </div>\n<div>${closeLabel}: ${close} </div>\n`;\n};\n\nconst formatBookData = ({\n matchedBucket,\n bucketWidth,\n bucketDisplayPrecision,\n bookType,\n labelCallback,\n isDesktop,\n}: {\n matchedBucket: Bucket;\n bucketWidth: number;\n bucketDisplayPrecision: number;\n bookType: BookType;\n labelCallback: (key: string) => string;\n isDesktop: boolean;\n}): string => {\n const bookLabelKey = bookType === BookType.Order ? 'orders' : 'trades';\n const priceRangeStart = matchedBucket.price.toFixed(bucketDisplayPrecision);\n const priceRangeEnd = (matchedBucket.price + bucketWidth).toFixed(\n bucketDisplayPrecision\n );\n const sentimentLabel = getSentimentOverbalanceLabel(\n matchedBucket.sentiment,\n bookType\n );\n const sentimentValue = Math.abs(matchedBucket.sentiment);\n\n return isDesktop\n ? `<div><b>${labelCallback(bookLabelKey)}:</b></div>\n<span style=\"margin-right: 4px;\">${labelCallback('price_range')}: ${priceRangeStart} - ${priceRangeEnd} </span>\n<span style=\"margin-right: 4px;\">${labelCallback(sentimentLabel)}: ${sentimentValue}% </span>`\n : `<div><b>${labelCallback(bookLabelKey)}:</b></div>\n<div>${labelCallback('price_range')}:</div>\n<div>${priceRangeStart} - ${priceRangeEnd} </div>\n<div>${labelCallback(sentimentLabel)}:</div>\n<div>${sentimentValue}% </div>`;\n};\n\nconst formatSentimentData = (\n sentimentLong: number,\n sentimentShort: number,\n labelCallback: (key: string) => string,\n isDesktop: boolean\n): string => {\n return isDesktop\n ? `<div><b>${labelCallback('sentiment')}:</b></div>\n <span style=\"margin-right: 4px;\">${labelCallback('long')}: ${sentimentLong.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </span>\n <span style=\"margin-right: 4px;\">${labelCallback('short')}: ${sentimentShort.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </span>`\n : `<div><b>${labelCallback('sentiment')}:</b></div>\n<div>${labelCallback('long')}: ${sentimentLong.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </div>\n<div>${labelCallback('short')}: ${sentimentShort.toFixed(SENTIMENT_DISPLAY_PRECISION)}% </div>`;\n};\n\nconst hasValidCandleData = (\n candleData: [number, number, number, number, number]\n): boolean =>\n !!candleData[1] && !!candleData[2] && !!candleData[3] && !!candleData[4];\n\nconst hasValidSentimentData = (\n sentimentLong: number | null,\n sentimentShort: number | null\n): boolean => sentimentLong !== null && sentimentShort !== null;\n\nconst findMatchingBucket = (\n buckets: Bucket[][],\n bucketsIndex: number | undefined,\n selectedPrice: number,\n bucketWidth: number\n): Bucket | undefined => {\n if (bucketsIndex === undefined) {\n return undefined;\n }\n const selectedBuckets = buckets[bucketsIndex];\n return selectedBuckets?.find(\n ({ price }) => selectedPrice >= price && selectedPrice < price + bucketWidth\n );\n};\n\nexport const getTooltipFormatter = ({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n bookType,\n labelCallback,\n sentimentLongs,\n sentimentShorts,\n isDesktop,\n locale,\n isDark,\n}: {\n params: TooltipParam[];\n buckets: Bucket[][];\n bucketWidth: number;\n selectedPrice: number;\n bookType: BookType;\n labelCallback: (key: string) => string;\n sentimentLongs: (number | null)[];\n sentimentShorts: (number | null)[];\n isDesktop: boolean;\n locale: string;\n isDark: boolean;\n}) => {\n if (!params || !Array.isArray(params) || params.length === 0) {\n return '';\n }\n\n const candleParam = findSeriesParam(params, 'candlestick');\n const booksParam = findSeriesParam(params, 'heatmap');\n const { sentimentLong, sentimentShort } = findSentimentSeriesParam(\n params,\n sentimentLongs,\n sentimentShorts\n );\n\n if (!candleParam) {\n return '';\n }\n\n const bucketDisplayPrecision = calculateBucketDisplayPrecision(bucketWidth);\n const time = new Date(candleParam.axisValue as string);\n const candleData = candleParam.value;\n const bucketsIndex = booksParam?.value[2];\n const matchedBucket = findMatchingBucket(\n buckets,\n bucketsIndex,\n selectedPrice,\n bucketWidth\n );\n const showCandles = hasValidCandleData(candleData);\n const showSentiment = hasValidSentimentData(sentimentLong, sentimentShort);\n\n if (!showCandles && !matchedBucket) {\n return '';\n }\n\n const timeFormatted = formatFullDate(time, locale);\n const candleSection = showCandles\n ? formatCandleData(candleData, labelCallback, isDesktop)\n : '';\n\n const bookSection = matchedBucket\n ? formatBookData({\n matchedBucket,\n bucketWidth,\n bucketDisplayPrecision,\n bookType,\n labelCallback,\n isDesktop,\n })\n : '';\n\n const sentimentSection =\n showSentiment && sentimentLong && sentimentShort\n ? formatSentimentData(\n sentimentLong,\n sentimentShort,\n labelCallback,\n isDesktop\n )\n : '';\n\n if (isDesktop) {\n return buildDesktopTooltip({\n timeFormatted,\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n });\n }\n\n return buildMobileTooltip({\n timeFormatted,\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n });\n};\n\ninterface TooltipSections {\n timeFormatted: string;\n candleSection: string;\n sentimentSection: string;\n bookSection: string;\n}\n\nconst buildDesktopTooltip = ({\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n}: TooltipSections & {\n isDark: boolean;\n}): string => {\n const backgroundColor = isDark ? colorPalette.black : colorPalette.white;\n const fullWidth = TOOLTIP_STYLES.FULL_WIDTH;\n\n return `<div style=\"width: ${fullWidth}; background-color: ${backgroundColor};\">\n <div style=\"width: ${fullWidth}; display: flex; justify-content: space-between;\">\n <div style=\"width: 40%;\">\n${candleSection}\n</div>\n<div style=\"width: 22%;\">\n${sentimentSection}\n</div>\n<div style=\"width: 38%;\">\n${bookSection}\n</div>\n</div>\n</div>`;\n};\n\nconst buildMobileTooltip = ({\n timeFormatted,\n candleSection,\n sentimentSection,\n bookSection,\n isDark,\n}: TooltipSections & { isDark: boolean }): string => {\n const backgroundColor = isDark ? colorPalette.black : colorPalette.white;\n const columnWidth = TOOLTIP_STYLES.MOBILE_COLUMN_WIDTH;\n const fullWidth = TOOLTIP_STYLES.FULL_WIDTH;\n const padding = TOOLTIP_STYLES.PADDING_BOTTOM;\n\n return `<div style=\"width: ${fullWidth}; background-color: ${backgroundColor};\">\n <div style=\"padding-bottom: ${padding};\">${timeFormatted}</div>\n <div style=\"width: ${fullWidth}; display: flex; justify-content: space-between;\">\n <div style=\"width: ${columnWidth};\">\n${candleSection}\n</div>\n<div style=\"width: ${columnWidth};\">\n${sentimentSection}\n</div>\n<div style=\"width: ${columnWidth};\">\n${bookSection}\n</div>\n</div>\n</div>`;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,6 @@ const handleLabelUpdate = (instance, mainData, labelTimerRef, isGreaterThanTwoWe
|
|
|
13
13
|
clearTimeout(labelTimerRef.current);
|
|
14
14
|
}
|
|
15
15
|
labelTimerRef.current = setTimeout(() => {
|
|
16
|
-
var _isGreaterThanTwoWeek;
|
|
17
16
|
const {
|
|
18
17
|
dates
|
|
19
18
|
} = mainData;
|
|
@@ -31,7 +30,7 @@ const handleLabelUpdate = (instance, mainData, labelTimerRef, isGreaterThanTwoWe
|
|
|
31
30
|
return;
|
|
32
31
|
}
|
|
33
32
|
const isGreaterThanTwoWeeks = (0, _isDifferenceGreaterThanTwoWeeks.isDifferenceGreaterThanTwoWeeks)(dates[startValue], dates[endValue]);
|
|
34
|
-
const wasGreaterThanTwoWeeks =
|
|
33
|
+
const wasGreaterThanTwoWeeks = isGreaterThanTwoWeeksRef.current ?? false;
|
|
35
34
|
if (isGreaterThanTwoWeeks !== wasGreaterThanTwoWeeks) {
|
|
36
35
|
const labelsData = (0, _getLabelData.getLabelData)({
|
|
37
36
|
dates,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleLabelUpdate.js","names":["_formatXAxisAdditionalLabel","require","_formatXAxisLabel","_getLabelData","_isDifferenceGreaterThanTwoWeeks","handleLabelUpdate","instance","mainData","labelTimerRef","isGreaterThanTwoWeeksRef","locale","current","clearTimeout","setTimeout","
|
|
1
|
+
{"version":3,"file":"handleLabelUpdate.js","names":["_formatXAxisAdditionalLabel","require","_formatXAxisLabel","_getLabelData","_isDifferenceGreaterThanTwoWeeks","handleLabelUpdate","instance","mainData","labelTimerRef","isGreaterThanTwoWeeksRef","locale","current","clearTimeout","setTimeout","dates","dataZoom","getOption","Array","isArray","length","startValue","endValue","isGreaterThanTwoWeeks","isDifferenceGreaterThanTwoWeeks","wasGreaterThanTwoWeeks","labelsData","getLabelData","setOption","xAxis","id","axisLabel","formatter","value","formatXAxisLabel","customValues","formatXAxisAdditionalLabel","exports"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/chartUtils/handleLabelUpdate.ts"],"sourcesContent":["import type { EChartsType } from 'echarts';\nimport type { MutableRefObject } from 'react';\n\nimport type { ChartProps, DataZoomArray } from '../types';\nimport { formatXAxisAdditionalLabel } from './formatXAxisAdditionalLabel';\nimport { formatXAxisLabel } from './formatXAxisLabel';\nimport { getLabelData } from './getLabelData';\nimport { isDifferenceGreaterThanTwoWeeks } from './isDifferenceGreaterThanTwoWeeks';\n\nexport const handleLabelUpdate = (\n instance: EChartsType,\n mainData: ChartProps['mainData'],\n labelTimerRef: MutableRefObject<NodeJS.Timeout | null>,\n isGreaterThanTwoWeeksRef: MutableRefObject<boolean | null>,\n locale: string\n): void => {\n if (labelTimerRef.current) {\n clearTimeout(labelTimerRef.current);\n }\n labelTimerRef.current = setTimeout(() => {\n const { dates } = mainData;\n\n const { dataZoom } = instance.getOption();\n if (\n !Array.isArray(dataZoom) ||\n dataZoom.length === 0 ||\n !dataZoom[0] ||\n typeof dataZoom[0].startValue !== 'number' ||\n typeof dataZoom[0].endValue !== 'number'\n ) {\n return;\n }\n\n const { startValue, endValue } = dataZoom[0] as DataZoomArray[0];\n\n if (!dates[startValue] || !dates[endValue]) {\n return;\n }\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n dates[startValue],\n dates[endValue]\n );\n\n const wasGreaterThanTwoWeeks = isGreaterThanTwoWeeksRef.current ?? false;\n\n if (isGreaterThanTwoWeeks !== wasGreaterThanTwoWeeks) {\n const labelsData = getLabelData({\n dates,\n isGreaterThanTwoWeeks,\n });\n\n instance.setOption({\n xAxis: [\n {\n id: 'main-xAxis',\n axisLabel: {\n formatter: (value: string) =>\n formatXAxisLabel(value, isGreaterThanTwoWeeks, locale),\n },\n },\n {\n id: 'additional-xAxis',\n axisLabel: {\n customValues: labelsData,\n formatter: (value: unknown) =>\n formatXAxisAdditionalLabel(\n value,\n isGreaterThanTwoWeeks,\n locale\n ),\n },\n },\n ],\n });\n\n isGreaterThanTwoWeeksRef.current = isGreaterThanTwoWeeks;\n }\n }, 50);\n};\n"],"mappings":";;;;;;AAIA,IAAAA,2BAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,gCAAA,GAAAH,OAAA;AAEO,MAAMI,iBAAiB,GAAGA,CAC/BC,QAAqB,EACrBC,QAAgC,EAChCC,aAAsD,EACtDC,wBAA0D,EAC1DC,MAAc,KACL;EACT,IAAIF,aAAa,CAACG,OAAO,EAAE;IACzBC,YAAY,CAACJ,aAAa,CAACG,OAAO,CAAC;EACrC;EACAH,aAAa,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;IACvC,MAAM;MAAEC;IAAM,CAAC,GAAGP,QAAQ;IAE1B,MAAM;MAAEQ;IAAS,CAAC,GAAGT,QAAQ,CAACU,SAAS,CAAC,CAAC;IACzC,IACE,CAACC,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,IACxBA,QAAQ,CAACI,MAAM,KAAK,CAAC,IACrB,CAACJ,QAAQ,CAAC,CAAC,CAAC,IACZ,OAAOA,QAAQ,CAAC,CAAC,CAAC,CAACK,UAAU,KAAK,QAAQ,IAC1C,OAAOL,QAAQ,CAAC,CAAC,CAAC,CAACM,QAAQ,KAAK,QAAQ,EACxC;MACA;IACF;IAEA,MAAM;MAAED,UAAU;MAAEC;IAAS,CAAC,GAAGN,QAAQ,CAAC,CAAC,CAAqB;IAEhE,IAAI,CAACD,KAAK,CAACM,UAAU,CAAC,IAAI,CAACN,KAAK,CAACO,QAAQ,CAAC,EAAE;MAC1C;IACF;IAEA,MAAMC,qBAAqB,GAAG,IAAAC,gEAA+B,EAC3DT,KAAK,CAACM,UAAU,CAAC,EACjBN,KAAK,CAACO,QAAQ,CAChB,CAAC;IAED,MAAMG,sBAAsB,GAAGf,wBAAwB,CAACE,OAAO,IAAI,KAAK;IAExE,IAAIW,qBAAqB,KAAKE,sBAAsB,EAAE;MACpD,MAAMC,UAAU,GAAG,IAAAC,0BAAY,EAAC;QAC9BZ,KAAK;QACLQ;MACF,CAAC,CAAC;MAEFhB,QAAQ,CAACqB,SAAS,CAAC;QACjBC,KAAK,EAAE,CACL;UACEC,EAAE,EAAE,YAAY;UAChBC,SAAS,EAAE;YACTC,SAAS,EAAGC,KAAa,IACvB,IAAAC,kCAAgB,EAACD,KAAK,EAAEV,qBAAqB,EAAEZ,MAAM;UACzD;QACF,CAAC,EACD;UACEmB,EAAE,EAAE,kBAAkB;UACtBC,SAAS,EAAE;YACTI,YAAY,EAAET,UAAU;YACxBM,SAAS,EAAGC,KAAc,IACxB,IAAAG,sDAA0B,EACxBH,KAAK,EACLV,qBAAqB,EACrBZ,MACF;UACJ;QACF,CAAC;MAEL,CAAC,CAAC;MAEFD,wBAAwB,CAACE,OAAO,GAAGW,qBAAqB;IAC1D;EACF,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACc,OAAA,CAAA/B,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|