@devexperts/dxcharts-lite 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/chart/animation/canvas-animation.d.ts +1 -1
- package/dist/chart/animation/canvas-animation.js +135 -2
- package/dist/chart/animation/types/animation.d.ts +1 -1
- package/dist/chart/animation/types/animation.js +44 -2
- package/dist/chart/animation/types/color-alpha-animation.d.ts +2 -2
- package/dist/chart/animation/types/color-alpha-animation.js +61 -2
- package/dist/chart/animation/types/color-transition-animation.d.ts +2 -2
- package/dist/chart/animation/types/color-transition-animation.js +87 -2
- package/dist/chart/animation/types/viewport-movement-animation.d.ts +1 -1
- package/dist/chart/animation/types/viewport-movement-animation.js +64 -2
- package/dist/chart/animation/viewport-model-animation.d.ts +1 -1
- package/dist/chart/animation/viewport-model-animation.js +21 -2
- package/dist/chart/bootstrap.d.ts +52 -49
- package/dist/chart/bootstrap.js +450 -2
- package/dist/chart/canvas/canvas-bounds-container.d.ts +1 -6
- package/dist/chart/canvas/canvas-bounds-container.js +816 -2
- package/dist/chart/canvas/canvas-chart-html.d.ts +1 -1
- package/dist/chart/canvas/canvas-chart-html.js +17 -19
- package/dist/chart/canvas/chart-elements.d.ts +2 -5
- package/dist/chart/canvas/chart-elements.js +23 -2
- package/dist/chart/canvas/cursor.handler.d.ts +1 -1
- package/dist/chart/canvas/cursor.handler.js +123 -2
- package/dist/chart/canvas/layout-creator.d.ts +1 -1
- package/dist/chart/canvas/layout-creator.js +35 -2
- package/dist/chart/canvas/y-axis-bounds.container.d.ts +3 -3
- package/dist/chart/canvas/y-axis-bounds.container.js +68 -2
- package/dist/chart/chart-container.d.ts +1 -1
- package/dist/chart/chart-container.js +2 -2
- package/dist/chart/chart.config.d.ts +5 -6
- package/dist/chart/chart.config.js +646 -2
- package/dist/chart/chart.d.ts +62 -0
- package/dist/chart/chart.js +106 -0
- package/dist/chart/components/chart/basic-scale.d.ts +3 -3
- package/dist/chart/components/chart/basic-scale.js +32 -2
- package/dist/chart/components/chart/candle-transformer.functions.d.ts +1 -1
- package/dist/chart/components/chart/candle-transformer.functions.js +16 -2
- package/dist/chart/components/chart/candle-width-calculator.functions.d.ts +1 -1
- package/dist/chart/components/chart/candle-width-calculator.functions.js +3 -2
- package/dist/chart/components/chart/candle.functions.d.ts +1 -1
- package/dist/chart/components/chart/candle.functions.js +45 -2
- package/dist/chart/components/chart/chart-area-pan.handler.d.ts +4 -4
- package/dist/chart/components/chart/chart-area-pan.handler.js +198 -2
- package/dist/chart/components/chart/chart-base.model.d.ts +1 -1
- package/dist/chart/components/chart/chart-base.model.js +67 -2
- package/dist/chart/components/chart/chart.component.d.ts +8 -4
- package/dist/chart/components/chart/chart.component.js +409 -2
- package/dist/chart/components/chart/chart.model.d.ts +5 -12
- package/dist/chart/components/chart/chart.model.js +955 -2
- package/dist/chart/components/chart/data-series.high-low-provider.d.ts +1 -1
- package/dist/chart/components/chart/data-series.high-low-provider.js +35 -2
- package/dist/chart/components/chart/fake-candles.d.ts +1 -1
- package/dist/chart/components/chart/fake-candles.js +98 -2
- package/dist/chart/components/chart/price.formatter.d.ts +1 -1
- package/dist/chart/components/chart/price.formatter.js +36 -2
- package/dist/chart/components/chart/secondary-chart-colors-pool.d.ts +1 -1
- package/dist/chart/components/chart/secondary-chart-colors-pool.js +69 -2
- package/dist/chart/components/cross_tool/cross-tool.component.d.ts +1 -1
- package/dist/chart/components/cross_tool/cross-tool.component.js +86 -2
- package/dist/chart/components/cross_tool/cross-tool.drawer.d.ts +1 -1
- package/dist/chart/components/cross_tool/cross-tool.drawer.js +33 -2
- package/dist/chart/components/cross_tool/cross-tool.model.d.ts +1 -1
- package/dist/chart/components/cross_tool/cross-tool.model.js +108 -2
- package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.d.ts +1 -1
- package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.js +138 -2
- package/dist/chart/components/cross_tool/types/none.drawer.d.ts +1 -1
- package/dist/chart/components/cross_tool/types/none.drawer.js +4 -2
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.d.ts +1 -1
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.js +29 -2
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.d.ts +1 -1
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.js +25 -2
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.d.ts +1 -1
- package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.js +54 -2
- package/dist/chart/components/dynamic-objects/dynamic-objects.component.d.ts +13 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.component.js +20 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.d.ts +18 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.js +23 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.model.d.ts +63 -0
- package/dist/chart/components/dynamic-objects/dynamic-objects.model.js +136 -0
- package/dist/chart/components/events/events-hit-test.drawer.d.ts +1 -1
- package/dist/chart/components/events/events-hit-test.drawer.js +64 -2
- package/dist/chart/components/events/events.component.d.ts +1 -1
- package/dist/chart/components/events/events.component.js +62 -2
- package/dist/chart/components/events/events.drawer.d.ts +1 -1
- package/dist/chart/components/events/events.drawer.js +196 -2
- package/dist/chart/components/events/events.model.d.ts +1 -1
- package/dist/chart/components/events/events.model.js +70 -2
- package/dist/chart/components/grid/grid.component.d.ts +3 -3
- package/dist/chart/components/grid/grid.component.js +32 -2
- package/dist/chart/components/grid/grid.drawer.d.ts +5 -4
- package/dist/chart/components/grid/grid.drawer.js +107 -2
- package/dist/chart/components/high_low/high-low.component.d.ts +1 -1
- package/dist/chart/components/high_low/high-low.component.js +13 -2
- package/dist/chart/components/high_low/high-low.drawer.d.ts +1 -1
- package/dist/chart/components/high_low/high-low.drawer.js +127 -2
- package/dist/chart/components/highlights/highlights.component.d.ts +1 -1
- package/dist/chart/components/highlights/highlights.component.js +47 -2
- package/dist/chart/components/highlights/highlights.drawer.d.ts +1 -1
- package/dist/chart/components/highlights/highlights.drawer.js +155 -2
- package/dist/chart/components/highlights/highlights.model.d.ts +1 -1
- package/dist/chart/components/highlights/highlights.model.js +76 -2
- package/dist/chart/components/labels_generator/numeric-axis-labels.generator.d.ts +2 -2
- package/dist/chart/components/labels_generator/numeric-axis-labels.generator.js +200 -2
- package/dist/chart/components/navigation_map/navigation-map-move.handler.d.ts +3 -3
- package/dist/chart/components/navigation_map/navigation-map-move.handler.js +109 -2
- package/dist/chart/components/navigation_map/navigation-map.component.d.ts +1 -1
- package/dist/chart/components/navigation_map/navigation-map.component.js +113 -2
- package/dist/chart/components/navigation_map/navigation-map.drawer.d.ts +1 -1
- package/dist/chart/components/navigation_map/navigation-map.drawer.js +245 -2
- package/dist/chart/components/navigation_map/navigation-map.model.d.ts +1 -1
- package/dist/chart/components/navigation_map/navigation-map.model.js +34 -3
- package/dist/chart/components/pan/chart-pan.component.d.ts +3 -3
- package/dist/chart/components/pan/chart-pan.component.js +52 -2
- package/dist/chart/components/pane/extent/y-extent-component.d.ts +13 -19
- package/dist/chart/components/pane/extent/y-extent-component.js +121 -2
- package/dist/chart/components/pane/pane-hit-test.controller.d.ts +1 -1
- package/dist/chart/components/pane/pane-hit-test.controller.js +56 -2
- package/dist/chart/components/pane/pane-manager.component.d.ts +11 -6
- package/dist/chart/components/pane/pane-manager.component.js +149 -2
- package/dist/chart/components/pane/pane.component.d.ts +18 -34
- package/dist/chart/components/pane/pane.component.js +279 -2
- package/dist/chart/components/resizer/bar-resizer.component.d.ts +1 -1
- package/dist/chart/components/resizer/bar-resizer.component.js +140 -2
- package/dist/chart/components/resizer/bar-resizer.drawer.d.ts +1 -1
- package/dist/chart/components/resizer/bar-resizer.drawer.js +47 -2
- package/dist/chart/components/snapshot/snapshot.component.d.ts +1 -1
- package/dist/chart/components/snapshot/snapshot.component.js +49 -2
- package/dist/chart/components/volumes/separate-volumes.component.d.ts +7 -11
- package/dist/chart/components/volumes/separate-volumes.component.js +64 -2
- package/dist/chart/components/volumes/volume-color-resolvers.functions.d.ts +1 -1
- package/dist/chart/components/volumes/volume-color-resolvers.functions.js +19 -2
- package/dist/chart/components/volumes/volumes.component.d.ts +9 -9
- package/dist/chart/components/volumes/volumes.component.js +95 -2
- package/dist/chart/components/volumes/volumes.drawer.d.ts +6 -13
- package/dist/chart/components/volumes/volumes.drawer.js +141 -2
- package/dist/chart/components/volumes/volumes.formatter.d.ts +1 -1
- package/dist/chart/components/volumes/volumes.formatter.js +32 -2
- package/dist/chart/components/volumes/volumes.model.d.ts +3 -3
- package/dist/chart/components/volumes/volumes.model.js +44 -2
- package/dist/chart/components/watermark/water-mark.component.d.ts +1 -1
- package/dist/chart/components/watermark/water-mark.component.js +104 -2
- package/dist/chart/components/watermark/water-mark.drawer.d.ts +1 -1
- package/dist/chart/components/watermark/water-mark.drawer.js +188 -2
- package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.d.ts +1 -1
- package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.js +28 -2
- package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.js +188 -2
- package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.js +77 -2
- package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.js +80 -2
- package/dist/chart/components/x_axis/time/parser/time-formats.model.d.ts +1 -1
- package/dist/chart/components/x_axis/time/parser/time-formats.model.js +15 -2
- package/dist/chart/components/x_axis/time/x-axis-weights.functions.d.ts +2 -2
- package/dist/chart/components/x_axis/time/x-axis-weights.functions.js +144 -2
- package/dist/chart/components/x_axis/time/x-axis-weights.generator.d.ts +1 -1
- package/dist/chart/components/x_axis/time/x-axis-weights.generator.js +74 -2
- package/dist/chart/components/x_axis/x-axis-draw.functions.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-draw.functions.js +50 -2
- package/dist/chart/components/x_axis/x-axis-labels.drawer.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-labels.drawer.js +71 -2
- package/dist/chart/components/x_axis/x-axis-labels.generator.d.ts +3 -3
- package/dist/chart/components/x_axis/x-axis-labels.generator.js +333 -2
- package/dist/chart/components/x_axis/x-axis-labels.model.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-labels.model.js +36 -2
- package/dist/chart/components/x_axis/x-axis-scale.handler.d.ts +3 -3
- package/dist/chart/components/x_axis/x-axis-scale.handler.js +61 -2
- package/dist/chart/components/x_axis/x-axis-time-labels.drawer.d.ts +1 -1
- package/dist/chart/components/x_axis/x-axis-time-labels.drawer.js +83 -2
- package/dist/chart/components/x_axis/x-axis.component.d.ts +3 -3
- package/dist/chart/components/x_axis/x-axis.component.js +120 -2
- package/dist/chart/components/y_axis/label-color.functions.d.ts +1 -1
- package/dist/chart/components/y_axis/label-color.functions.js +54 -2
- package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.d.ts +5 -5
- package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.js +34 -2
- package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.d.ts +4 -4
- package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.js +68 -2
- package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.d.ts +1 -1
- package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.js +57 -2
- package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.d.ts +1 -1
- package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.js +96 -2
- package/dist/chart/components/y_axis/price_labels/price-label.drawer.d.ts +3 -3
- package/dist/chart/components/y_axis/price_labels/price-label.drawer.js +120 -2
- package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.d.ts +10 -9
- package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.js +202 -2
- package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.d.ts +7 -8
- package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.js +59 -2
- package/dist/chart/components/y_axis/y-axis-base-labels.model.d.ts +7 -5
- package/dist/chart/components/y_axis/y-axis-base-labels.model.js +48 -2
- package/dist/chart/components/y_axis/y-axis-labels.drawer.d.ts +5 -5
- package/dist/chart/components/y_axis/y-axis-labels.drawer.js +162 -2
- package/dist/chart/components/y_axis/y-axis-scale.handler.d.ts +3 -3
- package/dist/chart/components/y_axis/y-axis-scale.handler.js +73 -2
- package/dist/chart/components/y_axis/y-axis.component.d.ts +33 -42
- package/dist/chart/components/y_axis/y-axis.component.js +221 -2
- package/dist/chart/components/y_axis/y-axis.drawer.d.ts +10 -13
- package/dist/chart/components/y_axis/y-axis.drawer.js +97 -2
- package/dist/chart/components/y_axis/y-axis.model.d.ts +10 -18
- package/dist/chart/components/y_axis/y-axis.model.js +34 -2
- package/dist/chart/drawers/chart-background.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-background.drawer.js +70 -2
- package/dist/chart/drawers/chart-type-drawers/area.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/area.drawer.js +70 -2
- package/dist/chart/drawers/chart-type-drawers/bar.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/bar.drawer.js +58 -2
- package/dist/chart/drawers/chart-type-drawers/baseline.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/baseline.drawer.js +85 -2
- package/dist/chart/drawers/chart-type-drawers/candle.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/candle.drawer.js +163 -2
- package/dist/chart/drawers/chart-type-drawers/histogram.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/histogram.drawer.js +58 -2
- package/dist/chart/drawers/chart-type-drawers/line.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/line.drawer.js +39 -2
- package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.d.ts +1 -1
- package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.js +20 -2
- package/dist/chart/drawers/clear-canvas.drawer.d.ts +1 -1
- package/dist/chart/drawers/clear-canvas.drawer.js +15 -2
- package/dist/chart/drawers/composite.drawer.d.ts +1 -1
- package/dist/chart/drawers/composite.drawer.js +68 -2
- package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.js +51 -2
- package/dist/chart/drawers/data-series-drawers/color-candle.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/color-candle.drawer.js +36 -2
- package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.js +17 -2
- package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.js +107 -2
- package/dist/chart/drawers/data-series-drawers/histogram.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/histogram.drawer.js +24 -2
- package/dist/chart/drawers/data-series-drawers/linear.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/linear.drawer.js +20 -2
- package/dist/chart/drawers/data-series-drawers/points.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/points.drawer.js +20 -2
- package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.js +8 -2
- package/dist/chart/drawers/data-series-drawers/text.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/text.drawer.js +26 -2
- package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.js +36 -2
- package/dist/chart/drawers/data-series-drawers/triangle.drawer.d.ts +1 -1
- package/dist/chart/drawers/data-series-drawers/triangle.drawer.js +23 -2
- package/dist/chart/drawers/data-series.drawer.d.ts +6 -8
- package/dist/chart/drawers/data-series.drawer.js +57 -2
- package/dist/chart/drawers/drawing-manager.d.ts +2 -2
- package/dist/chart/drawers/drawing-manager.js +178 -2
- package/dist/chart/drawers/ht-data-series.drawer.d.ts +1 -1
- package/dist/chart/drawers/ht-data-series.drawer.js +38 -2
- package/dist/chart/events/event-bus.d.ts +1 -1
- package/dist/chart/events/event-bus.js +74 -2
- package/dist/chart/events/events.d.ts +1 -1
- package/dist/chart/events/events.js +4 -2
- package/dist/chart/inputhandlers/candle-tap.handler.d.ts +1 -1
- package/dist/chart/inputhandlers/candle-tap.handler.js +47 -2
- package/dist/chart/inputhandlers/chart-resize.handler.d.ts +1 -1
- package/dist/chart/inputhandlers/chart-resize.handler.js +99 -2
- package/dist/chart/inputhandlers/cross-event-producer.component.d.ts +1 -1
- package/dist/chart/inputhandlers/cross-event-producer.component.js +68 -2
- package/dist/chart/inputhandlers/hover-producer.component.d.ts +3 -3
- package/dist/chart/inputhandlers/hover-producer.component.js +229 -2
- package/dist/chart/inputhandlers/main-canvas-touch.handler.d.ts +3 -3
- package/dist/chart/inputhandlers/main-canvas-touch.handler.js +81 -2
- package/dist/chart/inputlisteners/canvas-input-listener.component.d.ts +1 -1
- package/dist/chart/inputlisteners/canvas-input-listener.component.js +630 -2
- package/dist/chart/model/baseline.model.d.ts +1 -1
- package/dist/chart/model/baseline.model.js +89 -2
- package/dist/chart/model/bounds.model.d.ts +1 -1
- package/dist/chart/model/bounds.model.js +2 -2
- package/dist/chart/model/candle-hover.d.ts +1 -1
- package/dist/chart/model/candle-hover.js +71 -2
- package/dist/chart/model/candle-series-high-low.provider.d.ts +1 -1
- package/dist/chart/model/candle-series-high-low.provider.js +46 -2
- package/dist/chart/model/candle-series.model.d.ts +4 -4
- package/dist/chart/model/candle-series.model.js +246 -2
- package/dist/chart/model/candle.model.d.ts +1 -1
- package/dist/chart/model/candle.model.js +70 -2
- package/dist/chart/model/canvas.model.d.ts +1 -1
- package/dist/chart/model/canvas.model.js +229 -2
- package/dist/chart/model/chart-base-element.d.ts +1 -1
- package/dist/chart/model/chart-base-element.js +130 -2
- package/dist/chart/model/compare-series-hover.d.ts +1 -1
- package/dist/chart/model/compare-series-hover.js +26 -2
- package/dist/chart/model/data-series-view.d.ts +6 -6
- package/dist/chart/model/data-series-view.js +112 -2
- package/dist/chart/model/data-series.config.d.ts +1 -1
- package/dist/chart/model/data-series.config.js +15 -2
- package/dist/chart/model/data-series.model.d.ts +5 -5
- package/dist/chart/model/data-series.model.js +282 -2
- package/dist/chart/model/date-time.formatter.d.ts +1 -1
- package/dist/chart/model/date-time.formatter.js +152 -2
- package/dist/chart/model/hit-test-canvas.model.d.ts +2 -2
- package/dist/chart/model/hit-test-canvas.model.js +257 -2
- package/dist/chart/model/main-candle-series.model.d.ts +2 -2
- package/dist/chart/model/main-candle-series.model.js +30 -2
- package/dist/chart/model/scale.model.d.ts +3 -2
- package/dist/chart/model/scale.model.js +317 -2
- package/dist/chart/model/scaling/auto-scale.model.d.ts +1 -1
- package/dist/chart/model/scaling/auto-scale.model.js +98 -2
- package/dist/chart/model/scaling/constrait.functions.d.ts +1 -1
- package/dist/chart/model/scaling/constrait.functions.js +62 -2
- package/dist/chart/model/scaling/lock-ratio.model.d.ts +1 -1
- package/dist/chart/model/scaling/lock-ratio.model.js +18 -2
- package/dist/chart/model/scaling/move-chart.functions.d.ts +1 -1
- package/dist/chart/model/scaling/move-chart.functions.js +23 -2
- package/dist/chart/model/scaling/viewport.model.d.ts +3 -3
- package/dist/chart/model/scaling/viewport.model.js +280 -2
- package/dist/chart/model/scaling/x-zooming.functions.d.ts +1 -1
- package/dist/chart/model/scaling/x-zooming.functions.js +36 -2
- package/dist/chart/model/time-zone.model.d.ts +1 -1
- package/dist/chart/model/time-zone.model.js +110 -2
- package/dist/chart/model/visual-candle.d.ts +1 -1
- package/dist/chart/model/visual-candle.js +135 -2
- package/dist/chart/utils/__tests__/array.utils.test.d.ts +1 -1
- package/dist/chart/utils/__tests__/array.utils.test.js +136 -2
- package/dist/chart/utils/{perfomance/debounce.utils.js → __tests__/math.utils.test.d.ts} +2 -2
- package/dist/chart/utils/__tests__/math.utils.test.js +19 -0
- package/dist/chart/utils/__tests__/object.utils.test.d.ts +1 -1
- package/dist/chart/utils/__tests__/object.utils.test.js +12 -2
- package/dist/chart/utils/__tests__/priceIncrementsUtils.test.d.ts +1 -1
- package/dist/chart/utils/__tests__/priceIncrementsUtils.test.js +30 -2
- package/dist/chart/utils/array.utils.d.ts +2 -2
- package/dist/chart/utils/array.utils.js +270 -2
- package/dist/chart/utils/auto-period-detector.utils.d.ts +1 -1
- package/dist/chart/utils/auto-period-detector.utils.js +40 -2
- package/dist/chart/utils/candles-generator-ts.utils.d.ts +1 -1
- package/dist/chart/utils/candles-generator-ts.utils.js +21 -2
- package/dist/chart/utils/candles-generator.utils.d.ts +1 -1
- package/dist/chart/utils/candles-generator.utils.js +162 -2
- package/dist/chart/utils/candles.utils.d.ts +1 -1
- package/dist/chart/utils/candles.utils.js +43 -2
- package/dist/chart/utils/canvas/canvas-drawing-functions.utils.d.ts +1 -1
- package/dist/chart/utils/canvas/canvas-drawing-functions.utils.js +145 -2
- package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.d.ts +1 -1
- package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.js +52 -2
- package/dist/chart/utils/canvas/canvas-text-functions.utils.d.ts +1 -1
- package/dist/chart/utils/canvas/canvas-text-functions.utils.js +157 -2
- package/dist/chart/utils/color.utils.d.ts +1 -1
- package/dist/chart/utils/color.utils.js +32 -2
- package/dist/chart/utils/device/browser.utils.d.ts +1 -1
- package/dist/chart/utils/device/browser.utils.js +11 -2
- package/dist/chart/utils/device/device-detector.utils.d.ts +1 -1
- package/dist/chart/utils/device/device-detector.utils.js +25 -2
- package/dist/chart/utils/device/device-pixel-ratio.utils.d.ts +1 -1
- package/dist/chart/utils/device/device-pixel-ratio.utils.js +22 -2
- package/dist/chart/utils/device/touchpad.utils.d.ts +1 -1
- package/dist/chart/utils/device/touchpad.utils.js +92 -2
- package/dist/chart/utils/dom.utils.d.ts +1 -1
- package/dist/chart/utils/dom.utils.js +16 -2
- package/dist/chart/utils/function.utils.d.ts +1 -1
- package/dist/chart/utils/function.utils.js +17 -2
- package/dist/chart/utils/linkedList.utils.d.ts +28 -0
- package/dist/chart/utils/linkedList.utils.js +138 -0
- package/dist/chart/utils/math.utils.d.ts +1 -1
- package/dist/chart/utils/math.utils.js +116 -2
- package/dist/chart/utils/merge.utils.d.ts +1 -1
- package/dist/chart/utils/merge.utils.js +57 -2
- package/dist/chart/utils/object.utils.d.ts +1 -1
- package/dist/chart/utils/object.utils.js +44 -2
- package/dist/chart/utils/{perfomance → performance}/animation-frame-cache.utils.d.ts +1 -1
- package/dist/chart/utils/performance/animation-frame-cache.utils.js +77 -0
- package/dist/chart/utils/{perfomance → performance}/debounce.utils.d.ts +1 -1
- package/dist/chart/utils/performance/debounce.utils.js +12 -0
- package/dist/chart/utils/{perfomance → performance}/memoize.utils.d.ts +1 -1
- package/dist/chart/utils/performance/memoize.utils.js +74 -0
- package/dist/chart/utils/{perfomance → performance}/request-animation-frame-throttle.utils.d.ts +1 -1
- package/dist/chart/utils/performance/request-animation-frame-throttle.utils.js +43 -0
- package/dist/chart/utils/{perfomance → performance}/throttle.utils.d.ts +1 -1
- package/dist/chart/utils/performance/throttle.utils.js +26 -0
- package/dist/chart/utils/price-increments.utils.d.ts +2 -1
- package/dist/chart/utils/price-increments.utils.js +128 -2
- package/dist/chart/utils/uuid.utils.d.ts +1 -1
- package/dist/chart/utils/uuid.utils.js +5 -2
- package/dist/dxchart.min.js +10 -13
- package/dist/index.d.ts +4 -4
- package/dist/index.js +21 -2
- package/package.json +4 -4
- package/dist/chart/utils/perfomance/animation-frame-cache.utils.js +0 -6
- package/dist/chart/utils/perfomance/memoize.utils.js +0 -6
- package/dist/chart/utils/perfomance/request-animation-frame-throttle.utils.js +0 -6
- package/dist/chart/utils/perfomance/throttle.utils.js +0 -6
|
@@ -1,6 +1,68 @@
|
|
|
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 { getEventSize } from './events.drawer';
|
|
8
|
+
const hoverExtendedAreaPixels = 5;
|
|
9
|
+
export class EventsHitTestDrawer {
|
|
10
|
+
constructor(hitTestCanvasModel, chartModel, config, canvasBoundsContainer, model) {
|
|
11
|
+
this.hitTestCanvasModel = hitTestCanvasModel;
|
|
12
|
+
this.chartModel = chartModel;
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.canvasBoundsContainer = canvasBoundsContainer;
|
|
15
|
+
this.model = model;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Draws events on the hit test canvas.
|
|
19
|
+
* @function
|
|
20
|
+
* @name draw
|
|
21
|
+
* @memberof CanvasElement.EVENTS
|
|
22
|
+
* @instance
|
|
23
|
+
* @returns {void}
|
|
24
|
+
|
|
25
|
+
*/
|
|
26
|
+
draw() {
|
|
27
|
+
const ctx = this.hitTestCanvasModel.ctx;
|
|
28
|
+
const bounds = this.canvasBoundsContainer.getBounds(CanvasElement.EVENTS);
|
|
29
|
+
ctx.save();
|
|
30
|
+
this.model.events.forEach((event, idx) => {
|
|
31
|
+
const prevEvent = this.model.events[idx - 1];
|
|
32
|
+
const prevX = prevEvent &&
|
|
33
|
+
this.chartModel.candleFromTimestamp(prevEvent.timestamp).xCenter(this.chartModel.scale);
|
|
34
|
+
const x = this.chartModel.candleFromTimestamp(event.timestamp).xCenter(this.chartModel.scale);
|
|
35
|
+
if (x > bounds.x && x < bounds.x + bounds.width) {
|
|
36
|
+
const color = this.config.colors.events[event.type].color;
|
|
37
|
+
ctx.strokeStyle = color;
|
|
38
|
+
ctx.fillStyle = color;
|
|
39
|
+
const size = getEventSize(event);
|
|
40
|
+
// draw hit test
|
|
41
|
+
ctx.fillStyle = this.hitTestCanvasModel.idToColor(event.id);
|
|
42
|
+
const hoverSize = (size + hoverExtendedAreaPixels) * 2;
|
|
43
|
+
if (prevX !== undefined) {
|
|
44
|
+
const prevSize = getEventSize(prevEvent);
|
|
45
|
+
const isIntersectsWithPrev = prevX + prevSize > x - hoverSize / 2;
|
|
46
|
+
if (isIntersectsWithPrev) {
|
|
47
|
+
const hoverSize = size * 2 + hoverExtendedAreaPixels;
|
|
48
|
+
ctx.fillRect(prevX + prevSize, bounds.y, hoverSize, bounds.height);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
ctx.fillRect(x - size - hoverExtendedAreaPixels, bounds.y, hoverSize, bounds.height);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
ctx.fillRect(x - size - hoverExtendedAreaPixels, bounds.y, hoverSize, bounds.height);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
ctx.restore();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns an array of string containing the canvas ID of the hitTestCanvasModel.
|
|
63
|
+
* @returns {Array<string>} An array of string containing the canvas ID of the hitTestCanvasModel.
|
|
64
|
+
*/
|
|
65
|
+
getCanvasIds() {
|
|
66
|
+
return [this.hitTestCanvasModel.canvasId];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -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,66 @@
|
|
|
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 { ChartBaseElement } from '../../model/chart-base-element';
|
|
8
|
+
import { recalculateXFormatter } from '../../model/date-time.formatter';
|
|
9
|
+
import { merge } from '../../utils/merge.utils';
|
|
10
|
+
import { EventsHitTestDrawer } from './events-hit-test.drawer';
|
|
11
|
+
import { EventsDrawer } from './events.drawer';
|
|
12
|
+
import { EventsModel } from './events.model';
|
|
13
|
+
export class EventsComponent extends ChartBaseElement {
|
|
14
|
+
constructor(config, canvasModel, hitTestCanvasModel, chartModel, canvasBoundsContainer, drawingManager, formatterFactory, cursorHandler, backgroundCanvasModel) {
|
|
15
|
+
super();
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.canvasModel = canvasModel;
|
|
18
|
+
this.canvasBoundsContainer = canvasBoundsContainer;
|
|
19
|
+
this.drawingManager = drawingManager;
|
|
20
|
+
this.formatterFactory = formatterFactory;
|
|
21
|
+
this.eventsXAxisLabelFormatterProvider = () => recalculateXFormatter(this.config.components.events.xAxisLabelFormat, chartModel.getPeriod(), this.formatterFactory);
|
|
22
|
+
const eventsModel = new EventsModel(canvasModel);
|
|
23
|
+
this.eventsModel = eventsModel;
|
|
24
|
+
this.addChildEntity(eventsModel);
|
|
25
|
+
hitTestCanvasModel.addSubscriber(eventsModel);
|
|
26
|
+
const eventsDrawer = new EventsDrawer(backgroundCanvasModel, canvasModel, chartModel, config, canvasBoundsContainer, eventsModel, this.eventsXAxisLabelFormatterProvider);
|
|
27
|
+
this.drawingManager.addDrawer(eventsDrawer, 'EVENTS');
|
|
28
|
+
const eventsHitTestDrawer = new EventsHitTestDrawer(hitTestCanvasModel, chartModel, config, canvasBoundsContainer, eventsModel);
|
|
29
|
+
this.drawingManager.addDrawerBefore(eventsHitTestDrawer, 'HIT_TEST_EVENTS', 'HIT_TEST_DRAWINGS');
|
|
30
|
+
cursorHandler.setCursorForCanvasEl(CanvasElement.EVENTS, config.components.events.cursor);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Sets the new event list.
|
|
34
|
+
* @param events
|
|
35
|
+
*/
|
|
36
|
+
setEvents(events) {
|
|
37
|
+
this.eventsModel.setEvents(events);
|
|
38
|
+
this.canvasModel.fireDraw();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Changes the component visibility.
|
|
42
|
+
* @param visible
|
|
43
|
+
*/
|
|
44
|
+
setVisible(visible) {
|
|
45
|
+
this.config.components.events.visible = visible;
|
|
46
|
+
this.canvasBoundsContainer.recalculateBounds();
|
|
47
|
+
this.canvasModel.fireDraw();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Changes visibility for the specific event type.
|
|
51
|
+
* For example, to turn off dividends visibility you can call this method with { dividends: false } argument
|
|
52
|
+
*/
|
|
53
|
+
setEventTypeVisible(eventsVisibility) {
|
|
54
|
+
merge(this.config.components.events.eventsVisibility, eventsVisibility, {
|
|
55
|
+
overrideExisting: true,
|
|
56
|
+
addIfMissing: false,
|
|
57
|
+
});
|
|
58
|
+
this.canvasModel.fireDraw();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Observes hovered event when mouse moves in, and provides null when mouse moves out.
|
|
62
|
+
*/
|
|
63
|
+
observeEventHovered() {
|
|
64
|
+
return this.eventsModel.hoveredEvent.asObservable();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -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,200 @@
|
|
|
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 { redrawBackgroundArea } from '../../drawers/chart-background.drawer';
|
|
8
|
+
const eventsSizesDict = {
|
|
9
|
+
'rhombus-small': 4,
|
|
10
|
+
rhombus: 6,
|
|
11
|
+
'rhombus-large': 8,
|
|
12
|
+
};
|
|
13
|
+
const getIconHash = (type, state) => `${type}_${state}`;
|
|
14
|
+
export class EventsDrawer {
|
|
15
|
+
constructor(backgroundCanvas, canvasModel, chartModel, config, canvasBoundsContainer, model, formatterProvider) {
|
|
16
|
+
this.backgroundCanvas = backgroundCanvas;
|
|
17
|
+
this.canvasModel = canvasModel;
|
|
18
|
+
this.chartModel = chartModel;
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.canvasBoundsContainer = canvasBoundsContainer;
|
|
21
|
+
this.model = model;
|
|
22
|
+
this.formatterProvider = formatterProvider;
|
|
23
|
+
// cache of created icons
|
|
24
|
+
this.customIcons = {};
|
|
25
|
+
const iconsConfig = this.config.components.events.icons;
|
|
26
|
+
if (iconsConfig) {
|
|
27
|
+
this.createCustomIcon('earnings', iconsConfig.earnings);
|
|
28
|
+
this.createCustomIcon('dividends', iconsConfig.dividends);
|
|
29
|
+
this.createCustomIcon('splits', iconsConfig.splits);
|
|
30
|
+
this.createCustomIcon('conference-calls', iconsConfig.conferenceCalls);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a custom icon for a given event type.
|
|
35
|
+
* @param {EventType} type - The type of the event.
|
|
36
|
+
* @param {CustomIcon} [icon] - The custom icon object containing the normal and hover images.
|
|
37
|
+
* @returns {void}
|
|
38
|
+
*/
|
|
39
|
+
createCustomIcon(type, icon) {
|
|
40
|
+
if (icon) {
|
|
41
|
+
const normal = this.createIconImage(icon.normal);
|
|
42
|
+
const hover = this.createIconImage(icon.hover);
|
|
43
|
+
this.customIcons[getIconHash(type, 'normal')] = normal;
|
|
44
|
+
this.customIcons[getIconHash(type, 'hover')] = hover;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates an icon image from a string containing SVG data.
|
|
49
|
+
* @param {string} iconString - The string containing SVG data.
|
|
50
|
+
* @returns {Object} An object containing an Image object and the height of the SVG element.
|
|
51
|
+
*/
|
|
52
|
+
createIconImage(iconString) {
|
|
53
|
+
var _a;
|
|
54
|
+
const parser = new DOMParser();
|
|
55
|
+
const svgSelector = parser.parseFromString(iconString, 'text/html').querySelector('svg');
|
|
56
|
+
let svgHeight = 0;
|
|
57
|
+
if (svgSelector) {
|
|
58
|
+
svgHeight = parseInt((_a = svgSelector.getAttribute('height')) !== null && _a !== void 0 ? _a : '', 10);
|
|
59
|
+
}
|
|
60
|
+
const svg64 = btoa(iconString);
|
|
61
|
+
const b64Start = 'data:image/svg+xml;base64,';
|
|
62
|
+
const image64 = b64Start + svg64;
|
|
63
|
+
const img = new Image();
|
|
64
|
+
img.src = image64;
|
|
65
|
+
return {
|
|
66
|
+
img,
|
|
67
|
+
svgHeight,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Draws events on the chart canvas if they are visible according to the configuration.
|
|
72
|
+
* The events are filtered by type and then iterated over to draw them on the chart.
|
|
73
|
+
* If a custom icon is available in the cache, it is used to draw the event, otherwise a default event is drawn.
|
|
74
|
+
* If the event is currently being hovered over, a vertical line is drawn and a label is added to the x-axis.
|
|
75
|
+
* @returns {void}
|
|
76
|
+
*/
|
|
77
|
+
draw() {
|
|
78
|
+
if (!this.config.components.events.visible) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const bounds = this.canvasBoundsContainer.getBounds(CanvasElement.EVENTS);
|
|
82
|
+
const chartBounds = this.canvasBoundsContainer.getBounds(CanvasElement.ALL_PANES);
|
|
83
|
+
const ctx = this.canvasModel.ctx;
|
|
84
|
+
ctx.save();
|
|
85
|
+
this.model.events
|
|
86
|
+
.filter(e => this.config.components.events.eventsVisibility[e.type])
|
|
87
|
+
.forEach(event => {
|
|
88
|
+
const x = this.chartModel.candleFromTimestamp(event.timestamp).xCenter(this.chartModel.scale);
|
|
89
|
+
if (x > chartBounds.x && x < chartBounds.x + chartBounds.width) {
|
|
90
|
+
const color = this.config.colors.events[event.type].color;
|
|
91
|
+
ctx.strokeStyle = color;
|
|
92
|
+
// check custom icon in cache
|
|
93
|
+
if (this.customIcons[getIconHash(event.type, 'hover')] !== undefined) {
|
|
94
|
+
this.drawCustomSvgEvent(ctx, x, bounds, event);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.drawDefaultEvent(ctx, x, bounds, event, color);
|
|
98
|
+
}
|
|
99
|
+
// draw vertical line and label for the hovered event
|
|
100
|
+
if (this.model.hoveredEvent.getValue() === event) {
|
|
101
|
+
ctx.beginPath();
|
|
102
|
+
ctx.moveTo(x, chartBounds.y);
|
|
103
|
+
ctx.lineTo(x, bounds.y + bounds.height / 2);
|
|
104
|
+
ctx.stroke();
|
|
105
|
+
ctx.closePath();
|
|
106
|
+
if (this.config.components.xAxis.visible) {
|
|
107
|
+
this.drawLabel(x, event);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
ctx.restore();
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Draws a custom SVG event on a canvas context.
|
|
116
|
+
* @param {CanvasRenderingContext2D} ctx - The canvas context to draw on.
|
|
117
|
+
* @param {number} x - The x coordinate of the event.
|
|
118
|
+
* @param {Bounds} bounds - The bounds of the event.
|
|
119
|
+
* @param {EventWithId} event - The event to draw.
|
|
120
|
+
* @returns {void}
|
|
121
|
+
*/
|
|
122
|
+
drawCustomSvgEvent(ctx, x, bounds, event) {
|
|
123
|
+
const y = bounds.y + bounds.height / 2;
|
|
124
|
+
const normal = this.customIcons[getIconHash(event.type, 'normal')];
|
|
125
|
+
const hover = this.customIcons[getIconHash(event.type, 'hover')];
|
|
126
|
+
if (this.model.hoveredEvent.getValue() === event) {
|
|
127
|
+
ctx.drawImage(hover.img, x - hover.svgHeight / 2, y - hover.svgHeight / 2);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
ctx.drawImage(normal.img, x - normal.svgHeight / 2, y - normal.svgHeight / 2);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Draws a default event on a canvas context.
|
|
135
|
+
* @param {CanvasRenderingContext2D} ctx - The canvas context to draw on.
|
|
136
|
+
* @param {number} x - The x coordinate of the event.
|
|
137
|
+
* @param {Bounds} bounds - The bounds of the event.
|
|
138
|
+
* @param {EventWithId} event - The event to draw.
|
|
139
|
+
* @param {string} color - The color of the event.
|
|
140
|
+
* @returns {void}
|
|
141
|
+
*/
|
|
142
|
+
drawDefaultEvent(ctx, x, bounds, event, color) {
|
|
143
|
+
const y = bounds.y + bounds.height / 2;
|
|
144
|
+
ctx.fillStyle = color;
|
|
145
|
+
// draw figure
|
|
146
|
+
ctx.lineWidth = 1.5; // 1.5 pixels
|
|
147
|
+
const size = getEventSize(event);
|
|
148
|
+
ctx.beginPath();
|
|
149
|
+
ctx.moveTo(x - size, y);
|
|
150
|
+
ctx.lineTo(x, y - size);
|
|
151
|
+
ctx.lineTo(x + size, y);
|
|
152
|
+
ctx.lineTo(x, y + size);
|
|
153
|
+
ctx.closePath();
|
|
154
|
+
if (this.model.hoveredEvent.getValue() === event) {
|
|
155
|
+
ctx.fill();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
ctx.stroke();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* This function is responsible for drawing a label on the canvas at a given x coordinate. The label contains a formatted timestamp of a given event. The function takes two parameters: x, which is the x coordinate where the label will be drawn, and event, which is an object containing information about the event, including its timestamp and type.
|
|
163
|
+
* The function first gets the canvas context and the bounds of the x-axis. It then retrieves the font family, font height, and top padding from the configuration object. The y coordinate of the label is calculated based on the font height, top padding, and the y coordinate of the x-axis bounds. The font is set using the retrieved font family and font height.
|
|
164
|
+
* The timestamp of the event is formatted using a formatter provider function. The width of the label is calculated using the canvas context's measureText() method. The function then calls another function, redrawBackgroundArea(), to hide the regular x-axis label that may overlap with the event label.
|
|
165
|
+
* Finally, the function sets the fill style of the canvas context to the color associated with the event type in the configuration object. The label text is then drawn on the canvas context at the calculated x and y coordinates.
|
|
166
|
+
*/
|
|
167
|
+
drawLabel(x, event) {
|
|
168
|
+
var _a;
|
|
169
|
+
const ctx = this.canvasModel.ctx;
|
|
170
|
+
const xAxisBounds = this.canvasBoundsContainer.getBounds(CanvasElement.X_AXIS);
|
|
171
|
+
const fontFamily = this.config.components.xAxis.fontFamily;
|
|
172
|
+
const fontHeight = this.config.components.xAxis.fontSize;
|
|
173
|
+
const offsetTop = (_a = this.config.components.xAxis.padding.top) !== null && _a !== void 0 ? _a : 0;
|
|
174
|
+
const y = xAxisBounds.y + fontHeight - 1 + offsetTop;
|
|
175
|
+
ctx.font = `${fontHeight}px ${fontFamily}`;
|
|
176
|
+
const labelText = this.formatterProvider()(event.timestamp);
|
|
177
|
+
const width = ctx.measureText(labelText).width;
|
|
178
|
+
// label can overlap with regular x-axis label, so we need to hide regular x-axis label
|
|
179
|
+
redrawBackgroundArea(this.backgroundCanvas.ctx, ctx, x - width / 2, xAxisBounds.y + 1, width, xAxisBounds.height - 1);
|
|
180
|
+
ctx.fillStyle = this.config.colors.events[event.type].color;
|
|
181
|
+
ctx.fillText(labelText, x - width / 2, y);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Returns an array of canvas IDs.
|
|
185
|
+
*
|
|
186
|
+
* @returns {Array<string>} An array containing the ID of the canvas model.
|
|
187
|
+
*/
|
|
188
|
+
getCanvasIds() {
|
|
189
|
+
return [this.canvasModel.canvasId];
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Returns the size of an event based on its style
|
|
194
|
+
* @param {EconomicEvent} event - The event to get the size of
|
|
195
|
+
* @returns {number} - The size of the event
|
|
196
|
+
|
|
197
|
+
*/
|
|
198
|
+
export function getEventSize(event) {
|
|
199
|
+
return eventsSizesDict[event.style];
|
|
200
|
+
}
|
|
@@ -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
|
|
6
|
+
import { BehaviorSubject } from 'rxjs';
|
|
7
|
+
import { ChartBaseElement } from '../../model/chart-base-element';
|
|
8
|
+
import { HIT_TEST_ID_RANGE } from '../../model/hit-test-canvas.model';
|
|
9
|
+
export class EventsModel extends ChartBaseElement {
|
|
10
|
+
constructor(canvasModel) {
|
|
11
|
+
super();
|
|
12
|
+
this.canvasModel = canvasModel;
|
|
13
|
+
this.events = [];
|
|
14
|
+
this.hoveredEvent = new BehaviorSubject(null);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Sets the events array of the object to the provided array of events after indexing them.
|
|
18
|
+
* @param {EconomicEvent[]} events - An array of events to be set as the events array of the object.
|
|
19
|
+
* @returns {void}
|
|
20
|
+
*/
|
|
21
|
+
setEvents(events) {
|
|
22
|
+
this.events = this.indexEvents(events);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Private method to index events with unique ids and sort them by timestamp
|
|
26
|
+
* @param {EconomicEvent[]} events - Array of events to be indexed
|
|
27
|
+
* @returns {EventWithId[]} - Array of indexed events with unique ids
|
|
28
|
+
*/
|
|
29
|
+
indexEvents(events) {
|
|
30
|
+
const startId = this.getIdRange()[0];
|
|
31
|
+
return events
|
|
32
|
+
.map((event, id) => (Object.assign(Object.assign({}, event), { id: id + startId })))
|
|
33
|
+
.sort((a, b) => a.timestamp - b.timestamp);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns an array of two numbers representing the range of IDs for event hit tests.
|
|
37
|
+
* @returns {Array<number>} An array of two numbers representing the range of IDs for event hit tests.
|
|
38
|
+
*/
|
|
39
|
+
getIdRange() {
|
|
40
|
+
return HIT_TEST_ID_RANGE.EVENTS;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns the event with the specified id.
|
|
44
|
+
* @param {number} id - The id of the event to look up.
|
|
45
|
+
* @returns {EventWithId} - The event with the specified id.
|
|
46
|
+
*/
|
|
47
|
+
lookup(id) {
|
|
48
|
+
return this.events.filter(event => event.id === id)[0];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Function that handles the hover event on a canvas element.
|
|
52
|
+
* @param {EventWithId} event - The event that is being hovered.
|
|
53
|
+
* @param {Point} [point] - The point where the event is being hovered.
|
|
54
|
+
* @returns {void}
|
|
55
|
+
*/
|
|
56
|
+
onHover(event, point) {
|
|
57
|
+
const currentValue = this.hoveredEvent.getValue();
|
|
58
|
+
if (currentValue !== event) {
|
|
59
|
+
event && (event.point = point);
|
|
60
|
+
this.hoveredEvent.next(event);
|
|
61
|
+
this.canvasModel.fireDraw();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Handles the touch start event.
|
|
66
|
+
*
|
|
67
|
+
* @param {EventWithId} event - The touch start event.
|
|
68
|
+
* @param {Point} [point] - The point where the touch started.
|
|
69
|
+
* @returns {void}
|
|
70
|
+
*/
|
|
71
|
+
onTouchStart(event, point) {
|
|
72
|
+
this.onHover(event, point);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
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 { NumericAxisLabel } from '../labels_generator/numeric-axis-labels.generator';
|
|
7
7
|
import { BoundsProvider } from '../../model/bounds.model';
|
|
8
|
-
import { FullChartConfig } from '../../chart.config';
|
|
8
|
+
import { FullChartConfig, YAxisConfig } from '../../chart.config';
|
|
9
9
|
import { ChartBaseElement } from '../../model/chart-base-element';
|
|
10
10
|
import { CanvasModel } from '../../model/canvas.model';
|
|
11
11
|
import { CompositeDrawer } from '../../drawers/composite.drawer';
|
|
@@ -15,7 +15,7 @@ export declare class GridComponent extends ChartBaseElement {
|
|
|
15
15
|
private drawerName;
|
|
16
16
|
private drawingManager;
|
|
17
17
|
private readonly drawer;
|
|
18
|
-
constructor(canvasModel: CanvasModel, viewportModel: ViewportModel, config: FullChartConfig, drawerName: string, drawingManager: DrawingManager | CompositeDrawer, xBoundsProvider: BoundsProvider, yBoundsProvider: BoundsProvider, xLabelsProvider: () => NumericAxisLabel[], yLabelsProvider: () => NumericAxisLabel[],
|
|
18
|
+
constructor(canvasModel: CanvasModel, viewportModel: ViewportModel, config: FullChartConfig, yAxisState: YAxisConfig, drawerName: string, drawingManager: DrawingManager | CompositeDrawer, xBoundsProvider: BoundsProvider, yBoundsProvider: BoundsProvider, xLabelsProvider: () => NumericAxisLabel[], yLabelsProvider: () => NumericAxisLabel[], getBaseline?: () => Unit, drawPredicate?: () => boolean);
|
|
19
19
|
/**
|
|
20
20
|
* This method is used to deactivate the drawer and remove it from the drawing manager.
|
|
21
21
|
* @protected
|
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (C)
|
|
2
|
+
* Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
|
|
3
3
|
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
4
4
|
* If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
5
|
*/
|
|
6
|
-
import{ChartBaseElement
|
|
6
|
+
import { ChartBaseElement } from '../../model/chart-base-element';
|
|
7
|
+
import { GridDrawer } from './grid.drawer';
|
|
8
|
+
export class GridComponent extends ChartBaseElement {
|
|
9
|
+
constructor(canvasModel, viewportModel, config, yAxisState, drawerName, drawingManager, xBoundsProvider, yBoundsProvider, xLabelsProvider, yLabelsProvider, getBaseline, drawPredicate) {
|
|
10
|
+
super();
|
|
11
|
+
this.drawerName = drawerName;
|
|
12
|
+
this.drawingManager = drawingManager;
|
|
13
|
+
this.drawer = new GridDrawer(canvasModel, viewportModel, config, yAxisState, xBoundsProvider, yBoundsProvider, xLabelsProvider, yLabelsProvider, drawPredicate, getBaseline);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* This method is used to deactivate the drawer and remove it from the drawing manager.
|
|
17
|
+
* @protected
|
|
18
|
+
* @function
|
|
19
|
+
* @name doDeactivate
|
|
20
|
+
* @returns {void}
|
|
21
|
+
*/
|
|
22
|
+
doDeactivate() {
|
|
23
|
+
super.doDeactivate();
|
|
24
|
+
this.drawingManager.removeDrawer(this.drawer);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* This method is used to activate the drawer. It calls the parent class's doActivate method and adds the drawer to the drawing manager.
|
|
28
|
+
* @protected
|
|
29
|
+
* @function
|
|
30
|
+
* @returns {void}
|
|
31
|
+
*/
|
|
32
|
+
doActivate() {
|
|
33
|
+
super.doActivate();
|
|
34
|
+
this.drawingManager.addDrawer(this.drawer, this.drawerName);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
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 { NumericAxisLabel } from '../labels_generator/numeric-axis-labels.generator';
|
|
7
7
|
import { BoundsProvider } from '../../model/bounds.model';
|
|
8
|
-
import { FullChartConfig } from '../../chart.config';
|
|
8
|
+
import { FullChartConfig, YAxisConfig } from '../../chart.config';
|
|
9
9
|
import { CanvasModel } from '../../model/canvas.model';
|
|
10
10
|
import { Drawer } from '../../drawers/drawing-manager';
|
|
11
11
|
import { Unit, ViewportModel } from '../../model/scaling/viewport.model';
|
|
@@ -20,13 +20,14 @@ export declare class GridDrawer implements Drawer {
|
|
|
20
20
|
private canvasModel;
|
|
21
21
|
private viewportModel;
|
|
22
22
|
private config;
|
|
23
|
+
private yAxisState;
|
|
23
24
|
private xBoundsProvider;
|
|
24
25
|
private yBoundsProvider;
|
|
25
26
|
private xLabelsProvider;
|
|
26
27
|
private yLabelsProvider;
|
|
27
28
|
private drawPredicate;
|
|
28
|
-
private
|
|
29
|
-
constructor(canvasModel: CanvasModel, viewportModel: ViewportModel, config: FullChartConfig, xBoundsProvider: BoundsProvider, yBoundsProvider: BoundsProvider, xLabelsProvider: () => NumericAxisLabel[], yLabelsProvider: () => NumericAxisLabel[], drawPredicate?: () => boolean,
|
|
29
|
+
private getBaseline?;
|
|
30
|
+
constructor(canvasModel: CanvasModel, viewportModel: ViewportModel, config: FullChartConfig, yAxisState: YAxisConfig, xBoundsProvider: BoundsProvider, yBoundsProvider: BoundsProvider, xLabelsProvider: () => NumericAxisLabel[], yLabelsProvider: () => NumericAxisLabel[], drawPredicate?: () => boolean, getBaseline?: (() => Unit) | undefined);
|
|
30
31
|
/**
|
|
31
32
|
* Draws the chart on the canvas if the drawPredicate is true.
|
|
32
33
|
* @returns {void}
|