@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,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
|
*/
|
|
@@ -1,6 +1,39 @@
|
|
|
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
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Constraint on top of high low provider - makes additional offset bounds.
|
|
8
|
+
* @doc-tags viewport,scaling
|
|
9
|
+
* @param offsetsProvider
|
|
10
|
+
* @doc-tags viewport,scaling,offsets
|
|
11
|
+
*/
|
|
12
|
+
export const createHighLowOffsetCalculator = (offsetsProvider) => (highLow) => {
|
|
13
|
+
const { top, bottom } = offsetsProvider();
|
|
14
|
+
const _height = highLow.high - highLow.low;
|
|
15
|
+
// TODO what should we do if height is 0?
|
|
16
|
+
const height = _height === 0 ? 1 : _height;
|
|
17
|
+
const offsetTop = (height * top) / 100;
|
|
18
|
+
const offsetBottom = (height * bottom) / 100;
|
|
19
|
+
const low = highLow.low - offsetBottom;
|
|
20
|
+
const high = highLow.high + offsetTop;
|
|
21
|
+
return { low, high };
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Constraint on top of high low provider - makes additional offset bounds.
|
|
25
|
+
* @doc-tags viewport,scaling
|
|
26
|
+
* @param offsetsProvider
|
|
27
|
+
* @param highLowProvider
|
|
28
|
+
* @doc-tags viewport,scaling,offsets
|
|
29
|
+
*/
|
|
30
|
+
export const createCandlesOffsetProvider = (offsetsProvider, highLowProvider) => {
|
|
31
|
+
const offsetsCalculator = createHighLowOffsetCalculator(offsetsProvider);
|
|
32
|
+
return {
|
|
33
|
+
isHighLowActive: () => true,
|
|
34
|
+
calculateHighLow: (state) => {
|
|
35
|
+
const highLow = highLowProvider.calculateHighLow(state);
|
|
36
|
+
return offsetsCalculator(highLow);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
};
|
|
@@ -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
|
*/
|
|
@@ -1,6 +1,102 @@
|
|
|
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{nameDirection
|
|
6
|
+
import { nameDirection } from '../../model/candle.model';
|
|
7
|
+
import { VisualSeriesPoint } from '../../model/data-series.model';
|
|
8
|
+
import VisualCandle from '../../model/visual-candle';
|
|
9
|
+
import { firstOf, lastOf } from '../../utils/array.utils';
|
|
10
|
+
import { round } from '../../utils/math.utils';
|
|
11
|
+
const DEFAULT_PERIOD = 60; // 1 minute
|
|
12
|
+
/**
|
|
13
|
+
* Generates fake candle for left and right "out of data range" zones.
|
|
14
|
+
* Requires period to calculate the fake timestamp.
|
|
15
|
+
* The timestamp won't take session breaks or holidays into account.
|
|
16
|
+
*/
|
|
17
|
+
export const fakeVisualCandle = (dataPoints, visualCandles, candleWidth, index, period = DEFAULT_PERIOD) => {
|
|
18
|
+
const candle = fakeCandle(dataPoints, index, period);
|
|
19
|
+
// in case we have equivolume
|
|
20
|
+
candle.volume = candleWidth;
|
|
21
|
+
let x;
|
|
22
|
+
if (visualCandles.length === 0) {
|
|
23
|
+
x = 0;
|
|
24
|
+
}
|
|
25
|
+
else if (index >= visualCandles.length) {
|
|
26
|
+
const lastCandle = visualCandles[visualCandles.length - 1];
|
|
27
|
+
const candlesCountInBetween = index - (visualCandles.length - 1);
|
|
28
|
+
const offsetFromLast = candlesCountInBetween * candleWidth;
|
|
29
|
+
x = lastCandle.centerUnit + offsetFromLast;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const firstCandle = visualCandles[0];
|
|
33
|
+
const candlesCountInBetween = -index;
|
|
34
|
+
const offsetFromFirst = candlesCountInBetween * candleWidth;
|
|
35
|
+
x = firstCandle.centerUnit - offsetFromFirst;
|
|
36
|
+
}
|
|
37
|
+
return new VisualCandle(x, candleWidth, candle.open, candle.close, candle.lo, candle.hi, nameDirection(candle.open, candle.close), candle);
|
|
38
|
+
};
|
|
39
|
+
export const fakeVisualPoint = (dataPoints, visualPoints, meanDataWidth, index, period = DEFAULT_PERIOD) => {
|
|
40
|
+
const candle = fakeDataPoint(dataPoints, index, period);
|
|
41
|
+
let x;
|
|
42
|
+
if (visualPoints.length === 0) {
|
|
43
|
+
x = 0;
|
|
44
|
+
}
|
|
45
|
+
else if (index >= visualPoints.length) {
|
|
46
|
+
const lastCandle = visualPoints[visualPoints.length - 1];
|
|
47
|
+
const candlesCountInBetween = index - (visualPoints.length - 1);
|
|
48
|
+
const offsetFromLast = candlesCountInBetween * meanDataWidth;
|
|
49
|
+
x = lastCandle.centerUnit + offsetFromLast;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const firstCandle = visualPoints[0];
|
|
53
|
+
const candlesCountInBetween = -index;
|
|
54
|
+
const offsetFromFirst = candlesCountInBetween * meanDataWidth;
|
|
55
|
+
x = firstCandle.centerUnit - offsetFromFirst;
|
|
56
|
+
}
|
|
57
|
+
return new VisualSeriesPoint(x, candle.close);
|
|
58
|
+
};
|
|
59
|
+
export const fakeCandle = (candles, index, period = DEFAULT_PERIOD) => {
|
|
60
|
+
const t = getTimestampOfIndex(candles, index, period);
|
|
61
|
+
return {
|
|
62
|
+
hi: NaN,
|
|
63
|
+
lo: NaN,
|
|
64
|
+
open: NaN,
|
|
65
|
+
close: NaN,
|
|
66
|
+
timestamp: t,
|
|
67
|
+
volume: NaN,
|
|
68
|
+
expansion: true,
|
|
69
|
+
idx: index,
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
export const fakeDataPoint = (candles, index, period = DEFAULT_PERIOD) => {
|
|
73
|
+
const t = getTimestampOfIndex(candles, index, period);
|
|
74
|
+
return {
|
|
75
|
+
close: NaN,
|
|
76
|
+
timestamp: t,
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Returns the timestamp of a given index in an array of candles.
|
|
81
|
+
* @param {Candle[]} candles - An array of candles.
|
|
82
|
+
* @param {Index} index - The index of the candle to get the timestamp from.
|
|
83
|
+
* @param {number} [period=DEFAULT_PERIOD] - The period of the candles in milliseconds.
|
|
84
|
+
* @returns {Timestamp} The timestamp of the candle at the given index or 0 if the array is empty or the index is out of bounds.
|
|
85
|
+
*/
|
|
86
|
+
function getTimestampOfIndex(candles, index, period = DEFAULT_PERIOD) {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
const _index = round(index);
|
|
89
|
+
if (candles.length === 0) {
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
const lastCandle = lastOf(candles);
|
|
93
|
+
if (_index >= candles.length && lastCandle) {
|
|
94
|
+
return fakeTimestamp(lastCandle, candles.length - 1, _index, period);
|
|
95
|
+
}
|
|
96
|
+
const firstCandle = firstOf(candles);
|
|
97
|
+
if (_index < 0 && firstCandle) {
|
|
98
|
+
return fakeTimestamp(firstCandle, 0, _index, period);
|
|
99
|
+
}
|
|
100
|
+
return (_b = (_a = candles[_index]) === null || _a === void 0 ? void 0 : _a.timestamp) !== null && _b !== void 0 ? _b : 0;
|
|
101
|
+
}
|
|
102
|
+
const fakeTimestamp = (candle, candleIdx, index, period = DEFAULT_PERIOD) => candle.timestamp + (index - (candleIdx !== null && candleIdx !== void 0 ? candleIdx : 0)) * period;
|
|
@@ -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
|
*/
|
|
@@ -1,6 +1,40 @@
|
|
|
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{unitToPercent
|
|
6
|
+
import { unitToPercent } from '../../model/scaling/viewport.model';
|
|
7
|
+
import { PriceIncrementsUtils } from '../../utils/price-increments.utils';
|
|
8
|
+
export const createRegularPriceFormatter = (extent) => (value) => {
|
|
9
|
+
let checkedValue;
|
|
10
|
+
if (typeof value === 'number') {
|
|
11
|
+
checkedValue = value;
|
|
12
|
+
}
|
|
13
|
+
else if (typeof value === 'string') {
|
|
14
|
+
checkedValue = Number(value);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return '—';
|
|
18
|
+
}
|
|
19
|
+
const [mainDataSeries] = extent.dataSeries;
|
|
20
|
+
if (mainDataSeries !== undefined) {
|
|
21
|
+
const precision = PriceIncrementsUtils.getPricePrecision(checkedValue, mainDataSeries.pricePrecisions);
|
|
22
|
+
return checkedValue.toFixed(precision);
|
|
23
|
+
}
|
|
24
|
+
return `${checkedValue}`;
|
|
25
|
+
};
|
|
26
|
+
export const createPercentFormatter = (extent) => (value, dataSeries) => {
|
|
27
|
+
const [mainDataSeries] = extent.dataSeries;
|
|
28
|
+
let valueUnit = value;
|
|
29
|
+
const series = dataSeries !== null && dataSeries !== void 0 ? dataSeries : mainDataSeries;
|
|
30
|
+
if (series !== undefined) {
|
|
31
|
+
valueUnit = unitToPercent(value, series.getBaseline());
|
|
32
|
+
}
|
|
33
|
+
// always apply default precision for percent
|
|
34
|
+
const formatted = valueUnit.toFixed(PriceIncrementsUtils.DEFAULT_PRECISION).replace('-', '−') + ' %';
|
|
35
|
+
return formatted === '−0.00 %' ? '0.00 %' : formatted;
|
|
36
|
+
};
|
|
37
|
+
export const createYExtentFormatters = (extent) => ({
|
|
38
|
+
percent: createPercentFormatter(extent),
|
|
39
|
+
regular: createRegularPriceFormatter(extent),
|
|
40
|
+
});
|
|
@@ -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
|
*/
|
|
@@ -1,6 +1,73 @@
|
|
|
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{cloneUnsafe
|
|
6
|
+
import { cloneUnsafe } from '../../utils/object.utils';
|
|
7
|
+
export class SecondaryChartColorsPool {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.usedChartColors = {};
|
|
11
|
+
this.symbolsToColorKeys = {};
|
|
12
|
+
this.secondaryChartColorsPool = this.createColorPool(this.config.colors.secondaryChartTheme);
|
|
13
|
+
this.usedChartColors = Object.keys(this.secondaryChartColorsPool).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: 0 })), {});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates a color pool object based on the provided color array
|
|
17
|
+
* @param {SecondaryChartTheme[]} colorArray - An array of SecondaryChartTheme objects
|
|
18
|
+
* @returns {Object} - An object containing a key-value pair for each color in the colorArray
|
|
19
|
+
* The key is a string in the format "colorX" where X is the index of the color in the array
|
|
20
|
+
* The value is an object containing the FullChartColors for the color, with lineTheme and areaTheme properties
|
|
21
|
+
*/
|
|
22
|
+
createColorPool(colorArray) {
|
|
23
|
+
return colorArray.reduce((acc, item, index) => {
|
|
24
|
+
acc[`color${index}`] = Object.assign(Object.assign({}, cloneUnsafe(this.config.colors)), { lineTheme: Object.assign({}, item.lineTheme), areaTheme: Object.assign({}, item.areaTheme) });
|
|
25
|
+
return acc;
|
|
26
|
+
}, {});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Takes a color from the secondaryChartColorsPool and assigns it to a symbol.
|
|
30
|
+
* @param {string} symbol - The symbol to assign the color to.
|
|
31
|
+
* @returns {string} The color assigned to the symbol.
|
|
32
|
+
*/
|
|
33
|
+
takeColorFromPool(symbol) {
|
|
34
|
+
let minColors = Number.MAX_SAFE_INTEGER;
|
|
35
|
+
let minColorKey = '';
|
|
36
|
+
for (const [key, value] of Object.entries(this.usedChartColors)) {
|
|
37
|
+
if (value < minColors) {
|
|
38
|
+
minColors = value;
|
|
39
|
+
minColorKey = key;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
this.usedChartColors[minColorKey] = this.usedChartColors[minColorKey] + 1;
|
|
43
|
+
this.symbolsToColorKeys[symbol] = minColorKey;
|
|
44
|
+
return this.secondaryChartColorsPool[minColorKey];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Adds a color to the chart color pool.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} symbol - The symbol of the color to be added.
|
|
50
|
+
*
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
addColorToPool(symbol) {
|
|
54
|
+
const key = this.symbolsToColorKeys[symbol];
|
|
55
|
+
if (this.usedChartColors[key]) {
|
|
56
|
+
this.usedChartColors[key] = this.usedChartColors[key] - 1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Updates the color configuration for a given symbol in the chart.
|
|
61
|
+
* @param {string} symbol - The symbol for which the color configuration needs to be updated.
|
|
62
|
+
* @param {CandleSeriesColors} config - The new color configuration for the symbol.
|
|
63
|
+
* @returns {void}
|
|
64
|
+
*/
|
|
65
|
+
updateColorConfig(symbol, config) {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
const existColorConfig = this.secondaryChartColorsPool[this.usedChartColors[symbol]];
|
|
68
|
+
if (existColorConfig) {
|
|
69
|
+
const colors = config;
|
|
70
|
+
this.secondaryChartColorsPool[this.usedChartColors[symbol]] = Object.assign(Object.assign({}, config), { lineTheme: Object.assign(existColorConfig.lineTheme, (_a = colors.lineTheme) !== null && _a !== void 0 ? _a : {}), areaTheme: Object.assign(existColorConfig.areaTheme, (_b = colors.areaTheme) !== null && _b !== void 0 ? _b : {}) });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -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
|
*/
|
|
@@ -1,6 +1,90 @@
|
|
|
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{ClearCanvasDrawer
|
|
6
|
+
import { ClearCanvasDrawer } from '../../drawers/clear-canvas.drawer';
|
|
7
|
+
import { CompositeDrawer } from '../../drawers/composite.drawer';
|
|
8
|
+
import { ChartBaseElement } from '../../model/chart-base-element';
|
|
9
|
+
import { CrossToolDrawer } from './cross-tool.drawer';
|
|
10
|
+
import { CrossToolModel } from './cross-tool.model';
|
|
11
|
+
import { CrossAndLabelsDrawerType } from './types/cross-and-labels.drawer';
|
|
12
|
+
import { NoneDrawerType } from './types/none.drawer';
|
|
13
|
+
/**
|
|
14
|
+
* Default bundled chart cross tool.
|
|
15
|
+
*/
|
|
16
|
+
export class CrossToolComponent extends ChartBaseElement {
|
|
17
|
+
constructor(config, crossToolCanvasModel, canvasBoundsContainer, drawingManager, paneManager, crossEventProducer, hoverProducer) {
|
|
18
|
+
super();
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.crossToolCanvasModel = crossToolCanvasModel;
|
|
21
|
+
this.canvasBoundsContainer = canvasBoundsContainer;
|
|
22
|
+
this.drawingManager = drawingManager;
|
|
23
|
+
this.paneManager = paneManager;
|
|
24
|
+
this.crossToolTypeDrawers = {};
|
|
25
|
+
this.model = new CrossToolModel(config.components.crossTool, this.crossToolCanvasModel, crossEventProducer, hoverProducer);
|
|
26
|
+
this.addChildEntity(this.model);
|
|
27
|
+
const clearCanvasDrawer = new ClearCanvasDrawer(this.crossToolCanvasModel);
|
|
28
|
+
this.registerDefaultDrawerTypes();
|
|
29
|
+
const crossToolDrawer = new CrossToolDrawer(this.model, this.crossToolCanvasModel, this.crossToolTypeDrawers);
|
|
30
|
+
const compositeDrawer = new CompositeDrawer();
|
|
31
|
+
compositeDrawer.addDrawer(clearCanvasDrawer, 'CLEAR_CANVAS');
|
|
32
|
+
compositeDrawer.addDrawer(crossToolDrawer, 'CROSS_TOOL_DRAWER');
|
|
33
|
+
this.drawingManager.addDrawer(compositeDrawer, 'CROSS_TOOL');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Registers default drawer types for the chart.
|
|
37
|
+
* @private
|
|
38
|
+
* @function
|
|
39
|
+
* @name registerDefaultDrawerTypes
|
|
40
|
+
*
|
|
41
|
+
* @returns {void}
|
|
42
|
+
*/
|
|
43
|
+
registerDefaultDrawerTypes() {
|
|
44
|
+
this.registerCrossToolTypeDrawer('cross-and-labels', new CrossAndLabelsDrawerType(this.config, this.canvasBoundsContainer, this.paneManager, () => true));
|
|
45
|
+
this.registerCrossToolTypeDrawer('just-labels', new CrossAndLabelsDrawerType(this.config, this.canvasBoundsContainer, this.paneManager, () => true, true));
|
|
46
|
+
this.registerCrossToolTypeDrawer('none', new NoneDrawerType());
|
|
47
|
+
}
|
|
48
|
+
//#region public methods
|
|
49
|
+
/**
|
|
50
|
+
* Sets the cross tool visibility.
|
|
51
|
+
* @param visible
|
|
52
|
+
*/
|
|
53
|
+
setVisible(visible) {
|
|
54
|
+
this.model.setType(visible ? 'cross-and-labels' : 'none');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Sets the crosstool type.
|
|
58
|
+
* - cross-and-labels - both the crosshair and X/Y labels
|
|
59
|
+
* - only-labels - only the X/Y label
|
|
60
|
+
* - none
|
|
61
|
+
* @param type
|
|
62
|
+
*/
|
|
63
|
+
setType(type) {
|
|
64
|
+
this.model.setType(type);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Returns an Observable that emits the current hover subject.
|
|
68
|
+
*/
|
|
69
|
+
observeCrossToolChanged() {
|
|
70
|
+
return this.model.currentHoverSubject;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Sets magnet target for cross tool.
|
|
74
|
+
* Supported only for 'cross-and-labels' type.
|
|
75
|
+
* Default magnet target is none.
|
|
76
|
+
* @param target
|
|
77
|
+
*/
|
|
78
|
+
setMagnetTarget(target) {
|
|
79
|
+
this.config.components.crossTool.magnetTarget = target;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Adds a new drawer type for cross tool, so you can add your own implementation of cross tool
|
|
83
|
+
* (or override existing)
|
|
84
|
+
* @param drawerName - an unique drawer type name
|
|
85
|
+
* @param drawerImpl - CrossToolTypeDrawer object
|
|
86
|
+
*/
|
|
87
|
+
registerCrossToolTypeDrawer(drawerName, drawerImpl) {
|
|
88
|
+
this.crossToolTypeDrawers[drawerName] = drawerImpl;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -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
|
*/
|
|
@@ -1,6 +1,37 @@
|
|
|
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
|
-
export class CrossToolDrawer
|
|
6
|
+
export class CrossToolDrawer {
|
|
7
|
+
constructor(model, crossToolCanvasModel, crossToolTypeDrawers) {
|
|
8
|
+
this.model = model;
|
|
9
|
+
this.crossToolCanvasModel = crossToolCanvasModel;
|
|
10
|
+
this.crossToolTypeDrawers = crossToolTypeDrawers;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Draws the cross tool on the canvas.
|
|
14
|
+
* @function
|
|
15
|
+
* @name draw
|
|
16
|
+
* @memberof CrossToolCanvasView
|
|
17
|
+
* @instance
|
|
18
|
+
* @returns {void}
|
|
19
|
+
*/
|
|
20
|
+
draw() {
|
|
21
|
+
const drawer = this.crossToolTypeDrawers[this.model.type];
|
|
22
|
+
if (drawer) {
|
|
23
|
+
this.model.currentHover && drawer.draw(this.crossToolCanvasModel.ctx, this.model.currentHover);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.error(`No cross tool drawer type registered for drawer type ${this.model.type}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns an array of string containing the canvas ID of the crossToolCanvasModel.
|
|
31
|
+
*
|
|
32
|
+
* @returns {Array<string>} An array of string containing the canvas ID of the crossToolCanvasModel.
|
|
33
|
+
*/
|
|
34
|
+
getCanvasIds() {
|
|
35
|
+
return [this.crossToolCanvasModel.canvasId];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -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
|
*/
|
|
@@ -1,6 +1,112 @@
|
|
|
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 } from 'rxjs';
|
|
7
|
+
import { ChartBaseElement } from '../../model/chart-base-element';
|
|
8
|
+
import { CHART_UUID } from '../../canvas/canvas-bounds-container';
|
|
9
|
+
export class CrossToolModel extends ChartBaseElement {
|
|
10
|
+
get currentHover() {
|
|
11
|
+
return this.currentHoverSubject.getValue();
|
|
12
|
+
}
|
|
13
|
+
set currentHover(value) {
|
|
14
|
+
this.currentHoverSubject.next(value);
|
|
15
|
+
}
|
|
16
|
+
constructor(config, crossToolCanvasModel, crossEventProducer, hoverProducer) {
|
|
17
|
+
super();
|
|
18
|
+
this.config = config;
|
|
19
|
+
this.crossToolCanvasModel = crossToolCanvasModel;
|
|
20
|
+
this.crossEventProducer = crossEventProducer;
|
|
21
|
+
this.hoverProducer = hoverProducer;
|
|
22
|
+
// the main hover object which will be presented on UI
|
|
23
|
+
this.currentHoverSubject = new BehaviorSubject(null);
|
|
24
|
+
this.type = 'cross-and-labels';
|
|
25
|
+
this.type = config.type;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Sets the type of the CrossTool object.
|
|
29
|
+
*
|
|
30
|
+
* @param {CrossToolType} type - The type of the CrossTool object.
|
|
31
|
+
* @returns {void}
|
|
32
|
+
*/
|
|
33
|
+
setType(type) {
|
|
34
|
+
this.type = type;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Method to activate the cross tool.
|
|
38
|
+
* It subscribes to the canvasInputListener's mouse move event and fires the draw event.
|
|
39
|
+
* It also subscribes to the eventBus's hover and close hover events and updates the hover and fires the draw event accordingly.
|
|
40
|
+
* It also subscribes to the chartModel's candlesSetSubject and timeZoneModel's observeTimeZoneChanged events and recalculates the cross tool X formatter.
|
|
41
|
+
*/
|
|
42
|
+
doActivate() {
|
|
43
|
+
super.doActivate();
|
|
44
|
+
this.addRxSubscription(this.hoverProducer.hoverSubject.subscribe(hover => {
|
|
45
|
+
if (this.crossEventProducer.crossSubject.getValue() !== null && hover !== null) {
|
|
46
|
+
this.updateHover(hover);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.currentHover = null;
|
|
50
|
+
}
|
|
51
|
+
this.fireDraw();
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* This method is used to fire the draw event of the crossToolCanvasModel if the type is not 'none'.
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
fireDraw() {
|
|
59
|
+
if (this.type !== 'none') {
|
|
60
|
+
this.crossToolCanvasModel.fireDraw();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Updates the current hover position with the provided hover object.
|
|
65
|
+
* @param {Object} hover - The hover object containing the x and y coordinates and time formatted.
|
|
66
|
+
* @param {number} hover.x - The x coordinate of the hover.
|
|
67
|
+
* @param {number} hover.y - The y coordinate of the hover.
|
|
68
|
+
* @param {string} hover.timeFormatted - The formatted time of the hover.
|
|
69
|
+
* @param {Object} hover.candleHover - The candle hover object containing the open, close, high, low and closestOHLCY coordinates.
|
|
70
|
+
* @param {number} hover.candleHover.openY - The y coordinate of the open price of the candle.
|
|
71
|
+
* @param {number} hover.candleHover.closeY - The y coordinate of the close price of the candle.
|
|
72
|
+
* @param {number} hover.candleHover.highY - The y coordinate of the high price of the candle.
|
|
73
|
+
* @param {number} hover.candleHover.lowY - The y coordinate of the low price of the candle.
|
|
74
|
+
* @param {number} hover.candleHover.closestOHLCY - The y coordinate of the closest OHLC price of the candle.
|
|
75
|
+
* @returns {void}
|
|
76
|
+
*/
|
|
77
|
+
updateHover(hover, magnetTarget = this.config.magnetTarget) {
|
|
78
|
+
if (this.currentHover === null) {
|
|
79
|
+
this.currentHover = { x: hover.x, y: 0, time: hover.timeFormatted, paneId: hover.paneId };
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.currentHover.x = hover.x;
|
|
83
|
+
this.currentHover.time = hover.timeFormatted;
|
|
84
|
+
}
|
|
85
|
+
if (hover.candleHover && hover.paneId === CHART_UUID) {
|
|
86
|
+
switch (magnetTarget) {
|
|
87
|
+
case 'O':
|
|
88
|
+
this.currentHover.y = hover.candleHover.openY;
|
|
89
|
+
break;
|
|
90
|
+
case 'C':
|
|
91
|
+
this.currentHover.y = hover.candleHover.closeY;
|
|
92
|
+
break;
|
|
93
|
+
case 'H':
|
|
94
|
+
this.currentHover.y = hover.candleHover.highY;
|
|
95
|
+
break;
|
|
96
|
+
case 'L':
|
|
97
|
+
this.currentHover.y = hover.candleHover.lowY;
|
|
98
|
+
break;
|
|
99
|
+
case 'OHLC':
|
|
100
|
+
this.currentHover.y = hover.candleHover.closestOHLCY;
|
|
101
|
+
break;
|
|
102
|
+
case 'none':
|
|
103
|
+
this.currentHover.y = hover.y;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
this.currentHover.y = hover.y;
|
|
109
|
+
}
|
|
110
|
+
this.currentHoverSubject.next(this.currentHover);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -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
|
*/
|