@progress/kendo-charts 2.7.2-dev.202502101310 → 2.7.2-develop.1
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/dist/cdn/js/kendo-charts.js +1 -1
- package/dist/cdn/main.js +1 -1
- package/dist/es/barcode/barcode-validator.js +10 -12
- package/dist/es/barcode/barcode.js +84 -96
- package/dist/es/barcode/encodings/code11.js +41 -57
- package/dist/es/barcode/encodings/code128.js +222 -354
- package/dist/es/barcode/encodings/code39-extended.js +20 -34
- package/dist/es/barcode/encodings/code39.js +49 -75
- package/dist/es/barcode/encodings/code93-extended.js +12 -24
- package/dist/es/barcode/encodings/code93.js +52 -70
- package/dist/es/barcode/encodings/ean13.js +28 -42
- package/dist/es/barcode/encodings/ean8.js +8 -18
- package/dist/es/barcode/encodings/encoding.js +18 -24
- package/dist/es/barcode/encodings/main.js +13 -10
- package/dist/es/barcode/encodings/msi.js +56 -112
- package/dist/es/barcode/encodings/postnet.js +31 -45
- package/dist/es/barcode/surface-size.js +2 -2
- package/dist/es/chart/aggregates/aggregates.js +23 -23
- package/dist/es/chart/aggregates/default-aggregates.js +10 -18
- package/dist/es/chart/aggregates/series-aggregator.js +42 -54
- package/dist/es/chart/animations/bar-chart-animation.js +15 -26
- package/dist/es/chart/animations/bubble-animation.js +7 -17
- package/dist/es/chart/animations/clip-animation.js +13 -23
- package/dist/es/chart/animations/fade-in-animation.js +6 -16
- package/dist/es/chart/animations/pie-animation.js +6 -16
- package/dist/es/chart/api-elements/chart-axis.js +14 -22
- package/dist/es/chart/api-elements/chart-pane.js +10 -8
- package/dist/es/chart/api-elements/chart-plotarea.js +4 -10
- package/dist/es/chart/api-elements/find-axis-by-name.js +1 -1
- package/dist/es/chart/area-chart/area-chart.js +46 -60
- package/dist/es/chart/area-chart/area-segment.js +46 -52
- package/dist/es/chart/area-chart/spline-area-segment.js +12 -21
- package/dist/es/chart/area-chart/step-area-segment.js +6 -15
- package/dist/es/chart/axis-group-range-tracker.js +14 -20
- package/dist/es/chart/bar-chart/bar-chart.js +65 -80
- package/dist/es/chart/bar-chart/bar-label.js +25 -32
- package/dist/es/chart/bar-chart/bar.js +76 -91
- package/dist/es/chart/box-plot-chart/box-plot-chart.js +33 -48
- package/dist/es/chart/box-plot-chart/box-plot.js +55 -68
- package/dist/es/chart/box-plot-chart/vertical-box-plot.js +13 -23
- package/dist/es/chart/bubble-chart/bubble-chart.js +51 -64
- package/dist/es/chart/bubble-chart/bubble.js +21 -27
- package/dist/es/chart/bullet-chart/bullet-chart.js +45 -57
- package/dist/es/chart/bullet-chart/bullet.js +48 -57
- package/dist/es/chart/bullet-chart/target.js +1 -11
- package/dist/es/chart/candlestick-chart/candlestick-chart.js +41 -55
- package/dist/es/chart/candlestick-chart/candlestick.js +60 -69
- package/dist/es/chart/categorical-chart.js +178 -206
- package/dist/es/chart/chart-container.js +30 -39
- package/dist/es/chart/chart.js +641 -701
- package/dist/es/chart/constants.js +103 -103
- package/dist/es/chart/crosshair/crosshair-tooltip.js +22 -34
- package/dist/es/chart/crosshair/crosshair.js +39 -47
- package/dist/es/chart/donut-chart/donut-chart.js +36 -48
- package/dist/es/chart/donut-chart/donut-segment.js +12 -24
- package/dist/es/chart/error-bars/categorical-error-bar.js +5 -15
- package/dist/es/chart/error-bars/error-bar-base.js +37 -49
- package/dist/es/chart/error-bars/error-range-calculator.js +46 -56
- package/dist/es/chart/error-bars/scatter-error-bar.js +6 -16
- package/dist/es/chart/funnel-chart/funnel-chart.js +86 -103
- package/dist/es/chart/funnel-chart/funnel-segment.js +46 -54
- package/dist/es/chart/funnel-chart/pyramid-chart.js +5 -11
- package/dist/es/chart/heatmap-chart/color-scale.js +7 -9
- package/dist/es/chart/heatmap-chart/heatmap-chart.js +87 -110
- package/dist/es/chart/heatmap-chart/heatmap-point.js +72 -78
- package/dist/es/chart/highlight.js +26 -36
- package/dist/es/chart/layout/cluster-layout.js +16 -25
- package/dist/es/chart/layout/radar-cluster-layout.js +15 -24
- package/dist/es/chart/layout/radar-stack-layout.js +10 -22
- package/dist/es/chart/layout/stack-wrap.js +12 -24
- package/dist/es/chart/layout/utils.js +2 -2
- package/dist/es/chart/legend/legend-item-line-area.js +8 -19
- package/dist/es/chart/legend/legend-item-line.js +21 -31
- package/dist/es/chart/legend/legend-item-marker.js +18 -28
- package/dist/es/chart/legend/legend-item-square.js +8 -18
- package/dist/es/chart/legend/legend-item.js +91 -105
- package/dist/es/chart/legend/legend-layout.js +18 -25
- package/dist/es/chart/legend/legend.js +68 -92
- package/dist/es/chart/line-chart/line-chart.js +35 -48
- package/dist/es/chart/line-chart/line-point.js +90 -103
- package/dist/es/chart/line-chart/line-segment.js +23 -34
- package/dist/es/chart/line-chart/spline-segment.js +10 -20
- package/dist/es/chart/line-chart/step-line-mixin.js +14 -17
- package/dist/es/chart/line-chart/step-line-segment.js +4 -14
- package/dist/es/chart/mixins/accessibility-attributes-mixin.js +7 -7
- package/dist/es/chart/mixins/clip-animation-mixin.js +7 -7
- package/dist/es/chart/mixins/line-chart-mixin.js +27 -31
- package/dist/es/chart/mixins/note-mixin.js +3 -3
- package/dist/es/chart/mixins/pie-chart-mixin.js +9 -9
- package/dist/es/chart/mixins/plotarea-events-mixin.js +1 -1
- package/dist/es/chart/mixins/point-events-mixin.js +1 -1
- package/dist/es/chart/ohlc-chart/ohlc-chart.js +4 -14
- package/dist/es/chart/ohlc-chart/ohlc-point.js +15 -28
- package/dist/es/chart/pan-and-zoom/accept-key.js +3 -3
- package/dist/es/chart/pan-and-zoom/mousewheel-zoom.js +25 -33
- package/dist/es/chart/pan-and-zoom/pannable.js +29 -37
- package/dist/es/chart/pan-and-zoom/to-chart-axis-ranges.js +3 -3
- package/dist/es/chart/pan-and-zoom/zoom-selection.js +61 -70
- package/dist/es/chart/pane.js +71 -79
- package/dist/es/chart/pie-chart/pie-chart.js +153 -183
- package/dist/es/chart/pie-chart/pie-segment.js +82 -98
- package/dist/es/chart/plotarea/categorical-plotarea.js +285 -318
- package/dist/es/chart/plotarea/donut-plotarea.js +12 -22
- package/dist/es/chart/plotarea/funnel-plotarea.js +17 -27
- package/dist/es/chart/plotarea/heatmap-plotarea.js +139 -167
- package/dist/es/chart/plotarea/pie-plotarea.js +15 -25
- package/dist/es/chart/plotarea/plotarea-base.js +423 -462
- package/dist/es/chart/plotarea/plotarea-factory.js +15 -20
- package/dist/es/chart/plotarea/polar-plotarea-base.js +37 -51
- package/dist/es/chart/plotarea/polar-plotarea.js +39 -49
- package/dist/es/chart/plotarea/radar-plotarea.js +55 -65
- package/dist/es/chart/plotarea/xy-plotarea.js +111 -128
- package/dist/es/chart/polar-area-chart/polar-area-chart.js +22 -36
- package/dist/es/chart/polar-area-chart/polar-area-segment.js +7 -17
- package/dist/es/chart/polar-area-chart/spline-polar-area-segment.js +15 -25
- package/dist/es/chart/polar-line-chart/polar-line-chart.js +2 -11
- package/dist/es/chart/polar-scatter-chart/polar-scatter-chart.js +6 -16
- package/dist/es/chart/radar-area-chart/radar-area-chart.js +11 -21
- package/dist/es/chart/radar-area-chart/radar-area-segment.js +3 -13
- package/dist/es/chart/radar-area-chart/spline-radar-area-segment.js +3 -13
- package/dist/es/chart/radar-bar-chart/radar-bar-chart.js +19 -29
- package/dist/es/chart/radar-bar-chart/radar-segment.js +6 -12
- package/dist/es/chart/radar-line-chart/radar-line-chart.js +26 -35
- package/dist/es/chart/range-area-chart/range-area-chart.js +46 -58
- package/dist/es/chart/range-area-chart/range-area-point.js +55 -66
- package/dist/es/chart/range-area-chart/range-area-segment.js +19 -28
- package/dist/es/chart/range-area-chart/range-line-point.js +4 -14
- package/dist/es/chart/range-area-chart/spline-range-area-segment.js +11 -18
- package/dist/es/chart/range-area-chart/step-range-area-segment.js +7 -16
- package/dist/es/chart/range-bar-chart/range-bar-chart.js +18 -29
- package/dist/es/chart/range-bar-chart/range-bar.js +10 -23
- package/dist/es/chart/register-charts.js +20 -16
- package/dist/es/chart/scatter-charts/scatter-chart.js +100 -122
- package/dist/es/chart/scatter-charts/scatter-line-chart.js +15 -25
- package/dist/es/chart/selection.js +176 -201
- package/dist/es/chart/series-binder.js +55 -66
- package/dist/es/chart/theme/base-theme.js +75 -79
- package/dist/es/chart/theme/load-theme.js +52 -52
- package/dist/es/chart/tooltip/base-tooltip.js +17 -24
- package/dist/es/chart/tooltip/shared-tooltip.js +25 -31
- package/dist/es/chart/tooltip/tooltip.js +10 -20
- package/dist/es/chart/trendlines/calculate-moving-average.js +11 -13
- package/dist/es/chart/trendlines/calculate-polynomial.js +24 -26
- package/dist/es/chart/trendlines/calculate-slope.js +12 -14
- package/dist/es/chart/trendlines/check-all-positive.js +2 -5
- package/dist/es/chart/trendlines/exponential-trendline.js +15 -24
- package/dist/es/chart/trendlines/get-scatter-trendline-data.js +6 -7
- package/dist/es/chart/trendlines/get-trendline-data.js +6 -6
- package/dist/es/chart/trendlines/linear-trendline.js +12 -21
- package/dist/es/chart/trendlines/logarithmic-trendline.js +14 -23
- package/dist/es/chart/trendlines/moving-average.js +15 -26
- package/dist/es/chart/trendlines/polynomial-trendline.js +13 -21
- package/dist/es/chart/trendlines/power-trendline.js +15 -24
- package/dist/es/chart/trendlines/scatter-exponential-trendline.js +15 -24
- package/dist/es/chart/trendlines/scatter-linear-trendline.js +10 -16
- package/dist/es/chart/trendlines/scatter-logarithmic-trendline.js +17 -27
- package/dist/es/chart/trendlines/scatter-moving-average.js +7 -10
- package/dist/es/chart/trendlines/scatter-polynomial-trendline.js +11 -16
- package/dist/es/chart/trendlines/scatter-power-trendline.js +15 -22
- package/dist/es/chart/trendlines/scatter-trendline-registry.js +1 -1
- package/dist/es/chart/trendlines/scatter-value-getter.js +2 -5
- package/dist/es/chart/trendlines/trendline-factory.js +1 -1
- package/dist/es/chart/trendlines/trendline-registry.js +1 -1
- package/dist/es/chart/trendlines/x-value-limits.js +6 -8
- package/dist/es/chart/utils/any-has-z-index.js +1 -1
- package/dist/es/chart/utils/bind-segments.js +8 -8
- package/dist/es/chart/utils/categories-count.js +3 -3
- package/dist/es/chart/utils/count-numbers.js +4 -4
- package/dist/es/chart/utils/create-out-of-range-points.js +13 -22
- package/dist/es/chart/utils/eval-options.js +7 -10
- package/dist/es/chart/utils/filter-series-by-type.js +4 -4
- package/dist/es/chart/utils/get-field.js +1 -1
- package/dist/es/chart/utils/has-gradient-overlay.js +1 -1
- package/dist/es/chart/utils/is-date-axis.js +2 -2
- package/dist/es/chart/utils/parse-date-category.js +2 -2
- package/dist/es/chart/utils/segment-visible.js +2 -2
- package/dist/es/chart/waterfall-chart/waterfall-chart.js +41 -55
- package/dist/es/chart/waterfall-chart/waterfall-segment.js +16 -24
- package/dist/es/chart-wizard/get-wizard-data-from-data-rows.js +5 -6
- package/dist/es/chart-wizard/messages.js +1 -1
- package/dist/es/chart-wizard/state.js +145 -137
- package/dist/es/chart-wizard.js +12 -12
- package/dist/es/common/add-class.js +3 -3
- package/dist/es/common/align-path-to-pixel.js +2 -2
- package/dist/es/common/auto-text-color.js +1 -1
- package/dist/es/common/constants.js +53 -53
- package/dist/es/common/create-hash-set.js +59 -65
- package/dist/es/common/cycleDown.js +1 -1
- package/dist/es/common/deep-extend.js +10 -12
- package/dist/es/common/element-scale.js +9 -9
- package/dist/es/common/element-styles.js +8 -8
- package/dist/es/common/event-map.js +4 -4
- package/dist/es/common/event-utils.js +13 -13
- package/dist/es/common/find.js +2 -2
- package/dist/es/common/font-loader.js +42 -44
- package/dist/es/common/get-aria-template.js +2 -4
- package/dist/es/common/get-spacing.js +2 -4
- package/dist/es/common/get-supported-features.js +7 -7
- package/dist/es/common/get-template.js +2 -4
- package/dist/es/common/getter.js +5 -5
- package/dist/es/common/grep.js +3 -3
- package/dist/es/common/has-classes.js +2 -2
- package/dist/es/common/hash-map.js +11 -11
- package/dist/es/common/instance-observer.js +28 -33
- package/dist/es/common/keys.js +1 -1
- package/dist/es/common/map.js +4 -4
- package/dist/es/common/matrix.js +142 -150
- package/dist/es/common/mousewheel-delta.js +2 -2
- package/dist/es/common/observable.js +40 -52
- package/dist/es/common/remove-class.js +1 -1
- package/dist/es/common/render-icon.js +50 -60
- package/dist/es/common/set-default-options.js +1 -1
- package/dist/es/common/sparse-array-limits.js +4 -4
- package/dist/es/common/user-events.js +124 -150
- package/dist/es/core/axis-label.js +38 -43
- package/dist/es/core/axis.js +293 -345
- package/dist/es/core/box-element.js +36 -46
- package/dist/es/core/box.js +75 -83
- package/dist/es/core/category-axis.js +265 -314
- package/dist/es/core/chart-element.js +98 -109
- package/dist/es/core/constants.js +3 -3
- package/dist/es/core/curve-processor.js +86 -93
- package/dist/es/core/date-category-axis.js +381 -413
- package/dist/es/core/date-value-axis.js +108 -118
- package/dist/es/core/float-element.js +54 -78
- package/dist/es/core/gradients.js +3 -3
- package/dist/es/core/logarithmic-axis.js +134 -186
- package/dist/es/core/mixins/grid-lines-mixin.js +18 -20
- package/dist/es/core/mixins/radar-numeric-axis-mixin.js +46 -51
- package/dist/es/core/note.js +58 -73
- package/dist/es/core/numeric-axis.js +111 -133
- package/dist/es/core/pattern.js +4 -8
- package/dist/es/core/point.js +25 -34
- package/dist/es/core/polar-axis.js +73 -91
- package/dist/es/core/radar-category-axis.js +90 -114
- package/dist/es/core/radar-logarithmic-axis.js +10 -20
- package/dist/es/core/radar-numeric-axis.js +10 -20
- package/dist/es/core/ring.js +61 -68
- package/dist/es/core/root-element.js +40 -48
- package/dist/es/core/sector.js +11 -17
- package/dist/es/core/shape-builder.js +13 -23
- package/dist/es/core/shape-element.js +27 -37
- package/dist/es/core/text-box.js +50 -59
- package/dist/es/core/text.js +13 -24
- package/dist/es/core/title.js +19 -25
- package/dist/es/core/utils/auto-axis-max.js +3 -3
- package/dist/es/core/utils/auto-axis-min.js +3 -3
- package/dist/es/core/utils/auto-major-unit.js +4 -4
- package/dist/es/core/utils/box-diff.js +9 -9
- package/dist/es/core/utils/create-axis-grid-line.js +2 -4
- package/dist/es/core/utils/create-axis-tick.js +2 -4
- package/dist/es/core/utils/guid.js +3 -3
- package/dist/es/core/utils/rect-to-box.js +2 -2
- package/dist/es/date-utils/absolute-date-diff.js +2 -2
- package/dist/es/date-utils/add-duration.js +5 -5
- package/dist/es/date-utils/ceil-date.js +1 -1
- package/dist/es/date-utils/constants.js +17 -17
- package/dist/es/date-utils/date-index.js +3 -3
- package/dist/es/date-utils/duration.js +1 -1
- package/dist/es/date-utils/lte-date-index.js +4 -4
- package/dist/es/date-utils/parse-date.js +1 -1
- package/dist/es/date-utils/parse-dates.js +2 -2
- package/dist/es/date-utils/start-of-week.js +3 -5
- package/dist/es/date-utils/to-date.js +1 -1
- package/dist/es/date-utils/to-time.js +2 -2
- package/dist/es/drawing-utils.js +18 -17
- package/dist/es/gauges/arc/arc-gauge.js +29 -38
- package/dist/es/gauges/arc/arc-scale.js +16 -29
- package/dist/es/gauges/arc/range-pointer-animation.js +16 -25
- package/dist/es/gauges/arc/range-pointer.js +25 -46
- package/dist/es/gauges/circular/circular-gauge.js +7 -17
- package/dist/es/gauges/constants.js +14 -14
- package/dist/es/gauges/gauge.js +84 -96
- package/dist/es/gauges/linear/arrow-linear-pointer-animation.js +13 -25
- package/dist/es/gauges/linear/arrow-linear-pointer.js +23 -35
- package/dist/es/gauges/linear/bar-linear-pointer-animation.js +15 -24
- package/dist/es/gauges/linear/bar-linear-pointer.js +38 -51
- package/dist/es/gauges/linear/linear-gauge.js +61 -83
- package/dist/es/gauges/linear/linear-pointer.js +25 -39
- package/dist/es/gauges/linear/linear-scale.js +57 -74
- package/dist/es/gauges/pointer.js +11 -21
- package/dist/es/gauges/radial/radial-gauge.js +58 -81
- package/dist/es/gauges/radial/radial-pointer-animation.js +9 -15
- package/dist/es/gauges/radial/radial-pointer.js +33 -48
- package/dist/es/gauges/radial/radial-scale.js +154 -186
- package/dist/es/gauges/utils/build-label-element.js +10 -12
- package/dist/es/gauges/utils/get-range.js +2 -2
- package/dist/es/gauges/utils/pad.js +3 -3
- package/dist/es/gauges/utils/unpad.js +1 -1
- package/dist/es/map/attribution.js +42 -52
- package/dist/es/map/constants.js +5 -5
- package/dist/es/map/crs.js +68 -112
- package/dist/es/map/datums.js +3 -3
- package/dist/es/map/extent.js +40 -54
- package/dist/es/map/layers/bubble.js +52 -70
- package/dist/es/map/layers/layer.js +50 -56
- package/dist/es/map/layers/marker.js +109 -129
- package/dist/es/map/layers/shape.js +111 -133
- package/dist/es/map/layers/tile.js +144 -170
- package/dist/es/map/location.js +70 -78
- package/dist/es/map/map.js +261 -291
- package/dist/es/map/navigator.js +33 -39
- package/dist/es/map/scroller/draggable.js +98 -134
- package/dist/es/map/scroller/fx.js +39 -46
- package/dist/es/map/scroller/scroller.js +144 -174
- package/dist/es/map/tooltip/tooltip.js +15 -25
- package/dist/es/map/utils.js +25 -26
- package/dist/es/map/zoom.js +30 -36
- package/dist/es/qrcode/encodings/data-modes/alpha-numeric-data-mode.js +14 -26
- package/dist/es/qrcode/encodings/data-modes/byte-data-mode.js +15 -25
- package/dist/es/qrcode/encodings/data-modes/data-mode-instances.js +8 -7
- package/dist/es/qrcode/encodings/data-modes/numeric-data-mode.js +14 -24
- package/dist/es/qrcode/encodings/data-modes/qr-data-mode.js +15 -21
- package/dist/es/qrcode/encodings/encoders/iso-encoder.js +6 -16
- package/dist/es/qrcode/encodings/encoders/utf8-encoder.js +28 -36
- package/dist/es/qrcode/encodings/encoding-result.js +4 -10
- package/dist/es/qrcode/encodings/encoding.js +68 -192
- package/dist/es/qrcode/encodings/free-cell-visitor.js +16 -24
- package/dist/es/qrcode/encodings/utils/choose-mode.js +44 -0
- package/dist/es/qrcode/encodings/utils/get-data-codewords-count.js +13 -0
- package/dist/es/qrcode/encodings/utils/get-data-string.js +13 -0
- package/dist/es/qrcode/encodings/utils/get-modes.js +35 -0
- package/dist/es/qrcode/encodings/utils/get-version.js +23 -0
- package/dist/es/qrcode/encodings/utils/index.js +5 -0
- package/dist/es/qrcode/encodings/version-codewords.js +1 -1
- package/dist/es/qrcode/qrcode-validator.js +3 -5
- package/dist/es/qrcode/qrcode.js +104 -114
- package/dist/es/qrcode/utils.js +4 -4
- package/dist/es/sankey/calculation.js +286 -307
- package/dist/es/sankey/element.js +15 -23
- package/dist/es/sankey/label.js +29 -44
- package/dist/es/sankey/legend.js +15 -29
- package/dist/es/sankey/link.js +80 -98
- package/dist/es/sankey/node.js +26 -37
- package/dist/es/sankey/sankey.js +318 -385
- package/dist/es/sankey/title.js +9 -20
- package/dist/es/sankey/utils.js +18 -23
- package/dist/es/services/chart-service.js +24 -28
- package/dist/es/services/dom-events-builder.js +15 -15
- package/dist/es/services/format-service.js +30 -35
- package/dist/es/services/intl-service.js +14 -18
- package/dist/es/services/map-service.js +11 -11
- package/dist/es/services/template-service.js +9 -9
- package/dist/es/sparkline/shared-tooltip.js +11 -21
- package/dist/es/sparkline/sparkline.js +50 -60
- package/dist/es/stock/constants.js +3 -3
- package/dist/es/stock/fade-out-animation.js +12 -21
- package/dist/es/stock/navigator-hint.js +37 -49
- package/dist/es/stock/navigator.js +130 -161
- package/dist/es/stock/stock-chart.js +58 -67
- package/dist/es2015/chart/legend/legend-item.js +1 -1
- package/dist/es2015/qrcode/encodings/encoders/iso-encoder.js +1 -1
- package/dist/es2015/qrcode/encodings/encoders/utf8-encoder.js +1 -1
- package/dist/es2015/qrcode/encodings/encoding.js +3 -127
- package/dist/es2015/qrcode/encodings/utils/choose-mode.js +44 -0
- package/dist/es2015/qrcode/encodings/utils/get-data-codewords-count.js +13 -0
- package/dist/es2015/qrcode/encodings/utils/get-data-string.js +13 -0
- package/dist/es2015/qrcode/encodings/utils/get-modes.js +35 -0
- package/dist/es2015/qrcode/encodings/utils/get-version.js +23 -0
- package/dist/es2015/qrcode/encodings/utils/index.js +5 -0
- package/dist/npm/main.js +3222 -3589
- package/dist/systemjs/kendo-charts.js +1 -1
- package/package.json +19 -57
|
@@ -11,11 +11,11 @@ import { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFuncti
|
|
|
11
11
|
limitValue, round, setDefaultOptions, last, cycleIndex } from '../../common';
|
|
12
12
|
import { TRENDLINE_SERIES } from '../constants';
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
const visiblePoint = (point) => point.options.visible !== false;
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
class PlotAreaBase extends ChartElement {
|
|
17
|
+
constructor(series, options, chartService) {
|
|
18
|
+
super(options);
|
|
19
19
|
|
|
20
20
|
this.initFields(series, options);
|
|
21
21
|
this.series = series;
|
|
@@ -35,115 +35,106 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
35
35
|
this.createCrosshairs();
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
PlotAreaBase.prototype = Object.create( ChartElement && ChartElement.prototype );
|
|
40
|
-
PlotAreaBase.prototype.constructor = PlotAreaBase;
|
|
38
|
+
initFields() { }
|
|
41
39
|
|
|
42
|
-
|
|
40
|
+
initSeries() {
|
|
41
|
+
const series = this.series;
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
var series = this.series;
|
|
46
|
-
|
|
47
|
-
for (var i = 0; i < series.length; i++) {
|
|
43
|
+
for (let i = 0; i < series.length; i++) {
|
|
48
44
|
series[i].index = i;
|
|
49
45
|
}
|
|
50
|
-
}
|
|
46
|
+
}
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
bindPoint(series, pointIx, item) {
|
|
49
|
+
let cached = this._bindCache.get(series);
|
|
54
50
|
if (!cached) {
|
|
55
51
|
cached = [];
|
|
56
52
|
this._bindCache.set(series, cached);
|
|
57
53
|
}
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
let data = cached[pointIx];
|
|
60
56
|
if (!data) {
|
|
61
57
|
data = cached[pointIx] = SeriesBinder.current.bindPoint(series, pointIx, item);
|
|
62
58
|
}
|
|
63
59
|
|
|
64
60
|
return data;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
PlotAreaBase.prototype.createPanes = function createPanes () {
|
|
68
|
-
var this$1 = this;
|
|
61
|
+
}
|
|
69
62
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
createPanes() {
|
|
64
|
+
const titleOptions = this.options.title || {};
|
|
65
|
+
const paneDefaults = this.options.paneDefaults;
|
|
66
|
+
const paneOptions = this.options.panes || [];
|
|
67
|
+
const panesLength = Math.max(paneOptions.length, 1);
|
|
68
|
+
const panes = [];
|
|
75
69
|
|
|
76
|
-
|
|
70
|
+
const defaults = deepExtend({
|
|
77
71
|
title: {
|
|
78
72
|
color: titleOptions.color
|
|
79
73
|
}
|
|
80
74
|
}, paneDefaults);
|
|
81
75
|
|
|
82
|
-
for (
|
|
83
|
-
|
|
76
|
+
for (let i = 0; i < panesLength; i++) {
|
|
77
|
+
const options = deepExtend({}, defaults, paneOptions[i]);
|
|
84
78
|
if (isString(options.title)) {
|
|
85
79
|
options.title = deepExtend({ text: options.title }, defaults.title);
|
|
86
80
|
}
|
|
87
81
|
|
|
88
|
-
|
|
82
|
+
const currentPane = new Pane(options);
|
|
89
83
|
currentPane.paneIndex = i;
|
|
90
84
|
|
|
91
85
|
panes.push(currentPane);
|
|
92
|
-
this
|
|
86
|
+
this.append(currentPane);
|
|
93
87
|
}
|
|
94
88
|
|
|
95
89
|
this.panes = panes;
|
|
96
|
-
}
|
|
90
|
+
}
|
|
97
91
|
|
|
98
|
-
|
|
92
|
+
crosshairOptions(axis) {
|
|
99
93
|
return axis.options.crosshair;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
PlotAreaBase.prototype.createCrosshairs = function createCrosshairs (panes) {
|
|
103
|
-
var this$1 = this;
|
|
104
|
-
if ( panes === void 0 ) panes = this.panes;
|
|
94
|
+
}
|
|
105
95
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
96
|
+
createCrosshairs(panes = this.panes) {
|
|
97
|
+
for (let i = 0; i < panes.length; i++) {
|
|
98
|
+
const pane = panes[i];
|
|
99
|
+
for (let j = 0; j < pane.axes.length; j++) {
|
|
100
|
+
const axis = pane.axes[j];
|
|
101
|
+
const options = this.crosshairOptions(axis);
|
|
111
102
|
if (options && options.visible) {
|
|
112
|
-
|
|
103
|
+
const currentCrosshair = new Crosshair(this.chartService, axis, options);
|
|
113
104
|
|
|
114
|
-
this
|
|
105
|
+
this.crosshairs.push(currentCrosshair);
|
|
115
106
|
pane.content.append(currentCrosshair);
|
|
116
107
|
}
|
|
117
108
|
}
|
|
118
109
|
}
|
|
119
|
-
}
|
|
110
|
+
}
|
|
120
111
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
112
|
+
removeCrosshairs(pane) {
|
|
113
|
+
const crosshairs = this.crosshairs;
|
|
114
|
+
const axes = pane.axes;
|
|
124
115
|
|
|
125
|
-
for (
|
|
126
|
-
for (
|
|
116
|
+
for (let i = crosshairs.length - 1; i >= 0; i--) {
|
|
117
|
+
for (let j = 0; j < axes.length; j++) {
|
|
127
118
|
if (crosshairs[i].axis === axes[j]) {
|
|
128
119
|
crosshairs.splice(i, 1);
|
|
129
120
|
break;
|
|
130
121
|
}
|
|
131
122
|
}
|
|
132
123
|
}
|
|
133
|
-
}
|
|
124
|
+
}
|
|
134
125
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
for (
|
|
126
|
+
hideCrosshairs() {
|
|
127
|
+
const crosshairs = this.crosshairs;
|
|
128
|
+
for (let idx = 0; idx < crosshairs.length; idx++) {
|
|
138
129
|
crosshairs[idx].hide();
|
|
139
130
|
}
|
|
140
|
-
}
|
|
131
|
+
}
|
|
141
132
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
133
|
+
findPane(name) {
|
|
134
|
+
const panes = this.panes;
|
|
135
|
+
let matchingPane;
|
|
145
136
|
|
|
146
|
-
for (
|
|
137
|
+
for (let i = 0; i < panes.length; i++) {
|
|
147
138
|
if (panes[i].options.name === name) {
|
|
148
139
|
matchingPane = panes[i];
|
|
149
140
|
break;
|
|
@@ -151,13 +142,13 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
151
142
|
}
|
|
152
143
|
|
|
153
144
|
return matchingPane || panes[0];
|
|
154
|
-
}
|
|
145
|
+
}
|
|
155
146
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
147
|
+
findPointPane(point) {
|
|
148
|
+
const panes = this.panes;
|
|
149
|
+
let matchingPane;
|
|
159
150
|
|
|
160
|
-
for (
|
|
151
|
+
for (let i = 0; i < panes.length; i++) {
|
|
161
152
|
if (panes[i].box.containsPoint(point)) {
|
|
162
153
|
matchingPane = panes[i];
|
|
163
154
|
break;
|
|
@@ -165,23 +156,21 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
165
156
|
}
|
|
166
157
|
|
|
167
158
|
return matchingPane;
|
|
168
|
-
}
|
|
159
|
+
}
|
|
169
160
|
|
|
170
|
-
|
|
171
|
-
|
|
161
|
+
appendAxis(axis) {
|
|
162
|
+
const pane = this.findPane(axis.options.pane);
|
|
172
163
|
|
|
173
164
|
pane.appendAxis(axis);
|
|
174
165
|
this.axes.push(axis);
|
|
175
166
|
axis.plotArea = this;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
PlotAreaBase.prototype.removeAxis = function removeAxis (axisToRemove) {
|
|
179
|
-
var this$1 = this;
|
|
167
|
+
}
|
|
180
168
|
|
|
181
|
-
|
|
169
|
+
removeAxis(axisToRemove) {
|
|
170
|
+
const filteredAxes = [];
|
|
182
171
|
|
|
183
|
-
for (
|
|
184
|
-
|
|
172
|
+
for (let i = 0; i < this.axes.length; i++) {
|
|
173
|
+
const axis = this.axes[i];
|
|
185
174
|
if (axisToRemove !== axis) {
|
|
186
175
|
filteredAxes.push(axis);
|
|
187
176
|
} else {
|
|
@@ -190,24 +179,22 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
190
179
|
}
|
|
191
180
|
|
|
192
181
|
this.axes = filteredAxes;
|
|
193
|
-
}
|
|
182
|
+
}
|
|
194
183
|
|
|
195
|
-
|
|
184
|
+
appendChart(chart, pane) {
|
|
196
185
|
this.charts.push(chart);
|
|
197
186
|
if (pane) {
|
|
198
187
|
pane.appendChart(chart);
|
|
199
188
|
} else {
|
|
200
189
|
this.append(chart);
|
|
201
190
|
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
PlotAreaBase.prototype.removeChart = function removeChart (chartToRemove) {
|
|
205
|
-
var this$1 = this;
|
|
191
|
+
}
|
|
206
192
|
|
|
207
|
-
|
|
193
|
+
removeChart(chartToRemove) {
|
|
194
|
+
const filteredCharts = [];
|
|
208
195
|
|
|
209
|
-
for (
|
|
210
|
-
|
|
196
|
+
for (let i = 0; i < this.charts.length; i++) {
|
|
197
|
+
const chart = this.charts[i];
|
|
211
198
|
if (chart !== chartToRemove) {
|
|
212
199
|
filteredCharts.push(chart);
|
|
213
200
|
} else {
|
|
@@ -216,25 +203,25 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
216
203
|
}
|
|
217
204
|
|
|
218
205
|
this.charts = filteredCharts;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
for (
|
|
230
|
-
|
|
231
|
-
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
addToLegend(series) {
|
|
209
|
+
const count = series.length;
|
|
210
|
+
const legend = this.options.legend;
|
|
211
|
+
const labels = legend.labels || {};
|
|
212
|
+
const inactiveItems = legend.inactiveItems || {};
|
|
213
|
+
const inactiveItemsLabels = inactiveItems.labels || {};
|
|
214
|
+
const data = [];
|
|
215
|
+
|
|
216
|
+
for (let i = 0; i < count; i++) {
|
|
217
|
+
const currentSeries = series[i];
|
|
218
|
+
const seriesVisible = currentSeries.visible !== false;
|
|
232
219
|
if (currentSeries.visibleInLegend === false) {
|
|
233
220
|
continue;
|
|
234
221
|
}
|
|
235
222
|
|
|
236
|
-
|
|
237
|
-
|
|
223
|
+
let text = currentSeries.name;
|
|
224
|
+
const labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);
|
|
238
225
|
if (labelTemplate) {
|
|
239
226
|
text = labelTemplate({
|
|
240
227
|
text: hasValue(text) ? text : "",
|
|
@@ -242,13 +229,13 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
242
229
|
});
|
|
243
230
|
}
|
|
244
231
|
|
|
245
|
-
|
|
246
|
-
|
|
232
|
+
const defaults = currentSeries._defaults;
|
|
233
|
+
let color = currentSeries.color;
|
|
247
234
|
if (isFunction(color) && defaults) {
|
|
248
235
|
color = defaults.color;
|
|
249
236
|
}
|
|
250
237
|
|
|
251
|
-
|
|
238
|
+
let itemLabelOptions, markerColor;
|
|
252
239
|
if (seriesVisible) {
|
|
253
240
|
itemLabelOptions = {};
|
|
254
241
|
markerColor = color;
|
|
@@ -272,16 +259,16 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
272
259
|
}
|
|
273
260
|
|
|
274
261
|
append(legend.data, data);
|
|
275
|
-
}
|
|
262
|
+
}
|
|
276
263
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
264
|
+
groupAxes(panes) {
|
|
265
|
+
const xAxes = [];
|
|
266
|
+
const yAxes = [];
|
|
280
267
|
|
|
281
|
-
for (
|
|
282
|
-
|
|
283
|
-
for (
|
|
284
|
-
|
|
268
|
+
for (let paneIx = 0; paneIx < panes.length; paneIx++) {
|
|
269
|
+
const paneAxes = panes[paneIx].axes;
|
|
270
|
+
for (let axisIx = 0; axisIx < paneAxes.length; axisIx++) {
|
|
271
|
+
const axis = paneAxes[axisIx];
|
|
285
272
|
if (axis.options.vertical) {
|
|
286
273
|
yAxes.push(axis);
|
|
287
274
|
} else {
|
|
@@ -291,17 +278,15 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
291
278
|
}
|
|
292
279
|
|
|
293
280
|
return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
PlotAreaBase.prototype.groupSeriesByPane = function groupSeriesByPane () {
|
|
297
|
-
var this$1 = this;
|
|
281
|
+
}
|
|
298
282
|
|
|
299
|
-
|
|
300
|
-
|
|
283
|
+
groupSeriesByPane() {
|
|
284
|
+
const series = this.series;
|
|
285
|
+
const seriesByPane = {};
|
|
301
286
|
|
|
302
|
-
for (
|
|
303
|
-
|
|
304
|
-
|
|
287
|
+
for (let i = 0; i < series.length; i++) {
|
|
288
|
+
const currentSeries = series[i];
|
|
289
|
+
const pane = this.seriesPaneName(currentSeries);
|
|
305
290
|
|
|
306
291
|
if (seriesByPane[pane]) {
|
|
307
292
|
seriesByPane[pane].push(currentSeries);
|
|
@@ -311,25 +296,25 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
311
296
|
}
|
|
312
297
|
|
|
313
298
|
return seriesByPane;
|
|
314
|
-
}
|
|
299
|
+
}
|
|
315
300
|
|
|
316
|
-
|
|
317
|
-
|
|
301
|
+
filterVisibleSeries(series) {
|
|
302
|
+
const result = [];
|
|
318
303
|
|
|
319
|
-
for (
|
|
320
|
-
|
|
304
|
+
for (let i = 0; i < series.length; i++) {
|
|
305
|
+
const currentSeries = series[i];
|
|
321
306
|
if (currentSeries.visible !== false) {
|
|
322
307
|
result.push(currentSeries);
|
|
323
308
|
}
|
|
324
309
|
}
|
|
325
310
|
|
|
326
311
|
return result;
|
|
327
|
-
}
|
|
312
|
+
}
|
|
328
313
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
314
|
+
reflow(targetBox) {
|
|
315
|
+
const options = this.options.plotArea;
|
|
316
|
+
const panes = this.panes;
|
|
317
|
+
const margin = getSpacing(options.margin);
|
|
333
318
|
|
|
334
319
|
this.box = targetBox.clone().unpad(margin);
|
|
335
320
|
this.reflowPanes();
|
|
@@ -337,22 +322,20 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
337
322
|
this.detachLabels();
|
|
338
323
|
this.reflowAxes(panes);
|
|
339
324
|
this.reflowCharts(panes);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
PlotAreaBase.prototype.redraw = function redraw (panes) {
|
|
343
|
-
var this$1 = this;
|
|
325
|
+
}
|
|
344
326
|
|
|
345
|
-
|
|
327
|
+
redraw(panes) {
|
|
328
|
+
const panesArray = [].concat(panes);
|
|
346
329
|
this.initSeries();
|
|
347
330
|
|
|
348
331
|
//prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.
|
|
349
|
-
|
|
332
|
+
const root = this.getRoot();
|
|
350
333
|
if (root) {
|
|
351
334
|
root.cleanGradients();
|
|
352
335
|
}
|
|
353
336
|
|
|
354
|
-
for (
|
|
355
|
-
this
|
|
337
|
+
for (let i = 0; i < panesArray.length; i++) {
|
|
338
|
+
this.removeCrosshairs(panesArray[i]);
|
|
356
339
|
panesArray[i].empty();
|
|
357
340
|
}
|
|
358
341
|
|
|
@@ -365,32 +348,32 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
365
348
|
|
|
366
349
|
this.createCrosshairs(panesArray);
|
|
367
350
|
|
|
368
|
-
for (
|
|
369
|
-
panesArray[i
|
|
351
|
+
for (let i = 0; i < panesArray.length; i++) {
|
|
352
|
+
panesArray[i].refresh();
|
|
370
353
|
}
|
|
371
|
-
}
|
|
354
|
+
}
|
|
372
355
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
356
|
+
axisCrossingValues(axis, crossingAxes) {
|
|
357
|
+
const options = axis.options;
|
|
358
|
+
const crossingValues = [].concat(
|
|
376
359
|
options.axisCrossingValues || options.axisCrossingValue
|
|
377
360
|
);
|
|
378
|
-
|
|
379
|
-
|
|
361
|
+
const valuesToAdd = crossingAxes.length - crossingValues.length;
|
|
362
|
+
const defaultValue = crossingValues[0] || 0;
|
|
380
363
|
|
|
381
|
-
for (
|
|
364
|
+
for (let i = 0; i < valuesToAdd; i++) {
|
|
382
365
|
crossingValues.push(defaultValue);
|
|
383
366
|
}
|
|
384
367
|
|
|
385
368
|
return crossingValues;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
alignAxisTo(axis, targetAxis, crossingValue, targetCrossingValue) {
|
|
372
|
+
const slot = axis.getSlot(crossingValue, crossingValue, true);
|
|
373
|
+
const slotEdge = axis.options.reverse ? 2 : 1;
|
|
374
|
+
const targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);
|
|
375
|
+
const targetEdge = targetAxis.options.reverse ? 2 : 1;
|
|
376
|
+
const axisBox = axis.box.translate(
|
|
394
377
|
targetSlot[X + targetEdge] - slot[X + slotEdge],
|
|
395
378
|
targetSlot[Y + targetEdge] - slot[Y + slotEdge]
|
|
396
379
|
);
|
|
@@ -400,35 +383,33 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
400
383
|
}
|
|
401
384
|
|
|
402
385
|
axis.reflow(axisBox);
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
var paneId = pane.id;
|
|
421
|
-
var visible = axis.options.visible !== false;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
alignAxes(xAxes, yAxes) {
|
|
389
|
+
const xAnchor = xAxes[0];
|
|
390
|
+
const yAnchor = yAxes[0];
|
|
391
|
+
const xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);
|
|
392
|
+
const yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);
|
|
393
|
+
const leftAnchors = {};
|
|
394
|
+
const rightAnchors = {};
|
|
395
|
+
const topAnchors = {};
|
|
396
|
+
const bottomAnchors = {};
|
|
397
|
+
|
|
398
|
+
for (let i = 0; i < yAxes.length; i++) {
|
|
399
|
+
const axis = yAxes[i];
|
|
400
|
+
const pane = axis.pane;
|
|
401
|
+
const paneId = pane.id;
|
|
402
|
+
const visible = axis.options.visible !== false;
|
|
422
403
|
|
|
423
404
|
// Locate pane anchor, if any, and use its axisCrossingValues
|
|
424
|
-
|
|
425
|
-
|
|
405
|
+
const anchor = paneAnchor(xAxes, pane) || xAnchor;
|
|
406
|
+
let anchorCrossings = xAnchorCrossings;
|
|
426
407
|
|
|
427
408
|
if (anchor !== xAnchor) {
|
|
428
|
-
anchorCrossings = this
|
|
409
|
+
anchorCrossings = this.axisCrossingValues(anchor, yAxes);
|
|
429
410
|
}
|
|
430
411
|
|
|
431
|
-
this
|
|
412
|
+
this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);
|
|
432
413
|
|
|
433
414
|
if (axis.options._overlap) {
|
|
434
415
|
continue;
|
|
@@ -455,7 +436,7 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
455
436
|
axis._mirrored = true;
|
|
456
437
|
}
|
|
457
438
|
|
|
458
|
-
this
|
|
439
|
+
this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);
|
|
459
440
|
|
|
460
441
|
// Push the axis to the right the previous y-axis so they don't overlap
|
|
461
442
|
if (rightAnchors[paneId]) {
|
|
@@ -471,81 +452,81 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
471
452
|
}
|
|
472
453
|
|
|
473
454
|
// Locate pane anchor, if any, and align the axis to it
|
|
474
|
-
|
|
455
|
+
const paneYAnchor = paneAnchor(yAxes, pane) || yAnchor;
|
|
475
456
|
if (paneYAnchor !== axis) {
|
|
476
457
|
axis.alignTo(paneYAnchor);
|
|
477
458
|
axis.reflow(axis.box);
|
|
478
459
|
}
|
|
479
460
|
}
|
|
480
461
|
|
|
481
|
-
for (
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
462
|
+
for (let i = 0; i < xAxes.length; i++) {
|
|
463
|
+
const axis = xAxes[i];
|
|
464
|
+
const pane = axis.pane;
|
|
465
|
+
const paneId = pane.id;
|
|
466
|
+
const visible = axis.options.visible !== false;
|
|
486
467
|
|
|
487
468
|
// Locate pane anchor and use its axisCrossingValues
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
if (anchor
|
|
491
|
-
anchorCrossings
|
|
469
|
+
const anchor = paneAnchor(yAxes, pane) || yAnchor;
|
|
470
|
+
let anchorCrossings = yAnchorCrossings;
|
|
471
|
+
if (anchor !== yAnchor) {
|
|
472
|
+
anchorCrossings = this.axisCrossingValues(anchor, xAxes);
|
|
492
473
|
}
|
|
493
474
|
|
|
494
|
-
this
|
|
475
|
+
this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);
|
|
495
476
|
|
|
496
|
-
if (axis
|
|
477
|
+
if (axis.options._overlap) {
|
|
497
478
|
continue;
|
|
498
479
|
}
|
|
499
480
|
|
|
500
|
-
if (round(axis
|
|
481
|
+
if (round(axis.lineBox().y1) === round(anchor.lineBox().y1)) {
|
|
501
482
|
// Flip the labels on top if we're at the top of the pane
|
|
502
|
-
if (!axis
|
|
503
|
-
axis
|
|
504
|
-
axis
|
|
483
|
+
if (!axis._mirrored) {
|
|
484
|
+
axis.options.labels.mirror = !axis.options.labels.mirror;
|
|
485
|
+
axis._mirrored = true;
|
|
505
486
|
}
|
|
506
|
-
this
|
|
487
|
+
this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);
|
|
507
488
|
|
|
508
489
|
// Push the axis above the previous x-axis so they don't overlap
|
|
509
|
-
if (topAnchors[paneId
|
|
510
|
-
axis
|
|
511
|
-
.alignTo(topAnchors[paneId
|
|
512
|
-
.translate(0, -axis
|
|
490
|
+
if (topAnchors[paneId]) {
|
|
491
|
+
axis.reflow(axis.box
|
|
492
|
+
.alignTo(topAnchors[paneId].box, TOP)
|
|
493
|
+
.translate(0, -axis.options.margin)
|
|
513
494
|
);
|
|
514
495
|
}
|
|
515
496
|
|
|
516
|
-
if (visible
|
|
517
|
-
topAnchors[paneId
|
|
497
|
+
if (visible) {
|
|
498
|
+
topAnchors[paneId] = axis;
|
|
518
499
|
}
|
|
519
500
|
}
|
|
520
501
|
|
|
521
|
-
if (round(axis
|
|
502
|
+
if (round(axis.lineBox().y2, COORD_PRECISION) === round(anchor.lineBox().y2, COORD_PRECISION)) {
|
|
522
503
|
// Push the axis below the previous x-axis so they don't overlap
|
|
523
|
-
if (bottomAnchors[paneId
|
|
524
|
-
axis
|
|
525
|
-
.alignTo(bottomAnchors[paneId
|
|
526
|
-
.translate(0, axis
|
|
504
|
+
if (bottomAnchors[paneId]) {
|
|
505
|
+
axis.reflow(axis.box
|
|
506
|
+
.alignTo(bottomAnchors[paneId].box, BOTTOM)
|
|
507
|
+
.translate(0, axis.options.margin)
|
|
527
508
|
);
|
|
528
509
|
}
|
|
529
510
|
|
|
530
|
-
if (visible
|
|
531
|
-
bottomAnchors[paneId
|
|
511
|
+
if (visible) {
|
|
512
|
+
bottomAnchors[paneId] = axis;
|
|
532
513
|
}
|
|
533
514
|
}
|
|
534
515
|
|
|
535
|
-
if (i
|
|
536
|
-
axis
|
|
537
|
-
axis
|
|
516
|
+
if (i !== 0) {
|
|
517
|
+
axis.alignTo(xAnchor);
|
|
518
|
+
axis.reflow(axis.box);
|
|
538
519
|
}
|
|
539
520
|
}
|
|
540
|
-
}
|
|
521
|
+
}
|
|
541
522
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
523
|
+
shrinkAxisWidth(panes) {
|
|
524
|
+
const axes = this.groupAxes(panes).any;
|
|
525
|
+
const axisBox = axisGroupBox(axes);
|
|
526
|
+
let overflowX = 0;
|
|
546
527
|
|
|
547
|
-
for (
|
|
548
|
-
|
|
528
|
+
for (let i = 0; i < panes.length; i++) {
|
|
529
|
+
const currentPane = panes[i];
|
|
549
530
|
|
|
550
531
|
if (currentPane.axes.length > 0) {
|
|
551
532
|
overflowX = Math.max(
|
|
@@ -556,27 +537,27 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
556
537
|
}
|
|
557
538
|
|
|
558
539
|
if (overflowX !== 0) {
|
|
559
|
-
for (
|
|
560
|
-
|
|
540
|
+
for (let i = 0; i < axes.length; i++) {
|
|
541
|
+
const currentAxis = axes[i];
|
|
561
542
|
|
|
562
543
|
if (!currentAxis.options.vertical) {
|
|
563
544
|
currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));
|
|
564
545
|
}
|
|
565
546
|
}
|
|
566
547
|
}
|
|
567
|
-
}
|
|
548
|
+
}
|
|
568
549
|
|
|
569
|
-
|
|
570
|
-
|
|
550
|
+
shrinkAxisHeight(panes) {
|
|
551
|
+
let shrinked;
|
|
571
552
|
|
|
572
|
-
for (
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
553
|
+
for (let i = 0; i < panes.length; i++) {
|
|
554
|
+
const currentPane = panes[i];
|
|
555
|
+
const axes = currentPane.axes;
|
|
556
|
+
const overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());
|
|
576
557
|
|
|
577
558
|
if (overflowY !== 0) {
|
|
578
|
-
for (
|
|
579
|
-
|
|
559
|
+
for (let j = 0; j < axes.length; j++) {
|
|
560
|
+
const currentAxis = axes[j];
|
|
580
561
|
|
|
581
562
|
if (currentAxis.options.vertical) {
|
|
582
563
|
currentAxis.reflow(
|
|
@@ -589,28 +570,28 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
589
570
|
}
|
|
590
571
|
|
|
591
572
|
return shrinked;
|
|
592
|
-
}
|
|
573
|
+
}
|
|
593
574
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
575
|
+
fitAxes(panes) {
|
|
576
|
+
const axes = this.groupAxes(panes).any;
|
|
577
|
+
let offsetX = 0;
|
|
597
578
|
|
|
598
|
-
for (
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
579
|
+
for (let i = 0; i < panes.length; i++) {
|
|
580
|
+
const currentPane = panes[i];
|
|
581
|
+
const paneAxes = currentPane.axes;
|
|
582
|
+
const paneBox = currentPane.contentBox;
|
|
602
583
|
|
|
603
584
|
if (paneAxes.length > 0) {
|
|
604
|
-
|
|
585
|
+
const axisBox = axisGroupBox(paneAxes);
|
|
605
586
|
// OffsetY is calculated and applied per pane
|
|
606
|
-
|
|
587
|
+
const offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);
|
|
607
588
|
|
|
608
589
|
// OffsetX is calculated and applied globally
|
|
609
590
|
offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);
|
|
610
591
|
|
|
611
592
|
|
|
612
|
-
for (
|
|
613
|
-
|
|
593
|
+
for (let j = 0; j < paneAxes.length; j++) {
|
|
594
|
+
const currentAxis = paneAxes[j];
|
|
614
595
|
|
|
615
596
|
currentAxis.reflow(
|
|
616
597
|
currentAxis.box.translate(0, offsetY)
|
|
@@ -619,22 +600,20 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
619
600
|
}
|
|
620
601
|
}
|
|
621
602
|
|
|
622
|
-
for (
|
|
623
|
-
|
|
603
|
+
for (let i = 0; i < axes.length; i++) {
|
|
604
|
+
const currentAxis = axes[i];
|
|
624
605
|
|
|
625
|
-
currentAxis
|
|
626
|
-
currentAxis
|
|
606
|
+
currentAxis.reflow(
|
|
607
|
+
currentAxis.box.translate(offsetX, 0)
|
|
627
608
|
);
|
|
628
609
|
}
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
PlotAreaBase.prototype.reflowAxes = function reflowAxes (panes) {
|
|
632
|
-
var this$1 = this;
|
|
610
|
+
}
|
|
633
611
|
|
|
634
|
-
|
|
612
|
+
reflowAxes(panes) {
|
|
613
|
+
const axes = this.groupAxes(panes);
|
|
635
614
|
|
|
636
|
-
for (
|
|
637
|
-
this
|
|
615
|
+
for (let i = 0; i < panes.length; i++) {
|
|
616
|
+
this.reflowPaneAxes(panes[i]);
|
|
638
617
|
}
|
|
639
618
|
|
|
640
619
|
if (axes.x.length > 0 && axes.y.length > 0) {
|
|
@@ -657,26 +636,23 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
657
636
|
|
|
658
637
|
this.fitAxes(panes);
|
|
659
638
|
}
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
PlotAreaBase.prototype.autoRotateAxisLabels = function autoRotateAxisLabels (groupedAxes) {
|
|
663
|
-
var this$1 = this;
|
|
639
|
+
}
|
|
664
640
|
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
641
|
+
autoRotateAxisLabels(groupedAxes) {
|
|
642
|
+
const { panes } = this;
|
|
643
|
+
const axes = allPaneAxes(panes);
|
|
644
|
+
let rotated;
|
|
669
645
|
|
|
670
|
-
for (
|
|
671
|
-
|
|
646
|
+
for (let idx = 0; idx < axes.length; idx++) {
|
|
647
|
+
const axis = axes[idx];
|
|
672
648
|
if (axis.autoRotateLabels()) {
|
|
673
649
|
rotated = true;
|
|
674
650
|
}
|
|
675
651
|
}
|
|
676
652
|
|
|
677
653
|
if (rotated) {
|
|
678
|
-
for (
|
|
679
|
-
this
|
|
654
|
+
for (let idx = 0; idx < panes.length; idx++) {
|
|
655
|
+
this.reflowPaneAxes(panes[idx]);
|
|
680
656
|
}
|
|
681
657
|
|
|
682
658
|
if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {
|
|
@@ -684,44 +660,42 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
684
660
|
this.shrinkAxisWidth(panes);
|
|
685
661
|
}
|
|
686
662
|
}
|
|
687
|
-
}
|
|
663
|
+
}
|
|
688
664
|
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
665
|
+
reflowPaneAxes(pane) {
|
|
666
|
+
const axes = pane.axes;
|
|
667
|
+
const length = axes.length;
|
|
692
668
|
|
|
693
669
|
if (length > 0) {
|
|
694
|
-
for (
|
|
670
|
+
for (let i = 0; i < length; i++) {
|
|
695
671
|
axes[i].reflow(pane.contentBox);
|
|
696
672
|
}
|
|
697
673
|
}
|
|
698
|
-
}
|
|
674
|
+
}
|
|
699
675
|
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
676
|
+
reflowCharts(panes) {
|
|
677
|
+
const charts = this.charts;
|
|
678
|
+
const count = charts.length;
|
|
679
|
+
const box = this.box;
|
|
704
680
|
|
|
705
|
-
for (
|
|
706
|
-
|
|
681
|
+
for (let i = 0; i < count; i++) {
|
|
682
|
+
const chartPane = charts[i].pane;
|
|
707
683
|
if (!chartPane || inArray(chartPane, panes)) {
|
|
708
684
|
charts[i].reflow(box);
|
|
709
685
|
}
|
|
710
686
|
}
|
|
711
|
-
}
|
|
687
|
+
}
|
|
712
688
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
var autoHeightPanes = 0;
|
|
720
|
-
var top = box.y1;
|
|
689
|
+
reflowPanes() {
|
|
690
|
+
const { box, panes } = this;
|
|
691
|
+
const panesLength = panes.length;
|
|
692
|
+
let remainingHeight = box.height();
|
|
693
|
+
let autoHeightPanes = 0;
|
|
694
|
+
let top = box.y1;
|
|
721
695
|
|
|
722
|
-
for (
|
|
723
|
-
|
|
724
|
-
|
|
696
|
+
for (let i = 0; i < panesLength; i++) {
|
|
697
|
+
const currentPane = panes[i];
|
|
698
|
+
const height = currentPane.options.height;
|
|
725
699
|
|
|
726
700
|
currentPane.options.width = box.width();
|
|
727
701
|
|
|
@@ -729,7 +703,7 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
729
703
|
autoHeightPanes++;
|
|
730
704
|
} else {
|
|
731
705
|
if (height.indexOf && height.indexOf("%")) {
|
|
732
|
-
|
|
706
|
+
const percents = parseInt(height, 10) / 100;
|
|
733
707
|
currentPane.options.height = percents * box.height();
|
|
734
708
|
}
|
|
735
709
|
|
|
@@ -739,39 +713,39 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
739
713
|
}
|
|
740
714
|
}
|
|
741
715
|
|
|
742
|
-
for (
|
|
743
|
-
|
|
716
|
+
for (let i = 0; i < panesLength; i++) {
|
|
717
|
+
const currentPane = panes[i];
|
|
744
718
|
|
|
745
|
-
if (!currentPane
|
|
746
|
-
currentPane
|
|
719
|
+
if (!currentPane.options.height) {
|
|
720
|
+
currentPane.options.height = remainingHeight / autoHeightPanes;
|
|
747
721
|
}
|
|
748
722
|
}
|
|
749
723
|
|
|
750
|
-
for (
|
|
751
|
-
|
|
752
|
-
|
|
724
|
+
for (let i = 0; i < panesLength; i++) {
|
|
725
|
+
const currentPane = panes[i];
|
|
726
|
+
const paneBox = box
|
|
753
727
|
.clone()
|
|
754
728
|
.move(box.x1, top);
|
|
755
729
|
|
|
756
|
-
currentPane
|
|
730
|
+
currentPane.reflow(paneBox);
|
|
757
731
|
|
|
758
|
-
top += currentPane
|
|
732
|
+
top += currentPane.options.height;
|
|
759
733
|
}
|
|
760
|
-
}
|
|
734
|
+
}
|
|
761
735
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
736
|
+
backgroundBox() {
|
|
737
|
+
const axes = this.axes;
|
|
738
|
+
const axesCount = axes.length;
|
|
739
|
+
let box;
|
|
766
740
|
|
|
767
|
-
for (
|
|
768
|
-
|
|
741
|
+
for (let i = 0; i < axesCount; i++) {
|
|
742
|
+
const axisA = axes[i];
|
|
769
743
|
|
|
770
|
-
for (
|
|
771
|
-
|
|
744
|
+
for (let j = 0; j < axesCount; j++) {
|
|
745
|
+
const axisB = axes[j];
|
|
772
746
|
|
|
773
747
|
if (axisA.options.vertical !== axisB.options.vertical) {
|
|
774
|
-
|
|
748
|
+
const lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());
|
|
775
749
|
|
|
776
750
|
if (!box) {
|
|
777
751
|
box = lineBox;
|
|
@@ -783,48 +757,46 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
783
757
|
}
|
|
784
758
|
|
|
785
759
|
return box || this.box;
|
|
786
|
-
}
|
|
760
|
+
}
|
|
787
761
|
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
762
|
+
chartsBoxes() {
|
|
763
|
+
const panes = this.panes;
|
|
764
|
+
const boxes = [];
|
|
791
765
|
|
|
792
|
-
for (
|
|
766
|
+
for (let idx = 0; idx < panes.length; idx++) {
|
|
793
767
|
boxes.push(panes[idx].chartsBox());
|
|
794
768
|
}
|
|
795
769
|
|
|
796
770
|
return boxes;
|
|
797
|
-
}
|
|
771
|
+
}
|
|
798
772
|
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
for (
|
|
773
|
+
addBackgroundPaths(multipath) {
|
|
774
|
+
const boxes = this.chartsBoxes();
|
|
775
|
+
for (let idx = 0; idx < boxes.length; idx++) {
|
|
802
776
|
multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));
|
|
803
777
|
}
|
|
804
|
-
}
|
|
778
|
+
}
|
|
805
779
|
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
for (
|
|
780
|
+
backgroundContainsPoint(point) {
|
|
781
|
+
const boxes = this.chartsBoxes();
|
|
782
|
+
for (let idx = 0; idx < boxes.length; idx++) {
|
|
809
783
|
if (boxes[idx].containsPoint(point)) {
|
|
810
784
|
return true;
|
|
811
785
|
}
|
|
812
786
|
}
|
|
813
|
-
}
|
|
787
|
+
}
|
|
814
788
|
|
|
815
|
-
|
|
816
|
-
|
|
789
|
+
createVisual() {
|
|
790
|
+
super.createVisual();
|
|
817
791
|
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
var background = options.background;
|
|
821
|
-
var border = options.border; if ( border === void 0 ) border = {};
|
|
792
|
+
const options = this.options.plotArea;
|
|
793
|
+
let { opacity, background, border = {} } = options;
|
|
822
794
|
if (isTransparent(background)) {
|
|
823
795
|
background = WHITE;
|
|
824
796
|
opacity = 0;
|
|
825
797
|
}
|
|
826
798
|
|
|
827
|
-
|
|
799
|
+
const bg = this._bgVisual = new draw.MultiPath({
|
|
828
800
|
fill: {
|
|
829
801
|
color: background,
|
|
830
802
|
opacity: opacity
|
|
@@ -840,24 +812,24 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
840
812
|
this.addBackgroundPaths(bg);
|
|
841
813
|
|
|
842
814
|
this.appendVisual(bg);
|
|
843
|
-
}
|
|
815
|
+
}
|
|
844
816
|
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
817
|
+
pointsByCategoryIndex(categoryIndex) {
|
|
818
|
+
const charts = this.charts;
|
|
819
|
+
const result = [];
|
|
848
820
|
|
|
849
821
|
if (categoryIndex !== null) {
|
|
850
|
-
for (
|
|
851
|
-
|
|
822
|
+
for (let i = 0; i < charts.length; i++) {
|
|
823
|
+
const chart = charts[i];
|
|
852
824
|
|
|
853
825
|
if (chart.pane.options.name === "_navigator") {
|
|
854
826
|
continue;
|
|
855
827
|
}
|
|
856
828
|
|
|
857
|
-
|
|
829
|
+
const points = charts[i].categoryPoints[categoryIndex];
|
|
858
830
|
if (points && points.length) {
|
|
859
|
-
for (
|
|
860
|
-
|
|
831
|
+
for (let j = 0; j < points.length; j++) {
|
|
832
|
+
const point = points[j];
|
|
861
833
|
if (point && defined(point.value) && point.value !== null) {
|
|
862
834
|
result.push(point);
|
|
863
835
|
}
|
|
@@ -867,35 +839,35 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
867
839
|
}
|
|
868
840
|
|
|
869
841
|
return result;
|
|
870
|
-
}
|
|
842
|
+
}
|
|
871
843
|
|
|
872
|
-
|
|
844
|
+
pointsBySeriesIndex(seriesIndex) {
|
|
873
845
|
return this.filterPoints(function(point) {
|
|
874
846
|
return point.series.index === seriesIndex;
|
|
875
847
|
});
|
|
876
|
-
}
|
|
848
|
+
}
|
|
877
849
|
|
|
878
|
-
|
|
850
|
+
pointsByPointIndex(pointIndex) {
|
|
879
851
|
return this.filterPoints(function(point) {
|
|
880
852
|
return point.getIndex() === pointIndex;
|
|
881
853
|
});
|
|
882
|
-
}
|
|
854
|
+
}
|
|
883
855
|
|
|
884
|
-
|
|
856
|
+
pointsBySeriesName(name) {
|
|
885
857
|
return this.filterPoints(function(point) {
|
|
886
858
|
return point.series.name === name;
|
|
887
859
|
});
|
|
888
|
-
}
|
|
860
|
+
}
|
|
889
861
|
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
862
|
+
filterPoints(callback) {
|
|
863
|
+
const charts = this.charts;
|
|
864
|
+
const result = [];
|
|
893
865
|
|
|
894
|
-
for (
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
for (
|
|
898
|
-
|
|
866
|
+
for (let i = 0; i < charts.length; i++) {
|
|
867
|
+
const chart = charts[i];
|
|
868
|
+
const points = chart.points;
|
|
869
|
+
for (let j = 0; j < points.length; j++) {
|
|
870
|
+
const point = points[j];
|
|
899
871
|
if (point && point.visible !== false && callback(point)) {
|
|
900
872
|
result.push(point);
|
|
901
873
|
}
|
|
@@ -903,81 +875,79 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
903
875
|
}
|
|
904
876
|
|
|
905
877
|
return result;
|
|
906
|
-
}
|
|
878
|
+
}
|
|
907
879
|
|
|
908
|
-
|
|
909
|
-
|
|
880
|
+
findPoint(callback) {
|
|
881
|
+
const charts = this.charts;
|
|
910
882
|
|
|
911
|
-
for (
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
for (
|
|
915
|
-
|
|
883
|
+
for (let i = 0; i < charts.length; i++) {
|
|
884
|
+
const chart = charts[i];
|
|
885
|
+
const points = chart.points;
|
|
886
|
+
for (let j = 0; j < points.length; j++) {
|
|
887
|
+
const point = points[j];
|
|
916
888
|
if (point && point.visible !== false && callback(point)) {
|
|
917
889
|
return point;
|
|
918
890
|
}
|
|
919
891
|
}
|
|
920
892
|
}
|
|
921
|
-
}
|
|
893
|
+
}
|
|
922
894
|
|
|
923
|
-
|
|
924
|
-
|
|
895
|
+
paneByPoint(point) {
|
|
896
|
+
const panes = this.panes;
|
|
925
897
|
|
|
926
|
-
for (
|
|
927
|
-
|
|
898
|
+
for (let i = 0; i < panes.length; i++) {
|
|
899
|
+
const pane = panes[i];
|
|
928
900
|
if (pane.box.containsPoint(point)) {
|
|
929
901
|
return pane;
|
|
930
902
|
}
|
|
931
903
|
}
|
|
932
|
-
}
|
|
904
|
+
}
|
|
933
905
|
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
906
|
+
detachLabels() {
|
|
907
|
+
const axes = this.groupAxes(this.panes);
|
|
908
|
+
const xAxes = axes.x;
|
|
909
|
+
const yAxes = axes.y;
|
|
938
910
|
|
|
939
911
|
this.detachAxisGroupLabels(yAxes, xAxes);
|
|
940
912
|
this.detachAxisGroupLabels(xAxes, yAxes);
|
|
941
|
-
}
|
|
942
|
-
|
|
943
|
-
PlotAreaBase.prototype.detachAxisGroupLabels = function detachAxisGroupLabels (axes, crossingAxes) {
|
|
944
|
-
var this$1 = this;
|
|
913
|
+
}
|
|
945
914
|
|
|
946
|
-
|
|
915
|
+
detachAxisGroupLabels(axes, crossingAxes) {
|
|
916
|
+
let labelAxisCount = 0;
|
|
947
917
|
|
|
948
|
-
for (
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
918
|
+
for (let i = 0; i < axes.length; i++) {
|
|
919
|
+
const axis = axes[i];
|
|
920
|
+
const pane = axis.pane;
|
|
921
|
+
const anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];
|
|
922
|
+
const axisIndex = i + labelAxisCount;
|
|
923
|
+
const labelAxis = this.createLabelAxis(axis, axisIndex, anchor);
|
|
954
924
|
|
|
955
925
|
if (labelAxis) {
|
|
956
926
|
labelAxisCount++;
|
|
957
927
|
|
|
958
|
-
|
|
928
|
+
const pos = pane.axes.indexOf(axis) + labelAxisCount;
|
|
959
929
|
pane.appendAxisAt(labelAxis, pos);
|
|
960
930
|
}
|
|
961
931
|
}
|
|
962
|
-
}
|
|
932
|
+
}
|
|
963
933
|
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
934
|
+
createLabelAxis(axis, axisIndex, anchor) {
|
|
935
|
+
const labelOptions = axis.options.labels;
|
|
936
|
+
const position = labelOptions.position;
|
|
937
|
+
const onAxis = position !== END && position !== START;
|
|
938
|
+
const visible = labelOptions.visible;
|
|
969
939
|
|
|
970
940
|
if (onAxis || visible === false) {
|
|
971
941
|
return null;
|
|
972
942
|
}
|
|
973
943
|
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
944
|
+
const allAxes = this.groupAxes(this.panes);
|
|
945
|
+
const crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;
|
|
946
|
+
const anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);
|
|
947
|
+
const end = position === END;
|
|
948
|
+
const range = anchor.range();
|
|
949
|
+
const edge = end ? range.max : range.min;
|
|
950
|
+
const crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);
|
|
981
951
|
|
|
982
952
|
if (crossingValue - edge === 0) {
|
|
983
953
|
return null;
|
|
@@ -986,7 +956,7 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
986
956
|
anchorCrossings.splice(axisIndex + 1, 0, edge);
|
|
987
957
|
anchor.options.axisCrossingValues = anchorCrossings;
|
|
988
958
|
|
|
989
|
-
|
|
959
|
+
const labelAxis = axis.clone();
|
|
990
960
|
axis.clear();
|
|
991
961
|
|
|
992
962
|
labelAxis.options.name = undefined;
|
|
@@ -997,34 +967,32 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
997
967
|
labelAxis.options.plotBands = undefined;
|
|
998
968
|
|
|
999
969
|
return labelAxis;
|
|
1000
|
-
}
|
|
970
|
+
}
|
|
1001
971
|
|
|
1002
|
-
|
|
972
|
+
isTrendline(series) {
|
|
1003
973
|
return series && inArray(series.type, TRENDLINE_SERIES);
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
PlotAreaBase.prototype.trendlineFactory = function trendlineFactory () { /* abstract */ };
|
|
974
|
+
}
|
|
1007
975
|
|
|
1008
|
-
|
|
1009
|
-
var this$1 = this;
|
|
976
|
+
trendlineFactory() { /* abstract */ }
|
|
1010
977
|
|
|
1011
|
-
|
|
978
|
+
createTrendlineSeries() {
|
|
979
|
+
const modifiedSeries = [];
|
|
1012
980
|
|
|
1013
|
-
this.series = this.series.map(
|
|
1014
|
-
if (!this
|
|
981
|
+
this.series = this.series.map(series => {
|
|
982
|
+
if (!this.isTrendline(series)) {
|
|
1015
983
|
return series;
|
|
1016
984
|
}
|
|
1017
985
|
|
|
1018
|
-
|
|
986
|
+
const forSeries = this.seriesByName(series.for);
|
|
1019
987
|
if (!forSeries) {
|
|
1020
988
|
throw new Error('Invalid Configuration: Unable to locate linked series ' +
|
|
1021
|
-
"
|
|
989
|
+
`"${series.for}" for trendline "${series.name}".`);
|
|
1022
990
|
}
|
|
1023
991
|
|
|
1024
|
-
|
|
1025
|
-
|
|
992
|
+
const valueFields = SeriesBinder.current.valueFields(forSeries);
|
|
993
|
+
const field = last(valueFields); // Use the last field for multi-field series
|
|
1026
994
|
|
|
1027
|
-
|
|
995
|
+
const trendlineSeries = this.trendlineFactory(Object.assign({}, {field}, series), forSeries);
|
|
1028
996
|
if (trendlineSeries) {
|
|
1029
997
|
if (forSeries.visible === false) {
|
|
1030
998
|
trendlineSeries.visible = false;
|
|
@@ -1038,56 +1006,52 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
1038
1006
|
}
|
|
1039
1007
|
|
|
1040
1008
|
return trendlineSeries;
|
|
1041
|
-
}).filter(
|
|
1009
|
+
}).filter(series => series !== null);
|
|
1042
1010
|
|
|
1043
1011
|
return modifiedSeries;
|
|
1044
|
-
}
|
|
1045
|
-
|
|
1046
|
-
PlotAreaBase.prototype.seriesByName = function seriesByName (name) {
|
|
1047
|
-
return this.series.find(function (series) { return series.name === name; });
|
|
1048
|
-
};
|
|
1012
|
+
}
|
|
1049
1013
|
|
|
1050
|
-
|
|
1051
|
-
|
|
1014
|
+
seriesByName(name) {
|
|
1015
|
+
return this.series.find(series => series.name === name);
|
|
1016
|
+
}
|
|
1052
1017
|
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1018
|
+
getFirstPoint() {
|
|
1019
|
+
for (let i = 0; i < this.series.length; i++) {
|
|
1020
|
+
const points = this.pointsBySeriesIndex(i);
|
|
1021
|
+
const point = points.find(visiblePoint);
|
|
1056
1022
|
if (point) {
|
|
1057
1023
|
return point;
|
|
1058
1024
|
}
|
|
1059
1025
|
}
|
|
1060
|
-
}
|
|
1026
|
+
}
|
|
1061
1027
|
|
|
1062
|
-
|
|
1028
|
+
getPointBelow(point) {
|
|
1063
1029
|
return this._getNextPoint(point, this._pointsByVertical, 1);
|
|
1064
|
-
}
|
|
1030
|
+
}
|
|
1065
1031
|
|
|
1066
|
-
|
|
1032
|
+
getPointAbove(point) {
|
|
1067
1033
|
return this._getNextPoint(point, this._pointsByVertical, -1);
|
|
1068
|
-
}
|
|
1034
|
+
}
|
|
1069
1035
|
|
|
1070
|
-
|
|
1036
|
+
getPointToTheRight(point) {
|
|
1071
1037
|
return this._getNextPoint(point, this._pointsByHorizontal, 1);
|
|
1072
|
-
}
|
|
1038
|
+
}
|
|
1073
1039
|
|
|
1074
|
-
|
|
1040
|
+
getPointToTheLeft(point) {
|
|
1075
1041
|
return this._getNextPoint(point, this._pointsByHorizontal, -1);
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
PlotAreaBase.prototype._getNextPoint = function _getNextPoint (point, getPointsFunc, increment) {
|
|
1079
|
-
var this$1 = this;
|
|
1042
|
+
}
|
|
1080
1043
|
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1044
|
+
_getNextPoint(point, getPointsFunc, increment) {
|
|
1045
|
+
let points = getPointsFunc.call(this, point).filter(visiblePoint);
|
|
1046
|
+
const pointIndex = points.indexOf(point);
|
|
1047
|
+
let nextIndex = pointIndex + increment;
|
|
1048
|
+
const loopPoints = (direction) => {
|
|
1085
1049
|
// loop over to last non-empty collection
|
|
1086
|
-
|
|
1087
|
-
|
|
1050
|
+
let result;
|
|
1051
|
+
let offset = 0;
|
|
1088
1052
|
do {
|
|
1089
1053
|
offset += direction;
|
|
1090
|
-
result = getPointsFunc.call(this
|
|
1054
|
+
result = getPointsFunc.call(this, point, offset).filter(visiblePoint);
|
|
1091
1055
|
} while (result.length === 0);
|
|
1092
1056
|
|
|
1093
1057
|
return result;
|
|
@@ -1104,36 +1068,33 @@ var PlotAreaBase = (function (ChartElement) {
|
|
|
1104
1068
|
}
|
|
1105
1069
|
|
|
1106
1070
|
return points[nextIndex];
|
|
1107
|
-
}
|
|
1071
|
+
}
|
|
1108
1072
|
|
|
1109
|
-
|
|
1073
|
+
_pointsByVertical(basePoint) {
|
|
1110
1074
|
return this.pointsByPointIndex(basePoint.getIndex());
|
|
1111
|
-
}
|
|
1112
|
-
|
|
1113
|
-
PlotAreaBase.prototype._pointsByHorizontal = function _pointsByHorizontal (basePoint, offset) {
|
|
1114
|
-
if ( offset === void 0 ) offset = 0;
|
|
1075
|
+
}
|
|
1115
1076
|
|
|
1116
|
-
|
|
1077
|
+
_pointsByHorizontal(basePoint, offset = 0) {
|
|
1078
|
+
let index = cycleIndex(basePoint.series.index + offset, this.series.length);
|
|
1117
1079
|
return this.pointsBySeriesIndex(index);
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
return PlotAreaBase;
|
|
1121
|
-
}(ChartElement));
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1122
1082
|
|
|
1123
1083
|
function isSingleAxis(axis) {
|
|
1124
|
-
return !axis.pane.axes.some(
|
|
1084
|
+
return !axis.pane.axes.some((a) =>
|
|
1085
|
+
a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false
|
|
1125
1086
|
);
|
|
1126
1087
|
}
|
|
1127
1088
|
|
|
1128
1089
|
function axisGroupBox(axes) {
|
|
1129
|
-
|
|
1130
|
-
|
|
1090
|
+
const length = axes.length;
|
|
1091
|
+
let box;
|
|
1131
1092
|
|
|
1132
|
-
for (
|
|
1133
|
-
|
|
1134
|
-
|
|
1093
|
+
for (let i = 0; i < length; i++) {
|
|
1094
|
+
const axis = axes[i];
|
|
1095
|
+
const visible = axis.options.visible !== false;
|
|
1135
1096
|
if (visible || isSingleAxis(axis)) {
|
|
1136
|
-
|
|
1097
|
+
const axisBox = visible ? axis.contentBox() : axis.lineBox();
|
|
1137
1098
|
|
|
1138
1099
|
if (!box) {
|
|
1139
1100
|
box = axisBox.clone();
|
|
@@ -1147,8 +1108,8 @@ function axisGroupBox(axes) {
|
|
|
1147
1108
|
}
|
|
1148
1109
|
|
|
1149
1110
|
function paneAnchor(axes, pane) {
|
|
1150
|
-
for (
|
|
1151
|
-
|
|
1111
|
+
for (let i = 0; i < axes.length; i++) {
|
|
1112
|
+
const anchor = axes[i];
|
|
1152
1113
|
if (anchor && anchor.pane === pane) {
|
|
1153
1114
|
return anchor;
|
|
1154
1115
|
}
|
|
@@ -1159,7 +1120,7 @@ function isTransparent(color) {
|
|
|
1159
1120
|
return color === "" || color === null || color === "none" || color === "transparent" || !defined(color);
|
|
1160
1121
|
}
|
|
1161
1122
|
|
|
1162
|
-
|
|
1123
|
+
const allPaneAxes = (panes) => panes.reduce((acc, pane) => acc.concat(pane.axes), []);
|
|
1163
1124
|
|
|
1164
1125
|
setDefaultOptions(PlotAreaBase, {
|
|
1165
1126
|
series: [],
|