highcharts_rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +106 -0
  9. data/Rakefile +6 -0
  10. data/highcharts_rails.gemspec +27 -0
  11. data/lib/highcharts_rails/version.rb +3 -0
  12. data/lib/highcharts_rails.rb +8 -0
  13. data/vendor/assets/javascripts/highcharts-3d.src.js +2139 -0
  14. data/vendor/assets/javascripts/highcharts-more.src.js +2982 -0
  15. data/vendor/assets/javascripts/highcharts.src.js +22947 -0
  16. data/vendor/assets/javascripts/js/highcharts-3d.src.js +2085 -0
  17. data/vendor/assets/javascripts/js/highcharts-more.src.js +2820 -0
  18. data/vendor/assets/javascripts/js/highcharts.src.js +20917 -0
  19. data/vendor/assets/javascripts/js/modules/accessibility.src.js +1072 -0
  20. data/vendor/assets/javascripts/js/modules/annotations.src.js +408 -0
  21. data/vendor/assets/javascripts/js/modules/boost.src.js +652 -0
  22. data/vendor/assets/javascripts/js/modules/broken-axis.src.js +338 -0
  23. data/vendor/assets/javascripts/js/modules/data.src.js +981 -0
  24. data/vendor/assets/javascripts/js/modules/drilldown.src.js +756 -0
  25. data/vendor/assets/javascripts/js/modules/exporting.src.js +953 -0
  26. data/vendor/assets/javascripts/js/modules/funnel.src.js +290 -0
  27. data/vendor/assets/javascripts/js/modules/gantt.src.js +791 -0
  28. data/vendor/assets/javascripts/js/modules/grid-axis.src.js +545 -0
  29. data/vendor/assets/javascripts/js/modules/heatmap.src.js +798 -0
  30. data/vendor/assets/javascripts/js/modules/no-data-to-display.src.js +150 -0
  31. data/vendor/assets/javascripts/js/modules/offline-exporting.src.js +492 -0
  32. data/vendor/assets/javascripts/js/modules/overlapping-datalabels.src.js +164 -0
  33. data/vendor/assets/javascripts/js/modules/series-label.src.js +606 -0
  34. data/vendor/assets/javascripts/js/modules/solid-gauge.src.js +305 -0
  35. data/vendor/assets/javascripts/js/modules/treemap.src.js +881 -0
  36. data/vendor/assets/javascripts/js/modules/xrange-series.src.js +254 -0
  37. data/vendor/assets/javascripts/js/themes/dark-blue.js +317 -0
  38. data/vendor/assets/javascripts/js/themes/dark-green.js +314 -0
  39. data/vendor/assets/javascripts/js/themes/dark-unica.js +243 -0
  40. data/vendor/assets/javascripts/js/themes/gray.js +326 -0
  41. data/vendor/assets/javascripts/js/themes/grid-light.js +99 -0
  42. data/vendor/assets/javascripts/js/themes/grid.js +131 -0
  43. data/vendor/assets/javascripts/js/themes/sand-signika.js +129 -0
  44. data/vendor/assets/javascripts/js/themes/skies.js +112 -0
  45. data/vendor/assets/javascripts/lib/canvg.src.js +3073 -0
  46. data/vendor/assets/javascripts/lib/jspdf.src.js +3031 -0
  47. data/vendor/assets/javascripts/lib/rgbcolor.src.js +299 -0
  48. data/vendor/assets/javascripts/lib/svg2pdf.src.js +1451 -0
  49. data/vendor/assets/javascripts/modules/accessibility.src.js +1072 -0
  50. data/vendor/assets/javascripts/modules/annotations.src.js +408 -0
  51. data/vendor/assets/javascripts/modules/boost.src.js +652 -0
  52. data/vendor/assets/javascripts/modules/broken-axis.src.js +338 -0
  53. data/vendor/assets/javascripts/modules/data.src.js +981 -0
  54. data/vendor/assets/javascripts/modules/drilldown.src.js +797 -0
  55. data/vendor/assets/javascripts/modules/exporting.src.js +882 -0
  56. data/vendor/assets/javascripts/modules/funnel.src.js +304 -0
  57. data/vendor/assets/javascripts/modules/gantt.src.js +815 -0
  58. data/vendor/assets/javascripts/modules/grid-axis.src.js +547 -0
  59. data/vendor/assets/javascripts/modules/heatmap.src.js +810 -0
  60. data/vendor/assets/javascripts/modules/no-data-to-display.src.js +161 -0
  61. data/vendor/assets/javascripts/modules/offline-exporting.src.js +492 -0
  62. data/vendor/assets/javascripts/modules/overlapping-datalabels.src.js +164 -0
  63. data/vendor/assets/javascripts/modules/series-label.src.js +606 -0
  64. data/vendor/assets/javascripts/modules/solid-gauge.src.js +316 -0
  65. data/vendor/assets/javascripts/modules/treemap.src.js +935 -0
  66. data/vendor/assets/javascripts/modules/xrange-series.src.js +276 -0
  67. data/vendor/assets/javascripts/themes/dark-blue.js +317 -0
  68. data/vendor/assets/javascripts/themes/dark-green.js +314 -0
  69. data/vendor/assets/javascripts/themes/dark-unica.js +243 -0
  70. data/vendor/assets/javascripts/themes/gray.js +326 -0
  71. data/vendor/assets/javascripts/themes/grid-light.js +99 -0
  72. data/vendor/assets/javascripts/themes/grid.js +131 -0
  73. data/vendor/assets/javascripts/themes/sand-signika.js +129 -0
  74. data/vendor/assets/javascripts/themes/skies.js +112 -0
  75. data/vendor/assets/stylesheets/highcharts.scss +610 -0
  76. metadata +161 -0
@@ -0,0 +1,304 @@
1
+ /**
2
+ * @license Highcharts JS v5.0.6 (2016-12-07)
3
+ * Highcharts funnel module
4
+ *
5
+ * (c) 2010-2016 Torstein Honsi
6
+ *
7
+ * License: www.highcharts.com/license
8
+ */
9
+ (function(factory) {
10
+ if (typeof module === 'object' && module.exports) {
11
+ module.exports = factory;
12
+ } else {
13
+ factory(Highcharts);
14
+ }
15
+ }(function(Highcharts) {
16
+ (function(Highcharts) {
17
+ /**
18
+ * Highcharts funnel module
19
+ *
20
+ * (c) 2010-2016 Torstein Honsi
21
+ *
22
+ * License: www.highcharts.com/license
23
+ */
24
+ /* eslint indent:0 */
25
+ 'use strict';
26
+
27
+ // create shortcuts
28
+ var seriesType = Highcharts.seriesType,
29
+ seriesTypes = Highcharts.seriesTypes,
30
+ noop = Highcharts.noop,
31
+ each = Highcharts.each;
32
+
33
+
34
+ seriesType('funnel', 'pie', {
35
+ animation: false,
36
+ center: ['50%', '50%'],
37
+ width: '90%',
38
+ neckWidth: '30%',
39
+ height: '100%',
40
+ neckHeight: '25%',
41
+ reversed: false,
42
+ size: true, // to avoid adapting to data label size in Pie.drawDataLabels
43
+
44
+
45
+ // Presentational
46
+ dataLabels: {
47
+ //position: 'right',
48
+ connectorWidth: 1
49
+ //connectorColor: null
50
+ },
51
+ states: {
52
+ select: {
53
+ color: '#cccccc',
54
+ borderColor: '#000000',
55
+ shadow: false
56
+ }
57
+ }
58
+
59
+ },
60
+
61
+ // Properties
62
+ {
63
+ animate: noop,
64
+
65
+ /**
66
+ * Overrides the pie translate method
67
+ */
68
+ translate: function() {
69
+
70
+ var
71
+ // Get positions - either an integer or a percentage string must be given
72
+ getLength = function(length, relativeTo) {
73
+ return (/%$/).test(length) ?
74
+ relativeTo * parseInt(length, 10) / 100 :
75
+ parseInt(length, 10);
76
+ },
77
+
78
+ sum = 0,
79
+ series = this,
80
+ chart = series.chart,
81
+ options = series.options,
82
+ reversed = options.reversed,
83
+ ignoreHiddenPoint = options.ignoreHiddenPoint,
84
+ plotWidth = chart.plotWidth,
85
+ plotHeight = chart.plotHeight,
86
+ cumulative = 0, // start at top
87
+ center = options.center,
88
+ centerX = getLength(center[0], plotWidth),
89
+ centerY = getLength(center[1], plotHeight),
90
+ width = getLength(options.width, plotWidth),
91
+ tempWidth,
92
+ getWidthAt,
93
+ height = getLength(options.height, plotHeight),
94
+ neckWidth = getLength(options.neckWidth, plotWidth),
95
+ neckHeight = getLength(options.neckHeight, plotHeight),
96
+ neckY = (centerY - height / 2) + height - neckHeight,
97
+ data = series.data,
98
+ path,
99
+ fraction,
100
+ half = options.dataLabels.position === 'left' ? 1 : 0,
101
+
102
+ x1,
103
+ y1,
104
+ x2,
105
+ x3,
106
+ y3,
107
+ x4,
108
+ y5;
109
+
110
+ // Return the width at a specific y coordinate
111
+ series.getWidthAt = getWidthAt = function(y) {
112
+ var top = (centerY - height / 2);
113
+
114
+ return y > neckY || height === neckHeight ?
115
+ neckWidth :
116
+ neckWidth + (width - neckWidth) * (1 - (y - top) / (height - neckHeight));
117
+ };
118
+ series.getX = function(y, half) {
119
+ return centerX + (half ? -1 : 1) * ((getWidthAt(reversed ? 2 * centerY - y : y) / 2) + options.dataLabels.distance);
120
+ };
121
+
122
+ // Expose
123
+ series.center = [centerX, centerY, height];
124
+ series.centerX = centerX;
125
+
126
+ /*
127
+ * Individual point coordinate naming:
128
+ *
129
+ * x1,y1 _________________ x2,y1
130
+ * \ /
131
+ * \ /
132
+ * \ /
133
+ * \ /
134
+ * \ /
135
+ * x3,y3 _________ x4,y3
136
+ *
137
+ * Additional for the base of the neck:
138
+ *
139
+ * | |
140
+ * | |
141
+ * | |
142
+ * x3,y5 _________ x4,y5
143
+ */
144
+
145
+
146
+
147
+
148
+ // get the total sum
149
+ each(data, function(point) {
150
+ if (!ignoreHiddenPoint || point.visible !== false) {
151
+ sum += point.y;
152
+ }
153
+ });
154
+
155
+ each(data, function(point) {
156
+ // set start and end positions
157
+ y5 = null;
158
+ fraction = sum ? point.y / sum : 0;
159
+ y1 = centerY - height / 2 + cumulative * height;
160
+ y3 = y1 + fraction * height;
161
+ //tempWidth = neckWidth + (width - neckWidth) * ((height - neckHeight - y1) / (height - neckHeight));
162
+ tempWidth = getWidthAt(y1);
163
+ x1 = centerX - tempWidth / 2;
164
+ x2 = x1 + tempWidth;
165
+ tempWidth = getWidthAt(y3);
166
+ x3 = centerX - tempWidth / 2;
167
+ x4 = x3 + tempWidth;
168
+
169
+ // the entire point is within the neck
170
+ if (y1 > neckY) {
171
+ x1 = x3 = centerX - neckWidth / 2;
172
+ x2 = x4 = centerX + neckWidth / 2;
173
+
174
+ // the base of the neck
175
+ } else if (y3 > neckY) {
176
+ y5 = y3;
177
+
178
+ tempWidth = getWidthAt(neckY);
179
+ x3 = centerX - tempWidth / 2;
180
+ x4 = x3 + tempWidth;
181
+
182
+ y3 = neckY;
183
+ }
184
+
185
+ if (reversed) {
186
+ y1 = 2 * centerY - y1;
187
+ y3 = 2 * centerY - y3;
188
+ y5 = (y5 ? 2 * centerY - y5 : null);
189
+ }
190
+ // save the path
191
+ path = [
192
+ 'M',
193
+ x1, y1,
194
+ 'L',
195
+ x2, y1,
196
+ x4, y3
197
+ ];
198
+ if (y5) {
199
+ path.push(x4, y5, x3, y5);
200
+ }
201
+ path.push(x3, y3, 'Z');
202
+
203
+ // prepare for using shared dr
204
+ point.shapeType = 'path';
205
+ point.shapeArgs = {
206
+ d: path
207
+ };
208
+
209
+
210
+ // for tooltips and data labels
211
+ point.percentage = fraction * 100;
212
+ point.plotX = centerX;
213
+ point.plotY = (y1 + (y5 || y3)) / 2;
214
+
215
+ // Placement of tooltips and data labels
216
+ point.tooltipPos = [
217
+ centerX,
218
+ point.plotY
219
+ ];
220
+
221
+ // Slice is a noop on funnel points
222
+ point.slice = noop;
223
+
224
+ // Mimicking pie data label placement logic
225
+ point.half = half;
226
+
227
+ if (!ignoreHiddenPoint || point.visible !== false) {
228
+ cumulative += fraction;
229
+ }
230
+ });
231
+ },
232
+ /**
233
+ * Draw a single point (wedge)
234
+ * @param {Object} point The point object
235
+ * @param {Object} color The color of the point
236
+ * @param {Number} brightness The brightness relative to the color
237
+ */
238
+ drawPoints: seriesTypes.column.prototype.drawPoints,
239
+
240
+ /**
241
+ * Funnel items don't have angles (#2289)
242
+ */
243
+ sortByAngle: function(points) {
244
+ points.sort(function(a, b) {
245
+ return a.plotY - b.plotY;
246
+ });
247
+ },
248
+
249
+ /**
250
+ * Extend the pie data label method
251
+ */
252
+ drawDataLabels: function() {
253
+ var data = this.data,
254
+ labelDistance = this.options.dataLabels.distance,
255
+ leftSide,
256
+ sign,
257
+ point,
258
+ i = data.length,
259
+ x,
260
+ y;
261
+
262
+ // In the original pie label anticollision logic, the slots are distributed
263
+ // from one labelDistance above to one labelDistance below the pie. In funnels
264
+ // we don't want this.
265
+ this.center[2] -= 2 * labelDistance;
266
+
267
+ // Set the label position array for each point.
268
+ while (i--) {
269
+ point = data[i];
270
+ leftSide = point.half;
271
+ sign = leftSide ? 1 : -1;
272
+ y = point.plotY;
273
+ x = this.getX(y, leftSide);
274
+
275
+ // set the anchor point for data labels
276
+ point.labelPos = [
277
+ 0, // first break of connector
278
+ y, // a/a
279
+ x + (labelDistance - 5) * sign, // second break, right outside point shape
280
+ y, // a/a
281
+ x + labelDistance * sign, // landing point for connector
282
+ y, // a/a
283
+ leftSide ? 'right' : 'left', // alignment
284
+ 0 // center angle
285
+ ];
286
+ }
287
+
288
+ seriesTypes.pie.prototype.drawDataLabels.call(this);
289
+ }
290
+
291
+ });
292
+
293
+ /**
294
+ * Pyramid series type.
295
+ * A pyramid series is a special type of funnel, without neck and reversed by default.
296
+ */
297
+ seriesType('pyramid', 'funnel', {
298
+ neckWidth: '0%',
299
+ neckHeight: '0%',
300
+ reversed: true
301
+ });
302
+
303
+ }(Highcharts));
304
+ }));