@devexperts/dxcharts-lite 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/chart/animation/canvas-animation.d.ts +1 -1
- package/dist/chart/animation/canvas-animation.js +135 -2
- package/dist/chart/animation/types/animation.d.ts +1 -1
- package/dist/chart/animation/types/animation.js +44 -2
- package/dist/chart/animation/types/color-alpha-animation.d.ts +2 -2
- package/dist/chart/animation/types/color-alpha-animation.js +61 -2
- package/dist/chart/animation/types/color-transition-animation.d.ts +2 -2
- package/dist/chart/animation/types/color-transition-animation.js +87 -2
- package/dist/chart/animation/types/viewport-movement-animation.d.ts +1 -1
- package/dist/chart/animation/types/viewport-movement-animation.js +64 -2
- package/dist/chart/animation/viewport-model-animation.d.ts +1 -1
- package/dist/chart/animation/viewport-model-animation.js +21 -2
- package/dist/chart/bootstrap.d.ts +52 -49
- package/dist/chart/bootstrap.js +450 -2
- package/dist/chart/canvas/canvas-bounds-container.d.ts +1 -6
- package/dist/chart/canvas/canvas-bounds-container.js +816 -2
- package/dist/chart/canvas/canvas-chart-html.d.ts +1 -1
- package/dist/chart/canvas/canvas-chart-html.js +17 -19
- package/dist/chart/canvas/chart-elements.d.ts +2 -5
- package/dist/chart/canvas/chart-elements.js +23 -2
- package/dist/chart/canvas/cursor.handler.d.ts +1 -1
- package/dist/chart/canvas/cursor.handler.js +123 -2
- package/dist/chart/canvas/layout-creator.d.ts +1 -1
- package/dist/chart/canvas/layout-creator.js +35 -2
- package/dist/chart/canvas/y-axis-bounds.container.d.ts +3 -3
- package/dist/chart/canvas/y-axis-bounds.container.js +68 -2
- package/dist/chart/chart-container.d.ts +1 -1
- package/dist/chart/chart-container.js +2 -2
- package/dist/chart/chart.config.d.ts +5 -6
- package/dist/chart/chart.config.js +646 -2
- package/dist/chart/chart.d.ts +62 -0
- package/dist/chart/chart.js +106 -0
- package/dist/chart/components/chart/basic-scale.d.ts +3 -3
- package/dist/chart/components/chart/basic-scale.js +32 -2
- package/dist/chart/components/chart/candle-transformer.functions.d.ts +1 -1
- package/dist/chart/components/chart/candle-transformer.functions.js +16 -2
- package/dist/chart/components/chart/candle-width-calculator.functions.d.ts +1 -1
- package/dist/chart/components/chart/candle-width-calculator.functions.js +3 -2
- package/dist/chart/components/chart/candle.functions.d.ts +1 -1
- package/dist/chart/components/chart/candle.functions.js +45 -2
- package/dist/chart/components/chart/chart-area-pan.handler.d.ts +4 -4
- package/dist/chart/components/chart/chart-area-pan.handler.js +198 -2
- package/dist/chart/components/chart/chart-base.model.d.ts +1 -1
- package/dist/chart/components/chart/chart-base.model.js +67 -2
- package/dist/chart/components/chart/chart.component.d.ts +8 -4
- package/dist/chart/components/chart/chart.component.js +409 -2
- package/dist/chart/components/chart/chart.model.d.ts +5 -12
- package/dist/chart/components/chart/chart.model.js +955 -2
- package/dist/chart/components/chart/data-series.high-low-provider.d.ts +1 -1
- package/dist/chart/components/chart/data-series.high-low-provider.js +35 -2
- package/dist/chart/components/chart/fake-candles.d.ts +1 -1
- package/dist/chart/components/chart/fake-candles.js +98 -2
- package/dist/chart/components/chart/price.formatter.d.ts +1 -1
- package/dist/chart/components/chart/price.formatter.js +36 -2
- package/dist/chart/components/chart/secondary-chart-colors-pool.d.ts +1 -1
- package/dist/chart/components/chart/secondary-chart-colors-pool.js +69 -2
- package/dist/chart/components/cross_tool/cross-tool.component.d.ts +1 -1
- package/dist/chart/components/cross_tool/cross-tool.component.js +86 -2
- package/dist/chart/components/cross_tool/cross-tool.drawer.d.ts +1 -1
- package/dist/chart/components/cross_tool/cross-tool.drawer.js +33 -2
- package/dist/chart/components/cross_tool/cross-tool.model.d.ts +1 -1
- package/dist/chart/components/cross_tool/cross-tool.model.js +108 -2
- package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.d.ts +1 -1
- package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.js +138 -2
- package/dist/chart/components/cross_tool/types/none.drawer.d.ts +1 -1
- package/dist/chart/components/cross_tool/types/none.drawer.js +4 -2
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.d.ts +1 -1
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.js +29 -2
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.d.ts +1 -1
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.js +25 -2
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.d.ts +1 -1
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.js +54 -2
- package/dist/chart/components/dynamic-objects/dynamic-objects.component.d.ts +13 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.component.js +20 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.d.ts +18 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.js +23 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.model.d.ts +63 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.model.js +136 -0
- package/dist/chart/components/events/events-hit-test.drawer.d.ts +1 -1
- package/dist/chart/components/events/events-hit-test.drawer.js +64 -2
- package/dist/chart/components/events/events.component.d.ts +1 -1
- package/dist/chart/components/events/events.component.js +62 -2
- package/dist/chart/components/events/events.drawer.d.ts +1 -1
- package/dist/chart/components/events/events.drawer.js +196 -2
- package/dist/chart/components/events/events.model.d.ts +1 -1
- package/dist/chart/components/events/events.model.js +70 -2
- package/dist/chart/components/grid/grid.component.d.ts +3 -3
- package/dist/chart/components/grid/grid.component.js +32 -2
- package/dist/chart/components/grid/grid.drawer.d.ts +5 -4
- package/dist/chart/components/grid/grid.drawer.js +107 -2
- package/dist/chart/components/high_low/high-low.component.d.ts +1 -1
- package/dist/chart/components/high_low/high-low.component.js +13 -2
- package/dist/chart/components/high_low/high-low.drawer.d.ts +1 -1
- package/dist/chart/components/high_low/high-low.drawer.js +127 -2
- package/dist/chart/components/highlights/highlights.component.d.ts +1 -1
- package/dist/chart/components/highlights/highlights.component.js +47 -2
- package/dist/chart/components/highlights/highlights.drawer.d.ts +1 -1
- package/dist/chart/components/highlights/highlights.drawer.js +155 -2
- package/dist/chart/components/highlights/highlights.model.d.ts +1 -1
- package/dist/chart/components/highlights/highlights.model.js +76 -2
- package/dist/chart/components/labels_generator/numeric-axis-labels.generator.d.ts +2 -2
- package/dist/chart/components/labels_generator/numeric-axis-labels.generator.js +200 -2
- package/dist/chart/components/navigation_map/navigation-map-move.handler.d.ts +3 -3
- package/dist/chart/components/navigation_map/navigation-map-move.handler.js +109 -2
- package/dist/chart/components/navigation_map/navigation-map.component.d.ts +1 -1
- package/dist/chart/components/navigation_map/navigation-map.component.js +113 -2
- package/dist/chart/components/navigation_map/navigation-map.drawer.d.ts +1 -1
- package/dist/chart/components/navigation_map/navigation-map.drawer.js +245 -2
- package/dist/chart/components/navigation_map/navigation-map.model.d.ts +1 -1
- package/dist/chart/components/navigation_map/navigation-map.model.js +34 -3
- package/dist/chart/components/pan/chart-pan.component.d.ts +3 -3
- package/dist/chart/components/pan/chart-pan.component.js +52 -2
- package/dist/chart/components/pane/extent/y-extent-component.d.ts +13 -19
- package/dist/chart/components/pane/extent/y-extent-component.js +121 -2
- package/dist/chart/components/pane/pane-hit-test.controller.d.ts +1 -1
- package/dist/chart/components/pane/pane-hit-test.controller.js +56 -2
- package/dist/chart/components/pane/pane-manager.component.d.ts +11 -6
- package/dist/chart/components/pane/pane-manager.component.js +149 -2
- package/dist/chart/components/pane/pane.component.d.ts +18 -34
- package/dist/chart/components/pane/pane.component.js +279 -2
- package/dist/chart/components/resizer/bar-resizer.component.d.ts +1 -1
- package/dist/chart/components/resizer/bar-resizer.component.js +140 -2
- package/dist/chart/components/resizer/bar-resizer.drawer.d.ts +1 -1
- package/dist/chart/components/resizer/bar-resizer.drawer.js +47 -2
- package/dist/chart/components/snapshot/snapshot.component.d.ts +1 -1
- package/dist/chart/components/snapshot/snapshot.component.js +49 -2
- package/dist/chart/components/volumes/separate-volumes.component.d.ts +7 -11
- package/dist/chart/components/volumes/separate-volumes.component.js +64 -2
- package/dist/chart/components/volumes/volume-color-resolvers.functions.d.ts +1 -1
- package/dist/chart/components/volumes/volume-color-resolvers.functions.js +19 -2
- package/dist/chart/components/volumes/volumes.component.d.ts +9 -9
- package/dist/chart/components/volumes/volumes.component.js +95 -2
- package/dist/chart/components/volumes/volumes.drawer.d.ts +6 -13
- package/dist/chart/components/volumes/volumes.drawer.js +141 -2
- package/dist/chart/components/volumes/volumes.formatter.d.ts +1 -1
- package/dist/chart/components/volumes/volumes.formatter.js +32 -2
- package/dist/chart/components/volumes/volumes.model.d.ts +3 -3
- package/dist/chart/components/volumes/volumes.model.js +44 -2
- package/dist/chart/components/watermark/water-mark.component.d.ts +1 -1
- package/dist/chart/components/watermark/water-mark.component.js +104 -2
- package/dist/chart/components/watermark/water-mark.drawer.d.ts +1 -1
- package/dist/chart/components/watermark/water-mark.drawer.js +188 -2
- package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.d.ts +1 -1
- package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.js +28 -2
- package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.js +188 -2
- package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.js +77 -2
- package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.js +80 -2
- package/dist/chart/components/x_axis/time/parser/time-formats.model.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats.model.js +15 -2
- package/dist/chart/components/x_axis/time/x-axis-weights.functions.d.ts +2 -2
- package/dist/chart/components/x_axis/time/x-axis-weights.functions.js +144 -2
- package/dist/chart/components/x_axis/time/x-axis-weights.generator.d.ts +1 -1
- package/dist/chart/components/x_axis/time/x-axis-weights.generator.js +74 -2
- package/dist/chart/components/x_axis/x-axis-draw.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-draw.functions.js +50 -2
- package/dist/chart/components/x_axis/x-axis-labels.drawer.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-labels.drawer.js +71 -2
- package/dist/chart/components/x_axis/x-axis-labels.generator.d.ts +3 -3
- package/dist/chart/components/x_axis/x-axis-labels.generator.js +333 -2
- package/dist/chart/components/x_axis/x-axis-labels.model.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-labels.model.js +36 -2
- package/dist/chart/components/x_axis/x-axis-scale.handler.d.ts +3 -3
- package/dist/chart/components/x_axis/x-axis-scale.handler.js +61 -2
- package/dist/chart/components/x_axis/x-axis-time-labels.drawer.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-time-labels.drawer.js +83 -2
- package/dist/chart/components/x_axis/x-axis.component.d.ts +3 -3
- package/dist/chart/components/x_axis/x-axis.component.js +120 -2
- package/dist/chart/components/y_axis/label-color.functions.d.ts +1 -1
- package/dist/chart/components/y_axis/label-color.functions.js +54 -2
- package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.d.ts +5 -5
- package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.js +34 -2
- package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.d.ts +4 -4
- package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.js +68 -2
- package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.d.ts +1 -1
- package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.js +57 -2
- package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.d.ts +1 -1
- package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.js +96 -2
- package/dist/chart/components/y_axis/price_labels/price-label.drawer.d.ts +3 -3
- package/dist/chart/components/y_axis/price_labels/price-label.drawer.js +120 -2
- package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.d.ts +10 -9
- package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.js +202 -2
- package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.d.ts +7 -8
- package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.js +59 -2
- package/dist/chart/components/y_axis/y-axis-base-labels.model.d.ts +7 -5
- package/dist/chart/components/y_axis/y-axis-base-labels.model.js +48 -2
- package/dist/chart/components/y_axis/y-axis-labels.drawer.d.ts +5 -5
- package/dist/chart/components/y_axis/y-axis-labels.drawer.js +162 -2
- package/dist/chart/components/y_axis/y-axis-scale.handler.d.ts +3 -3
- package/dist/chart/components/y_axis/y-axis-scale.handler.js +73 -2
- package/dist/chart/components/y_axis/y-axis.component.d.ts +33 -42
- package/dist/chart/components/y_axis/y-axis.component.js +221 -2
- package/dist/chart/components/y_axis/y-axis.drawer.d.ts +10 -13
- package/dist/chart/components/y_axis/y-axis.drawer.js +97 -2
- package/dist/chart/components/y_axis/y-axis.model.d.ts +10 -18
- package/dist/chart/components/y_axis/y-axis.model.js +34 -2
- package/dist/chart/drawers/chart-background.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-background.drawer.js +70 -2
- package/dist/chart/drawers/chart-type-drawers/area.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/area.drawer.js +70 -2
- package/dist/chart/drawers/chart-type-drawers/bar.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/bar.drawer.js +58 -2
- package/dist/chart/drawers/chart-type-drawers/baseline.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/baseline.drawer.js +85 -2
- package/dist/chart/drawers/chart-type-drawers/candle.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/candle.drawer.js +163 -2
- package/dist/chart/drawers/chart-type-drawers/histogram.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/histogram.drawer.js +58 -2
- package/dist/chart/drawers/chart-type-drawers/line.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/line.drawer.js +39 -2
- package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.js +20 -2
- package/dist/chart/drawers/clear-canvas.drawer.d.ts +1 -1
- package/dist/chart/drawers/clear-canvas.drawer.js +15 -2
- package/dist/chart/drawers/composite.drawer.d.ts +1 -1
- package/dist/chart/drawers/composite.drawer.js +68 -2
- package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.js +51 -2
- package/dist/chart/drawers/data-series-drawers/color-candle.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/color-candle.drawer.js +36 -2
- package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.js +17 -2
- package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.js +107 -2
- package/dist/chart/drawers/data-series-drawers/histogram.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/histogram.drawer.js +24 -2
- package/dist/chart/drawers/data-series-drawers/linear.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/linear.drawer.js +20 -2
- package/dist/chart/drawers/data-series-drawers/points.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/points.drawer.js +20 -2
- package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.js +8 -2
- package/dist/chart/drawers/data-series-drawers/text.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/text.drawer.js +26 -2
- package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.js +36 -2
- package/dist/chart/drawers/data-series-drawers/triangle.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/triangle.drawer.js +23 -2
- package/dist/chart/drawers/data-series.drawer.d.ts +6 -8
- package/dist/chart/drawers/data-series.drawer.js +57 -2
- package/dist/chart/drawers/drawing-manager.d.ts +2 -2
- package/dist/chart/drawers/drawing-manager.js +178 -2
- package/dist/chart/drawers/ht-data-series.drawer.d.ts +1 -1
- package/dist/chart/drawers/ht-data-series.drawer.js +38 -2
- package/dist/chart/events/event-bus.d.ts +1 -1
- package/dist/chart/events/event-bus.js +74 -2
- package/dist/chart/events/events.d.ts +1 -1
- package/dist/chart/events/events.js +4 -2
- package/dist/chart/inputhandlers/candle-tap.handler.d.ts +1 -1
- package/dist/chart/inputhandlers/candle-tap.handler.js +47 -2
- package/dist/chart/inputhandlers/chart-resize.handler.d.ts +1 -1
- package/dist/chart/inputhandlers/chart-resize.handler.js +99 -2
- package/dist/chart/inputhandlers/cross-event-producer.component.d.ts +1 -1
- package/dist/chart/inputhandlers/cross-event-producer.component.js +68 -2
- package/dist/chart/inputhandlers/hover-producer.component.d.ts +3 -3
- package/dist/chart/inputhandlers/hover-producer.component.js +229 -2
- package/dist/chart/inputhandlers/main-canvas-touch.handler.d.ts +3 -3
- package/dist/chart/inputhandlers/main-canvas-touch.handler.js +81 -2
- package/dist/chart/inputlisteners/canvas-input-listener.component.d.ts +1 -1
- package/dist/chart/inputlisteners/canvas-input-listener.component.js +630 -2
- package/dist/chart/model/baseline.model.d.ts +1 -1
- package/dist/chart/model/baseline.model.js +89 -2
- package/dist/chart/model/bounds.model.d.ts +1 -1
- package/dist/chart/model/bounds.model.js +2 -2
- package/dist/chart/model/candle-hover.d.ts +1 -1
- package/dist/chart/model/candle-hover.js +71 -2
- package/dist/chart/model/candle-series-high-low.provider.d.ts +1 -1
- package/dist/chart/model/candle-series-high-low.provider.js +46 -2
- package/dist/chart/model/candle-series.model.d.ts +4 -4
- package/dist/chart/model/candle-series.model.js +246 -2
- package/dist/chart/model/candle.model.d.ts +1 -1
- package/dist/chart/model/candle.model.js +70 -2
- package/dist/chart/model/canvas.model.d.ts +1 -1
- package/dist/chart/model/canvas.model.js +229 -2
- package/dist/chart/model/chart-base-element.d.ts +1 -1
- package/dist/chart/model/chart-base-element.js +130 -2
- package/dist/chart/model/compare-series-hover.d.ts +1 -1
- package/dist/chart/model/compare-series-hover.js +26 -2
- package/dist/chart/model/data-series-view.d.ts +6 -6
- package/dist/chart/model/data-series-view.js +112 -2
- package/dist/chart/model/data-series.config.d.ts +1 -1
- package/dist/chart/model/data-series.config.js +15 -2
- package/dist/chart/model/data-series.model.d.ts +5 -5
- package/dist/chart/model/data-series.model.js +282 -2
- package/dist/chart/model/date-time.formatter.d.ts +1 -1
- package/dist/chart/model/date-time.formatter.js +152 -2
- package/dist/chart/model/hit-test-canvas.model.d.ts +2 -2
- package/dist/chart/model/hit-test-canvas.model.js +257 -2
- package/dist/chart/model/main-candle-series.model.d.ts +2 -2
- package/dist/chart/model/main-candle-series.model.js +30 -2
- package/dist/chart/model/scale.model.d.ts +3 -2
- package/dist/chart/model/scale.model.js +317 -2
- package/dist/chart/model/scaling/auto-scale.model.d.ts +1 -1
- package/dist/chart/model/scaling/auto-scale.model.js +98 -2
- package/dist/chart/model/scaling/constrait.functions.d.ts +1 -1
- package/dist/chart/model/scaling/constrait.functions.js +62 -2
- package/dist/chart/model/scaling/lock-ratio.model.d.ts +1 -1
- package/dist/chart/model/scaling/lock-ratio.model.js +18 -2
- package/dist/chart/model/scaling/move-chart.functions.d.ts +1 -1
- package/dist/chart/model/scaling/move-chart.functions.js +23 -2
- package/dist/chart/model/scaling/viewport.model.d.ts +3 -3
- package/dist/chart/model/scaling/viewport.model.js +280 -2
- package/dist/chart/model/scaling/x-zooming.functions.d.ts +1 -1
- package/dist/chart/model/scaling/x-zooming.functions.js +36 -2
- package/dist/chart/model/time-zone.model.d.ts +1 -1
- package/dist/chart/model/time-zone.model.js +110 -2
- package/dist/chart/model/visual-candle.d.ts +1 -1
- package/dist/chart/model/visual-candle.js +135 -2
- package/dist/chart/utils/__tests__/array.utils.test.d.ts +1 -1
- package/dist/chart/utils/__tests__/array.utils.test.js +136 -2
- package/dist/chart/utils/{perfomance/debounce.utils.js → __tests__/math.utils.test.d.ts} +2 -2
- package/dist/chart/utils/__tests__/math.utils.test.js +19 -0
- package/dist/chart/utils/__tests__/object.utils.test.d.ts +1 -1
- package/dist/chart/utils/__tests__/object.utils.test.js +12 -2
- package/dist/chart/utils/__tests__/priceIncrementsUtils.test.d.ts +1 -1
- package/dist/chart/utils/__tests__/priceIncrementsUtils.test.js +30 -2
- package/dist/chart/utils/array.utils.d.ts +2 -2
- package/dist/chart/utils/array.utils.js +270 -2
- package/dist/chart/utils/auto-period-detector.utils.d.ts +1 -1
- package/dist/chart/utils/auto-period-detector.utils.js +40 -2
- package/dist/chart/utils/candles-generator-ts.utils.d.ts +1 -1
- package/dist/chart/utils/candles-generator-ts.utils.js +21 -2
- package/dist/chart/utils/candles-generator.utils.d.ts +1 -1
- package/dist/chart/utils/candles-generator.utils.js +162 -2
- package/dist/chart/utils/candles.utils.d.ts +1 -1
- package/dist/chart/utils/candles.utils.js +43 -2
- package/dist/chart/utils/canvas/canvas-drawing-functions.utils.d.ts +1 -1
- package/dist/chart/utils/canvas/canvas-drawing-functions.utils.js +145 -2
- package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.d.ts +1 -1
- package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.js +52 -2
- package/dist/chart/utils/canvas/canvas-text-functions.utils.d.ts +1 -1
- package/dist/chart/utils/canvas/canvas-text-functions.utils.js +157 -2
- package/dist/chart/utils/color.utils.d.ts +1 -1
- package/dist/chart/utils/color.utils.js +32 -2
- package/dist/chart/utils/device/browser.utils.d.ts +1 -1
- package/dist/chart/utils/device/browser.utils.js +11 -2
- package/dist/chart/utils/device/device-detector.utils.d.ts +1 -1
- package/dist/chart/utils/device/device-detector.utils.js +25 -2
- package/dist/chart/utils/device/device-pixel-ratio.utils.d.ts +1 -1
- package/dist/chart/utils/device/device-pixel-ratio.utils.js +22 -2
- package/dist/chart/utils/device/touchpad.utils.d.ts +1 -1
- package/dist/chart/utils/device/touchpad.utils.js +92 -2
- package/dist/chart/utils/dom.utils.d.ts +1 -1
- package/dist/chart/utils/dom.utils.js +16 -2
- package/dist/chart/utils/function.utils.d.ts +1 -1
- package/dist/chart/utils/function.utils.js +17 -2
- package/dist/chart/utils/linkedList.utils.d.ts +28 -0
- package/dist/chart/utils/linkedList.utils.js +138 -0
- package/dist/chart/utils/math.utils.d.ts +1 -1
- package/dist/chart/utils/math.utils.js +116 -2
- package/dist/chart/utils/merge.utils.d.ts +1 -1
- package/dist/chart/utils/merge.utils.js +57 -2
- package/dist/chart/utils/object.utils.d.ts +1 -1
- package/dist/chart/utils/object.utils.js +44 -2
- package/dist/chart/utils/{perfomance → performance}/animation-frame-cache.utils.d.ts +1 -1
- package/dist/chart/utils/performance/animation-frame-cache.utils.js +77 -0
- package/dist/chart/utils/{perfomance → performance}/debounce.utils.d.ts +1 -1
- package/dist/chart/utils/performance/debounce.utils.js +12 -0
- package/dist/chart/utils/{perfomance → performance}/memoize.utils.d.ts +1 -1
- package/dist/chart/utils/performance/memoize.utils.js +74 -0
- package/dist/chart/utils/{perfomance → performance}/request-animation-frame-throttle.utils.d.ts +1 -1
- package/dist/chart/utils/performance/request-animation-frame-throttle.utils.js +43 -0
- package/dist/chart/utils/{perfomance → performance}/throttle.utils.d.ts +1 -1
- package/dist/chart/utils/performance/throttle.utils.js +26 -0
- package/dist/chart/utils/price-increments.utils.d.ts +2 -1
- package/dist/chart/utils/price-increments.utils.js +128 -2
- package/dist/chart/utils/uuid.utils.d.ts +1 -1
- package/dist/chart/utils/uuid.utils.js +5 -2
- package/dist/dxchart.min.js +10 -13
- package/dist/index.d.ts +4 -4
- package/dist/index.js +21 -2
- package/package.json +4 -4
- package/dist/chart/utils/perfomance/animation-frame-cache.utils.js +0 -6
- package/dist/chart/utils/perfomance/memoize.utils.js +0 -6
- package/dist/chart/utils/perfomance/request-animation-frame-throttle.utils.js +0 -6
- package/dist/chart/utils/perfomance/throttle.utils.js +0 -6
|
@@ -1,6 +1,233 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (C)
|
|
2
|
+
* Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
|
|
3
3
|
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
4
4
|
* If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
6
|
+
import { BehaviorSubject, merge } from 'rxjs';
|
|
7
|
+
import { CHART_UUID, CanvasElement } from '../canvas/canvas-bounds-container';
|
|
8
|
+
import { CandleHoverProducerPart } from '../model/candle-hover';
|
|
9
|
+
import { ChartBaseElement } from '../model/chart-base-element';
|
|
10
|
+
import { CompareSeriesHoverProducerPart } from '../model/compare-series-hover';
|
|
11
|
+
import { recalculateXFormatter } from '../model/date-time.formatter';
|
|
12
|
+
import { isMobile } from '../utils/device/browser.utils';
|
|
13
|
+
/**
|
|
14
|
+
* Produces the Hover event.
|
|
15
|
+
* Hover is used for displaying values in legend and NOT related to displaying cross tool.
|
|
16
|
+
*/
|
|
17
|
+
export class HoverProducerComponent extends ChartBaseElement {
|
|
18
|
+
get hover() {
|
|
19
|
+
return this.hoverSubject.getValue();
|
|
20
|
+
}
|
|
21
|
+
constructor(crossEventProducer, scale, config, chartModel, canvasInputListener, canvasBoundsContainer, paneManager, timeZoneModel, formatterFactory) {
|
|
22
|
+
super();
|
|
23
|
+
this.crossEventProducer = crossEventProducer;
|
|
24
|
+
this.scale = scale;
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.chartModel = chartModel;
|
|
27
|
+
this.canvasInputListener = canvasInputListener;
|
|
28
|
+
this.canvasBoundsContainer = canvasBoundsContainer;
|
|
29
|
+
this.paneManager = paneManager;
|
|
30
|
+
this.timeZoneModel = timeZoneModel;
|
|
31
|
+
this.formatterFactory = formatterFactory;
|
|
32
|
+
this.hoverSubject = new BehaviorSubject(null);
|
|
33
|
+
this.longTouchActivated = false;
|
|
34
|
+
this.xFormatter = () => '';
|
|
35
|
+
const candleHoverProducerPart = new CandleHoverProducerPart(this.chartModel);
|
|
36
|
+
const compareSeriesHoverProducerPart = new CompareSeriesHoverProducerPart(this.chartModel);
|
|
37
|
+
this.hoverProducerParts = {
|
|
38
|
+
candleHover: candleHoverProducerPart,
|
|
39
|
+
compareSeriesHover: compareSeriesHoverProducerPart,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* This method is responsible for activating the chart hover functionality. It subscribes to several observables to
|
|
44
|
+
* update the hover when the chart is updated or when the user interacts with it. It also handles special behavior
|
|
45
|
+
* for mobile devices, such as disabling panning and showing the cross tool on long touch.
|
|
46
|
+
*
|
|
47
|
+
* @protected
|
|
48
|
+
* @memberof ChartHover
|
|
49
|
+
* @returns {void}
|
|
50
|
+
*/
|
|
51
|
+
doActivate() {
|
|
52
|
+
super.doActivate();
|
|
53
|
+
this.addRxSubscription(this.chartModel.candlesSetSubject.subscribe(() => {
|
|
54
|
+
// required for initial legend initialization, do not show cross tool
|
|
55
|
+
const lastCandle = this.chartModel.getLastVisualCandle();
|
|
56
|
+
lastCandle && this.createAndFireHoverFromCandle(lastCandle);
|
|
57
|
+
}));
|
|
58
|
+
this.addRxSubscription(this.chartModel.candlesUpdatedSubject.subscribe(() => {
|
|
59
|
+
// update hover if it was the last candle
|
|
60
|
+
const lastCandle = this.chartModel.getLastVisualCandle();
|
|
61
|
+
if (this.hover !== null && lastCandle !== undefined) {
|
|
62
|
+
if (lastCandle.candle.timestamp === this.hover.timestamp) {
|
|
63
|
+
this.updateHover(lastCandle);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}));
|
|
67
|
+
this.addRxSubscription(this.crossEventProducer.crossSubject.subscribe((cross) => {
|
|
68
|
+
if (cross === null) {
|
|
69
|
+
this.hoverSubject.next(null);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.createAndFireHover(cross);
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
75
|
+
this.addRxSubscription(this.scale.xChanged.subscribe(() => this.fireLastCross()));
|
|
76
|
+
this.addRxSubscription(this.canvasInputListener.observeTouchStart().subscribe(event => {
|
|
77
|
+
const x = event.touches[0].clientX;
|
|
78
|
+
const y = event.touches[0].clientY - this.canvasBoundsContainer.canvasOnPageLocation.y;
|
|
79
|
+
const candle = this.chartModel.candleFromX(x, true);
|
|
80
|
+
if (candle) {
|
|
81
|
+
this.createAndFireHover([x, y, '']);
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
// special handling for mobile
|
|
85
|
+
// on long touch - disable panning and show cross tool
|
|
86
|
+
const hitTest = this.canvasBoundsContainer.getBoundsHitTest(CanvasElement.ALL_PANES);
|
|
87
|
+
this.addRxSubscription(this.canvasInputListener.observeLongTouch(hitTest).subscribe(event => {
|
|
88
|
+
this.paneManager.chartPanComponent.deactivatePanHandlers();
|
|
89
|
+
this.longTouchActivated = true;
|
|
90
|
+
const x = event.touches[0].clientX;
|
|
91
|
+
const y = event.touches[0].clientY - this.canvasBoundsContainer.canvasOnPageLocation.y;
|
|
92
|
+
this.createAndFireHover([x, y, '']);
|
|
93
|
+
}));
|
|
94
|
+
this.addRxSubscription(this.canvasInputListener.observeTouchEndDocument().subscribe(() => {
|
|
95
|
+
this.paneManager.chartPanComponent.activateChartPanHandlers();
|
|
96
|
+
if (this.longTouchActivated) {
|
|
97
|
+
this.longTouchActivated = false;
|
|
98
|
+
this.crossEventProducer.fireCrossClose();
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
101
|
+
this.addRxSubscription(merge(this.chartModel.candlesSetSubject, this.timeZoneModel.observeTimeZoneChanged()).subscribe(() => this.recalculateCrossToolXFormatter()));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Recalculates the cross tool X formatter.
|
|
105
|
+
* @function
|
|
106
|
+
* @private
|
|
107
|
+
* @returns {void}
|
|
108
|
+
*/
|
|
109
|
+
recalculateCrossToolXFormatter() {
|
|
110
|
+
const xAxisLabelFormat = this.config.components.crossTool.xAxisLabelFormat;
|
|
111
|
+
this.xFormatter = recalculateXFormatter(xAxisLabelFormat, this.chartModel.getPeriod(), this.formatterFactory);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Creates a hover object from a VisualCandle object.
|
|
115
|
+
* @param {VisualCandle} candle - The VisualCandle object to create the hover from.
|
|
116
|
+
* @returns {Hover | undefined} - The created hover object or undefined if the input is invalid.
|
|
117
|
+
*/
|
|
118
|
+
createHoverFromCandle(candle) {
|
|
119
|
+
const x = candle.xCenter(this.scale);
|
|
120
|
+
const y = this.scale.toY(candle.close);
|
|
121
|
+
return this.createHover(x, y, CHART_UUID);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates a hover object based on the provided x and y coordinates.
|
|
125
|
+
* @param {number} x - The x coordinate of the hover.
|
|
126
|
+
* @param {number} y - The y coordinate of the hover.
|
|
127
|
+
* @returns {Hover | undefined} - The hover object or undefined if there are no candles in the chart model.
|
|
128
|
+
* @todo Check if uuid is still useful here.
|
|
129
|
+
*/
|
|
130
|
+
createHover(x, y, uuid) {
|
|
131
|
+
if (this.chartModel.getCandles().length === 0) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const candle = this.chartModel.candleFromX(x, true);
|
|
135
|
+
const timestamp = candle.timestamp;
|
|
136
|
+
const hover = {
|
|
137
|
+
x,
|
|
138
|
+
y,
|
|
139
|
+
timestamp,
|
|
140
|
+
timeFormatted: this.xFormatter(timestamp),
|
|
141
|
+
paneId: uuid,
|
|
142
|
+
};
|
|
143
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
144
|
+
const combinedHoverParts = Object.entries(this.hoverProducerParts).reduce((res, part) => (Object.assign(Object.assign({}, res), { [part[0]]: part[1].getData(hover) })),
|
|
145
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
146
|
+
{});
|
|
147
|
+
return Object.assign(Object.assign({}, hover), combinedHoverParts);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Creates a hover from a VisualCandle object and fires it.
|
|
151
|
+
* @param {VisualCandle} candle - The VisualCandle object to create the hover from.
|
|
152
|
+
*/
|
|
153
|
+
createAndFireHoverFromCandle(candle) {
|
|
154
|
+
const hover = this.createHoverFromCandle(candle);
|
|
155
|
+
this.fireHover(hover);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Update current hover using a VisualCandle and fires it.
|
|
159
|
+
* @param {VisualCandle} candle - The VisualCandle object to create the hover from.
|
|
160
|
+
*/
|
|
161
|
+
updateHover(candle) {
|
|
162
|
+
const updatedHover = this.createHoverFromCandle(candle);
|
|
163
|
+
if (this.hover && updatedHover) {
|
|
164
|
+
const hover = Object.assign(Object.assign({}, updatedHover), { x: this.hover.x, y: this.hover.y });
|
|
165
|
+
this.fireHover(hover);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Creates a hover element at the specified coordinates and fires it with the option to show the cross tool
|
|
170
|
+
* @param {CrossEvent} [x,y] - The coordinates where the hover element will be created
|
|
171
|
+
* @param {boolean} [showCrossTool=true] - Whether to show the cross tool or not
|
|
172
|
+
* @returns {void}
|
|
173
|
+
*/
|
|
174
|
+
createAndFireHover([x, y, uuid]) {
|
|
175
|
+
const hover = this.createHover(x, y, uuid);
|
|
176
|
+
this.fireHover(hover);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Private method that handles the hover event. If a hover event is provided, it sets the last hover to the provided hover.
|
|
180
|
+
* If the device is mobile and the cross tool type is not 'none', it sets the active candle to the hovered candle only when a long tap is detected.
|
|
181
|
+
* The showCrossToolOverride is set to true only when a long tap is detected on mobile devices, otherwise it is set to the value of showCrossTool parameter.
|
|
182
|
+
* Finally, it fires the EVENT_HOVER event with the provided hover and showCrossToolOverride.
|
|
183
|
+
* If no hover event is provided, it fires the EVENT_CLOSE_HOVER event.
|
|
184
|
+
*
|
|
185
|
+
* @param {Hover} [hover] - The hover event to handle.
|
|
186
|
+
* @param {boolean} [showCrossTool=true] - A boolean value indicating whether to show the cross tool or not.
|
|
187
|
+
* @returns {void}
|
|
188
|
+
*/
|
|
189
|
+
fireHover(hover) {
|
|
190
|
+
var _a;
|
|
191
|
+
if (hover) {
|
|
192
|
+
// special handling for mobile
|
|
193
|
+
// set active candle + show cross tool only when long tap
|
|
194
|
+
if (isMobile() && this.config.components.crossTool.type !== 'none') {
|
|
195
|
+
const candle = (_a = hover.candleHover) === null || _a === void 0 ? void 0 : _a.visualCandle.candle;
|
|
196
|
+
candle && this.chartModel.mainCandleSeries.setActiveCandle(candle);
|
|
197
|
+
}
|
|
198
|
+
// const showCrossToolOverride = isMobile() ? this.longTouchActivated : showCrossTool;
|
|
199
|
+
this.hoverSubject.next(hover);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
this.crossEventProducer.fireCrossClose();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Fires the last hover update if there is a last cross.
|
|
207
|
+
*/
|
|
208
|
+
fireLastCross() {
|
|
209
|
+
// fire last hover update
|
|
210
|
+
const lastCross = this.crossEventProducer.crossSubject.getValue();
|
|
211
|
+
if (lastCross) {
|
|
212
|
+
this.createAndFireHover(lastCross);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Registers a hover producer part with the given id.
|
|
217
|
+
*
|
|
218
|
+
* @param {string} id - The id of the hover producer part.
|
|
219
|
+
* @param {HoverProducerPart} hoverProducerPart - The hover producer part to register.
|
|
220
|
+
* @returns {void}
|
|
221
|
+
*/
|
|
222
|
+
registerHoverProducerPart(id, hoverProducerPart) {
|
|
223
|
+
this.hoverProducerParts = Object.assign(Object.assign({}, this.hoverProducerParts), { [id]: hoverProducerPart });
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Removes a hover producer part from the hoverProducerParts object.
|
|
227
|
+
* @param {string} id - The id of the hover producer part to be removed.
|
|
228
|
+
* @returns {void}
|
|
229
|
+
*/
|
|
230
|
+
unregisterHoverProducerPart(id) {
|
|
231
|
+
delete this.hoverProducerParts[id];
|
|
232
|
+
}
|
|
233
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (C)
|
|
2
|
+
* Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
|
|
3
3
|
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
4
4
|
* If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
5
|
*/
|
|
@@ -10,11 +10,11 @@ import { ScaleModel } from '../model/scale.model';
|
|
|
10
10
|
* Handles chart touch events.
|
|
11
11
|
*/
|
|
12
12
|
export declare class MainCanvasTouchHandler extends ChartBaseElement {
|
|
13
|
-
private
|
|
13
|
+
private scale;
|
|
14
14
|
private canvasInputListeners;
|
|
15
15
|
private mainCanvasParent;
|
|
16
16
|
private touchedCandleIndexes;
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(scale: ScaleModel, canvasInputListeners: CanvasInputListenerComponent, mainCanvasParent: Element);
|
|
18
18
|
/**
|
|
19
19
|
* Activates canvas input listeners for touch start and touch move events.
|
|
20
20
|
* @protected
|
|
@@ -1,6 +1,85 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (C)
|
|
2
|
+
* Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
|
|
3
3
|
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
4
4
|
* If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
5
|
*/
|
|
6
|
-
import{ChartBaseElement
|
|
6
|
+
import { ChartBaseElement } from '../model/chart-base-element';
|
|
7
|
+
/**
|
|
8
|
+
* Handles chart touch events.
|
|
9
|
+
*/
|
|
10
|
+
export class MainCanvasTouchHandler extends ChartBaseElement {
|
|
11
|
+
constructor(scale, canvasInputListeners, mainCanvasParent) {
|
|
12
|
+
super();
|
|
13
|
+
this.scale = scale;
|
|
14
|
+
this.canvasInputListeners = canvasInputListeners;
|
|
15
|
+
this.mainCanvasParent = mainCanvasParent;
|
|
16
|
+
// 2 candles indexes touched by 2 fingers when pinching
|
|
17
|
+
this.touchedCandleIndexes = [0, 0];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Activates canvas input listeners for touch start and touch move events.
|
|
21
|
+
* @protected
|
|
22
|
+
* @returns {void}
|
|
23
|
+
*/
|
|
24
|
+
doActivate() {
|
|
25
|
+
this.addRxSubscription(this.canvasInputListeners.observeTouchStart().subscribe(e => this.handleTouchStartEvent(e)));
|
|
26
|
+
this.addRxSubscription(this.canvasInputListeners.observeTouchMove().subscribe(e => this.handleTouchMoveEvent(e)));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Handles the touch start event.
|
|
30
|
+
* @param {TouchEvent} e - The touch event.
|
|
31
|
+
* @returns {void}
|
|
32
|
+
*/
|
|
33
|
+
handleTouchStartEvent(e) {
|
|
34
|
+
if (e.touches.length === 2) {
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
// TODO rework this
|
|
37
|
+
this.touchedCandleIndexes = this.getXPositions(e).map(x => this.scale.fromX(x));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Handles touch move event
|
|
42
|
+
* @param {TouchEvent} e - The touch event object
|
|
43
|
+
* @returns {void}
|
|
44
|
+
|
|
45
|
+
private handleTouchMoveEvent(e: TouchEvent): void {
|
|
46
|
+
if (e.touches.length === 2) {
|
|
47
|
+
this.pinchHandler(this.touchedCandleIndexes, this.getXPositions(e));
|
|
48
|
+
}
|
|
49
|
+
}*/
|
|
50
|
+
handleTouchMoveEvent(e) {
|
|
51
|
+
if (e.touches.length === 2) {
|
|
52
|
+
this.pinchHandler(this.touchedCandleIndexes, this.getXPositions(e));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gets candle positions touched by user in pixels.
|
|
57
|
+
* @param e - touch event with "touches" array
|
|
58
|
+
* @return Array<number> - X coordinates of touches on the canvas
|
|
59
|
+
*/
|
|
60
|
+
getXPositions(e) {
|
|
61
|
+
const rect = this.mainCanvasParent.getBoundingClientRect();
|
|
62
|
+
const result = [0, 0];
|
|
63
|
+
// TO DO: check if this body calculations can potentially works wrong in widget
|
|
64
|
+
const scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
|
|
65
|
+
for (let i = 0, l = e.touches.length; i < l; i++) {
|
|
66
|
+
const touch = e.touches[i];
|
|
67
|
+
result[i] = touch.pageX - rect.left - scrollLeft;
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Handles the pinch gesture on the chart.
|
|
73
|
+
* @param {Array<number>} candleIndexes - An array of two numbers representing the indexes of the first and last visible candles on the chart.
|
|
74
|
+
* @param {number[]} touchPositions - An array of two numbers representing the touch positions on the screen.
|
|
75
|
+
* @returns {void}
|
|
76
|
+
*/
|
|
77
|
+
pinchHandler(candleIndexes, touchPositions) {
|
|
78
|
+
const first = (touchPositions[0] * candleIndexes[1] - touchPositions[1] * candleIndexes[0]) /
|
|
79
|
+
(touchPositions[0] - touchPositions[1]);
|
|
80
|
+
const last = first +
|
|
81
|
+
((candleIndexes[0] - candleIndexes[1]) / (touchPositions[0] - touchPositions[1])) *
|
|
82
|
+
this.scale.getBounds().width;
|
|
83
|
+
this.scale.setXScale(first, last);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (C)
|
|
2
|
+
* Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
|
|
3
3
|
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
4
4
|
* If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
5
|
*/
|