@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,14 +1,15 @@
|
|
|
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 {
|
|
7
|
-
import { CanvasModel } from '../../model/canvas.model';
|
|
8
|
-
import { NumericAxisLabel } from '../labels_generator/numeric-axis-labels.generator';
|
|
6
|
+
import { FullChartConfig } from '../../chart.config';
|
|
9
7
|
import { Drawer } from '../../drawers/drawing-manager';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
8
|
+
import { Bounds } from '../../model/bounds.model';
|
|
9
|
+
import { CanvasModel } from '../../model/canvas.model';
|
|
10
|
+
import { Unit } from '../../model/scaling/viewport.model';
|
|
11
|
+
import { PaneManager } from '../pane/pane-manager.component';
|
|
12
|
+
import { YAxisComponent } from './y-axis.component';
|
|
12
13
|
export interface YAxisLabel {
|
|
13
14
|
readonly text: string;
|
|
14
15
|
readonly value: Unit;
|
|
@@ -23,13 +24,9 @@ export interface YAxisAnimationParameters {
|
|
|
23
24
|
*/
|
|
24
25
|
export declare class YAxisDrawer implements Drawer {
|
|
25
26
|
private fullConfig;
|
|
26
|
-
private yAxisState;
|
|
27
27
|
private canvasModel;
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
private drawPredicate;
|
|
31
|
-
private toY;
|
|
32
|
-
constructor(fullConfig: FullChartConfig, yAxisState: ChartConfigComponentsYAxis, canvasModel: CanvasModel, labelsProvider: () => Array<NumericAxisLabel>, axisBounds: BoundsProvider, drawPredicate: () => boolean, toY: ViewportModel['toY']);
|
|
28
|
+
private paneManager;
|
|
29
|
+
constructor(fullConfig: FullChartConfig, canvasModel: CanvasModel, paneManager: PaneManager);
|
|
33
30
|
/**
|
|
34
31
|
* Draws the axis on the canvas if the drawPredicate is true.
|
|
35
32
|
* It gets the labels from the labelsProvider and the bounds from the axisBounds.
|
|
@@ -48,7 +45,7 @@ export declare class YAxisDrawer implements Drawer {
|
|
|
48
45
|
* @param {string} font - The font used for the labels.
|
|
49
46
|
* @param {string} labelTextColor - The color of the label text.
|
|
50
47
|
*/
|
|
51
|
-
drawLabels(ctx: CanvasRenderingContext2D, labels: YAxisLabel[], axisBounds: Bounds, fontHeight: number, font: string, labelTextColor: string): void;
|
|
48
|
+
drawLabels(ctx: CanvasRenderingContext2D, labels: YAxisLabel[], axisBounds: Bounds, fontHeight: number, font: string, labelTextColor: string, yAxis: YAxisComponent): void;
|
|
52
49
|
/**
|
|
53
50
|
* Returns an array of canvas IDs.
|
|
54
51
|
*
|
|
@@ -1,6 +1,101 @@
|
|
|
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{getFontFromConfig
|
|
6
|
+
import { getFontFromConfig } from '../../chart.config';
|
|
7
|
+
import { clipToBounds } from '../../drawers/data-series.drawer';
|
|
8
|
+
import { calculateSymbolHeight, calculateTextWidth } from '../../utils/canvas/canvas-font-measure-tool.utils';
|
|
9
|
+
/**
|
|
10
|
+
* Draws the Y_AXIS rectangle + it's base labels.
|
|
11
|
+
*/
|
|
12
|
+
export class YAxisDrawer {
|
|
13
|
+
constructor(fullConfig, canvasModel, paneManager) {
|
|
14
|
+
this.fullConfig = fullConfig;
|
|
15
|
+
this.canvasModel = canvasModel;
|
|
16
|
+
this.paneManager = paneManager;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Draws the axis on the canvas if the drawPredicate is true.
|
|
20
|
+
* It gets the labels from the labelsProvider and the bounds from the axisBounds.
|
|
21
|
+
* It sets the background color of the axis and fills the background rectangle.
|
|
22
|
+
* It gets the font from the yAxisState and calculates the font height.
|
|
23
|
+
* It saves the context, clips it to the bounds and draws the labels with the given font and text color.
|
|
24
|
+
* @function
|
|
25
|
+
*/
|
|
26
|
+
draw() {
|
|
27
|
+
this.paneManager.yExtents.forEach(extent => {
|
|
28
|
+
const yAxisComponent = extent.yAxis;
|
|
29
|
+
if (yAxisComponent.state.visible) {
|
|
30
|
+
const labels = yAxisComponent.model.baseLabelsModel.labels;
|
|
31
|
+
const bounds = yAxisComponent.getBounds();
|
|
32
|
+
const ctx = this.canvasModel.ctx;
|
|
33
|
+
// draw axis background rect animation
|
|
34
|
+
ctx.fillStyle = this.getBackgroundColor();
|
|
35
|
+
ctx.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
|
|
36
|
+
const font = getFontFromConfig(yAxisComponent.state);
|
|
37
|
+
const fontHeight = calculateSymbolHeight(font, ctx);
|
|
38
|
+
const textColor = this.getLabelTextColor();
|
|
39
|
+
ctx.save();
|
|
40
|
+
clipToBounds(ctx, bounds);
|
|
41
|
+
this.drawLabels(ctx, labels, bounds, fontHeight, font, textColor, yAxisComponent);
|
|
42
|
+
ctx.restore();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Draws labels on the Y-axis of a canvas chart.
|
|
48
|
+
* @param {CanvasRenderingContext2D} ctx - The 2D rendering context of the canvas.
|
|
49
|
+
* @param {YAxisLabel[]} labels - An array of objects containing the value and text of each label.
|
|
50
|
+
* @param {Bounds} axisBounds - An object containing the x, y, width, and height of the Y-axis.
|
|
51
|
+
* @param {number} fontHeight - The height of the font used for the labels.
|
|
52
|
+
* @param {string} font - The font used for the labels.
|
|
53
|
+
* @param {string} labelTextColor - The color of the label text.
|
|
54
|
+
*/
|
|
55
|
+
drawLabels(ctx, labels, axisBounds, fontHeight, font, labelTextColor, yAxis) {
|
|
56
|
+
ctx.fillStyle = labelTextColor;
|
|
57
|
+
ctx.font = font;
|
|
58
|
+
const metrics = ctx.measureText('00.0');
|
|
59
|
+
const textHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;
|
|
60
|
+
const topY = axisBounds.y + textHeight;
|
|
61
|
+
const bottomY = axisBounds.y + axisBounds.height - textHeight;
|
|
62
|
+
labels.forEach(label => {
|
|
63
|
+
const y = yAxis.scale.toY(label.value);
|
|
64
|
+
if (y > topY && y < bottomY) {
|
|
65
|
+
drawSimpleLabel(ctx, axisBounds, label.text, y, fontHeight, font, yAxis.state.labelBoxMargin.end, yAxis.state.align);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns an array of canvas IDs.
|
|
71
|
+
*
|
|
72
|
+
* @returns {Array<string>} An array containing the canvas ID.
|
|
73
|
+
*/
|
|
74
|
+
getCanvasIds() {
|
|
75
|
+
return [this.canvasModel.canvasId];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns the background color of the Y-axis.
|
|
79
|
+
*
|
|
80
|
+
* @protected
|
|
81
|
+
* @returns {string} The background color of the Y-axis.
|
|
82
|
+
*/
|
|
83
|
+
getBackgroundColor() {
|
|
84
|
+
return this.fullConfig.colors.yAxis.backgroundColor;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns the color of the label text for the chart area axis.
|
|
88
|
+
*
|
|
89
|
+
* @protected
|
|
90
|
+
* @returns {string} The color of the label text.
|
|
91
|
+
*/
|
|
92
|
+
getLabelTextColor() {
|
|
93
|
+
return this.fullConfig.colors.yAxis.labelTextColor;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const drawSimpleLabel = (ctx, bounds, text, centralY, fontHeight, font, padding, yAxisAlign) => {
|
|
97
|
+
const xTextBounds = yAxisAlign === 'right'
|
|
98
|
+
? bounds.x + bounds.width - calculateTextWidth(text, ctx, font) - padding
|
|
99
|
+
: bounds.x + padding;
|
|
100
|
+
ctx.fillText(text, xTextBounds, centralY + fontHeight / 2 - 1); // -1 for font height adjustment
|
|
101
|
+
};
|
|
@@ -1,33 +1,25 @@
|
|
|
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
|
import { CanvasBoundsContainer } from '../../canvas/canvas-bounds-container';
|
|
7
|
-
import {
|
|
7
|
+
import { YAxisConfig } from '../../chart.config';
|
|
8
8
|
import EventBus from '../../events/event-bus';
|
|
9
9
|
import { CanvasModel } from '../../model/canvas.model';
|
|
10
10
|
import { ChartBaseElement } from '../../model/chart-base-element';
|
|
11
|
+
import { DataSeriesModel } from '../../model/data-series.model';
|
|
11
12
|
import { ScaleModel } from '../../model/scale.model';
|
|
12
|
-
import { ChartModel } from '../chart/chart.model';
|
|
13
|
-
import { PaneComponent } from '../pane/pane.component';
|
|
14
13
|
import { NumericYAxisLabelsGenerator } from './numeric-y-axis-labels.generator';
|
|
15
|
-
import {
|
|
14
|
+
import { FancyYAxisLabelsModel } from './price_labels/y-axis-labels.model';
|
|
16
15
|
import { YAxisBaseLabelsModel } from './y-axis-base-labels.model';
|
|
17
16
|
export declare class YAxisModel extends ChartBaseElement {
|
|
18
|
-
private
|
|
17
|
+
private paneUUID;
|
|
18
|
+
private state;
|
|
19
19
|
private canvasBoundsContainer;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
yAxisLabelsModel: YAxisLabelsModel;
|
|
25
|
-
constructor(paneComponent: PaneComponent, eventBus: EventBus, config: FullChartConfig, canvasBoundsContainer: CanvasBoundsContainer, canvasModel: CanvasModel, chartModel: ChartModel, scaleModel: ScaleModel);
|
|
26
|
-
/**
|
|
27
|
-
* This method is used to activate the chart and auto-adjust the width of the Y axis depending on data.
|
|
28
|
-
* It subscribes to the candlesSetSubject and invalidates the labelsCache of yAxisLabelsGenerator, updates the labels of yAxisLabelsModel and yAxisBaseLabelsModel, and fires the draw event of canvasModel.
|
|
29
|
-
* @protected
|
|
30
|
-
* @returns {void}
|
|
31
|
-
*/
|
|
20
|
+
labelsGenerator: NumericYAxisLabelsGenerator;
|
|
21
|
+
baseLabelsModel: YAxisBaseLabelsModel;
|
|
22
|
+
fancyLabelsModel: FancyYAxisLabelsModel;
|
|
23
|
+
constructor(paneUUID: string, eventBus: EventBus, state: YAxisConfig, canvasBoundsContainer: CanvasBoundsContainer, canvasModel: CanvasModel, scale: ScaleModel, valueFormatter: (value: number) => string, dataSeriesProvider: () => DataSeriesModel | undefined, extentIdx: number);
|
|
32
24
|
protected doActivate(): void;
|
|
33
25
|
}
|
|
@@ -1,6 +1,38 @@
|
|
|
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 { ChartBaseElement } from '../../model/chart-base-element';
|
|
7
|
+
import { NumericYAxisLabelsGenerator } from './numeric-y-axis-labels.generator';
|
|
8
|
+
import { FancyYAxisLabelsModel } from './price_labels/y-axis-labels.model';
|
|
9
|
+
import { YAxisBaseLabelsModel } from './y-axis-base-labels.model';
|
|
10
|
+
export class YAxisModel extends ChartBaseElement {
|
|
11
|
+
constructor(paneUUID, eventBus, state, canvasBoundsContainer, canvasModel, scale, valueFormatter, dataSeriesProvider, extentIdx) {
|
|
12
|
+
super();
|
|
13
|
+
this.paneUUID = paneUUID;
|
|
14
|
+
this.state = state;
|
|
15
|
+
this.canvasBoundsContainer = canvasBoundsContainer;
|
|
16
|
+
this.labelsGenerator = new NumericYAxisLabelsGenerator(null, dataSeriesProvider, scale, valueFormatter, () => this.state.type, state.labelHeight);
|
|
17
|
+
this.baseLabelsModel = new YAxisBaseLabelsModel(scale, this.labelsGenerator, this.canvasBoundsContainer, paneUUID, extentIdx);
|
|
18
|
+
this.addChildEntity(this.baseLabelsModel);
|
|
19
|
+
this.fancyLabelsModel = new FancyYAxisLabelsModel(eventBus, scale, canvasBoundsContainer, state, canvasModel, paneUUID, () => this.canvasBoundsContainer.updateYAxisWidths());
|
|
20
|
+
this.addChildEntity(this.fancyLabelsModel);
|
|
21
|
+
}
|
|
22
|
+
doActivate() {
|
|
23
|
+
const contributor = {
|
|
24
|
+
getLargestLabel: () => {
|
|
25
|
+
var _a;
|
|
26
|
+
return ((_a = this.labelsGenerator.labelsCache.getLastCachedValue()) !== null && _a !== void 0 ? _a : [])
|
|
27
|
+
.map(label => label.text)
|
|
28
|
+
.concat(this.fancyLabelsModel.orderedLabels.flatMap(l => l.labels).map(l => l.labelText))
|
|
29
|
+
.reduce((maxLengthText, label) => (label.length > maxLengthText.length ? label : maxLengthText), '');
|
|
30
|
+
},
|
|
31
|
+
getYAxisIndex: () => 0,
|
|
32
|
+
getYAxisState: () => this.state,
|
|
33
|
+
getPaneUUID: () => this.paneUUID,
|
|
34
|
+
};
|
|
35
|
+
this.canvasBoundsContainer.yAxisBoundsContainer.registerYAxisWidthContributor(contributor);
|
|
36
|
+
this.addSubscription(() => this.canvasBoundsContainer.yAxisBoundsContainer.removeYAxisWidthContributor(contributor));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -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,74 @@
|
|
|
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{getDPR
|
|
6
|
+
import { getDPR } from '../utils/device/device-pixel-ratio.utils';
|
|
7
|
+
import { deepEqual } from '../utils/object.utils';
|
|
8
|
+
import { floor } from '../utils/math.utils';
|
|
9
|
+
export class BackgroundDrawer {
|
|
10
|
+
constructor(canvasModel, config) {
|
|
11
|
+
this.canvasModel = canvasModel;
|
|
12
|
+
this.config = config;
|
|
13
|
+
// we need to save previous state to avoid unnecessary redraws
|
|
14
|
+
this.prevState = {};
|
|
15
|
+
this.prevWidth = 0;
|
|
16
|
+
this.prevHeight = 0;
|
|
17
|
+
}
|
|
18
|
+
draw() {
|
|
19
|
+
if (deepEqual(this.config.colors.chartAreaTheme, this.prevState) &&
|
|
20
|
+
this.prevHeight === this.canvasModel.height &&
|
|
21
|
+
this.prevWidth === this.canvasModel.width) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.canvasModel.clear();
|
|
25
|
+
const ctx = this.canvasModel.ctx;
|
|
26
|
+
if (this.config.colors.chartAreaTheme.backgroundMode === 'gradient') {
|
|
27
|
+
const grd = ctx.createLinearGradient(0, 0, this.canvasModel.width, this.canvasModel.height);
|
|
28
|
+
grd.addColorStop(0, this.config.colors.chartAreaTheme.backgroundGradientTopColor);
|
|
29
|
+
grd.addColorStop(1, this.config.colors.chartAreaTheme.backgroundGradientBottomColor);
|
|
30
|
+
ctx.fillStyle = grd;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
ctx.fillStyle = this.config.colors.chartAreaTheme.backgroundColor;
|
|
34
|
+
}
|
|
35
|
+
ctx.fillRect(0, 0, this.canvasModel.width, this.canvasModel.height);
|
|
36
|
+
// save prev state
|
|
37
|
+
this.prevState = Object.assign({}, this.config.colors.chartAreaTheme);
|
|
38
|
+
this.prevWidth = this.canvasModel.width;
|
|
39
|
+
this.prevHeight = this.canvasModel.height;
|
|
40
|
+
}
|
|
41
|
+
getCanvasIds() {
|
|
42
|
+
return [this.canvasModel.canvasId];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// this function in used in case when
|
|
46
|
+
// some entity can overlap with another chart entity, so we need to hide the another entity
|
|
47
|
+
export const redrawBackgroundArea = (backgroundCtx, ctx, x, y, width, height, opacity) => {
|
|
48
|
+
const dpr = getDPR();
|
|
49
|
+
const backgroundCoords = [x * dpr, y * dpr, width * dpr, height * dpr];
|
|
50
|
+
let imageData = backgroundCtx.getImageData(...backgroundCoords);
|
|
51
|
+
if (opacity !== undefined) {
|
|
52
|
+
// convert rgba to rgb for black background
|
|
53
|
+
// Target.R = (Source.A * Source.R)
|
|
54
|
+
// Target.G = (Source.A * Source.G)
|
|
55
|
+
// Target.B = (Source.A * Source.B)
|
|
56
|
+
const alpha = imageData.data[3] / 255;
|
|
57
|
+
if (alpha === 1) {
|
|
58
|
+
// fast path
|
|
59
|
+
for (let i = 3; i < imageData.data.length; i += 4) {
|
|
60
|
+
imageData.data[i] = floor(imageData.data[i] * opacity);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
for (let i = 0; i < imageData.data.length; i++) {
|
|
65
|
+
const v = imageData.data[i];
|
|
66
|
+
imageData.data[i] = i % 4 === 3 ? floor(v * opacity) : floor(alpha * v);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
imageData = new ImageData(
|
|
70
|
+
// i % 4 === 3 - this condition is for alpha channel
|
|
71
|
+
imageData.data, imageData.width, imageData.height, { colorSpace: imageData.colorSpace });
|
|
72
|
+
}
|
|
73
|
+
ctx.putImageData(imageData, backgroundCoords[0], backgroundCoords[1]);
|
|
74
|
+
};
|
|
@@ -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,74 @@
|
|
|
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{CandleSeriesModel
|
|
6
|
+
import { CandleSeriesModel } from '../../model/candle-series.model';
|
|
7
|
+
import { flat } from '../../utils/array.utils';
|
|
8
|
+
import { floor } from '../../utils/math.utils';
|
|
9
|
+
export class AreaDrawer {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
draw(ctx, points, model, drawerConfig) {
|
|
14
|
+
if (model instanceof CandleSeriesModel) {
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
const visualCandles = flat(points);
|
|
17
|
+
if (visualCandles.length === 0) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (drawerConfig.singleColor) {
|
|
21
|
+
ctx.strokeStyle = drawerConfig.singleColor;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
ctx.strokeStyle = model.colors.areaTheme.lineColor;
|
|
25
|
+
}
|
|
26
|
+
if (model.hovered) {
|
|
27
|
+
ctx.lineWidth = this.config.selectedWidth;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
ctx.lineWidth = this.config.areaLineWidth;
|
|
31
|
+
}
|
|
32
|
+
const paneBounds = model.extentComponent.getBounds();
|
|
33
|
+
const first = visualCandles[0];
|
|
34
|
+
const firstLineX = model.view.toX(first.centerUnit);
|
|
35
|
+
for (let i = 0; i < visualCandles.length; i++) {
|
|
36
|
+
const prev = visualCandles[i - 1];
|
|
37
|
+
const next = visualCandles[i + 1];
|
|
38
|
+
const visualCandle = visualCandles[i];
|
|
39
|
+
const lineX = model.view.toX(visualCandle.centerUnit);
|
|
40
|
+
const closeY = model.view.toY(visualCandle.close);
|
|
41
|
+
const bottomY = paneBounds.y + paneBounds.height;
|
|
42
|
+
if (prev === void 0) {
|
|
43
|
+
ctx.beginPath();
|
|
44
|
+
ctx.lineTo(floor(lineX), bottomY);
|
|
45
|
+
ctx.moveTo(floor(lineX), closeY);
|
|
46
|
+
}
|
|
47
|
+
else if (next === void 0) {
|
|
48
|
+
ctx.lineTo(floor(lineX), closeY);
|
|
49
|
+
ctx.stroke();
|
|
50
|
+
ctx.lineTo(floor(lineX), bottomY);
|
|
51
|
+
ctx.lineTo(floor(firstLineX), bottomY);
|
|
52
|
+
ctx.closePath();
|
|
53
|
+
let fillColor;
|
|
54
|
+
if (drawerConfig.singleColor) {
|
|
55
|
+
ctx.fillStyle = drawerConfig.singleColor;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
ctx.fillStyle =
|
|
59
|
+
model.colors.areaTheme.startColor && model.colors.areaTheme.stopColor
|
|
60
|
+
? ((fillColor = ctx.createLinearGradient(0, 0, 0, paneBounds.height)),
|
|
61
|
+
fillColor.addColorStop(0, model.colors.areaTheme.startColor),
|
|
62
|
+
fillColor.addColorStop(1, model.colors.areaTheme.stopColor),
|
|
63
|
+
fillColor)
|
|
64
|
+
: '';
|
|
65
|
+
}
|
|
66
|
+
ctx.fill();
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
ctx.lineTo(floor(lineX), closeY);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -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,62 @@
|
|
|
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{CandleSeriesModel
|
|
6
|
+
import { CandleSeriesModel } from '../../model/candle-series.model';
|
|
7
|
+
import { flat } from '../../utils/array.utils';
|
|
8
|
+
import { avoidAntialiasing } from '../../utils/canvas/canvas-drawing-functions.utils';
|
|
9
|
+
import { floorToDPR } from '../../utils/device/device-pixel-ratio.utils';
|
|
10
|
+
import { setLineWidth } from '../data-series.drawer';
|
|
11
|
+
export class BarDrawer {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
setFillStyle(ctx, drawerConfig, candleSeries, visualCandle) {
|
|
16
|
+
if (drawerConfig.singleColor) {
|
|
17
|
+
ctx.strokeStyle = drawerConfig.singleColor;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const barTheme = candleSeries.colors.barTheme;
|
|
21
|
+
if (barTheme) {
|
|
22
|
+
ctx.strokeStyle = barTheme[`${visualCandle.name}Color`];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
draw(ctx, points, candleSeries, drawerConfig) {
|
|
27
|
+
if (candleSeries instanceof CandleSeriesModel) {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const visualCandles = flat(points);
|
|
30
|
+
setLineWidth(ctx, this.config.barLineWidth, candleSeries, drawerConfig);
|
|
31
|
+
avoidAntialiasing(ctx, () => {
|
|
32
|
+
for (const visualCandle of visualCandles) {
|
|
33
|
+
this.setFillStyle(ctx, drawerConfig, candleSeries, visualCandle);
|
|
34
|
+
ctx.beginPath();
|
|
35
|
+
const bodyLineX = floorToDPR(candleSeries.view.toX(visualCandle.centerUnit));
|
|
36
|
+
const openLineStartX = floorToDPR(candleSeries.view.toX(visualCandle.startUnit));
|
|
37
|
+
const [wickStartY, bodyStartY, bodyEndY, wickEndY] = visualCandle.yBodyKeyPoints(candleSeries.view);
|
|
38
|
+
const w = floorToDPR(candleSeries.view.xPixels(visualCandle.width) / 2);
|
|
39
|
+
const bodyCloseY = floorToDPR(candleSeries.view.toY(visualCandle.close));
|
|
40
|
+
const bodyOpenY = floorToDPR(candleSeries.view.toY(visualCandle.open));
|
|
41
|
+
if (this.config.showWicks) {
|
|
42
|
+
ctx.moveTo(bodyLineX, wickStartY);
|
|
43
|
+
ctx.lineTo(bodyLineX, wickEndY);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
ctx.moveTo(bodyLineX, bodyStartY);
|
|
47
|
+
ctx.lineTo(bodyLineX, bodyEndY);
|
|
48
|
+
}
|
|
49
|
+
/* close line start */
|
|
50
|
+
ctx.moveTo(bodyLineX, bodyCloseY);
|
|
51
|
+
ctx.lineTo(bodyLineX + w, bodyCloseY);
|
|
52
|
+
/* close line end */
|
|
53
|
+
/* open line start */
|
|
54
|
+
ctx.moveTo(openLineStartX, bodyOpenY);
|
|
55
|
+
ctx.lineTo(bodyLineX, bodyOpenY);
|
|
56
|
+
/* open line end */
|
|
57
|
+
ctx.stroke();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -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,89 @@
|
|
|
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{CanvasElement
|
|
6
|
+
import { CanvasElement } from '../../canvas/canvas-bounds-container';
|
|
7
|
+
import { CandleSeriesModel } from '../../model/candle-series.model';
|
|
8
|
+
import { flat } from '../../utils/array.utils';
|
|
9
|
+
export class BaselineDrawer {
|
|
10
|
+
constructor(baseLineModel, canvasBoundContainer) {
|
|
11
|
+
this.baseLineModel = baseLineModel;
|
|
12
|
+
this.canvasBoundContainer = canvasBoundContainer;
|
|
13
|
+
}
|
|
14
|
+
draw(ctx, points, model, drawerConfig) {
|
|
15
|
+
if (drawerConfig !== undefined && model instanceof CandleSeriesModel) {
|
|
16
|
+
const visualCandles = flat(points);
|
|
17
|
+
// calculate baseline
|
|
18
|
+
const baselineYPercents = this.baseLineModel.baselineYPercents;
|
|
19
|
+
const chartBounds = this.canvasBoundContainer.getBounds(CanvasElement.CHART);
|
|
20
|
+
const baseLine = chartBounds.y + chartBounds.height * (baselineYPercents / 100);
|
|
21
|
+
const first = visualCandles[0];
|
|
22
|
+
for (let i = 0; i < visualCandles.length; i++) {
|
|
23
|
+
const current = visualCandles[i];
|
|
24
|
+
const prev = visualCandles[i - 1];
|
|
25
|
+
const next = visualCandles[i + 1];
|
|
26
|
+
const firstLineXPx = model.view.toX(first.centerUnit);
|
|
27
|
+
const currentLineXPx = model.view.toX(current.centerUnit);
|
|
28
|
+
const currentCloseYPx = model.view.toY(current.close);
|
|
29
|
+
const prevHigherThanBL = prev ? model.view.toY(prev.close) < baseLine : false;
|
|
30
|
+
const curHigherThanBL = currentCloseYPx < baseLine;
|
|
31
|
+
if (prev !== void 0 && prevHigherThanBL !== curHigherThanBL) {
|
|
32
|
+
setBaselineFillStyle(ctx, model, drawerConfig, prevHigherThanBL);
|
|
33
|
+
const prevLineXPx = model.view.toX(prev.centerUnit);
|
|
34
|
+
const prevCloseYPx = model.view.toY(prev.close);
|
|
35
|
+
// our goal here is to find the crossing point X between chart line and baseline
|
|
36
|
+
const distanceWidth = currentLineXPx - prevLineXPx;
|
|
37
|
+
const distanceHeight = currentCloseYPx - prevCloseYPx;
|
|
38
|
+
const tg = distanceWidth / distanceHeight;
|
|
39
|
+
const distanceHeightToBL = currentCloseYPx - baseLine;
|
|
40
|
+
// distance from crossing point BL and area line to current candle X
|
|
41
|
+
const distanceWidthBL = tg * distanceHeightToBL;
|
|
42
|
+
const xPx = prevLineXPx + (distanceWidth - distanceWidthBL);
|
|
43
|
+
ctx.lineTo(xPx, baseLine);
|
|
44
|
+
ctx.stroke();
|
|
45
|
+
ctx.lineTo(firstLineXPx, baseLine);
|
|
46
|
+
ctx.closePath();
|
|
47
|
+
ctx.fill();
|
|
48
|
+
ctx.beginPath();
|
|
49
|
+
ctx.moveTo(xPx, baseLine);
|
|
50
|
+
}
|
|
51
|
+
if (prev === void 0) {
|
|
52
|
+
ctx.beginPath();
|
|
53
|
+
ctx.moveTo(currentLineXPx, currentCloseYPx);
|
|
54
|
+
}
|
|
55
|
+
else if (next === void 0) {
|
|
56
|
+
setBaselineFillStyle(ctx, model, drawerConfig, curHigherThanBL);
|
|
57
|
+
ctx.lineTo(currentLineXPx, currentCloseYPx);
|
|
58
|
+
ctx.stroke();
|
|
59
|
+
ctx.lineTo(currentLineXPx, baseLine);
|
|
60
|
+
ctx.lineTo(firstLineXPx, baseLine);
|
|
61
|
+
ctx.closePath();
|
|
62
|
+
ctx.fill();
|
|
63
|
+
ctx.beginPath();
|
|
64
|
+
ctx.moveTo(firstLineXPx, baseLine);
|
|
65
|
+
ctx.lineTo(currentLineXPx, baseLine);
|
|
66
|
+
ctx.strokeStyle = model.colors.baseLineTheme.baselineColor;
|
|
67
|
+
ctx.stroke();
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
ctx.lineTo(currentLineXPx, currentCloseYPx);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const setBaselineFillStyle = (ctx, candleSeries, drawerConfig, upper) => {
|
|
77
|
+
if (drawerConfig.singleColor) {
|
|
78
|
+
ctx.fillStyle = drawerConfig.singleColor;
|
|
79
|
+
ctx.strokeStyle = drawerConfig.singleColor;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
ctx.fillStyle = upper
|
|
83
|
+
? candleSeries.colors.baseLineTheme.upperSectionFillColor
|
|
84
|
+
: candleSeries.colors.baseLineTheme.lowerSectionFillColor;
|
|
85
|
+
ctx.strokeStyle = upper
|
|
86
|
+
? candleSeries.colors.baseLineTheme.upperSectionStrokeColor
|
|
87
|
+
: candleSeries.colors.baseLineTheme.lowerSectionStrokeColor;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
@@ -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
|
*/
|