From c407e3ac872077665831569e6360024aca18e943 Mon Sep 17 00:00:00 2001 From: Andrey Kuzubov Date: Mon, 29 May 2023 16:19:54 +0400 Subject: [PATCH 1/2] protect crosshair move params --- .../lib/app/subscriptions-function-manager.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lightweightlibrary/lib/app/subscriptions-function-manager.js b/lightweightlibrary/lib/app/subscriptions-function-manager.js index f76f996..25b6387 100644 --- a/lightweightlibrary/lib/app/subscriptions-function-manager.js +++ b/lightweightlibrary/lib/app/subscriptions-function-manager.js @@ -43,22 +43,23 @@ export default class SubscriptionsFunctionManager { (input, callback) => { try { const subscription = (params) => { - params.sourceEvent = this.selectProps( + let result = this.selectProps("time", "logical", "point")(params) + result.sourceEvent = this.selectProps( "clientX", "clientY", "pageX", "pageY", "screenX", "screenY", "localX", "localY", "ctrlKey", "altKey", "shiftKey", "metaKey" )(params.sourceEvent) - let customSeries = [] + result.seriesData = [] params.seriesData.forEach((value, key, map) => { - customSeries.push({id: this.seriesFunctionManager.getSeriesId(key, input), prices: value}) + result.seriesData.push({id: this.seriesFunctionManager.getSeriesId(key, input), prices: value}) }) - params.seriesData = customSeries + if (params.hoveredSeries) { - params.hoveredSeries = this.seriesFunctionManager.getSeriesId(params.hoveredSeries, input) + result.hoveredSeries = this.seriesFunctionManager.getSeriesId(params.hoveredSeries, input) } - callback(params) + callback(result) } chart.subscribeCrosshairMove(subscription) logger.d("subscribeCrosshairMove successful") From c9f98bee6437b88534a106b00d023f6109450f63 Mon Sep 17 00:00:00 2001 From: Andrey Kuzubov Date: Mon, 29 May 2023 17:26:33 +0400 Subject: [PATCH 2/2] common mouse event mapping for crosshair and onclick --- .../lib/app/subscriptions-function-manager.js | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/lightweightlibrary/lib/app/subscriptions-function-manager.js b/lightweightlibrary/lib/app/subscriptions-function-manager.js index 25b6387..6c52efc 100644 --- a/lightweightlibrary/lib/app/subscriptions-function-manager.js +++ b/lightweightlibrary/lib/app/subscriptions-function-manager.js @@ -14,12 +14,8 @@ export default class SubscriptionsFunctionManager { (input, callback) => { try { const subscription = (params) => { - let customSeries = [] - params.seriesPrices.forEach((value, key, map) => { - customSeries.push({id: this.seriesFunctionManager.getSeriesId(key, input), prices: value}) - }) - params.seriesPrices = customSeries - callback(params) + let mouseEvent = this.mouseEvent(params, input) + callback(mouseEvent) } chart.subscribeClick(subscription) logger.d("subscribeOnChartClicked successful") @@ -43,23 +39,8 @@ export default class SubscriptionsFunctionManager { (input, callback) => { try { const subscription = (params) => { - let result = this.selectProps("time", "logical", "point")(params) - result.sourceEvent = this.selectProps( - "clientX", "clientY", "pageX", "pageY", "screenX", "screenY", - "localX", "localY", "ctrlKey", "altKey", "shiftKey", "metaKey" - )(params.sourceEvent) - - result.seriesData = [] - params.seriesData.forEach((value, key, map) => { - result.seriesData.push({id: this.seriesFunctionManager.getSeriesId(key, input), prices: value}) - }) - - - if (params.hoveredSeries) { - result.hoveredSeries = this.seriesFunctionManager.getSeriesId(params.hoveredSeries, input) - } - - callback(result) + let mouseEvent = this.mouseEvent(params, input) + callback(mouseEvent) } chart.subscribeCrosshairMove(subscription) logger.d("subscribeCrosshairMove successful") @@ -80,6 +61,27 @@ export default class SubscriptionsFunctionManager { ) } + mouseEvent(params, input) { + let result = this.selectProps("time", "logical", "point")(params) + result.sourceEvent = this.selectProps( + "clientX", "clientY", "pageX", "pageY", "screenX", "screenY", + "localX", "localY", "ctrlKey", "altKey", "shiftKey", "metaKey" + )(params.sourceEvent) + + result.seriesData = [] + params.seriesData.forEach((value, key, map) => { + result.seriesData.push({ + id: this.seriesFunctionManager.getSeriesId(key, input), + prices: value + }) + }) + + + if (params.hoveredSeries) { + result.hoveredSeries = this.seriesFunctionManager.getSeriesId(params.hoveredSeries, input) + } + return result + } selectProps(...props) { return function (obj) {