highcharts 7.1.1 → 7.1.2
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/bower.json +1 -1
- package/css/annotations/popup.css +3 -3
- package/css/annotations/popup.scss +1 -1
- package/css/stocktools/gui.css +5 -5
- package/css/stocktools/gui.scss +1 -1
- package/es-modules/annotations/ControlPoint.js +1 -1
- package/es-modules/annotations/MockPoint.js +45 -12
- package/es-modules/annotations/annotations.src.js +203 -166
- package/es-modules/annotations/controllable/ControllableCircle.js +2 -10
- package/es-modules/annotations/controllable/ControllableImage.js +2 -10
- package/es-modules/annotations/controllable/ControllableLabel.js +54 -9
- package/es-modules/annotations/controllable/ControllableRect.js +2 -10
- package/es-modules/annotations/controllable/controllableMixin.js +32 -4
- package/es-modules/annotations/controllable/markerMixin.js +1 -0
- package/es-modules/annotations/eventEmitterMixin.js +1 -0
- package/es-modules/annotations/navigationBindings.js +15 -11
- package/es-modules/annotations/popup.js +59 -81
- package/es-modules/annotations/types/CrookedLine.js +19 -7
- package/es-modules/annotations/types/ElliottWave.js +7 -6
- package/es-modules/annotations/types/Fibonacci.js +14 -14
- package/es-modules/annotations/types/InfinityLine.js +4 -4
- package/es-modules/annotations/types/Measure.js +41 -41
- package/es-modules/annotations/types/Pitchfork.js +5 -4
- package/es-modules/annotations/types/VerticalLine.js +6 -5
- package/es-modules/error-messages.js +6 -1
- package/es-modules/indicators/indicators.src.js +5 -3
- package/es-modules/mixins/nodes.js +16 -8
- package/es-modules/modules/accessibility/AccessibilityComponent.js +4 -4
- package/es-modules/modules/accessibility/KeyboardNavigation.js +17 -4
- package/es-modules/modules/accessibility/components/RangeSelectorComponent.js +3 -2
- package/es-modules/modules/accessibility/components/SeriesComponent.js +110 -2
- package/es-modules/modules/accessibility/components/ZoomComponent.js +1 -1
- package/es-modules/modules/accessibility/options.js +2 -1
- package/es-modules/modules/bellcurve.src.js +27 -29
- package/es-modules/modules/boost/boost-init.js +14 -0
- package/es-modules/modules/boost/boost-overrides.js +13 -3
- package/es-modules/modules/boost/wgl-renderer.js +30 -15
- package/es-modules/modules/boost/wgl-shader.js +33 -16
- package/es-modules/modules/boost/wgl-vbuffer.js +8 -4
- package/es-modules/modules/broken-axis.src.js +1 -1
- package/es-modules/modules/bullet.src.js +68 -68
- package/es-modules/modules/cylinder.src.js +3 -1
- package/es-modules/modules/data.src.js +9 -5
- package/es-modules/modules/draggable-points.src.js +1 -1
- package/es-modules/modules/drilldown.src.js +1 -1
- package/es-modules/modules/export-data.src.js +7 -8
- package/es-modules/modules/exporting.src.js +9 -1
- package/es-modules/modules/full-screen.src.js +1 -1
- package/es-modules/modules/funnel3d.src.js +10 -3
- package/es-modules/modules/histogram.src.js +162 -164
- package/es-modules/modules/item-series.src.js +10 -10
- package/es-modules/modules/networkgraph/layouts.js +16 -12
- package/es-modules/modules/networkgraph/networkgraph.src.js +147 -51
- package/es-modules/modules/offline-exporting.src.js +15 -2
- package/es-modules/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/modules/organization.src.js +65 -20
- package/es-modules/modules/pareto.src.js +52 -51
- package/es-modules/modules/pattern-fill.src.js +1 -1
- package/es-modules/modules/price-indicator.src.js +1 -1
- package/es-modules/modules/pyramid3d.src.js +1 -1
- package/es-modules/modules/sankey.src.js +22 -10
- package/es-modules/modules/series-label.src.js +16 -8
- package/es-modules/modules/solid-gauge.src.js +128 -79
- package/es-modules/modules/static-scale.src.js +8 -1
- package/es-modules/modules/stock-tools-gui.js +1 -1
- package/es-modules/modules/streamgraph.src.js +11 -11
- package/es-modules/modules/sunburst.src.js +23 -2
- package/es-modules/modules/tilemap.src.js +58 -57
- package/es-modules/modules/timeline.src.js +17 -12
- package/es-modules/modules/treemap.src.js +6 -6
- package/es-modules/modules/variwide.src.js +39 -39
- package/es-modules/modules/vector.src.js +108 -107
- package/es-modules/modules/venn.src.js +4 -2
- package/es-modules/modules/windbarb.src.js +43 -43
- package/es-modules/modules/wordcloud.src.js +1 -0
- package/es-modules/modules/xrange.src.js +112 -104
- package/es-modules/parts/AreaSeries.js +4 -1
- package/es-modules/parts/Axis.js +809 -1870
- package/es-modules/parts/Chart.js +254 -743
- package/es-modules/parts/Color.js +160 -113
- package/es-modules/parts/ColumnSeries.js +9 -3
- package/es-modules/parts/DataLabels.js +31 -2
- package/es-modules/parts/Dynamics.js +73 -26
- package/es-modules/parts/FlagsSeries.js +6 -4
- package/es-modules/parts/Globals.js +20 -36
- package/es-modules/parts/Html.js +116 -235
- package/es-modules/parts/Interaction.js +17 -7
- package/es-modules/parts/Legend.js +277 -632
- package/es-modules/parts/MSPointer.js +62 -106
- package/es-modules/parts/Options.js +128 -367
- package/es-modules/parts/OrdinalAxis.js +12 -0
- package/es-modules/parts/PieSeries.js +61 -44
- package/es-modules/parts/PlotLineOrBand.js +38 -3
- package/es-modules/parts/Point.js +117 -227
- package/es-modules/parts/Pointer.js +273 -558
- package/es-modules/parts/RangeSelector.js +5 -3
- package/es-modules/parts/Responsive.js +8 -4
- package/es-modules/parts/ScrollablePlotArea.js +215 -81
- package/es-modules/parts/Scrollbar.js +38 -23
- package/es-modules/parts/Series.js +151 -47
- package/es-modules/parts/Stacking.js +8 -3
- package/es-modules/parts/StockChart.js +42 -29
- package/es-modules/parts/SvgRenderer.js +1080 -2100
- package/es-modules/parts/Tick.js +11 -4
- package/es-modules/parts/Time.js +179 -363
- package/es-modules/parts/Tooltip.js +23 -12
- package/es-modules/parts/TouchPointer.js +69 -187
- package/es-modules/parts/Utilities.js +593 -846
- package/es-modules/parts-3d/Axis.js +2 -2
- package/es-modules/parts-3d/Column.js +18 -8
- package/es-modules/parts-gantt/GanttSeries.js +17 -21
- package/es-modules/parts-gantt/GridAxis.js +183 -101
- package/es-modules/parts-gantt/PathfinderAlgorithms.js +2 -2
- package/es-modules/parts-gantt/TreeGrid.js +53 -36
- package/es-modules/parts-map/ColorAxis.js +35 -14
- package/es-modules/parts-map/MapBubbleSeries.js +2 -1
- package/es-modules/parts-map/MapSeries.js +29 -18
- package/es-modules/parts-more/AreaRangeSeries.js +13 -12
- package/es-modules/parts-more/ColumnRangeSeries.js +8 -2
- package/es-modules/parts-more/GaugeSeries.js +9 -9
- package/es-modules/parts-more/PackedBubbleSeries.js +152 -115
- package/es-modules/parts-more/RadialAxis.js +102 -8
- package/es-modules/parts-more/WaterfallSeries.js +148 -35
- package/highcharts-3d.js +68 -67
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +21 -11
- package/highcharts-gantt.d.ts +5 -3
- package/highcharts-gantt.js +618 -610
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.d.ts +5 -3
- package/highcharts-gantt.src.js +5185 -8892
- package/highcharts-more.js +144 -140
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.js +449 -194
- package/highcharts.d.ts +3943 -5236
- package/highcharts.js +454 -449
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +3943 -5236
- package/highcharts.src.js +4767 -8601
- package/highmaps.d.ts +5 -3
- package/highmaps.js +498 -494
- package/highmaps.js.map +1 -1
- package/highmaps.src.d.ts +5 -3
- package/highmaps.src.js +4547 -8507
- package/highstock.d.ts +5 -3
- package/highstock.js +597 -590
- package/highstock.js.map +1 -1
- package/highstock.src.d.ts +5 -3
- package/highstock.src.js +4871 -8661
- package/indicators/acceleration-bands.js +1 -1
- package/indicators/acceleration-bands.src.js +1 -1
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +1 -1
- package/indicators/ao.src.js +1 -1
- package/indicators/apo.js +1 -1
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.js +1 -1
- package/indicators/aroon-oscillator.src.js +1 -1
- package/indicators/aroon.js +1 -1
- package/indicators/aroon.src.js +1 -1
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +1 -1
- package/indicators/bollinger-bands.src.js +1 -1
- package/indicators/cci.js +1 -1
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +1 -1
- package/indicators/chaikin.src.js +1 -1
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.src.js +1 -1
- package/indicators/dema.js +1 -1
- package/indicators/dema.src.js +1 -1
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +105 -105
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +6 -4
- package/indicators/indicators.js +9 -9
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +6 -4
- package/indicators/keltner-channels.js +1 -1
- package/indicators/keltner-channels.src.js +1 -1
- package/indicators/macd.js +1 -1
- package/indicators/macd.src.js +1 -1
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +1 -1
- package/indicators/natr.src.js +1 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +1 -1
- package/indicators/ppo.src.js +1 -1
- package/indicators/price-channel.js +1 -1
- package/indicators/price-channel.src.js +1 -1
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +1 -1
- package/indicators/regressions.src.js +1 -1
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.src.js +1 -1
- package/indicators/stochastic.js +1 -1
- package/indicators/stochastic.src.js +1 -1
- package/indicators/supertrend.js +1 -1
- package/indicators/supertrend.src.js +1 -1
- package/indicators/tema.js +1 -1
- package/indicators/tema.src.js +1 -1
- package/indicators/trix.js +1 -1
- package/indicators/trix.src.js +1 -1
- package/indicators/volume-by-price.js +1 -1
- package/indicators/volume-by-price.src.js +1 -1
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +1 -1
- package/indicators/williams-r.src.js +1 -1
- package/indicators/wma.js +1 -1
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.js +92 -89
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +138 -15
- package/modules/annotations-advanced.js +128 -127
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +514 -396
- package/modules/annotations.d.ts +36 -0
- package/modules/annotations.js +81 -81
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.d.ts +36 -0
- package/modules/annotations.src.js +418 -315
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +1 -1
- package/modules/boost-canvas.src.js +1 -1
- package/modules/boost.js +63 -63
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +99 -39
- package/modules/broken-axis.js +1 -1
- package/modules/broken-axis.src.js +2 -2
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +69 -69
- package/modules/current-date-indicator.js +1 -1
- package/modules/current-date-indicator.src.js +1 -1
- package/modules/cylinder.js +1 -1
- package/modules/cylinder.js.map +1 -1
- package/modules/cylinder.src.js +4 -2
- package/modules/data.js +4 -4
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +10 -6
- package/modules/datagrouping.js +1 -1
- package/modules/datagrouping.src.js +1 -1
- package/modules/debugger.js +4 -4
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +7 -2
- package/modules/dependency-wheel.js +1 -1
- package/modules/dependency-wheel.src.js +1 -1
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +1 -1
- package/modules/drag-panes.src.js +1 -1
- package/modules/draggable-points.js +1 -1
- package/modules/draggable-points.src.js +2 -2
- package/modules/drilldown.js +1 -1
- package/modules/drilldown.src.js +2 -2
- package/modules/export-data.js +2 -2
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +8 -9
- package/modules/exporting.js +25 -25
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.js +11 -3
- package/modules/full-screen.js +1 -1
- package/modules/full-screen.src.js +2 -2
- package/modules/funnel.js +1 -1
- package/modules/funnel.src.js +1 -1
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.js.map +1 -1
- package/modules/funnel3d.src.js +11 -4
- package/modules/gantt.js +166 -164
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +422 -295
- package/modules/grid-axis.js +18 -16
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +184 -102
- package/modules/heatmap.js +22 -22
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +36 -15
- package/modules/histogram-bellcurve.js +1 -1
- package/modules/histogram-bellcurve.js.map +1 -1
- package/modules/histogram-bellcurve.src.js +186 -183
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +11 -11
- package/modules/map-parser.js +1 -1
- package/modules/map-parser.src.js +1 -1
- package/modules/map.js +83 -83
- package/modules/map.js.map +1 -1
- package/modules/map.src.js +67 -34
- package/modules/networkgraph.js +10 -9
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.js +180 -72
- package/modules/no-data-to-display.js +1 -1
- package/modules/no-data-to-display.src.js +1 -1
- package/modules/offline-exporting.js +15 -15
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +17 -4
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +2 -2
- package/modules/oldie.js +2 -2
- package/modules/oldie.src.js +2 -2
- package/modules/organization.js +1 -1
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +66 -21
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +1 -1
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +1 -1
- package/modules/pareto.js.map +1 -1
- package/modules/pareto.src.js +53 -52
- package/modules/pathfinder.js +3 -3
- package/modules/pathfinder.js.map +1 -1
- package/modules/pathfinder.src.js +3 -3
- package/modules/pattern-fill.js +1 -1
- package/modules/pattern-fill.src.js +2 -2
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +2 -2
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +2 -2
- package/modules/sankey.js +14 -14
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.js +39 -19
- package/modules/series-label.js +16 -16
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +17 -9
- package/modules/solid-gauge.js +5 -5
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +129 -80
- package/modules/sonification.js +1 -1
- package/modules/sonification.src.js +1 -1
- package/modules/static-scale.js +4 -4
- package/modules/static-scale.js.map +1 -1
- package/modules/static-scale.src.js +9 -2
- package/modules/stock-tools.js +2 -2
- package/modules/stock-tools.src.js +3 -3
- package/modules/stock.js +146 -145
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.js +105 -61
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +12 -12
- package/modules/sunburst.js +40 -40
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +30 -9
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.js.map +1 -1
- package/modules/tilemap.src.js +59 -58
- package/modules/timeline.js +12 -11
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +18 -13
- package/modules/treegrid.js +45 -43
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +238 -139
- package/modules/treemap.js +1 -1
- package/modules/treemap.src.js +7 -7
- package/modules/variable-pie.js +1 -1
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +1 -1
- package/modules/variwide.src.js +40 -40
- package/modules/vector.js +1 -1
- package/modules/vector.js.map +1 -1
- package/modules/vector.src.js +109 -108
- package/modules/venn.js +23 -23
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +5 -3
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +44 -44
- package/modules/wordcloud.js +10 -10
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +2 -1
- package/modules/xrange.js +12 -12
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +113 -105
- package/package.json +1 -1
- package/themes/avocado.js +21 -37
- package/themes/avocado.src.js +1 -1
- package/themes/dark-blue.js +1 -1
- package/themes/dark-blue.src.js +1 -1
- package/themes/dark-green.js +1 -1
- package/themes/dark-green.src.js +1 -1
- package/themes/dark-unica.js +1 -1
- package/themes/dark-unica.src.js +1 -1
- package/themes/gray.js +1 -1
- package/themes/gray.src.js +1 -1
- package/themes/grid-light.js +1 -1
- package/themes/grid-light.src.js +1 -1
- package/themes/grid.js +1 -1
- package/themes/grid.src.js +1 -1
- package/themes/sand-signika.js +1 -1
- package/themes/sand-signika.src.js +1 -1
- package/themes/skies.js +1 -1
- package/themes/skies.src.js +1 -1
- package/themes/sunset.js +21 -37
- package/themes/sunset.src.js +1 -1
- package/.DS_Store +0 -0
- package/es-modules/.DS_Store +0 -0
- package/es-modules/modules/annotations-legacy.src.js +0 -1977
- package/js/.DS_Store +0 -0
package/modules/gantt.src.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v7.1.
|
|
2
|
+
* @license Highcharts JS v7.1.2 (2019-06-04)
|
|
3
3
|
*
|
|
4
4
|
* Gantt series
|
|
5
5
|
*
|
|
@@ -154,9 +154,50 @@
|
|
|
154
154
|
merge = H.merge,
|
|
155
155
|
pick = H.pick,
|
|
156
156
|
wrap = H.wrap,
|
|
157
|
+
Chart = H.Chart,
|
|
157
158
|
Axis = H.Axis,
|
|
158
159
|
Tick = H.Tick;
|
|
159
160
|
|
|
161
|
+
var applyGridOptions = function applyGridOptions(axis) {
|
|
162
|
+
var options = axis.options,
|
|
163
|
+
gridOptions = options && isObject(options.grid) ? options.grid : {},
|
|
164
|
+
// TODO: Consider using cell margins defined in % of font size?
|
|
165
|
+
// 25 is optimal height for default fontSize (11px)
|
|
166
|
+
// 25 / 11 ≈ 2.28
|
|
167
|
+
fontSizeToCellHeightRatio = 25 / 11,
|
|
168
|
+
fontSize = options.labels.style.fontSize,
|
|
169
|
+
fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
|
|
170
|
+
|
|
171
|
+
// Center-align by default
|
|
172
|
+
if (!options.labels) {
|
|
173
|
+
options.labels = {};
|
|
174
|
+
}
|
|
175
|
+
options.labels.align = pick(options.labels.align, 'center');
|
|
176
|
+
|
|
177
|
+
// @todo: Check against tickLabelPlacement between/on etc
|
|
178
|
+
|
|
179
|
+
/* Prevents adding the last tick label if the axis is not a category
|
|
180
|
+
axis.
|
|
181
|
+
Since numeric labels are normally placed at starts and ends of a
|
|
182
|
+
range of value, and this module makes the label point at the value,
|
|
183
|
+
an "extra" label would appear. */
|
|
184
|
+
if (!axis.categories) {
|
|
185
|
+
options.showLastLabel = false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Make tick marks taller, creating cell walls of a grid. Use cellHeight
|
|
189
|
+
// axis option if set
|
|
190
|
+
if (axis.horiz) {
|
|
191
|
+
options.tickLength = gridOptions.cellHeight ||
|
|
192
|
+
fontMetrics.h * fontSizeToCellHeightRatio;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Prevents rotation of labels when squished, as rotating them would not
|
|
196
|
+
// help.
|
|
197
|
+
axis.labelRotation = 0;
|
|
198
|
+
options.labels.rotation = 0;
|
|
199
|
+
};
|
|
200
|
+
|
|
160
201
|
/**
|
|
161
202
|
* Set grid options for the axis labels. Requires Highcharts Gantt.
|
|
162
203
|
*
|
|
@@ -273,6 +314,13 @@
|
|
|
273
314
|
}
|
|
274
315
|
}
|
|
275
316
|
});
|
|
317
|
+
|
|
318
|
+
if (isOuter && isNumber(axis.columnIndex)) {
|
|
319
|
+
var columns = axis.linkedParent && axis.linkedParent.columns ||
|
|
320
|
+
axis.columns;
|
|
321
|
+
isOuter = columns.length === axis.columnIndex;
|
|
322
|
+
}
|
|
323
|
+
|
|
276
324
|
// There were either no other axes on the same side,
|
|
277
325
|
// or the other axes were not farther from the chart
|
|
278
326
|
return isOuter;
|
|
@@ -310,6 +358,9 @@
|
|
|
310
358
|
|
|
311
359
|
// Find width and height of tick
|
|
312
360
|
tickHeight = label.getBBox ? label.getBBox().height : 0;
|
|
361
|
+
if (label.textStr && !isNumber(label.textPxLength)) {
|
|
362
|
+
label.textPxLength = label.getBBox().width;
|
|
363
|
+
}
|
|
313
364
|
tickWidth = isNumber(label.textPxLength) ? label.textPxLength : 0;
|
|
314
365
|
|
|
315
366
|
// Update the result if width and/or height are larger
|
|
@@ -825,8 +876,6 @@
|
|
|
825
876
|
min = linkedMin || axis.min,
|
|
826
877
|
max = linkedMax || axis.max,
|
|
827
878
|
tickInterval = axis.tickInterval,
|
|
828
|
-
moreThanMin = firstPos > min,
|
|
829
|
-
lessThanMax = lastPos < max,
|
|
830
879
|
endMoreThanMin = firstPos < min && firstPos + tickInterval > min,
|
|
831
880
|
startLessThanMax = lastPos > max && lastPos - tickInterval < max;
|
|
832
881
|
|
|
@@ -835,11 +884,11 @@
|
|
|
835
884
|
!categoryAxis &&
|
|
836
885
|
(axis.horiz || axis.isLinked)
|
|
837
886
|
) {
|
|
838
|
-
if (
|
|
887
|
+
if (endMoreThanMin && !options.startOnTick) {
|
|
839
888
|
tickPositions[0] = min;
|
|
840
889
|
}
|
|
841
890
|
|
|
842
|
-
if (
|
|
891
|
+
if (startLessThanMax && !options.endOnTick) {
|
|
843
892
|
tickPositions[tickPositions.length - 1] = max;
|
|
844
893
|
}
|
|
845
894
|
}
|
|
@@ -971,122 +1020,155 @@
|
|
|
971
1020
|
}
|
|
972
1021
|
}
|
|
973
1022
|
|
|
1023
|
+
(axis.columns || []).forEach(function (column) {
|
|
1024
|
+
column.render();
|
|
1025
|
+
});
|
|
974
1026
|
}
|
|
975
1027
|
}
|
|
976
1028
|
);
|
|
977
1029
|
|
|
978
|
-
//
|
|
979
|
-
|
|
1030
|
+
// Handle columns and getOffset
|
|
1031
|
+
var onGridAxisAfterGetOffset = function onGridAxisAfterGetOffset() {
|
|
1032
|
+
(this.columns || []).forEach(function (column) {
|
|
1033
|
+
column.getOffset();
|
|
1034
|
+
});
|
|
1035
|
+
};
|
|
1036
|
+
|
|
1037
|
+
var onGridAxisAfterInit = function onGridAxisAfterInit() {
|
|
980
1038
|
var axis = this,
|
|
981
1039
|
chart = axis.chart,
|
|
982
|
-
userOptions =
|
|
1040
|
+
userOptions = axis.userOptions,
|
|
1041
|
+
options = axis.options,
|
|
1042
|
+
gridOptions = options && isObject(options.grid) ? options.grid : {};
|
|
1043
|
+
|
|
1044
|
+
if (gridOptions.enabled) {
|
|
1045
|
+
applyGridOptions(axis);
|
|
1046
|
+
|
|
1047
|
+
// TODO: wrap the axis instead
|
|
1048
|
+
wrap(axis, 'labelFormatter', function (proceed) {
|
|
1049
|
+
var axis = this.axis,
|
|
1050
|
+
tickPos = axis.tickPositions,
|
|
1051
|
+
value = this.value,
|
|
1052
|
+
series = (axis.isLinked ? axis.linkedParent : axis)
|
|
1053
|
+
.series[0],
|
|
1054
|
+
isFirst = value === tickPos[0],
|
|
1055
|
+
isLast = value === tickPos[tickPos.length - 1],
|
|
1056
|
+
point = series && H.find(series.options.data, function (p) {
|
|
1057
|
+
return p[axis.isXAxis ? 'x' : 'y'] === value;
|
|
1058
|
+
});
|
|
1059
|
+
|
|
1060
|
+
// Make additional properties available for the
|
|
1061
|
+
// formatter
|
|
1062
|
+
this.isFirst = isFirst;
|
|
1063
|
+
this.isLast = isLast;
|
|
1064
|
+
this.point = point;
|
|
1065
|
+
|
|
1066
|
+
// Call original labelFormatter
|
|
1067
|
+
return proceed.call(this);
|
|
1068
|
+
});
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
if (gridOptions.columns) {
|
|
1072
|
+
var columns = axis.columns = [],
|
|
1073
|
+
columnIndex = axis.columnIndex = 0;
|
|
1074
|
+
|
|
1075
|
+
// Handle columns, each column is a grid axis
|
|
1076
|
+
while (++columnIndex < gridOptions.columns.length) {
|
|
1077
|
+
var columnOptions = merge(
|
|
1078
|
+
userOptions,
|
|
1079
|
+
gridOptions.columns[
|
|
1080
|
+
gridOptions.columns.length - columnIndex - 1
|
|
1081
|
+
],
|
|
1082
|
+
{
|
|
1083
|
+
linkedTo: 0,
|
|
1084
|
+
// Force to behave like category axis
|
|
1085
|
+
type: 'category'
|
|
1086
|
+
}
|
|
1087
|
+
);
|
|
1088
|
+
|
|
1089
|
+
delete columnOptions.grid.columns; // Prevent recursion
|
|
1090
|
+
|
|
1091
|
+
var column = new Axis(axis.chart, columnOptions, true);
|
|
1092
|
+
column.isColumn = true;
|
|
1093
|
+
column.columnIndex = columnIndex;
|
|
1094
|
+
|
|
1095
|
+
// Remove column axis from chart axes array, and place it
|
|
1096
|
+
// in the columns array.
|
|
1097
|
+
H.erase(chart.axes, column);
|
|
1098
|
+
H.erase(chart[axis.coll], column);
|
|
1099
|
+
columns.push(column);
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
};
|
|
1103
|
+
|
|
1104
|
+
var onGridAxisAfterSetChartSize = function onGridAxisAfterSetChartSize() {
|
|
1105
|
+
this.axes.forEach(function (axis) {
|
|
1106
|
+
(axis.columns || []).forEach(function (column) {
|
|
1107
|
+
column.setAxisSize();
|
|
1108
|
+
column.setAxisTranslation();
|
|
1109
|
+
});
|
|
1110
|
+
});
|
|
1111
|
+
};
|
|
1112
|
+
|
|
1113
|
+
// Handle columns and setScale
|
|
1114
|
+
var onGridAxisAfterSetScale = function onGridAxisAfterSetScale() {
|
|
1115
|
+
(this.columns || []).forEach(function (column) {
|
|
1116
|
+
column.setScale();
|
|
1117
|
+
});
|
|
1118
|
+
};
|
|
1119
|
+
|
|
1120
|
+
var onGridAxisDestroy = function onGridAxisDestroy(e) {
|
|
1121
|
+
(this.columns || []).forEach(function (column) {
|
|
1122
|
+
column.destroy(e.keepEvents);
|
|
1123
|
+
});
|
|
1124
|
+
};
|
|
1125
|
+
|
|
1126
|
+
// Wraps axis init to draw cell walls on vertical axes.
|
|
1127
|
+
var onGridAxisInit = function onGridAxisInit(e) {
|
|
1128
|
+
var userOptions = e.userOptions,
|
|
983
1129
|
gridOptions = (
|
|
984
1130
|
(userOptions && isObject(userOptions.grid)) ?
|
|
985
1131
|
userOptions.grid :
|
|
986
1132
|
{}
|
|
987
|
-
)
|
|
988
|
-
columnOptions,
|
|
989
|
-
column,
|
|
990
|
-
columnIndex,
|
|
991
|
-
i;
|
|
992
|
-
|
|
993
|
-
function applyGridOptions() {
|
|
994
|
-
var options = axis.options,
|
|
995
|
-
// TODO: Consider using cell margins defined in % of font size?
|
|
996
|
-
// 25 is optimal height for default fontSize (11px)
|
|
997
|
-
// 25 / 11 ≈ 2.28
|
|
998
|
-
fontSizeToCellHeightRatio = 25 / 11,
|
|
999
|
-
fontSize = options.labels.style.fontSize,
|
|
1000
|
-
fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
|
|
1001
|
-
|
|
1002
|
-
// Center-align by default
|
|
1003
|
-
if (!options.labels) {
|
|
1004
|
-
options.labels = {};
|
|
1005
|
-
}
|
|
1006
|
-
options.labels.align = pick(options.labels.align, 'center');
|
|
1007
|
-
|
|
1008
|
-
// @todo: Check against tickLabelPlacement between/on etc
|
|
1009
|
-
|
|
1010
|
-
/* Prevents adding the last tick label if the axis is not a category
|
|
1011
|
-
axis.
|
|
1012
|
-
Since numeric labels are normally placed at starts and ends of a
|
|
1013
|
-
range of value, and this module makes the label point at the value,
|
|
1014
|
-
an "extra" label would appear. */
|
|
1015
|
-
if (!axis.categories) {
|
|
1016
|
-
options.showLastLabel = false;
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
// Make tick marks taller, creating cell walls of a grid. Use cellHeight
|
|
1020
|
-
// axis option if set
|
|
1021
|
-
if (axis.horiz) {
|
|
1022
|
-
options.tickLength = gridOptions.cellHeight ||
|
|
1023
|
-
fontMetrics.h * fontSizeToCellHeightRatio;
|
|
1024
|
-
}
|
|
1025
|
-
|
|
1026
|
-
// Prevents rotation of labels when squished, as rotating them would not
|
|
1027
|
-
// help.
|
|
1028
|
-
axis.labelRotation = 0;
|
|
1029
|
-
options.labels.rotation = 0;
|
|
1030
|
-
}
|
|
1133
|
+
);
|
|
1031
1134
|
|
|
1032
|
-
if (gridOptions.enabled) {
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
}
|
|
1135
|
+
if (gridOptions.enabled && defined(gridOptions.borderColor)) {
|
|
1136
|
+
userOptions.tickColor = userOptions.lineColor = gridOptions.borderColor;
|
|
1137
|
+
}
|
|
1138
|
+
};
|
|
1037
1139
|
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
// Force to behave like category axis
|
|
1048
|
-
type: 'category'
|
|
1049
|
-
}
|
|
1050
|
-
);
|
|
1140
|
+
var onGridAxisAfterSetOptions = function onGridAxisAfterSetOptions(e) {
|
|
1141
|
+
var axis = this,
|
|
1142
|
+
userOptions = e.userOptions,
|
|
1143
|
+
gridOptions = (
|
|
1144
|
+
(userOptions && isObject(userOptions.grid)) ?
|
|
1145
|
+
userOptions.grid :
|
|
1146
|
+
{}
|
|
1147
|
+
),
|
|
1148
|
+
columns = gridOptions.columns;
|
|
1051
1149
|
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
wrap(column, 'labelFormatter', function (proceed) {
|
|
1059
|
-
var axis = this.axis,
|
|
1060
|
-
tickPos = axis.tickPositions,
|
|
1061
|
-
value = this.value,
|
|
1062
|
-
series = axis.series[0],
|
|
1063
|
-
isFirst = value === tickPos[0],
|
|
1064
|
-
isLast = value === tickPos[tickPos.length - 1],
|
|
1065
|
-
point = H.find(series.options.data, function (p) {
|
|
1066
|
-
return p[axis.isXAxis ? 'x' : 'y'] === value;
|
|
1067
|
-
});
|
|
1150
|
+
// Add column options to the parent axis.
|
|
1151
|
+
// Children has their column options set on init in onGridAxisAfterInit.
|
|
1152
|
+
if (gridOptions.enabled && columns) {
|
|
1153
|
+
merge(true, axis.options, columns[columns.length - 1]);
|
|
1154
|
+
}
|
|
1155
|
+
};
|
|
1068
1156
|
|
|
1069
|
-
// Make additional properties available for the formatter
|
|
1070
|
-
this.isFirst = isFirst;
|
|
1071
|
-
this.isLast = isLast;
|
|
1072
|
-
this.point = point;
|
|
1073
1157
|
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1158
|
+
var axisEvents = {
|
|
1159
|
+
afterGetOffset: onGridAxisAfterGetOffset,
|
|
1160
|
+
afterInit: onGridAxisAfterInit,
|
|
1161
|
+
afterSetOptions: onGridAxisAfterSetOptions,
|
|
1162
|
+
afterSetScale: onGridAxisAfterSetScale,
|
|
1163
|
+
destroy: onGridAxisDestroy,
|
|
1164
|
+
init: onGridAxisInit
|
|
1165
|
+
};
|
|
1077
1166
|
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
addEvent(this, 'afterInit', function () {
|
|
1082
|
-
H.erase(chart.axes, this);
|
|
1083
|
-
H.erase(chart[axis.coll], this);
|
|
1084
|
-
});
|
|
1085
|
-
} else {
|
|
1086
|
-
addEvent(this, 'afterInit', applyGridOptions);
|
|
1087
|
-
}
|
|
1088
|
-
}
|
|
1167
|
+
// Add event handlers
|
|
1168
|
+
Object.keys(axisEvents).forEach(function (event) {
|
|
1169
|
+
addEvent(Axis, event, axisEvents[event]);
|
|
1089
1170
|
});
|
|
1171
|
+
addEvent(Chart, 'afterSetChartSize', onGridAxisAfterSetChartSize);
|
|
1090
1172
|
|
|
1091
1173
|
});
|
|
1092
1174
|
_registerModule(_modules, 'modules/static-scale.src.js', [_modules['parts/Globals.js']], function (H) {
|
|
@@ -1119,10 +1201,17 @@
|
|
|
1119
1201
|
*/
|
|
1120
1202
|
|
|
1121
1203
|
H.addEvent(H.Axis, 'afterSetOptions', function () {
|
|
1204
|
+
var chartOptions = this.chart.options && this.chart.options.chart;
|
|
1122
1205
|
if (
|
|
1123
1206
|
!this.horiz &&
|
|
1124
1207
|
H.isNumber(this.options.staticScale) &&
|
|
1125
|
-
|
|
1208
|
+
(
|
|
1209
|
+
!chartOptions.height ||
|
|
1210
|
+
(
|
|
1211
|
+
chartOptions.scrollablePlotArea &&
|
|
1212
|
+
chartOptions.scrollablePlotArea.minHeight
|
|
1213
|
+
)
|
|
1214
|
+
)
|
|
1126
1215
|
) {
|
|
1127
1216
|
this.staticScale = this.options.staticScale;
|
|
1128
1217
|
}
|
|
@@ -1594,7 +1683,7 @@
|
|
|
1594
1683
|
return result;
|
|
1595
1684
|
});
|
|
1596
1685
|
_registerModule(_modules, 'modules/broken-axis.src.js', [_modules['parts/Globals.js']], function (H) {
|
|
1597
|
-
|
|
1686
|
+
/* *
|
|
1598
1687
|
* (c) 2009-2019 Torstein Honsi
|
|
1599
1688
|
*
|
|
1600
1689
|
* License: www.highcharts.com/license
|
|
@@ -2612,6 +2701,19 @@
|
|
|
2612
2701
|
removeFoundExtremesEvent,
|
|
2613
2702
|
uniqueNames = options.uniqueNames,
|
|
2614
2703
|
numberOfSeries = 0,
|
|
2704
|
+
isDirty,
|
|
2705
|
+
data,
|
|
2706
|
+
treeGrid;
|
|
2707
|
+
// Check whether any of series is rendering for the first time,
|
|
2708
|
+
// visibility has changed, or its data is dirty,
|
|
2709
|
+
// and only then update. #10570, #10580
|
|
2710
|
+
isDirty = axis.series.some(function (series) {
|
|
2711
|
+
return !series.hasRendered ||
|
|
2712
|
+
series.isDirtyData ||
|
|
2713
|
+
series.isDirty;
|
|
2714
|
+
});
|
|
2715
|
+
|
|
2716
|
+
if (isDirty) {
|
|
2615
2717
|
// Concatenate data from all series assigned to this axis.
|
|
2616
2718
|
data = axis.series.reduce(function (arr, s) {
|
|
2617
2719
|
if (s.visible) {
|
|
@@ -2631,7 +2733,7 @@
|
|
|
2631
2733
|
}
|
|
2632
2734
|
}
|
|
2633
2735
|
return arr;
|
|
2634
|
-
}, [])
|
|
2736
|
+
}, []);
|
|
2635
2737
|
// setScale is fired after all the series is initialized,
|
|
2636
2738
|
// which is an ideal time to update the axis.categories.
|
|
2637
2739
|
treeGrid = getTreeGridFromData(
|
|
@@ -2640,48 +2742,52 @@
|
|
|
2640
2742
|
(uniqueNames === true) ? numberOfSeries : 1
|
|
2641
2743
|
);
|
|
2642
2744
|
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
// Update yData now that we have calculated the y values
|
|
2650
|
-
axis.series.forEach(function (series) {
|
|
2651
|
-
var data = series.options.data.map(function (d) {
|
|
2652
|
-
return isObject(d) ? merge(d) : d;
|
|
2653
|
-
});
|
|
2654
|
-
|
|
2655
|
-
// Avoid destroying points when series is not visible
|
|
2656
|
-
if (series.visible) {
|
|
2657
|
-
series.setData(data, false);
|
|
2658
|
-
}
|
|
2659
|
-
});
|
|
2745
|
+
// Assign values to the axis.
|
|
2746
|
+
axis.categories = treeGrid.categories;
|
|
2747
|
+
axis.mapOfPosToGridNode = treeGrid.mapOfPosToGridNode;
|
|
2748
|
+
axis.hasNames = true;
|
|
2749
|
+
axis.tree = treeGrid.tree;
|
|
2660
2750
|
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
to: axis.tree.height
|
|
2667
|
-
});
|
|
2751
|
+
// Update yData now that we have calculated the y values
|
|
2752
|
+
axis.series.forEach(function (series) {
|
|
2753
|
+
var data = series.options.data.map(function (d) {
|
|
2754
|
+
return isObject(d) ? merge(d) : d;
|
|
2755
|
+
});
|
|
2668
2756
|
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
H.addEvent(axis, 'foundExtremes', function () {
|
|
2675
|
-
treeGrid.collapsedNodes.forEach(function (node) {
|
|
2676
|
-
var breaks = collapse(axis, node);
|
|
2757
|
+
// Avoid destroying points when series is not visible
|
|
2758
|
+
if (series.visible) {
|
|
2759
|
+
series.setData(data, false);
|
|
2760
|
+
}
|
|
2761
|
+
});
|
|
2677
2762
|
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2763
|
+
// Calculate the label options for each level in the tree.
|
|
2764
|
+
axis.mapOptionsToLevel = getLevelOptions({
|
|
2765
|
+
defaults: labelOptions,
|
|
2766
|
+
from: 1,
|
|
2767
|
+
levels: labelOptions.levels,
|
|
2768
|
+
to: axis.tree.height
|
|
2681
2769
|
});
|
|
2770
|
+
|
|
2771
|
+
// Collapse all the nodes belonging to a point where collapsed
|
|
2772
|
+
// equals true. Only do this on init.
|
|
2773
|
+
// Can be called from beforeRender, if getBreakFromNode removes
|
|
2774
|
+
// its dependency on axis.max.
|
|
2775
|
+
if (e.type === 'beforeRender') {
|
|
2776
|
+
removeFoundExtremesEvent =
|
|
2777
|
+
H.addEvent(axis, 'foundExtremes', function () {
|
|
2778
|
+
treeGrid.collapsedNodes.forEach(function (node) {
|
|
2779
|
+
var breaks = collapse(axis, node);
|
|
2780
|
+
|
|
2781
|
+
axis.setBreaks(breaks, false);
|
|
2782
|
+
});
|
|
2783
|
+
removeFoundExtremesEvent();
|
|
2784
|
+
});
|
|
2785
|
+
}
|
|
2786
|
+
}
|
|
2682
2787
|
});
|
|
2683
2788
|
};
|
|
2684
2789
|
|
|
2790
|
+
|
|
2685
2791
|
override(GridAxis.prototype, {
|
|
2686
2792
|
init: function (proceed, chart, userOptions) {
|
|
2687
2793
|
var axis = this,
|
|
@@ -3403,8 +3509,8 @@
|
|
|
3403
3509
|
// If we are going back again, switch direction to get around start
|
|
3404
3510
|
// obstacle.
|
|
3405
3511
|
if (
|
|
3406
|
-
waypoint[dir]
|
|
3407
|
-
waypoint[dir]
|
|
3512
|
+
waypoint[dir] >= start[dir] === // Going towards max from start
|
|
3513
|
+
waypoint[dir] >= endPoint[dir] // Going towards min to end
|
|
3408
3514
|
) {
|
|
3409
3515
|
dir = dir === 'y' ? 'x' : 'y';
|
|
3410
3516
|
useMax = start[dir] < end[dir];
|
|
@@ -5593,10 +5699,9 @@
|
|
|
5593
5699
|
if (isObject(amount)) {
|
|
5594
5700
|
amount = amount.amount;
|
|
5595
5701
|
}
|
|
5596
|
-
if (
|
|
5597
|
-
amount
|
|
5702
|
+
if (isNumber(amount) && amount > 0) {
|
|
5703
|
+
return correctFloat(amount * 100) + '%';
|
|
5598
5704
|
}
|
|
5599
|
-
return correctFloat(amount * 100) + '%';
|
|
5600
5705
|
},
|
|
5601
5706
|
/** @ignore-option */
|
|
5602
5707
|
inside: true,
|
|
@@ -5624,15 +5729,16 @@
|
|
|
5624
5729
|
cropShoulder: 1,
|
|
5625
5730
|
getExtremesFromAll: true,
|
|
5626
5731
|
autoIncrement: H.noop,
|
|
5732
|
+
buildKDTree: H.noop,
|
|
5627
5733
|
/**
|
|
5628
|
-
|
|
5629
|
-
|
|
5630
|
-
|
|
5631
|
-
|
|
5632
|
-
|
|
5633
|
-
|
|
5634
|
-
|
|
5635
|
-
|
|
5734
|
+
* Borrow the column series metrics, but with swapped axes. This gives
|
|
5735
|
+
* free access to features like groupPadding, grouping, pointWidth etc.
|
|
5736
|
+
*
|
|
5737
|
+
* @private
|
|
5738
|
+
* @function Higcharts.Series#getColumnMetrics
|
|
5739
|
+
*
|
|
5740
|
+
* @return {Highcharts.ColumnMetricsObject}
|
|
5741
|
+
*/
|
|
5636
5742
|
getColumnMetrics: function () {
|
|
5637
5743
|
var metrics,
|
|
5638
5744
|
chart = this.chart;
|
|
@@ -5656,24 +5762,24 @@
|
|
|
5656
5762
|
},
|
|
5657
5763
|
|
|
5658
5764
|
/**
|
|
5659
|
-
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
|
|
5673
|
-
|
|
5674
|
-
|
|
5675
|
-
|
|
5676
|
-
|
|
5765
|
+
* Override cropData to show a point where x or x2 is outside visible
|
|
5766
|
+
* range, but one of them is inside.
|
|
5767
|
+
*
|
|
5768
|
+
* @private
|
|
5769
|
+
* @function Highcharts.Series#cropData
|
|
5770
|
+
*
|
|
5771
|
+
* @param {Array<number>} xData
|
|
5772
|
+
*
|
|
5773
|
+
* @param {Array<number>} yData
|
|
5774
|
+
*
|
|
5775
|
+
* @param {number} min
|
|
5776
|
+
*
|
|
5777
|
+
* @param {number} max
|
|
5778
|
+
*
|
|
5779
|
+
* @param {number} [cropShoulder]
|
|
5780
|
+
*
|
|
5781
|
+
* @return {*}
|
|
5782
|
+
*/
|
|
5677
5783
|
cropData: function (xData, yData, min, max) {
|
|
5678
5784
|
|
|
5679
5785
|
// Replace xData with x2Data to find the appropriate cropStart
|
|
@@ -5731,11 +5837,11 @@
|
|
|
5731
5837
|
return pointIndex;
|
|
5732
5838
|
},
|
|
5733
5839
|
/**
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5840
|
+
* @private
|
|
5841
|
+
* @function Highcharts.Series#translatePoint
|
|
5842
|
+
*
|
|
5843
|
+
* @param {Highcharts.Point} point
|
|
5844
|
+
*/
|
|
5739
5845
|
translatePoint: function (point) {
|
|
5740
5846
|
var series = this,
|
|
5741
5847
|
xAxis = series.xAxis,
|
|
@@ -5874,9 +5980,9 @@
|
|
|
5874
5980
|
},
|
|
5875
5981
|
|
|
5876
5982
|
/**
|
|
5877
|
-
|
|
5878
|
-
|
|
5879
|
-
|
|
5983
|
+
* @private
|
|
5984
|
+
* @function Highcharts.Series#translate
|
|
5985
|
+
*/
|
|
5880
5986
|
translate: function () {
|
|
5881
5987
|
columnType.prototype.translate.apply(this, arguments);
|
|
5882
5988
|
this.points.forEach(function (point) {
|
|
@@ -5885,20 +5991,20 @@
|
|
|
5885
5991
|
},
|
|
5886
5992
|
|
|
5887
5993
|
/**
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5994
|
+
* Draws a single point in the series. Needed for partial fill.
|
|
5995
|
+
*
|
|
5996
|
+
* This override turns point.graphic into a group containing the
|
|
5997
|
+
* original graphic and an overlay displaying the partial fill.
|
|
5998
|
+
*
|
|
5999
|
+
* @private
|
|
6000
|
+
* @function Highcharts.Series#drawPoint
|
|
6001
|
+
*
|
|
6002
|
+
* @param {Highcharts.Point} point
|
|
6003
|
+
* An instance of Point in the series.
|
|
6004
|
+
*
|
|
6005
|
+
* @param {"animate"|"attr"} verb
|
|
6006
|
+
* 'animate' (animates changes) or 'attr' (sets options)
|
|
6007
|
+
*/
|
|
5902
6008
|
drawPoint: function (point, verb) {
|
|
5903
6009
|
var series = this,
|
|
5904
6010
|
seriesOpts = series.options,
|
|
@@ -5912,7 +6018,7 @@
|
|
|
5912
6018
|
cutOff = seriesOpts.stacking && !seriesOpts.borderRadius,
|
|
5913
6019
|
pointState = point.state,
|
|
5914
6020
|
stateOpts = seriesOpts.states[pointState || 'normal'] || {},
|
|
5915
|
-
|
|
6021
|
+
pointStateVerb = pointState === undefined ? 'attr' : verb,
|
|
5916
6022
|
pointAttr = series.pointAttribs(point, pointState),
|
|
5917
6023
|
animation = pick(
|
|
5918
6024
|
series.chart.options.chart.animation,
|
|
@@ -5942,7 +6048,7 @@
|
|
|
5942
6048
|
point.graphicOverlay[verb](
|
|
5943
6049
|
merge(partShapeArgs)
|
|
5944
6050
|
);
|
|
5945
|
-
point.clipRect
|
|
6051
|
+
point.clipRect[verb](
|
|
5946
6052
|
merge(clipRectArgs)
|
|
5947
6053
|
);
|
|
5948
6054
|
|
|
@@ -5965,8 +6071,11 @@
|
|
|
5965
6071
|
|
|
5966
6072
|
// Presentational
|
|
5967
6073
|
if (!series.chart.styledMode) {
|
|
5968
|
-
point
|
|
5969
|
-
.
|
|
6074
|
+
point
|
|
6075
|
+
.graphicOriginal[verb](
|
|
6076
|
+
pointAttr,
|
|
6077
|
+
animation
|
|
6078
|
+
)
|
|
5970
6079
|
.shadow(seriesOpts.shadow, null, cutOff);
|
|
5971
6080
|
|
|
5972
6081
|
if (partShapeArgs) {
|
|
@@ -5988,7 +6097,11 @@
|
|
|
5988
6097
|
);
|
|
5989
6098
|
|
|
5990
6099
|
pointAttr.fill = fill;
|
|
5991
|
-
point
|
|
6100
|
+
point
|
|
6101
|
+
.graphicOverlay[pointStateVerb](
|
|
6102
|
+
pointAttr,
|
|
6103
|
+
animation
|
|
6104
|
+
)
|
|
5992
6105
|
.shadow(seriesOpts.shadow, null, cutOff);
|
|
5993
6106
|
}
|
|
5994
6107
|
}
|
|
@@ -5999,9 +6112,9 @@
|
|
|
5999
6112
|
},
|
|
6000
6113
|
|
|
6001
6114
|
/**
|
|
6002
|
-
|
|
6003
|
-
|
|
6004
|
-
|
|
6115
|
+
* @private
|
|
6116
|
+
* @function Highcharts.Series#drawPoints
|
|
6117
|
+
*/
|
|
6005
6118
|
drawPoints: function () {
|
|
6006
6119
|
var series = this,
|
|
6007
6120
|
verb = series.getAnimationVerb();
|
|
@@ -6014,14 +6127,14 @@
|
|
|
6014
6127
|
|
|
6015
6128
|
|
|
6016
6129
|
/**
|
|
6017
|
-
|
|
6018
|
-
|
|
6019
|
-
|
|
6020
|
-
|
|
6021
|
-
|
|
6022
|
-
|
|
6023
|
-
|
|
6024
|
-
|
|
6130
|
+
* Returns "animate", or "attr" if the number of points is above the
|
|
6131
|
+
* animation limit.
|
|
6132
|
+
*
|
|
6133
|
+
* @private
|
|
6134
|
+
* @function Highcharts.Series#getAnimationVerb
|
|
6135
|
+
*
|
|
6136
|
+
* @return {string}
|
|
6137
|
+
*/
|
|
6025
6138
|
getAnimationVerb: function () {
|
|
6026
6139
|
return (
|
|
6027
6140
|
this.chart.pointCount < (this.options.animationLimit || 250) ?
|
|
@@ -6031,26 +6144,27 @@
|
|
|
6031
6144
|
}
|
|
6032
6145
|
|
|
6033
6146
|
/*
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6147
|
+
// Override to remove stroke from points. For partial fill.
|
|
6148
|
+
pointAttribs: function () {
|
|
6149
|
+
var series = this,
|
|
6150
|
+
retVal = columnType.prototype.pointAttribs
|
|
6151
|
+
.apply(series, arguments);
|
|
6038
6152
|
|
|
6039
|
-
|
|
6040
|
-
|
|
6041
|
-
|
|
6042
|
-
|
|
6153
|
+
//retVal['stroke-width'] = 0;
|
|
6154
|
+
return retVal;
|
|
6155
|
+
}
|
|
6156
|
+
//*/
|
|
6043
6157
|
|
|
6044
6158
|
}, { // Point class properties
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6159
|
+
/**
|
|
6160
|
+
* Extend applyOptions so that `colorByPoint` for x-range means that one
|
|
6161
|
+
* color is applied per Y axis category.
|
|
6162
|
+
*
|
|
6163
|
+
* @private
|
|
6164
|
+
* @function Highcharts.Point#applyOptions
|
|
6165
|
+
*
|
|
6166
|
+
* @return {Highcharts.Series}
|
|
6167
|
+
*/
|
|
6054
6168
|
resolveColor: function () {
|
|
6055
6169
|
var series = this.series,
|
|
6056
6170
|
colorByPoint;
|
|
@@ -6071,13 +6185,13 @@
|
|
|
6071
6185
|
|
|
6072
6186
|
},
|
|
6073
6187
|
/**
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
|
|
6078
|
-
|
|
6079
|
-
|
|
6080
|
-
|
|
6188
|
+
* Extend init to have y default to 0.
|
|
6189
|
+
*
|
|
6190
|
+
* @private
|
|
6191
|
+
* @function Highcharts.Point#init
|
|
6192
|
+
*
|
|
6193
|
+
* @return {Highcharts.Series}
|
|
6194
|
+
*/
|
|
6081
6195
|
init: function () {
|
|
6082
6196
|
Point.prototype.init.apply(this, arguments);
|
|
6083
6197
|
|
|
@@ -6089,9 +6203,9 @@
|
|
|
6089
6203
|
},
|
|
6090
6204
|
|
|
6091
6205
|
/**
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
|
|
6206
|
+
* @private
|
|
6207
|
+
* @function Highcharts.Point#setState
|
|
6208
|
+
*/
|
|
6095
6209
|
setState: function () {
|
|
6096
6210
|
Point.prototype.setState.apply(this, arguments);
|
|
6097
6211
|
|
|
@@ -6099,11 +6213,11 @@
|
|
|
6099
6213
|
},
|
|
6100
6214
|
|
|
6101
6215
|
/**
|
|
6102
|
-
|
|
6103
|
-
|
|
6104
|
-
|
|
6105
|
-
|
|
6106
|
-
|
|
6216
|
+
* @private
|
|
6217
|
+
* @function Highcharts.Point#getLabelConfig
|
|
6218
|
+
*
|
|
6219
|
+
* @return {Highcharts.PointLabelObject}
|
|
6220
|
+
*/
|
|
6107
6221
|
// Add x2 and yCategory to the available properties for tooltip formats
|
|
6108
6222
|
getLabelConfig: function () {
|
|
6109
6223
|
var point = this,
|
|
@@ -6117,11 +6231,11 @@
|
|
|
6117
6231
|
tooltipDateKeys: ['x', 'x2'],
|
|
6118
6232
|
|
|
6119
6233
|
/**
|
|
6120
|
-
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6234
|
+
* @private
|
|
6235
|
+
* @function Highcharts.Point#isValid
|
|
6236
|
+
*
|
|
6237
|
+
* @return {boolean}
|
|
6238
|
+
*/
|
|
6125
6239
|
isValid: function () {
|
|
6126
6240
|
return typeof this.x === 'number' &&
|
|
6127
6241
|
typeof this.x2 === 'number';
|
|
@@ -6276,13 +6390,11 @@
|
|
|
6276
6390
|
|
|
6277
6391
|
|
|
6278
6392
|
var dateFormat = H.dateFormat,
|
|
6279
|
-
isObject = H.isObject,
|
|
6280
6393
|
isNumber = H.isNumber,
|
|
6281
6394
|
merge = H.merge,
|
|
6282
6395
|
pick = H.pick,
|
|
6283
6396
|
seriesType = H.seriesType,
|
|
6284
6397
|
seriesTypes = H.seriesTypes,
|
|
6285
|
-
stop = H.stop,
|
|
6286
6398
|
Series = H.Series,
|
|
6287
6399
|
parent = seriesTypes.xrange;
|
|
6288
6400
|
|
|
@@ -6310,19 +6422,7 @@
|
|
|
6310
6422
|
|
|
6311
6423
|
dataLabels: {
|
|
6312
6424
|
/** @ignore-option */
|
|
6313
|
-
enabled: true
|
|
6314
|
-
/** @ignore-option */
|
|
6315
|
-
formatter: function () {
|
|
6316
|
-
var point = this,
|
|
6317
|
-
amount = point.point.partialFill;
|
|
6318
|
-
|
|
6319
|
-
if (isObject(amount)) {
|
|
6320
|
-
amount = amount.amount;
|
|
6321
|
-
}
|
|
6322
|
-
if (isNumber(amount) && amount > 0) {
|
|
6323
|
-
return (amount * 100) + '%';
|
|
6324
|
-
}
|
|
6325
|
-
}
|
|
6425
|
+
enabled: true
|
|
6326
6426
|
},
|
|
6327
6427
|
tooltip: {
|
|
6328
6428
|
headerFormat: '<span style="font-size: 10px">{series.name}</span><br/>',
|
|
@@ -6332,12 +6432,10 @@
|
|
|
6332
6432
|
series = point.series,
|
|
6333
6433
|
tooltip = series.chart.tooltip,
|
|
6334
6434
|
xAxis = series.xAxis,
|
|
6335
|
-
|
|
6336
|
-
formats = options.dateTimeLabelFormats,
|
|
6435
|
+
formats = series.tooltipOptions.dateTimeLabelFormats,
|
|
6337
6436
|
startOfWeek = xAxis.options.startOfWeek,
|
|
6338
6437
|
ttOptions = series.tooltipOptions,
|
|
6339
6438
|
format = ttOptions.xDateFormat,
|
|
6340
|
-
range = point.end ? point.end - point.start : 0,
|
|
6341
6439
|
start,
|
|
6342
6440
|
end,
|
|
6343
6441
|
milestone = point.options.milestone,
|
|
@@ -6350,7 +6448,7 @@
|
|
|
6350
6448
|
if (!format) {
|
|
6351
6449
|
format = H.splat(
|
|
6352
6450
|
tooltip.getDateFormat(
|
|
6353
|
-
|
|
6451
|
+
xAxis.closestPointRange,
|
|
6354
6452
|
point.start,
|
|
6355
6453
|
startOfWeek,
|
|
6356
6454
|
formats
|
|
@@ -6367,7 +6465,7 @@
|
|
|
6367
6465
|
retVal += 'Start: ' + start + '<br/>';
|
|
6368
6466
|
retVal += 'End: ' + end + '<br/>';
|
|
6369
6467
|
} else {
|
|
6370
|
-
retVal +=
|
|
6468
|
+
retVal += start + '<br/>';
|
|
6371
6469
|
}
|
|
6372
6470
|
|
|
6373
6471
|
return retVal;
|
|
@@ -6456,7 +6554,6 @@
|
|
|
6456
6554
|
);
|
|
6457
6555
|
|
|
6458
6556
|
if (graphic) {
|
|
6459
|
-
stop(graphic);
|
|
6460
6557
|
graphic[verb]({
|
|
6461
6558
|
d: diamondShape
|
|
6462
6559
|
});
|
|
@@ -6524,6 +6621,19 @@
|
|
|
6524
6621
|
retVal = parent.prototype.pointClass.prototype.applyOptions
|
|
6525
6622
|
.call(point, retVal, x);
|
|
6526
6623
|
return retVal;
|
|
6624
|
+
},
|
|
6625
|
+
isValid: function () {
|
|
6626
|
+
return (
|
|
6627
|
+
(
|
|
6628
|
+
typeof this.start === 'number' ||
|
|
6629
|
+
typeof this.x === 'number'
|
|
6630
|
+
) &&
|
|
6631
|
+
(
|
|
6632
|
+
typeof this.end === 'number' ||
|
|
6633
|
+
typeof this.x2 === 'number' ||
|
|
6634
|
+
this.milestone
|
|
6635
|
+
)
|
|
6636
|
+
);
|
|
6527
6637
|
}
|
|
6528
6638
|
}));
|
|
6529
6639
|
|
|
@@ -7865,7 +7975,9 @@
|
|
|
7865
7975
|
pick(axis.dataMax, axis.max) // #6930
|
|
7866
7976
|
),
|
|
7867
7977
|
scrollbar = axis.scrollbar,
|
|
7868
|
-
|
|
7978
|
+
offset = axis.axisTitleMargin + (axis.titleOffset || 0),
|
|
7979
|
+
scrollbarsOffsets = axis.chart.scrollbarsOffsets,
|
|
7980
|
+
axisMargin = axis.options.margin || 0,
|
|
7869
7981
|
offsetsIndex,
|
|
7870
7982
|
from,
|
|
7871
7983
|
to;
|
|
@@ -7873,49 +7985,62 @@
|
|
|
7873
7985
|
if (scrollbar) {
|
|
7874
7986
|
|
|
7875
7987
|
if (axis.horiz) {
|
|
7988
|
+
|
|
7989
|
+
// Reserve space for labels/title
|
|
7990
|
+
if (!axis.opposite) {
|
|
7991
|
+
scrollbarsOffsets[1] += offset;
|
|
7992
|
+
}
|
|
7993
|
+
|
|
7876
7994
|
scrollbar.position(
|
|
7877
7995
|
axis.left,
|
|
7878
|
-
axis.top + axis.height + 2 +
|
|
7879
|
-
axis.
|
|
7880
|
-
(axis.opposite ?
|
|
7881
|
-
0 :
|
|
7882
|
-
titleOffset + axis.axisTitleMargin + axis.offset
|
|
7883
|
-
),
|
|
7996
|
+
axis.top + axis.height + 2 + scrollbarsOffsets[1] -
|
|
7997
|
+
(axis.opposite ? axisMargin : 0),
|
|
7884
7998
|
axis.width,
|
|
7885
7999
|
axis.height
|
|
7886
8000
|
);
|
|
8001
|
+
|
|
8002
|
+
// Next scrollbar should reserve space for margin (if set)
|
|
8003
|
+
if (!axis.opposite) {
|
|
8004
|
+
scrollbarsOffsets[1] += axisMargin;
|
|
8005
|
+
}
|
|
8006
|
+
|
|
7887
8007
|
offsetsIndex = 1;
|
|
7888
8008
|
} else {
|
|
8009
|
+
|
|
8010
|
+
// Reserve space for labels/title
|
|
8011
|
+
if (axis.opposite) {
|
|
8012
|
+
scrollbarsOffsets[0] += offset;
|
|
8013
|
+
}
|
|
8014
|
+
|
|
7889
8015
|
scrollbar.position(
|
|
7890
|
-
axis.left + axis.width + 2 +
|
|
7891
|
-
axis.
|
|
7892
|
-
(axis.opposite ?
|
|
7893
|
-
titleOffset + axis.axisTitleMargin + axis.offset :
|
|
7894
|
-
0
|
|
7895
|
-
),
|
|
8016
|
+
axis.left + axis.width + 2 + scrollbarsOffsets[0] -
|
|
8017
|
+
(axis.opposite ? 0 : axisMargin),
|
|
7896
8018
|
axis.top,
|
|
7897
8019
|
axis.width,
|
|
7898
8020
|
axis.height
|
|
7899
8021
|
);
|
|
8022
|
+
|
|
8023
|
+
// Next scrollbar should reserve space for margin (if set)
|
|
8024
|
+
if (axis.opposite) {
|
|
8025
|
+
scrollbarsOffsets[0] += axisMargin;
|
|
8026
|
+
}
|
|
8027
|
+
|
|
7900
8028
|
offsetsIndex = 0;
|
|
7901
8029
|
}
|
|
7902
8030
|
|
|
7903
|
-
|
|
7904
|
-
|
|
7905
|
-
) {
|
|
7906
|
-
axis.chart.scrollbarsOffsets[offsetsIndex] +=
|
|
7907
|
-
axis.scrollbar.size + axis.scrollbar.options.margin;
|
|
7908
|
-
}
|
|
8031
|
+
scrollbarsOffsets[offsetsIndex] += scrollbar.size +
|
|
8032
|
+
scrollbar.options.margin;
|
|
7909
8033
|
|
|
7910
8034
|
if (
|
|
7911
8035
|
isNaN(scrollMin) ||
|
|
7912
8036
|
isNaN(scrollMax) ||
|
|
7913
8037
|
!defined(axis.min) ||
|
|
7914
|
-
!defined(axis.max)
|
|
8038
|
+
!defined(axis.max) ||
|
|
8039
|
+
axis.min === axis.max // #10733
|
|
7915
8040
|
) {
|
|
7916
|
-
// default action: when
|
|
7917
|
-
// scrollbar exists, make it full size
|
|
7918
|
-
scrollbar.setRange(0,
|
|
8041
|
+
// default action: when extremes are the same or there is not
|
|
8042
|
+
// extremes on the axis, but scrollbar exists, make it full size
|
|
8043
|
+
scrollbar.setRange(0, 1);
|
|
7919
8044
|
} else {
|
|
7920
8045
|
from = (axis.min - scrollMin) / (scrollMax - scrollMin);
|
|
7921
8046
|
to = (axis.max - scrollMin) / (scrollMax - scrollMin);
|
|
@@ -9183,13 +9308,15 @@
|
|
|
9183
9308
|
};
|
|
9184
9309
|
// Hide away the input box
|
|
9185
9310
|
input.onblur = function () {
|
|
9311
|
+
// update extermes only when inputs are active
|
|
9186
9312
|
if (input === H.doc.activeElement) { // Only when focused
|
|
9187
9313
|
// Update also when no `change` event is triggered, like when
|
|
9188
9314
|
// clicking inside the SVG (#4710)
|
|
9189
9315
|
updateExtremes();
|
|
9190
|
-
rangeSelector.hideInput(name);
|
|
9191
|
-
input.blur(); // #4606
|
|
9192
9316
|
}
|
|
9317
|
+
// #10404 - move hide and blur outside focus
|
|
9318
|
+
rangeSelector.hideInput(name);
|
|
9319
|
+
input.blur(); // #4606
|
|
9193
9320
|
};
|
|
9194
9321
|
|
|
9195
9322
|
// handle changes in the input boxes
|
|
@@ -9769,7 +9896,7 @@
|
|
|
9769
9896
|
time.set(timeName, date, basePeriod + count);
|
|
9770
9897
|
|
|
9771
9898
|
if (basePeriod === time.get(timeName, date)) {
|
|
9772
|
-
|
|
9899
|
+
time.set('Date', date, 0); // #6537
|
|
9773
9900
|
}
|
|
9774
9901
|
|
|
9775
9902
|
return date.getTime() - base;
|