highcharts-rails 4.1.9 → 4.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +55 -0
- data/app/assets/images/highcharts/search.png +0 -0
- data/app/assets/javascripts/highcharts.js +18962 -18796
- data/app/assets/javascripts/highcharts/adapters/standalone-framework.js +152 -131
- data/app/assets/javascripts/highcharts/highcharts-3d.js +1702 -1561
- data/app/assets/javascripts/highcharts/highcharts-more.js +2655 -2639
- data/app/assets/javascripts/highcharts/modules/boost.js +72 -35
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +45 -32
- data/app/assets/javascripts/highcharts/modules/canvas-tools.js +8 -7
- data/app/assets/javascripts/highcharts/modules/data.js +646 -642
- data/app/assets/javascripts/highcharts/modules/drilldown.js +15 -11
- data/app/assets/javascripts/highcharts/modules/exporting.js +17 -12
- data/app/assets/javascripts/highcharts/modules/funnel.js +19 -12
- data/app/assets/javascripts/highcharts/modules/heatmap.js +702 -696
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +10 -4
- data/app/assets/javascripts/highcharts/modules/offline-exporting.js +241 -238
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +12 -9
- data/app/assets/javascripts/highcharts/modules/treemap.js +67 -86
- data/app/assets/javascripts/highcharts/themes/grid-light.js +1 -1
- data/app/assets/javascripts/highcharts/themes/sand-signika.js +1 -1
- data/lib/highcharts/version.rb +1 -1
- metadata +3 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v4.1.
|
2
|
+
* @license Highcharts JS v4.1.10 (2015-12-07)
|
3
3
|
* Solid angular gauge module
|
4
4
|
*
|
5
5
|
* (c) 2010-2014 Torstein Honsi
|
@@ -7,9 +7,14 @@
|
|
7
7
|
* License: www.highcharts.com/license
|
8
8
|
*/
|
9
9
|
|
10
|
-
|
11
|
-
(
|
12
|
-
|
10
|
+
(function (factory) {
|
11
|
+
if (typeof module === 'object' && module.exports) {
|
12
|
+
module.exports = factory;
|
13
|
+
} else {
|
14
|
+
factory(Highcharts);
|
15
|
+
}
|
16
|
+
}(function (H) {
|
17
|
+
'use strict';
|
13
18
|
|
14
19
|
var defaultPlotOptions = H.getOptions().plotOptions,
|
15
20
|
pInt = H.pInt,
|
@@ -132,7 +137,7 @@
|
|
132
137
|
|
133
138
|
// Unsupported color, return to-color (#3920)
|
134
139
|
if (!to.rgba.length || !from.rgba.length) {
|
135
|
-
ret = to.
|
140
|
+
ret = to.input || 'none';
|
136
141
|
|
137
142
|
// Interpolate
|
138
143
|
} else {
|
@@ -153,7 +158,7 @@
|
|
153
158
|
* Handle animation of the color attributes directly
|
154
159
|
*/
|
155
160
|
each(['fill', 'stroke'], function (prop) {
|
156
|
-
|
161
|
+
H.addAnimSetter(prop, function (fx) {
|
157
162
|
fx.elem.attr(prop, colorAxisMethods.tweenColors(H.Color(fx.start), H.Color(fx.end), fx.pos));
|
158
163
|
});
|
159
164
|
});
|
@@ -196,7 +201,6 @@
|
|
196
201
|
shapeArgs,
|
197
202
|
d,
|
198
203
|
toColor = yAxis.toColor(point.y, point),
|
199
|
-
fromColor,
|
200
204
|
axisMinAngle = Math.min(yAxis.startAngleRad, yAxis.endAngleRad),
|
201
205
|
axisMaxAngle = Math.max(yAxis.startAngleRad, yAxis.endAngleRad),
|
202
206
|
minAngle,
|
@@ -206,7 +210,6 @@
|
|
206
210
|
toColor = point.color || series.color || 'none';
|
207
211
|
}
|
208
212
|
if (toColor !== 'none') {
|
209
|
-
fromColor = point.color;
|
210
213
|
point.color = toColor;
|
211
214
|
}
|
212
215
|
|
@@ -267,4 +270,4 @@
|
|
267
270
|
}
|
268
271
|
});
|
269
272
|
|
270
|
-
}
|
273
|
+
}));
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v4.1.
|
2
|
+
* @license Highcharts JS v4.1.10 (2015-12-07)
|
3
3
|
*
|
4
4
|
* (c) 2014 Highsoft AS
|
5
5
|
* Authors: Jon Arild Nygard / Oystein Moseng
|
@@ -7,8 +7,13 @@
|
|
7
7
|
* License: www.highcharts.com/license
|
8
8
|
*/
|
9
9
|
|
10
|
-
|
11
|
-
(
|
10
|
+
(function (factory) {
|
11
|
+
if (typeof module === 'object' && module.exports) {
|
12
|
+
module.exports = factory;
|
13
|
+
} else {
|
14
|
+
factory(Highcharts);
|
15
|
+
}
|
16
|
+
}(function (H) {
|
12
17
|
var seriesTypes = H.seriesTypes,
|
13
18
|
map = H.map,
|
14
19
|
merge = H.merge,
|
@@ -16,11 +21,13 @@
|
|
16
21
|
extendClass = H.extendClass,
|
17
22
|
defaultOptions = H.getOptions(),
|
18
23
|
plotOptions = defaultOptions.plotOptions,
|
19
|
-
noop = function () {
|
24
|
+
noop = function () {
|
25
|
+
},
|
20
26
|
each = H.each,
|
21
|
-
grep =
|
27
|
+
grep = H.grep,
|
22
28
|
pick = H.pick,
|
23
29
|
Series = H.Series,
|
30
|
+
stableSort = H.stableSort,
|
24
31
|
Color = H.Color,
|
25
32
|
eachObject = function (list, func, context) {
|
26
33
|
var key;
|
@@ -81,9 +88,9 @@
|
|
81
88
|
},
|
82
89
|
drillUpButton: {
|
83
90
|
position: {
|
84
|
-
align: '
|
85
|
-
x: 10,
|
86
|
-
y:
|
91
|
+
align: 'right',
|
92
|
+
x: -10,
|
93
|
+
y: 10
|
87
94
|
}
|
88
95
|
}
|
89
96
|
});
|
@@ -117,7 +124,7 @@
|
|
117
124
|
*/
|
118
125
|
getListOfParents: function (data, ids) {
|
119
126
|
var listOfParents = reduce(data, function (prev, curr, i) {
|
120
|
-
var parent = pick(curr.parent,
|
127
|
+
var parent = pick(curr.parent, '');
|
121
128
|
if (prev[parent] === undefined) {
|
122
129
|
prev[parent] = [];
|
123
130
|
}
|
@@ -127,9 +134,9 @@
|
|
127
134
|
|
128
135
|
// If parent does not exist, hoist parent to root of tree.
|
129
136
|
eachObject(listOfParents, function (children, parent, list) {
|
130
|
-
if ((parent !==
|
137
|
+
if ((parent !== '') && (H.inArray(parent, ids) === -1)) {
|
131
138
|
each(children, function (child) {
|
132
|
-
list[
|
139
|
+
list[''].push(child);
|
133
140
|
});
|
134
141
|
delete list[parent];
|
135
142
|
}
|
@@ -148,12 +155,12 @@
|
|
148
155
|
parentList = series.getListOfParents(this.data, allIds);
|
149
156
|
|
150
157
|
series.nodeMap = [];
|
151
|
-
tree = series.buildNode(
|
158
|
+
tree = series.buildNode('', -1, 0, parentList, null);
|
152
159
|
recursive(this.nodeMap[this.rootNode], function (node) {
|
153
160
|
var next = false,
|
154
161
|
p = node.parent;
|
155
162
|
node.visible = true;
|
156
|
-
if (p || p ===
|
163
|
+
if (p || p === '') {
|
157
164
|
next = series.nodeMap[p];
|
158
165
|
}
|
159
166
|
return next;
|
@@ -208,16 +215,14 @@
|
|
208
215
|
var series = this,
|
209
216
|
options = series.options,
|
210
217
|
childrenTotal = 0,
|
211
|
-
|
218
|
+
children = [],
|
212
219
|
val,
|
213
220
|
point = series.points[tree.i];
|
214
221
|
|
215
222
|
// First give the children some values
|
216
223
|
each(tree.children, function (child) {
|
217
224
|
child = series.setTreeValues(child);
|
218
|
-
|
219
|
-
return el.val > el2.val;
|
220
|
-
});
|
225
|
+
children.push(child);
|
221
226
|
|
222
227
|
if (!child.ignore) {
|
223
228
|
childrenTotal += child.val;
|
@@ -239,17 +244,21 @@
|
|
239
244
|
});
|
240
245
|
}
|
241
246
|
});
|
242
|
-
|
247
|
+
// Sort the children
|
248
|
+
stableSort(children, function (a, b) {
|
249
|
+
return a.sortIndex - b.sortIndex;
|
250
|
+
});
|
243
251
|
// Set the values
|
244
252
|
val = pick(point && point.value, childrenTotal);
|
245
253
|
extend(tree, {
|
246
|
-
children:
|
254
|
+
children: children,
|
247
255
|
childrenTotal: childrenTotal,
|
248
256
|
// Ignore this node if point is not visible
|
249
257
|
ignore: !(pick(point && point.visible, true) && (val > 0)),
|
250
258
|
isLeaf: tree.visible && !childrenTotal,
|
251
259
|
levelDynamic: (options.levelIsConstant ? tree.level : (tree.level - series.nodeMap[series.rootNode].level)),
|
252
|
-
name: pick(point && point.name,
|
260
|
+
name: pick(point && point.name, ''),
|
261
|
+
sortIndex: pick(point && point.sortIndex, -val),
|
253
262
|
val: val
|
254
263
|
});
|
255
264
|
return tree;
|
@@ -347,7 +356,7 @@
|
|
347
356
|
}
|
348
357
|
}
|
349
358
|
},
|
350
|
-
|
359
|
+
algorithmGroup: function (h, w, d, p) {
|
351
360
|
this.height = h;
|
352
361
|
this.width = w;
|
353
362
|
this.plot = p;
|
@@ -402,7 +411,7 @@
|
|
402
411
|
this.total = 0;
|
403
412
|
};
|
404
413
|
},
|
405
|
-
|
414
|
+
algorithmCalcPoints: function (directionChange, last, group, childrenArea) {
|
406
415
|
var pX,
|
407
416
|
pY,
|
408
417
|
pW,
|
@@ -463,7 +472,7 @@
|
|
463
472
|
group.addElement(keep);
|
464
473
|
}
|
465
474
|
},
|
466
|
-
|
475
|
+
algorithmLowAspectRatio: function (directionChange, parent, children) {
|
467
476
|
var childrenArea = [],
|
468
477
|
series = this,
|
469
478
|
pTot,
|
@@ -475,23 +484,23 @@
|
|
475
484
|
direction = parent.direction,
|
476
485
|
i = 0,
|
477
486
|
end = children.length - 1,
|
478
|
-
group = new this.
|
487
|
+
group = new this.algorithmGroup(parent.height, parent.width, direction, plot);
|
479
488
|
// Loop through and calculate all areas
|
480
489
|
each(children, function (child) {
|
481
490
|
pTot = (parent.width * parent.height) * (child.val / parent.val);
|
482
491
|
group.addElement(pTot);
|
483
492
|
if (group.lP.nR > group.lP.lR) {
|
484
|
-
series.
|
493
|
+
series.algorithmCalcPoints(directionChange, false, group, childrenArea, plot);
|
485
494
|
}
|
486
495
|
// If last child, then calculate all remaining areas
|
487
496
|
if (i === end) {
|
488
|
-
series.
|
497
|
+
series.algorithmCalcPoints(directionChange, true, group, childrenArea, plot);
|
489
498
|
}
|
490
499
|
i = i + 1;
|
491
500
|
});
|
492
501
|
return childrenArea;
|
493
502
|
},
|
494
|
-
|
503
|
+
algorithmFill: function (directionChange, parent, children) {
|
495
504
|
var childrenArea = [],
|
496
505
|
pTot,
|
497
506
|
direction = parent.direction,
|
@@ -531,16 +540,16 @@
|
|
531
540
|
return childrenArea;
|
532
541
|
},
|
533
542
|
strip: function (parent, children) {
|
534
|
-
return this.
|
543
|
+
return this.algorithmLowAspectRatio(false, parent, children);
|
535
544
|
},
|
536
545
|
squarified: function (parent, children) {
|
537
|
-
return this.
|
546
|
+
return this.algorithmLowAspectRatio(true, parent, children);
|
538
547
|
},
|
539
548
|
sliceAndDice: function (parent, children) {
|
540
|
-
return this.
|
549
|
+
return this.algorithmFill(true, parent, children);
|
541
550
|
},
|
542
551
|
stripes: function (parent, children) {
|
543
|
-
return this.
|
552
|
+
return this.algorithmFill(false, parent, children);
|
544
553
|
},
|
545
554
|
translate: function () {
|
546
555
|
var pointValues,
|
@@ -551,26 +560,24 @@
|
|
551
560
|
// Call prototype function
|
552
561
|
Series.prototype.translate.call(this);
|
553
562
|
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
this.calculateChildrenAreas(tree, seriesArea);
|
573
|
-
}
|
563
|
+
// Assign variables
|
564
|
+
this.rootNode = pick(this.options.rootId, '');
|
565
|
+
// Create a object map from level to options
|
566
|
+
this.levelMap = reduce(this.options.levels, function (arr, item) {
|
567
|
+
arr[item.level] = item;
|
568
|
+
return arr;
|
569
|
+
}, {});
|
570
|
+
tree = this.tree = this.getTree(); // @todo Only if series.isDirtyData is true
|
571
|
+
|
572
|
+
// Calculate plotting values.
|
573
|
+
this.axisRatio = (this.xAxis.len / this.yAxis.len);
|
574
|
+
this.nodeMap[''].pointValues = pointValues = { x: 0, y: 0, width: 100, height: 100 };
|
575
|
+
this.nodeMap[''].values = seriesArea = merge(pointValues, {
|
576
|
+
width: (pointValues.width * this.axisRatio),
|
577
|
+
direction: (this.options.layoutStartingDirection === 'vertical' ? 0 : 1),
|
578
|
+
val: tree.val
|
579
|
+
});
|
580
|
+
this.calculateChildrenAreas(tree, seriesArea);
|
574
581
|
|
575
582
|
// Logic for point colors
|
576
583
|
if (this.colorAxis) {
|
@@ -605,7 +612,7 @@
|
|
605
612
|
each(points, function (point) {
|
606
613
|
level = series.levelMap[point.node.levelDynamic];
|
607
614
|
// Set options to new object to avoid problems with scope
|
608
|
-
options = {style: {}};
|
615
|
+
options = { style: {} };
|
609
616
|
|
610
617
|
// If not a leaf, then label should be disabled as default
|
611
618
|
if (!point.node.isLeaf) {
|
@@ -645,17 +652,14 @@
|
|
645
652
|
'stroke': point.borderColor || level.borderColor || stateOptions.borderColor || options.borderColor,
|
646
653
|
'stroke-width': pick(point.borderWidth, level.borderWidth, stateOptions.borderWidth, options.borderWidth),
|
647
654
|
'dashstyle': point.borderDashStyle || level.borderDashStyle || stateOptions.borderDashStyle || options.borderDashStyle,
|
648
|
-
'fill': point.color || this.color
|
655
|
+
'fill': point.color || this.color,
|
656
|
+
'zIndex': state === 'hover' ? 1 : 0
|
649
657
|
};
|
650
658
|
|
651
|
-
if (state === 'hover') {
|
652
|
-
attr.zIndex = 1;
|
653
|
-
}
|
654
|
-
|
655
659
|
if (point.node.level <= this.nodeMap[this.rootNode].level) {
|
656
660
|
// Hide levels above the current view
|
657
661
|
attr.fill = 'none';
|
658
|
-
attr[
|
662
|
+
attr['stroke-width'] = 0;
|
659
663
|
} else if (!point.node.isLeaf) {
|
660
664
|
// If not a leaf, then remove fill
|
661
665
|
// @todo let users set the opacity
|
@@ -678,7 +682,7 @@
|
|
678
682
|
});
|
679
683
|
|
680
684
|
each(points, function (point) {
|
681
|
-
var groupKey =
|
685
|
+
var groupKey = 'levelGroup-' + point.node.levelDynamic;
|
682
686
|
if (!series[groupKey]) {
|
683
687
|
series[groupKey] = series.chart.renderer.g(groupKey)
|
684
688
|
.attr({
|
@@ -704,35 +708,12 @@
|
|
704
708
|
drillId;
|
705
709
|
if (point.graphic) {
|
706
710
|
drillId = point.drillId = series.options.interactByLeaf ? series.drillToByLeaf(point) : series.drillToByGroup(point);
|
707
|
-
cursor = drillId ?
|
711
|
+
cursor = drillId ? 'pointer' : 'default';
|
708
712
|
point.graphic.css({ cursor: cursor });
|
709
713
|
}
|
710
714
|
});
|
711
715
|
}
|
712
716
|
},
|
713
|
-
/**
|
714
|
-
* Inserts an element into an array, sorted by a condition.
|
715
|
-
* Modifies the referenced array
|
716
|
-
* @param {*[]} arr The array which the element is inserted into.
|
717
|
-
* @param {*} el The element to insert.
|
718
|
-
* @param {function} cond The condition to sort on. First parameter is el, second parameter is array element
|
719
|
-
*/
|
720
|
-
insertElementSorted: function (arr, el, cond) {
|
721
|
-
var i = 0,
|
722
|
-
inserted = false;
|
723
|
-
if (arr.length !== 0) {
|
724
|
-
each(arr, function (arrayElement) {
|
725
|
-
if (cond(el, arrayElement) && !inserted) {
|
726
|
-
arr.splice(i, 0, el);
|
727
|
-
inserted = true;
|
728
|
-
}
|
729
|
-
i = i + 1;
|
730
|
-
});
|
731
|
-
}
|
732
|
-
if (!inserted) {
|
733
|
-
arr.push(el);
|
734
|
-
}
|
735
|
-
},
|
736
717
|
/**
|
737
718
|
* Add drilling on the suitable points
|
738
719
|
*/
|
@@ -795,13 +776,13 @@
|
|
795
776
|
if (node.parent !== null) {
|
796
777
|
drillPoint = this.nodeMap[node.parent];
|
797
778
|
} else {
|
798
|
-
drillPoint = this.nodeMap[
|
779
|
+
drillPoint = this.nodeMap[''];
|
799
780
|
}
|
800
781
|
}
|
801
782
|
|
802
783
|
if (drillPoint !== null) {
|
803
784
|
this.drillToNode(drillPoint.id);
|
804
|
-
if (drillPoint.id ===
|
785
|
+
if (drillPoint.id === '') {
|
805
786
|
this.drillUpButton = this.drillUpButton.destroy();
|
806
787
|
} else {
|
807
788
|
parent = this.nodeMap[drillPoint.parent];
|
@@ -884,4 +865,4 @@
|
|
884
865
|
H.extend(this.xAxis.options, treeAxis);
|
885
866
|
}
|
886
867
|
}));
|
887
|
-
}
|
868
|
+
}));
|
data/lib/highcharts/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: highcharts-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Per Christian B. Viken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- README.markdown
|
68
68
|
- Rakefile
|
69
69
|
- app/assets/images/highcharts/meteogram-symbols-30px.png
|
70
|
+
- app/assets/images/highcharts/search.png
|
70
71
|
- app/assets/images/highcharts/skies.jpg
|
71
72
|
- app/assets/images/highcharts/snow.png
|
72
73
|
- app/assets/images/highcharts/sun.png
|