highcharts-rails 5.0.6 → 5.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +54 -0
- data/app/assets/javascripts/highcharts.js +542 -324
- data/app/assets/javascripts/highcharts/highcharts-3d.js +12 -2
- data/app/assets/javascripts/highcharts/highcharts-more.js +41 -47
- data/app/assets/javascripts/highcharts/modules/accessibility.js +20 -4
- data/app/assets/javascripts/highcharts/modules/annotations.js +1 -1
- data/app/assets/javascripts/highcharts/modules/boost.js +9 -3
- data/app/assets/javascripts/highcharts/modules/broken-axis.js +11 -13
- data/app/assets/javascripts/highcharts/modules/data.js +1 -1
- data/app/assets/javascripts/highcharts/modules/drilldown.js +28 -13
- 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/grid-axis.js +1 -1
- data/app/assets/javascripts/highcharts/modules/heatmap.js +12 -7
- data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +1 -1
- data/app/assets/javascripts/highcharts/modules/offline-exporting.js +71 -18
- data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +1 -1
- data/app/assets/javascripts/highcharts/modules/series-label.js +1 -1
- data/app/assets/javascripts/highcharts/modules/solid-gauge.js +1 -1
- data/app/assets/javascripts/highcharts/modules/stock.js +6360 -0
- data/app/assets/javascripts/highcharts/modules/treemap.js +88 -90
- data/app/assets/javascripts/highcharts/modules/xrange-series.js +5 -1
- data/lib/highcharts/version.rb +1 -1
- metadata +2 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v5.0.
|
2
|
+
* @license Highcharts JS v5.0.7 (2017-01-17)
|
3
3
|
*
|
4
4
|
* (c) 2014 Highsoft AS
|
5
5
|
* Authors: Jon Arild Nygard / Oystein Moseng
|
@@ -31,6 +31,7 @@
|
|
31
31
|
each = H.each,
|
32
32
|
grep = H.grep,
|
33
33
|
isNumber = H.isNumber,
|
34
|
+
isString = H.isString,
|
34
35
|
pick = H.pick,
|
35
36
|
Series = H.Series,
|
36
37
|
stableSort = H.stableSort,
|
@@ -148,44 +149,20 @@
|
|
148
149
|
* Creates a tree structured object from the series points
|
149
150
|
*/
|
150
151
|
getTree: function() {
|
151
|
-
var
|
152
|
-
series = this,
|
152
|
+
var series = this,
|
153
153
|
allIds = map(this.data, function(d) {
|
154
154
|
return d.id;
|
155
155
|
}),
|
156
156
|
parentList = series.getListOfParents(this.data, allIds);
|
157
157
|
|
158
158
|
series.nodeMap = [];
|
159
|
-
|
160
|
-
// Parents of the root node is by default visible
|
161
|
-
recursive(this.nodeMap[this.rootNode], function(node) {
|
162
|
-
var next = false,
|
163
|
-
p = node.parent;
|
164
|
-
node.visible = true;
|
165
|
-
if (p || p === '') {
|
166
|
-
next = series.nodeMap[p];
|
167
|
-
}
|
168
|
-
return next;
|
169
|
-
});
|
170
|
-
// Children of the root node is by default visible
|
171
|
-
recursive(this.nodeMap[this.rootNode].children, function(children) {
|
172
|
-
var next = false;
|
173
|
-
each(children, function(child) {
|
174
|
-
child.visible = true;
|
175
|
-
if (child.children.length) {
|
176
|
-
next = (next || []).concat(child.children);
|
177
|
-
}
|
178
|
-
});
|
179
|
-
return next;
|
180
|
-
});
|
181
|
-
this.setTreeValues(tree);
|
182
|
-
return tree;
|
159
|
+
return series.buildNode('', -1, 0, parentList, null);
|
183
160
|
},
|
184
161
|
init: function(chart, options) {
|
185
162
|
var series = this;
|
186
163
|
Series.prototype.init.call(series, chart, options);
|
187
164
|
if (series.options.allowDrillToNode) {
|
188
|
-
series.
|
165
|
+
H.addEvent(series, 'click', series.onClickDrillToNode);
|
189
166
|
}
|
190
167
|
},
|
191
168
|
buildNode: function(id, i, level, list, parent) {
|
@@ -221,6 +198,27 @@
|
|
221
198
|
children = [],
|
222
199
|
val,
|
223
200
|
point = series.points[tree.i];
|
201
|
+
// Parents of the root node is by default visible
|
202
|
+
recursive(series.nodeMap[series.rootNode], function(node) {
|
203
|
+
var next = false,
|
204
|
+
p = node.parent;
|
205
|
+
node.visible = true;
|
206
|
+
if (p || p === '') {
|
207
|
+
next = series.nodeMap[p];
|
208
|
+
}
|
209
|
+
return next;
|
210
|
+
});
|
211
|
+
// Children of the root node is by default visible
|
212
|
+
recursive(series.nodeMap[series.rootNode].children, function(children) {
|
213
|
+
var next = false;
|
214
|
+
each(children, function(child) {
|
215
|
+
child.visible = true;
|
216
|
+
if (child.children.length) {
|
217
|
+
next = (next || []).concat(child.children);
|
218
|
+
}
|
219
|
+
});
|
220
|
+
return next;
|
221
|
+
});
|
224
222
|
|
225
223
|
// First give the children some values
|
226
224
|
each(tree.children, function(child) {
|
@@ -319,7 +317,8 @@
|
|
319
317
|
x2,
|
320
318
|
y1,
|
321
319
|
y2,
|
322
|
-
|
320
|
+
strokeWidth = series.pointAttribs(point)['stroke-width'] || 0,
|
321
|
+
crispCorr = (strokeWidth % 2) / 2;
|
323
322
|
|
324
323
|
// Points which is ignored, have no values.
|
325
324
|
if (values && node.visible) {
|
@@ -563,56 +562,66 @@
|
|
563
562
|
return this.algorithmFill(false, parent, children);
|
564
563
|
},
|
565
564
|
translate: function() {
|
566
|
-
var
|
565
|
+
var series = this,
|
566
|
+
rootId = series.rootNode = pick(series.rootNode, series.options.rootId, ''),
|
567
|
+
rootNode,
|
568
|
+
pointValues,
|
567
569
|
seriesArea,
|
568
570
|
tree,
|
569
571
|
val;
|
570
572
|
|
571
573
|
// Call prototype function
|
572
|
-
Series.prototype.translate.call(
|
573
|
-
|
574
|
-
// Assign variables
|
575
|
-
this.rootNode = pick(this.options.rootId, '');
|
574
|
+
Series.prototype.translate.call(series);
|
576
575
|
// Create a object map from level to options
|
577
|
-
|
576
|
+
series.levelMap = reduce(series.options.levels, function(arr, item) {
|
578
577
|
arr[item.level] = item;
|
579
578
|
return arr;
|
580
579
|
}, {});
|
581
|
-
tree =
|
580
|
+
tree = series.tree = series.getTree(); // @todo Only if series.isDirtyData is true
|
581
|
+
rootNode = series.nodeMap[rootId];
|
582
|
+
if (
|
583
|
+
rootId !== '' &&
|
584
|
+
(!rootNode || !rootNode.children.length)
|
585
|
+
) {
|
586
|
+
series.drillToNode('', false);
|
587
|
+
rootId = series.rootNode;
|
588
|
+
rootNode = series.nodeMap[rootId];
|
589
|
+
}
|
590
|
+
series.setTreeValues(tree);
|
582
591
|
|
583
592
|
// Calculate plotting values.
|
584
|
-
|
585
|
-
|
593
|
+
series.axisRatio = (series.xAxis.len / series.yAxis.len);
|
594
|
+
series.nodeMap[''].pointValues = pointValues = {
|
586
595
|
x: 0,
|
587
596
|
y: 0,
|
588
597
|
width: 100,
|
589
598
|
height: 100
|
590
599
|
};
|
591
|
-
|
592
|
-
width: (pointValues.width *
|
593
|
-
direction: (
|
600
|
+
series.nodeMap[''].values = seriesArea = merge(pointValues, {
|
601
|
+
width: (pointValues.width * series.axisRatio),
|
602
|
+
direction: (series.options.layoutStartingDirection === 'vertical' ? 0 : 1),
|
594
603
|
val: tree.val
|
595
604
|
});
|
596
|
-
|
605
|
+
series.calculateChildrenAreas(tree, seriesArea);
|
597
606
|
|
598
607
|
// Logic for point colors
|
599
|
-
if (
|
600
|
-
|
601
|
-
} else if (!
|
602
|
-
|
608
|
+
if (series.colorAxis) {
|
609
|
+
series.translateColors();
|
610
|
+
} else if (!series.options.colorByPoint) {
|
611
|
+
series.setColorRecursive(series.tree);
|
603
612
|
}
|
604
613
|
|
605
614
|
// Update axis extremes according to the root node.
|
606
|
-
if (
|
607
|
-
val =
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
615
|
+
if (series.options.allowDrillToNode) {
|
616
|
+
val = rootNode.pointValues;
|
617
|
+
series.xAxis.setExtremes(val.x, val.x + val.width, false);
|
618
|
+
series.yAxis.setExtremes(val.y, val.y + val.height, false);
|
619
|
+
series.xAxis.setScale();
|
620
|
+
series.yAxis.setScale();
|
612
621
|
}
|
613
622
|
|
614
623
|
// Assign values to points.
|
615
|
-
|
624
|
+
series.setPointValues();
|
616
625
|
},
|
617
626
|
/**
|
618
627
|
* Extend drawDataLabels with logic to handle custom options related to the treemap series:
|
@@ -752,20 +761,15 @@
|
|
752
761
|
/**
|
753
762
|
* Add drilling on the suitable points
|
754
763
|
*/
|
755
|
-
|
756
|
-
var series = this
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
//
|
762
|
-
|
763
|
-
|
764
|
-
point.setState(''); // Remove hover
|
765
|
-
series.drillToNode(drillId);
|
766
|
-
series.showDrillUpButton(drillName);
|
767
|
-
}
|
768
|
-
});
|
764
|
+
onClickDrillToNode: function(event) {
|
765
|
+
var series = this,
|
766
|
+
point = event.point,
|
767
|
+
drillId = point && point.drillId;
|
768
|
+
// If a drill id is returned, add click event and cursor.
|
769
|
+
if (isString(drillId)) {
|
770
|
+
point.setState(''); // Remove hover
|
771
|
+
series.drillToNode(drillId);
|
772
|
+
}
|
769
773
|
},
|
770
774
|
/**
|
771
775
|
* Finds the drill id for a parent node.
|
@@ -803,32 +807,26 @@
|
|
803
807
|
return drillId;
|
804
808
|
},
|
805
809
|
drillUp: function() {
|
806
|
-
var
|
807
|
-
node
|
808
|
-
|
809
|
-
|
810
|
-
node = this.nodeMap[this.rootNode];
|
811
|
-
if (node.parent !== null) {
|
812
|
-
drillPoint = this.nodeMap[node.parent];
|
813
|
-
} else {
|
814
|
-
drillPoint = this.nodeMap[''];
|
815
|
-
}
|
816
|
-
}
|
817
|
-
|
818
|
-
if (drillPoint !== null) {
|
819
|
-
this.drillToNode(drillPoint.id);
|
820
|
-
if (drillPoint.id === '') {
|
821
|
-
this.drillUpButton = this.drillUpButton.destroy();
|
822
|
-
} else {
|
823
|
-
parent = this.nodeMap[drillPoint.parent];
|
824
|
-
this.showDrillUpButton((parent.name || parent.id));
|
825
|
-
}
|
810
|
+
var series = this,
|
811
|
+
node = series.nodeMap[series.rootNode];
|
812
|
+
if (node && isString(node.parent)) {
|
813
|
+
series.drillToNode(node.parent);
|
826
814
|
}
|
827
815
|
},
|
828
|
-
drillToNode: function(id) {
|
829
|
-
|
816
|
+
drillToNode: function(id, redraw) {
|
817
|
+
var series = this,
|
818
|
+
nodeMap = series.nodeMap,
|
819
|
+
node = nodeMap[id];
|
820
|
+
series.rootNode = id;
|
821
|
+
if (id === '') {
|
822
|
+
series.drillUpButton = series.drillUpButton.destroy();
|
823
|
+
} else {
|
824
|
+
series.showDrillUpButton((node && node.name || id));
|
825
|
+
}
|
830
826
|
this.isDirty = true; // Force redraw
|
831
|
-
|
827
|
+
if (pick(redraw, true)) {
|
828
|
+
this.chart.redraw();
|
829
|
+
}
|
832
830
|
},
|
833
831
|
showDrillUpButton: function(name) {
|
834
832
|
var series = this,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Highcharts JS v5.0.
|
2
|
+
* @license Highcharts JS v5.0.7 (2017-01-17)
|
3
3
|
* X-range series
|
4
4
|
*
|
5
5
|
* (c) 2010-2016 Torstein Honsi, Lars A. V. Cabrera
|
@@ -135,6 +135,10 @@
|
|
135
135
|
plotX = Math.max(plotX, -10);
|
136
136
|
plotX2 = Math.min(Math.max(plotX2, -10), xAxis.len + 10);
|
137
137
|
|
138
|
+
if (plotX2 < plotX) { // #6107
|
139
|
+
plotX2 = plotX;
|
140
|
+
}
|
141
|
+
|
138
142
|
point.shapeArgs = {
|
139
143
|
x: plotX,
|
140
144
|
y: point.plotY + metrics.offset,
|
data/lib/highcharts/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: highcharts-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Per Christian B. Viken
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- app/assets/javascripts/highcharts/modules/overlapping-datalabels.js
|
90
90
|
- app/assets/javascripts/highcharts/modules/series-label.js
|
91
91
|
- app/assets/javascripts/highcharts/modules/solid-gauge.js
|
92
|
+
- app/assets/javascripts/highcharts/modules/stock.js
|
92
93
|
- app/assets/javascripts/highcharts/modules/treemap.js
|
93
94
|
- app/assets/javascripts/highcharts/modules/xrange-series.js
|
94
95
|
- app/assets/javascripts/highcharts/themes/dark-blue.js
|