highcharts-rails 6.0.1 → 6.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +16 -0
- data/app/assets/javascripts/highcharts.js +188 -51
- data/app/assets/javascripts/highcharts/highcharts-3d.js +3 -4
- data/app/assets/javascripts/highcharts/highcharts-more.js +21 -5
- data/app/assets/javascripts/highcharts/modules/accessibility.js +4 -2
- data/app/assets/javascripts/highcharts/modules/annotations.js +2 -2
- data/app/assets/javascripts/highcharts/modules/boost-canvas.js +50 -195
- data/app/assets/javascripts/highcharts/modules/boost.js +202 -135
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +1 -1
- data/app/assets/javascripts/highcharts/modules/bullet.js +1 -1
- data/app/assets/javascripts/highcharts/modules/data.js +88 -59
- data/app/assets/javascripts/highcharts/modules/drag-panes.js +1 -1
- data/app/assets/javascripts/highcharts/modules/drilldown.js +25 -2
- data/app/assets/javascripts/highcharts/modules/export-data.js +6 -2
- data/app/assets/javascripts/highcharts/modules/exporting.js +1 -1
- data/app/assets/javascripts/highcharts/modules/funnel.js +1 -1
- data/app/assets/javascripts/highcharts/modules/gantt.js +2 -2
- data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
- data/app/assets/javascripts/highcharts/modules/heatmap.js +826 -820
- data/app/assets/javascripts/highcharts/modules/histogram-bellcurve.js +1 -1
- data/app/assets/javascripts/highcharts/modules/item-series.js +1 -1
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +1 -1
- data/app/assets/javascripts/highcharts/modules/offline-exporting.js +2 -2
- data/app/assets/javascripts/highcharts/modules/oldie.js +16 -2
- data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +1 -1
- data/app/assets/javascripts/highcharts/modules/parallel-coordinates.js +1 -1
- data/app/assets/javascripts/highcharts/modules/pareto.js +1 -1
- data/app/assets/javascripts/highcharts/modules/sankey.js +39 -9
- data/app/assets/javascripts/highcharts/modules/series-label.js +8 -3
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +1 -1
- data/app/assets/javascripts/highcharts/modules/static-scale.js +6 -2
- data/app/assets/javascripts/highcharts/modules/stock.js +19 -47
- data/app/assets/javascripts/highcharts/modules/streamgraph.js +1 -1
- data/app/assets/javascripts/highcharts/modules/sunburst.js +40 -15
- data/app/assets/javascripts/highcharts/modules/tilemap.js +7 -6
- data/app/assets/javascripts/highcharts/modules/treemap.js +13 -3
- data/app/assets/javascripts/highcharts/modules/variable-pie.js +1 -1
- data/app/assets/javascripts/highcharts/modules/variwide.js +1 -1
- data/app/assets/javascripts/highcharts/modules/vector.js +1 -1
- data/app/assets/javascripts/highcharts/modules/windbarb.js +1 -1
- data/app/assets/javascripts/highcharts/modules/wordcloud.js +130 -37
- data/app/assets/javascripts/highcharts/modules/xrange.js +2 -2
- data/app/assets/javascripts/highcharts/themes/avocado.js +1 -1
- data/app/assets/javascripts/highcharts/themes/dark-blue.js +1 -1
- data/app/assets/javascripts/highcharts/themes/dark-green.js +1 -1
- data/app/assets/javascripts/highcharts/themes/dark-unica.js +1 -1
- data/app/assets/javascripts/highcharts/themes/gray.js +1 -1
- data/app/assets/javascripts/highcharts/themes/grid-light.js +1 -1
- data/app/assets/javascripts/highcharts/themes/grid.js +1 -1
- data/app/assets/javascripts/highcharts/themes/sand-signika.js +1 -1
- data/app/assets/javascripts/highcharts/themes/skies.js +1 -1
- data/app/assets/javascripts/highcharts/themes/sunset.js +1 -1
- data/lib/highcharts/version.rb +1 -1
- metadata +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v6.0.
|
2
|
+
* @license Highcharts JS v6.0.2 (2017-10-20)
|
3
3
|
* Boost module
|
4
4
|
*
|
5
5
|
* (c) 2010-2017 Highsoft AS
|
@@ -271,6 +271,7 @@
|
|
271
271
|
var win = H.win,
|
272
272
|
doc = win.document,
|
273
273
|
noop = function() {},
|
274
|
+
Chart = H.Chart,
|
274
275
|
Color = H.Color,
|
275
276
|
Series = H.Series,
|
276
277
|
seriesTypes = H.seriesTypes,
|
@@ -460,7 +461,11 @@
|
|
460
461
|
r = -Number.MAX_VALUE;
|
461
462
|
|
462
463
|
each(args, function(t) {
|
463
|
-
if (
|
464
|
+
if (
|
465
|
+
typeof t !== 'undefined' &&
|
466
|
+
t !== null &&
|
467
|
+
typeof t.length !== 'undefined'
|
468
|
+
) {
|
464
469
|
// r = r < t.length ? t.length : r;
|
465
470
|
if (t.length > 0) {
|
466
471
|
r = t.length;
|
@@ -529,29 +534,35 @@
|
|
529
534
|
* @param chart {Highchart.Chart} - the chart to check
|
530
535
|
* @returns {Boolean} - true if the chart is in series boost mode
|
531
536
|
*/
|
532
|
-
function
|
537
|
+
Chart.prototype.isChartSeriesBoosting = function() {
|
533
538
|
var threshold = 50;
|
534
539
|
|
535
|
-
threshold =
|
536
|
-
|
540
|
+
threshold = (
|
541
|
+
this.options.boost &&
|
542
|
+
typeof this.options.boost.seriesThreshold !== 'undefined'
|
543
|
+
) ?
|
544
|
+
this.options.boost.seriesThreshold :
|
545
|
+
threshold;
|
537
546
|
|
538
|
-
return threshold <=
|
539
|
-
shouldForceChartSeriesBoosting(
|
540
|
-
}
|
547
|
+
return threshold <= this.series.length ||
|
548
|
+
shouldForceChartSeriesBoosting(this);
|
549
|
+
};
|
541
550
|
|
542
551
|
/*
|
543
552
|
* Returns true if the series is in boost mode
|
544
553
|
* @param series {Highchart.Series} - the series to check
|
545
554
|
* @returns {boolean} - true if the series is in boost mode
|
546
555
|
*/
|
556
|
+
/*
|
547
557
|
function isSeriesBoosting(series, overrideThreshold) {
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
558
|
+
return isChartSeriesBoosting(series.chart) ||
|
559
|
+
patientMax(
|
560
|
+
series.processedXData,
|
561
|
+
series.options.data,
|
562
|
+
series.points
|
563
|
+
) >= (overrideThreshold || series.options.boostThreshold || Number.MAX_VALUE);
|
554
564
|
}
|
565
|
+
*/
|
555
566
|
|
556
567
|
// START OF WEBGL ABSTRACTIONS
|
557
568
|
|
@@ -1239,7 +1250,7 @@
|
|
1239
1250
|
xData,
|
1240
1251
|
s;
|
1241
1252
|
|
1242
|
-
if (isSeriesBoosting
|
1253
|
+
if (series.isSeriesBoosting) {
|
1243
1254
|
isStacked = !!series.options.stacking;
|
1244
1255
|
xData = series.xData || series.options.xData || series.processedXData;
|
1245
1256
|
s = (isStacked ? series.data : (xData || series.options.data)).length;
|
@@ -1267,7 +1278,7 @@
|
|
1267
1278
|
}
|
1268
1279
|
|
1269
1280
|
each(chart.series, function(series) {
|
1270
|
-
if (isSeriesBoosting
|
1281
|
+
if (series.isSeriesBoosting) {
|
1271
1282
|
s += seriesPointCount(series);
|
1272
1283
|
}
|
1273
1284
|
});
|
@@ -1282,7 +1293,7 @@
|
|
1282
1293
|
return;
|
1283
1294
|
}
|
1284
1295
|
|
1285
|
-
if (isSeriesBoosting
|
1296
|
+
if (series.isSeriesBoosting) {
|
1286
1297
|
s = seriesPointCount(series);
|
1287
1298
|
}
|
1288
1299
|
|
@@ -2305,7 +2316,7 @@
|
|
2305
2316
|
'1.1'
|
2306
2317
|
);
|
2307
2318
|
|
2308
|
-
if (isChartSeriesBoosting(
|
2319
|
+
if (chart.isChartSeriesBoosting()) {
|
2309
2320
|
target = chart;
|
2310
2321
|
} else {
|
2311
2322
|
target = series;
|
@@ -2451,7 +2462,7 @@
|
|
2451
2462
|
if (renderer &&
|
2452
2463
|
series.renderTarget &&
|
2453
2464
|
series.canvas &&
|
2454
|
-
!
|
2465
|
+
!(chart || series.chart).isChartSeriesBoosting()
|
2455
2466
|
) {
|
2456
2467
|
renderer.render(chart || series.chart);
|
2457
2468
|
}
|
@@ -2461,23 +2472,24 @@
|
|
2461
2472
|
if (renderer &&
|
2462
2473
|
series.renderTarget &&
|
2463
2474
|
series.canvas &&
|
2464
|
-
!
|
2475
|
+
!series.chart.isChartSeriesBoosting()
|
2465
2476
|
) {
|
2466
2477
|
renderer.allocateBufferForSingleSeries(series);
|
2467
2478
|
}
|
2468
2479
|
}
|
2469
2480
|
|
2470
2481
|
/*
|
2471
|
-
* An "async" foreach loop.
|
2472
|
-
*
|
2482
|
+
* An "async" foreach loop. Uses a setTimeout to keep the loop from blocking the
|
2483
|
+
* UI thread.
|
2484
|
+
*
|
2473
2485
|
* @param arr {Array} - the array to loop through
|
2474
2486
|
* @param fn {Function} - the callback to call for each item
|
2475
2487
|
* @param finalFunc {Function} - the callback to call when done
|
2476
|
-
* @param chunkSize {Number} - the number of iterations per
|
2488
|
+
* @param chunkSize {Number} - the number of iterations per timeout
|
2477
2489
|
* @param i {Number} - the current index
|
2478
2490
|
* @param noTimeout {Boolean} - set to true to skip timeouts
|
2479
2491
|
*/
|
2480
|
-
function
|
2492
|
+
H.eachAsync = function(arr, fn, finalFunc, chunkSize, i, noTimeout) {
|
2481
2493
|
i = i || 0;
|
2482
2494
|
chunkSize = chunkSize || CHUNK_SIZE;
|
2483
2495
|
|
@@ -2493,15 +2505,15 @@
|
|
2493
2505
|
if (i < arr.length) {
|
2494
2506
|
|
2495
2507
|
if (noTimeout) {
|
2496
|
-
eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
|
2508
|
+
H.eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
|
2497
2509
|
} else if (win.requestAnimationFrame) {
|
2498
2510
|
// If available, do requestAnimationFrame - shaves off a few ms
|
2499
2511
|
win.requestAnimationFrame(function() {
|
2500
|
-
eachAsync(arr, fn, finalFunc, chunkSize, i);
|
2512
|
+
H.eachAsync(arr, fn, finalFunc, chunkSize, i);
|
2501
2513
|
});
|
2502
2514
|
} else {
|
2503
2515
|
setTimeout(function() {
|
2504
|
-
eachAsync(arr, fn, finalFunc, chunkSize, i);
|
2516
|
+
H.eachAsync(arr, fn, finalFunc, chunkSize, i);
|
2505
2517
|
});
|
2506
2518
|
}
|
2507
2519
|
|
@@ -2509,7 +2521,7 @@
|
|
2509
2521
|
finalFunc();
|
2510
2522
|
}
|
2511
2523
|
}
|
2512
|
-
}
|
2524
|
+
};
|
2513
2525
|
|
2514
2526
|
// /////////////////////////////////////////////////////////////////////////////
|
2515
2527
|
// Following is the parts of the boost that's common between OGL/Legacy
|
@@ -2584,7 +2596,7 @@
|
|
2584
2596
|
* to hasExtremes to the methods directly.
|
2585
2597
|
*/
|
2586
2598
|
wrap(Series.prototype, 'getExtremes', function(proceed) {
|
2587
|
-
if (!isSeriesBoosting
|
2599
|
+
if (!this.isSeriesBoosting || (!this.hasExtremes || !this.hasExtremes())) {
|
2588
2600
|
return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
|
2589
2601
|
}
|
2590
2602
|
});
|
@@ -2626,37 +2638,13 @@
|
|
2626
2638
|
this.chart.options.boost.enabled;
|
2627
2639
|
}
|
2628
2640
|
|
2629
|
-
if (!isSeriesBoosting
|
2641
|
+
if (!this.isSeriesBoosting ||
|
2630
2642
|
letItPass ||
|
2631
2643
|
!enabled ||
|
2632
2644
|
this.type === 'heatmap' ||
|
2633
2645
|
this.type === 'treemap'
|
2634
2646
|
) {
|
2635
2647
|
|
2636
|
-
// Clear image
|
2637
|
-
if (method === 'render') {
|
2638
|
-
this.stickyTracking = (this.options || {}).stickyTracking;
|
2639
|
-
|
2640
|
-
if (this.boostClear) {
|
2641
|
-
this.boostClear();
|
2642
|
-
this.animate = null; // We're zooming in, don't run animation
|
2643
|
-
}
|
2644
|
-
}
|
2645
|
-
|
2646
|
-
if (!this.options.stacking && method === 'translate' &&
|
2647
|
-
this.type !== 'treemap' &&
|
2648
|
-
this.type !== 'heatmap') {
|
2649
|
-
// We call generate points and check if we're now boosting
|
2650
|
-
// so that we don't have to call series.translate
|
2651
|
-
// when zooming out from SVG mode (which is very, very expensive)
|
2652
|
-
|
2653
|
-
this.generatePoints();
|
2654
|
-
|
2655
|
-
if (isSeriesBoosting(this)) {
|
2656
|
-
return;
|
2657
|
-
}
|
2658
|
-
}
|
2659
|
-
|
2660
2648
|
proceed.call(this);
|
2661
2649
|
|
2662
2650
|
// If a canvas version of the method exists, like renderCanvas(), run
|
@@ -2691,6 +2679,158 @@
|
|
2691
2679
|
}
|
2692
2680
|
});
|
2693
2681
|
|
2682
|
+
/** If the series is a heatmap or treemap, or if the series is not boosting
|
2683
|
+
* do the default behaviour. Otherwise, process if the series has no
|
2684
|
+
* extremes.
|
2685
|
+
*/
|
2686
|
+
wrap(Series.prototype, 'processData', function(proceed) {
|
2687
|
+
|
2688
|
+
var series = this,
|
2689
|
+
dataToMeasure = this.options.data;
|
2690
|
+
|
2691
|
+
// Used twice in this function, first on this.options.data, the second
|
2692
|
+
// time it runs the check again after processedXData is built.
|
2693
|
+
// @todo Check what happens with data grouping
|
2694
|
+
function getSeriesBoosting(data) {
|
2695
|
+
return series.chart.isChartSeriesBoosting() || (
|
2696
|
+
(data ? data.length : 0) >=
|
2697
|
+
(series.options.boostThreshold || Number.MAX_VALUE)
|
2698
|
+
);
|
2699
|
+
}
|
2700
|
+
|
2701
|
+
// If there are no extremes given in the options, we also need to process
|
2702
|
+
// the data to read the data extremes. If this is a heatmap, do default
|
2703
|
+
// behaviour.
|
2704
|
+
if (!getSeriesBoosting(dataToMeasure) || // First pass with options.data
|
2705
|
+
this.type === 'heatmap' ||
|
2706
|
+
this.type === 'treemap' ||
|
2707
|
+
!this.hasExtremes ||
|
2708
|
+
!this.hasExtremes(true)
|
2709
|
+
) {
|
2710
|
+
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
|
2711
|
+
dataToMeasure = this.processedXData;
|
2712
|
+
}
|
2713
|
+
|
2714
|
+
/*
|
2715
|
+
if (!this.hasExtremes || !this.hasExtremes(true)) {
|
2716
|
+
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
|
2717
|
+
}
|
2718
|
+
*/
|
2719
|
+
|
2720
|
+
// Set the isBoosting flag, second pass with processedXData to see if we
|
2721
|
+
// have zoomed.
|
2722
|
+
this.isSeriesBoosting = getSeriesBoosting(dataToMeasure);
|
2723
|
+
|
2724
|
+
// Enter or exit boost mode
|
2725
|
+
if (this.isSeriesBoosting) {
|
2726
|
+
this.enterBoost();
|
2727
|
+
} else if (this.exitBoost) {
|
2728
|
+
this.exitBoost();
|
2729
|
+
}
|
2730
|
+
});
|
2731
|
+
|
2732
|
+
wrap(Series.prototype, 'setVisible', function(proceed, vis, redraw) {
|
2733
|
+
proceed.call(this, vis, redraw);
|
2734
|
+
if (this.visible === false && this.canvas && this.renderTarget) {
|
2735
|
+
if (this.ogl) {
|
2736
|
+
this.ogl.clear();
|
2737
|
+
}
|
2738
|
+
this.boostClear();
|
2739
|
+
}
|
2740
|
+
});
|
2741
|
+
|
2742
|
+
/**
|
2743
|
+
* Enter boost mode and apply boost-specific properties.
|
2744
|
+
*/
|
2745
|
+
Series.prototype.enterBoost = function() {
|
2746
|
+
|
2747
|
+
this.alteredByBoost = [];
|
2748
|
+
|
2749
|
+
// Save the original values, including whether it was an own property or
|
2750
|
+
// inherited from the prototype.
|
2751
|
+
each(['allowDG', 'directTouch', 'stickyTracking'], function(prop) {
|
2752
|
+
this.alteredByBoost.push({
|
2753
|
+
prop: prop,
|
2754
|
+
val: this[prop],
|
2755
|
+
own: this.hasOwnProperty(prop)
|
2756
|
+
});
|
2757
|
+
}, this);
|
2758
|
+
|
2759
|
+
this.allowDG = false;
|
2760
|
+
this.directTouch = false;
|
2761
|
+
this.stickyTracking = true;
|
2762
|
+
|
2763
|
+
// Once we've been in boost mode, we don't want animation when returning to
|
2764
|
+
// vanilla mode.
|
2765
|
+
this.animate = null;
|
2766
|
+
|
2767
|
+
// Hide series label if any
|
2768
|
+
if (this.labelBySeries) {
|
2769
|
+
this.labelBySeries = this.labelBySeries.destroy();
|
2770
|
+
}
|
2771
|
+
};
|
2772
|
+
|
2773
|
+
/**
|
2774
|
+
* Exit from boost mode and restore non-boost properties.
|
2775
|
+
*/
|
2776
|
+
Series.prototype.exitBoost = function() {
|
2777
|
+
// Reset instance properties and/or delete instance properties and go back
|
2778
|
+
// to prototype
|
2779
|
+
each(this.alteredByBoost || [], function(setting) {
|
2780
|
+
if (setting.own) {
|
2781
|
+
this[setting.prop] = setting.val;
|
2782
|
+
} else {
|
2783
|
+
// Revert to prototype
|
2784
|
+
delete this[setting.prop];
|
2785
|
+
}
|
2786
|
+
}, this);
|
2787
|
+
|
2788
|
+
// Clear previous run
|
2789
|
+
if (this.boostClear) {
|
2790
|
+
this.boostClear();
|
2791
|
+
}
|
2792
|
+
|
2793
|
+
};
|
2794
|
+
|
2795
|
+
Series.prototype.hasExtremes = function(checkX) {
|
2796
|
+
var options = this.options,
|
2797
|
+
data = options.data,
|
2798
|
+
xAxis = this.xAxis && this.xAxis.options,
|
2799
|
+
yAxis = this.yAxis && this.yAxis.options;
|
2800
|
+
|
2801
|
+
return data.length > (options.boostThreshold || Number.MAX_VALUE) &&
|
2802
|
+
isNumber(yAxis.min) && isNumber(yAxis.max) &&
|
2803
|
+
(!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
|
2804
|
+
};
|
2805
|
+
|
2806
|
+
/**
|
2807
|
+
* If implemented in the core, parts of this can probably be
|
2808
|
+
* shared with other similar methods in Highcharts.
|
2809
|
+
*/
|
2810
|
+
Series.prototype.destroyGraphics = function() {
|
2811
|
+
var series = this,
|
2812
|
+
points = this.points,
|
2813
|
+
point,
|
2814
|
+
i;
|
2815
|
+
|
2816
|
+
if (points) {
|
2817
|
+
for (i = 0; i < points.length; i = i + 1) {
|
2818
|
+
point = points[i];
|
2819
|
+
if (point && point.graphic) {
|
2820
|
+
point.graphic = point.graphic.destroy();
|
2821
|
+
}
|
2822
|
+
}
|
2823
|
+
}
|
2824
|
+
|
2825
|
+
each(['graph', 'area', 'tracker'], function(prop) {
|
2826
|
+
if (series[prop]) {
|
2827
|
+
series[prop] = series[prop].destroy();
|
2828
|
+
}
|
2829
|
+
});
|
2830
|
+
};
|
2831
|
+
|
2832
|
+
|
2833
|
+
|
2694
2834
|
/*
|
2695
2835
|
* Returns true if the current browser supports webgl
|
2696
2836
|
*/
|
@@ -2729,7 +2869,7 @@
|
|
2729
2869
|
this.chart.options.boost.enabled;
|
2730
2870
|
}
|
2731
2871
|
|
2732
|
-
if (!enabled || !isSeriesBoosting
|
2872
|
+
if (!enabled || !this.isSeriesBoosting) {
|
2733
2873
|
return proceed.call(this);
|
2734
2874
|
}
|
2735
2875
|
|
@@ -2761,63 +2901,9 @@
|
|
2761
2901
|
// /////////////////////////////////////////////////////////////////////////
|
2762
2902
|
// GL-SPECIFIC WRAPPINGS FOLLOWS
|
2763
2903
|
|
2764
|
-
/** If the series is a heatmap or treemap, or if the series is not boosting
|
2765
|
-
* do the default behaviour. Otherwise, process if the series has no
|
2766
|
-
* extremes.
|
2767
|
-
*/
|
2768
|
-
wrap(Series.prototype, 'processData', function(proceed) {
|
2769
|
-
// If this is a heatmap, do default behaviour
|
2770
|
-
if (!isSeriesBoosting(this) ||
|
2771
|
-
this.type === 'heatmap' ||
|
2772
|
-
this.type === 'treemap') {
|
2773
|
-
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
|
2774
|
-
}
|
2775
2904
|
|
2776
|
-
if (!this.hasExtremes || !this.hasExtremes(true)) {
|
2777
|
-
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
|
2778
|
-
}
|
2779
|
-
});
|
2780
2905
|
|
2781
2906
|
H.extend(Series.prototype, {
|
2782
|
-
pointRange: 0,
|
2783
|
-
directTouch: false,
|
2784
|
-
allowDG: false, // No data grouping, let boost handle large data
|
2785
|
-
hasExtremes: function(checkX) {
|
2786
|
-
var options = this.options,
|
2787
|
-
data = options.data,
|
2788
|
-
xAxis = this.xAxis && this.xAxis.options,
|
2789
|
-
yAxis = this.yAxis && this.yAxis.options;
|
2790
|
-
|
2791
|
-
return data.length > (options.boostThreshold || Number.MAX_VALUE) &&
|
2792
|
-
isNumber(yAxis.min) && isNumber(yAxis.max) &&
|
2793
|
-
(!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
|
2794
|
-
},
|
2795
|
-
|
2796
|
-
/**
|
2797
|
-
* If implemented in the core, parts of this can probably be
|
2798
|
-
* shared with other similar methods in Highcharts.
|
2799
|
-
*/
|
2800
|
-
destroyGraphics: function() {
|
2801
|
-
var series = this,
|
2802
|
-
points = this.points,
|
2803
|
-
point,
|
2804
|
-
i;
|
2805
|
-
|
2806
|
-
if (points) {
|
2807
|
-
for (i = 0; i < points.length; i = i + 1) {
|
2808
|
-
point = points[i];
|
2809
|
-
if (point && point.graphic) {
|
2810
|
-
point.graphic = point.graphic.destroy();
|
2811
|
-
}
|
2812
|
-
}
|
2813
|
-
}
|
2814
|
-
|
2815
|
-
each(['graph', 'area', 'tracker'], function(prop) {
|
2816
|
-
if (series[prop]) {
|
2817
|
-
series[prop] = series[prop].destroy();
|
2818
|
-
}
|
2819
|
-
});
|
2820
|
-
},
|
2821
2907
|
|
2822
2908
|
renderCanvas: function() {
|
2823
2909
|
var series = this,
|
@@ -2888,9 +2974,6 @@
|
|
2888
2974
|
|
2889
2975
|
boostOptions = renderer.settings;
|
2890
2976
|
|
2891
|
-
// Force sticky tracking
|
2892
|
-
this.stickyTracking = true;
|
2893
|
-
|
2894
2977
|
if (!this.visible) {
|
2895
2978
|
return;
|
2896
2979
|
}
|
@@ -2904,7 +2987,7 @@
|
|
2904
2987
|
|
2905
2988
|
// If we're rendering per. series we should create the marker groups
|
2906
2989
|
// as usual.
|
2907
|
-
if (!isChartSeriesBoosting(
|
2990
|
+
if (!chart.isChartSeriesBoosting()) {
|
2908
2991
|
this.markerGroup = series.plotGroup(
|
2909
2992
|
'markerGroup',
|
2910
2993
|
'markers',
|
@@ -3017,11 +3100,6 @@
|
|
3017
3100
|
|
3018
3101
|
function doneProcessing() {
|
3019
3102
|
fireEvent(series, 'renderedCanvas');
|
3020
|
-
// Pass tests in Pointer.
|
3021
|
-
// Replace this with a single property, and replace when zooming
|
3022
|
-
// in below boostThreshold.
|
3023
|
-
series.directTouch = false;
|
3024
|
-
series.options.stickyTracking = true;
|
3025
3103
|
|
3026
3104
|
// Go back to prototype, ready to build
|
3027
3105
|
delete series.buildKDTree;
|
@@ -3038,7 +3116,7 @@
|
|
3038
3116
|
console.time('kd tree building'); // eslint-disable-line no-console
|
3039
3117
|
}
|
3040
3118
|
|
3041
|
-
eachAsync(
|
3119
|
+
H.eachAsync(
|
3042
3120
|
isStacked ? series.data : (xData || rawData),
|
3043
3121
|
processPoint,
|
3044
3122
|
doneProcessing
|
@@ -3058,7 +3136,6 @@
|
|
3058
3136
|
function(t) {
|
3059
3137
|
if (seriesTypes[t]) {
|
3060
3138
|
wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler);
|
3061
|
-
seriesTypes[t].prototype.directTouch = false; // Use k-d-tree
|
3062
3139
|
}
|
3063
3140
|
}
|
3064
3141
|
);
|
@@ -3067,14 +3144,14 @@
|
|
3067
3144
|
// By default, the bubble series does not use the KD-tree, so force it
|
3068
3145
|
// to.
|
3069
3146
|
delete seriesTypes.bubble.prototype.buildKDTree;
|
3070
|
-
seriesTypes.bubble.prototype.directTouch = false;
|
3147
|
+
// seriesTypes.bubble.prototype.directTouch = false;
|
3071
3148
|
|
3072
3149
|
// Needed for markers to work correctly
|
3073
3150
|
wrap(
|
3074
3151
|
seriesTypes.bubble.prototype,
|
3075
3152
|
'markerAttribs',
|
3076
3153
|
function(proceed) {
|
3077
|
-
if (isSeriesBoosting
|
3154
|
+
if (this.isSeriesBoosting) {
|
3078
3155
|
return false;
|
3079
3156
|
}
|
3080
3157
|
return proceed.apply(this, [].slice.call(arguments, 1));
|
@@ -3096,16 +3173,6 @@
|
|
3096
3173
|
sampling: true
|
3097
3174
|
});
|
3098
3175
|
|
3099
|
-
wrap(Series.prototype, 'setVisible', function(proceed, vis, redraw) {
|
3100
|
-
proceed.call(this, vis, redraw);
|
3101
|
-
if (this.visible === false && this.canvas && this.renderTarget) {
|
3102
|
-
if (this.ogl) {
|
3103
|
-
this.ogl.clear();
|
3104
|
-
}
|
3105
|
-
this.boostClear();
|
3106
|
-
}
|
3107
|
-
});
|
3108
|
-
|
3109
3176
|
/**
|
3110
3177
|
* Take care of the canvas blitting
|
3111
3178
|
*/
|
@@ -3113,7 +3180,7 @@
|
|
3113
3180
|
|
3114
3181
|
/* Convert chart-level canvas to image */
|
3115
3182
|
function canvasToSVG() {
|
3116
|
-
if (chart.ogl && isChartSeriesBoosting(
|
3183
|
+
if (chart.ogl && chart.isChartSeriesBoosting()) {
|
3117
3184
|
chart.ogl.render(chart);
|
3118
3185
|
}
|
3119
3186
|
}
|
@@ -3125,7 +3192,7 @@
|
|
3125
3192
|
chart.boostForceChartBoost = shouldForceChartSeriesBoosting(chart);
|
3126
3193
|
chart.isBoosting = false;
|
3127
3194
|
|
3128
|
-
if (!isChartSeriesBoosting(
|
3195
|
+
if (!chart.isChartSeriesBoosting() && chart.didBoost) {
|
3129
3196
|
chart.didBoost = false;
|
3130
3197
|
}
|
3131
3198
|
|
@@ -3134,7 +3201,7 @@
|
|
3134
3201
|
chart.boostClear();
|
3135
3202
|
}
|
3136
3203
|
|
3137
|
-
if (chart.canvas && chart.ogl && isChartSeriesBoosting(
|
3204
|
+
if (chart.canvas && chart.ogl && chart.isChartSeriesBoosting()) {
|
3138
3205
|
chart.didBoost = true;
|
3139
3206
|
|
3140
3207
|
// Allocate
|