highcharts-rails 4.1.6 → 4.1.7
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 +27 -0
- data/app/assets/javascripts/highcharts.js +129 -70
- data/app/assets/javascripts/highcharts/adapters/standalone-framework.js +1 -1
- data/app/assets/javascripts/highcharts/highcharts-3d.js +34 -29
- data/app/assets/javascripts/highcharts/highcharts-more.js +45 -44
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +28 -23
- data/app/assets/javascripts/highcharts/modules/canvas-tools.js +1 -1
- data/app/assets/javascripts/highcharts/modules/data.js +1 -1
- data/app/assets/javascripts/highcharts/modules/drilldown.js +5 -1
- data/app/assets/javascripts/highcharts/modules/exporting.js +3 -2
- data/app/assets/javascripts/highcharts/modules/funnel.js +7 -2
- data/app/assets/javascripts/highcharts/modules/heatmap.js +1 -1
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +14 -2
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +5 -3
- data/app/assets/javascripts/highcharts/modules/treemap.js +154 -112
- data/lib/highcharts/version.rb +1 -1
- metadata +1 -1
@@ -2,7 +2,7 @@
|
|
2
2
|
// @compilation_level SIMPLE_OPTIMIZATIONS
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @license Highcharts JS v4.1.
|
5
|
+
* @license Highcharts JS v4.1.7 (2015-06-26)
|
6
6
|
*
|
7
7
|
* (c) 2009-2013 Torstein Hønsi
|
8
8
|
*
|
@@ -542,7 +542,7 @@ Highcharts.SVGRenderer.prototype.arc3dPath = function (shapeArgs) {
|
|
542
542
|
***/
|
543
543
|
// Shorthand to check the is3d flag
|
544
544
|
Highcharts.Chart.prototype.is3d = function () {
|
545
|
-
return
|
545
|
+
return this.options.chart.options3d && this.options.chart.options3d.enabled; // #4280
|
546
546
|
};
|
547
547
|
|
548
548
|
Highcharts.wrap(Highcharts.Chart.prototype, 'isInsidePlot', function (proceed) {
|
@@ -1232,34 +1232,33 @@ Highcharts.wrap(Highcharts.seriesTypes.pie.prototype, 'translate', function (pro
|
|
1232
1232
|
z: options3d.depth
|
1233
1233
|
},
|
1234
1234
|
alpha = options3d.alpha,
|
1235
|
-
beta = options3d.beta
|
1235
|
+
beta = options3d.beta,
|
1236
|
+
z = seriesOptions.stacking ? (seriesOptions.stack || 0) * depth : series._i * depth;
|
1236
1237
|
|
1237
|
-
var z = seriesOptions.stacking ? (seriesOptions.stack || 0) * depth : series._i * depth;
|
1238
1238
|
z += depth / 2;
|
1239
1239
|
|
1240
1240
|
if (seriesOptions.grouping !== false) { z = 0; }
|
1241
1241
|
|
1242
1242
|
Highcharts.each(series.data, function (point) {
|
1243
|
+
|
1244
|
+
var shapeArgs = point.shapeArgs,
|
1245
|
+
angle;
|
1246
|
+
|
1243
1247
|
point.shapeType = 'arc3d';
|
1244
|
-
var shapeArgs = point.shapeArgs;
|
1245
1248
|
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
var angle = (shapeArgs.end + shapeArgs.start) / 2;
|
1249
|
+
shapeArgs.z = z;
|
1250
|
+
shapeArgs.depth = depth * 0.75;
|
1251
|
+
shapeArgs.origin = origin;
|
1252
|
+
shapeArgs.alpha = alpha;
|
1253
|
+
shapeArgs.beta = beta;
|
1254
|
+
shapeArgs.center = series.center;
|
1255
|
+
|
1256
|
+
angle = (shapeArgs.end + shapeArgs.start) / 2;
|
1255
1257
|
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
} else {
|
1261
|
-
shapeArgs = null;
|
1262
|
-
}
|
1258
|
+
point.slicedTranslation = {
|
1259
|
+
translateX : round(cos(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)),
|
1260
|
+
translateY : round(sin(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad))
|
1261
|
+
};
|
1263
1262
|
});
|
1264
1263
|
});
|
1265
1264
|
|
@@ -1269,11 +1268,13 @@ Highcharts.wrap(Highcharts.seriesTypes.pie.prototype.pointClass.prototype, 'halo
|
|
1269
1268
|
});
|
1270
1269
|
|
1271
1270
|
Highcharts.wrap(Highcharts.seriesTypes.pie.prototype, 'drawPoints', function (proceed) {
|
1271
|
+
|
1272
|
+
var seriesGroup = this.group,
|
1273
|
+
options = this.options,
|
1274
|
+
states = options.states;
|
1275
|
+
|
1272
1276
|
// Do not do this if the chart is not 3D
|
1273
1277
|
if (this.chart.is3d()) {
|
1274
|
-
var options = this.options,
|
1275
|
-
states = this.options.states;
|
1276
|
-
|
1277
1278
|
// Set the border color to the fill color to provide a smooth edge
|
1278
1279
|
this.borderWidth = options.borderWidth = options.edgeWidth || 1;
|
1279
1280
|
this.borderColor = options.edgeColor = Highcharts.pick(options.edgeColor, options.borderColor, undefined);
|
@@ -1297,12 +1298,16 @@ Highcharts.wrap(Highcharts.seriesTypes.pie.prototype, 'drawPoints', function (pr
|
|
1297
1298
|
proceed.apply(this, [].slice.call(arguments, 1));
|
1298
1299
|
|
1299
1300
|
if (this.chart.is3d()) {
|
1300
|
-
var seriesGroup = this.group;
|
1301
1301
|
Highcharts.each(this.points, function (point) {
|
1302
|
-
point.graphic
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1302
|
+
var graphic = point.graphic;
|
1303
|
+
|
1304
|
+
graphic.out.add(seriesGroup);
|
1305
|
+
graphic.inn.add(seriesGroup);
|
1306
|
+
graphic.side1.add(seriesGroup);
|
1307
|
+
graphic.side2.add(seriesGroup);
|
1308
|
+
|
1309
|
+
// Hide null or 0 points (#3006, 3650)
|
1310
|
+
graphic[point.y ? 'show' : 'hide']();
|
1306
1311
|
});
|
1307
1312
|
}
|
1308
1313
|
});
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// @compilation_level SIMPLE_OPTIMIZATIONS
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @license Highcharts JS v4.1.
|
5
|
+
* @license Highcharts JS v4.1.7 (2015-06-26)
|
6
6
|
*
|
7
7
|
* (c) 2009-2014 Torstein Honsi
|
8
8
|
*
|
@@ -60,11 +60,8 @@ extend(Pane.prototype, {
|
|
60
60
|
|
61
61
|
pane.chart = chart;
|
62
62
|
|
63
|
-
// Set options
|
64
|
-
|
65
|
-
defaultOptions.background = {}; // gets extended by this.defaultBackgroundOptions
|
66
|
-
}
|
67
|
-
pane.options = options = merge(defaultOptions, options);
|
63
|
+
// Set options. Angular charts have a default background (#3318)
|
64
|
+
pane.options = options = merge(defaultOptions, chart.angular ? { background: {} } : undefined, options);
|
68
65
|
|
69
66
|
backgroundOption = options.background;
|
70
67
|
|
@@ -841,27 +838,29 @@ seriesTypes.arearange = extendClass(seriesTypes.area, {
|
|
841
838
|
i = length;
|
842
839
|
while (i--) {
|
843
840
|
point = data[i];
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
if (
|
860
|
-
|
841
|
+
if (point) {
|
842
|
+
up = point.plotHigh > point.plotLow;
|
843
|
+
|
844
|
+
// Set preliminary values
|
845
|
+
point.y = point.high;
|
846
|
+
point._plotY = point.plotY;
|
847
|
+
point.plotY = point.plotHigh;
|
848
|
+
|
849
|
+
// Store original data labels and set preliminary label objects to be picked up
|
850
|
+
// in the uber method
|
851
|
+
originalDataLabels[i] = point.dataLabel;
|
852
|
+
point.dataLabel = point.dataLabelUpper;
|
853
|
+
|
854
|
+
// Set the default offset
|
855
|
+
point.below = up;
|
856
|
+
if (inverted) {
|
857
|
+
if (!align) {
|
858
|
+
dataLabelOptions.align = up ? 'right' : 'left';
|
859
|
+
}
|
860
|
+
dataLabelOptions.x = dataLabelOptions.xHigh;
|
861
|
+
} else {
|
862
|
+
dataLabelOptions.y = dataLabelOptions.yHigh;
|
861
863
|
}
|
862
|
-
dataLabelOptions.x = dataLabelOptions.xHigh;
|
863
|
-
} else {
|
864
|
-
dataLabelOptions.y = dataLabelOptions.yHigh;
|
865
864
|
}
|
866
865
|
}
|
867
866
|
|
@@ -873,25 +872,27 @@ seriesTypes.arearange = extendClass(seriesTypes.area, {
|
|
873
872
|
i = length;
|
874
873
|
while (i--) {
|
875
874
|
point = data[i];
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
if (
|
890
|
-
|
875
|
+
if (point) {
|
876
|
+
up = point.plotHigh > point.plotLow;
|
877
|
+
|
878
|
+
// Move the generated labels from step 1, and reassign the original data labels
|
879
|
+
point.dataLabelUpper = point.dataLabel;
|
880
|
+
point.dataLabel = originalDataLabels[i];
|
881
|
+
|
882
|
+
// Reset values
|
883
|
+
point.y = point.low;
|
884
|
+
point.plotY = point._plotY;
|
885
|
+
|
886
|
+
// Set the default offset
|
887
|
+
point.below = !up;
|
888
|
+
if (inverted) {
|
889
|
+
if (!align) {
|
890
|
+
dataLabelOptions.align = up ? 'left' : 'right';
|
891
|
+
}
|
892
|
+
dataLabelOptions.x = dataLabelOptions.xLow;
|
893
|
+
} else {
|
894
|
+
dataLabelOptions.y = dataLabelOptions.yLow;
|
891
895
|
}
|
892
|
-
dataLabelOptions.x = dataLabelOptions.xLow;
|
893
|
-
} else {
|
894
|
-
dataLabelOptions.y = dataLabelOptions.yLow;
|
895
896
|
}
|
896
897
|
}
|
897
898
|
if (seriesProto.drawDataLabels) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* Highcharts JS v4.1.
|
2
|
+
* Highcharts JS v4.1.7 (2015-06-26)
|
3
3
|
* Highcharts Broken Axis module
|
4
4
|
*
|
5
5
|
* Author: Stephane Vanraes, Torstein Honsi
|
@@ -37,29 +37,32 @@
|
|
37
37
|
},
|
38
38
|
|
39
39
|
isInAnyBreak: function (val, testKeep) {
|
40
|
-
// Sanity Check
|
41
|
-
if (!this.options.breaks) { return false; }
|
42
40
|
|
43
41
|
var breaks = this.options.breaks,
|
44
|
-
i = breaks.length,
|
45
|
-
inbrk
|
46
|
-
keep
|
42
|
+
i = breaks && breaks.length,
|
43
|
+
inbrk,
|
44
|
+
keep,
|
45
|
+
ret;
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
if (
|
53
|
-
|
47
|
+
|
48
|
+
if (i) {
|
49
|
+
|
50
|
+
while (i--) {
|
51
|
+
if (this.isInBreak(breaks[i], val)) {
|
52
|
+
inbrk = true;
|
53
|
+
if (!keep) {
|
54
|
+
keep = pick(breaks[i].showPoints, this.isXAxis ? false : true);
|
55
|
+
}
|
54
56
|
}
|
55
57
|
}
|
56
|
-
}
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
if (inbrk && testKeep) {
|
60
|
+
ret = inbrk && !keep;
|
61
|
+
} else {
|
62
|
+
ret = inbrk;
|
63
|
+
}
|
62
64
|
}
|
65
|
+
return ret;
|
63
66
|
}
|
64
67
|
});
|
65
68
|
|
@@ -110,7 +113,7 @@
|
|
110
113
|
for (i = 0; i < axis.breakArray.length; i++) {
|
111
114
|
brk = axis.breakArray[i];
|
112
115
|
if (brk.to <= val) {
|
113
|
-
nval -=
|
116
|
+
nval -= brk.len;
|
114
117
|
} else if (brk.from >= val) {
|
115
118
|
break;
|
116
119
|
} else if (axis.isInBreak(brk, val)) {
|
@@ -132,12 +135,11 @@
|
|
132
135
|
if (brk.from >= nval) {
|
133
136
|
break;
|
134
137
|
} else if (brk.to < nval) {
|
135
|
-
nval +=
|
138
|
+
nval += brk.len;
|
136
139
|
} else if (axis.isInBreak(brk, nval)) {
|
137
|
-
nval +=
|
140
|
+
nval += brk.len;
|
138
141
|
}
|
139
142
|
}
|
140
|
-
|
141
143
|
return nval;
|
142
144
|
};
|
143
145
|
|
@@ -256,14 +258,17 @@
|
|
256
258
|
yAxis = series.yAxis,
|
257
259
|
points = series.points,
|
258
260
|
point,
|
259
|
-
i = points.length
|
261
|
+
i = points.length,
|
262
|
+
connectNulls = series.options.connectNulls,
|
263
|
+
nullGap;
|
260
264
|
|
261
265
|
|
262
266
|
if (xAxis && yAxis && (xAxis.options.breaks || yAxis.options.breaks)) {
|
263
267
|
while (i--) {
|
264
268
|
point = points[i];
|
265
269
|
|
266
|
-
|
270
|
+
nullGap = point.y === null && connectNulls === false; // respect nulls inside the break (#4275)
|
271
|
+
if (!nullGap && (xAxis.isInAnyBreak(point.x, true) || yAxis.isInAnyBreak(point.y, true))) {
|
267
272
|
points.splice(i, 1);
|
268
273
|
if (this.data[i]) {
|
269
274
|
this.data[i].destroyElements(); // removes the graphics for this point if they exist
|
@@ -2908,7 +2908,7 @@ if (CanvasRenderingContext2D) {
|
|
2908
2908
|
});
|
2909
2909
|
}
|
2910
2910
|
}/**
|
2911
|
-
* @license Highcharts JS v4.1.
|
2911
|
+
* @license Highcharts JS v4.1.7 (2015-06-26)
|
2912
2912
|
* CanVGRenderer Extension module
|
2913
2913
|
*
|
2914
2914
|
* (c) 2011-2012 Torstein Honsi, Erik Olsson
|
@@ -642,7 +642,11 @@
|
|
642
642
|
|
643
643
|
// Add the click event to the point
|
644
644
|
H.addEvent(point, 'click', function () {
|
645
|
-
|
645
|
+
if (series.xAxis && series.chart.options.drilldown.allowPointDrilldown === false) {
|
646
|
+
series.xAxis.drilldownCategory(x);
|
647
|
+
} else {
|
648
|
+
point.doDrilldown();
|
649
|
+
}
|
646
650
|
});
|
647
651
|
/*wrap(point, 'importEvents', function (proceed) { // wrapping importEvents makes point.click event work
|
648
652
|
if (!this.hasImportedEvents) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v4.1.
|
2
|
+
* @license Highcharts JS v4.1.7 (2015-06-26)
|
3
3
|
* Exporting module
|
4
4
|
*
|
5
5
|
* (c) 2010-2014 Torstein Honsi
|
@@ -220,10 +220,11 @@ extend(Chart.prototype, {
|
|
220
220
|
|
221
221
|
// IE specific
|
222
222
|
.replace(/<IMG /g, '<image ')
|
223
|
+
.replace(/<(\/?)TITLE>/g, '<$1title>')
|
223
224
|
.replace(/height=([^" ]+)/g, 'height="$1"')
|
224
225
|
.replace(/width=([^" ]+)/g, 'width="$1"')
|
225
226
|
.replace(/hc-svg-href="([^"]+)">/g, 'xlink:href="$1"/>')
|
226
|
-
.replace(/ id=([^" >]+)/g, 'id="$1"') // #4003
|
227
|
+
.replace(/ id=([^" >]+)/g, ' id="$1"') // #4003
|
227
228
|
.replace(/class=([^" >]+)/g, 'class="$1"')
|
228
229
|
.replace(/ transform /g, ' ')
|
229
230
|
.replace(/:(path|rect)/g, '$1')
|
@@ -69,6 +69,7 @@ seriesTypes.funnel = Highcharts.extendClass(seriesTypes.pie, {
|
|
69
69
|
chart = series.chart,
|
70
70
|
options = series.options,
|
71
71
|
reversed = options.reversed,
|
72
|
+
ignoreHiddenPoint = options.ignoreHiddenPoint,
|
72
73
|
plotWidth = chart.plotWidth,
|
73
74
|
plotHeight = chart.plotHeight,
|
74
75
|
cumulative = 0, // start at top
|
@@ -133,7 +134,9 @@ seriesTypes.funnel = Highcharts.extendClass(seriesTypes.pie, {
|
|
133
134
|
|
134
135
|
// get the total sum
|
135
136
|
each(data, function (point) {
|
136
|
-
|
137
|
+
if (!ignoreHiddenPoint || point.visible !== false) {
|
138
|
+
sum += point.y;
|
139
|
+
}
|
137
140
|
});
|
138
141
|
|
139
142
|
each(data, function (point) {
|
@@ -206,7 +209,9 @@ seriesTypes.funnel = Highcharts.extendClass(seriesTypes.pie, {
|
|
206
209
|
// Mimicking pie data label placement logic
|
207
210
|
point.half = half;
|
208
211
|
|
209
|
-
|
212
|
+
if (!ignoreHiddenPoint || point.visible !== false) {
|
213
|
+
cumulative += fraction;
|
214
|
+
}
|
210
215
|
});
|
211
216
|
},
|
212
217
|
/**
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v4.1.
|
2
|
+
* @license Highcharts JS v4.1.7 (2015-06-26)
|
3
3
|
* Plugin for displaying a message when there is no data visible in chart.
|
4
4
|
*
|
5
5
|
* (c) 2010-2014 Highsoft AS
|
@@ -36,6 +36,7 @@
|
|
36
36
|
fontSize: '12px',
|
37
37
|
color: '#60606a'
|
38
38
|
}
|
39
|
+
// useHTML: false // docs
|
39
40
|
};
|
40
41
|
|
41
42
|
/**
|
@@ -67,7 +68,18 @@
|
|
67
68
|
noDataOptions = options.noData;
|
68
69
|
|
69
70
|
if (!chart.noDataLabel) {
|
70
|
-
chart.noDataLabel = chart.renderer
|
71
|
+
chart.noDataLabel = chart.renderer
|
72
|
+
.label(
|
73
|
+
text,
|
74
|
+
0,
|
75
|
+
0,
|
76
|
+
null,
|
77
|
+
null,
|
78
|
+
null,
|
79
|
+
noDataOptions.useHTML,
|
80
|
+
null,
|
81
|
+
'no-data'
|
82
|
+
)
|
71
83
|
.attr(noDataOptions.attr)
|
72
84
|
.css(noDataOptions.style)
|
73
85
|
.add();
|