highcharts-js-rails 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
File without changes
@@ -19,7 +19,7 @@ module Highcharts
19
19
  private
20
20
  def render_all
21
21
  content = [render_container, render_titles, render_plot_options, render_axes, render_series, render_legend, render_tooltip].flatten.compact.join(",")
22
- if Rails.env.production?
22
+ if ::Rails.env.production?
23
23
  content
24
24
  else
25
25
  content.gsub(/(,|{|\[)/, "\\1\n").gsub(/(}|\])/, "\n\\1")
@@ -1,3 +1,3 @@
1
1
  module Highcharts
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -497,10 +497,10 @@ function normalizeTickInterval(interval, multiples, magnitude, options) {
497
497
 
498
498
  /**
499
499
  * Get a normalized tick interval for dates. Returns a configuration object with
500
- * unit range (interval), count and name. Used to prepare data for getTimeTicks.
500
+ * unit range (interval), count and name. Used to prepare data for getTimeTicks.
501
501
  * Previously this logic was part of getTimeTicks, but as getTimeTicks now runs
502
- * of segments in stock charts, the normalizing logic was extracted in order to
503
- * prevent it for running over again for each segment having the same interval.
502
+ * of segments in stock charts, the normalizing logic was extracted in order to
503
+ * prevent it for running over again for each segment having the same interval.
504
504
  * #662, #697.
505
505
  */
506
506
  function normalizeTimeTickInterval(tickInterval, unitsOption) {
@@ -534,7 +534,7 @@ function normalizeTimeTickInterval(tickInterval, unitsOption) {
534
534
  multiples = unit[1],
535
535
  count,
536
536
  i;
537
-
537
+
538
538
  // loop through the units to find the one that best fits the tickInterval
539
539
  for (i = 0; i < units.length; i++) {
540
540
  unit = units[i];
@@ -558,7 +558,7 @@ function normalizeTimeTickInterval(tickInterval, unitsOption) {
558
558
  if (interval === timeUnits[YEAR] && tickInterval < 5 * interval) {
559
559
  multiples = [1, 2, 5];
560
560
  }
561
-
561
+
562
562
  // prevent 2.5 years intervals, though 25, 250 etc. are allowed
563
563
  if (interval === timeUnits[YEAR] && tickInterval < 5 * interval) {
564
564
  multiples = [1, 2, 5];
@@ -566,7 +566,7 @@ function normalizeTimeTickInterval(tickInterval, unitsOption) {
566
566
 
567
567
  // get the count
568
568
  count = normalizeTickInterval(tickInterval / interval, multiples);
569
-
569
+
570
570
  return {
571
571
  unitRange: interval,
572
572
  count: count,
@@ -664,7 +664,7 @@ function getTimeTicks(normalizedInterval, min, max, startOfWeek) {
664
664
  // else, the interval is fixed and we use simple addition
665
665
  } else {
666
666
  time += interval * count;
667
-
667
+
668
668
  // mark new days if the time is dividable by day
669
669
  if (interval <= timeUnits[HOUR] && time % timeUnits[DAY] === 0) {
670
670
  higherRanks[time] = DAY;
@@ -673,7 +673,7 @@ function getTimeTicks(normalizedInterval, min, max, startOfWeek) {
673
673
 
674
674
  i++;
675
675
  }
676
-
676
+
677
677
  // push the last time
678
678
  tickPositions.push(time);
679
679
 
@@ -719,7 +719,7 @@ ChartCounters.prototype = {
719
719
  * and not covering the point it self.
720
720
  */
721
721
  function placeBox(boxWidth, boxHeight, outerLeft, outerTop, outerWidth, outerHeight, point, distance, preferRight) {
722
-
722
+
723
723
  // keep the box within the chart area
724
724
  var pointX = point.x,
725
725
  pointY = point.y,
@@ -852,7 +852,7 @@ function discardElement(element) {
852
852
  }
853
853
 
854
854
  /**
855
- * Provide error messages for debugging, with links to online explanation
855
+ * Provide error messages for debugging, with links to online explanation
856
856
  */
857
857
  function error(code, stop) {
858
858
  var msg = 'Highcharts error #' + code + ': www.highcharts.com/errors/' + code;
@@ -1411,7 +1411,7 @@ defaultOptions = {
1411
1411
  //valueDecimals: null,
1412
1412
  //xDateFormat: '%A, %b %e, %Y',
1413
1413
  //valuePrefix: '',
1414
- //ySuffix: ''
1414
+ //ySuffix: ''
1415
1415
  //}
1416
1416
  // turboThreshold: 1000
1417
1417
  // zIndex: null
@@ -1509,7 +1509,7 @@ defaultOptions = {
1509
1509
  },
1510
1510
 
1511
1511
  credits: {
1512
- enabled: false,
1512
+ enabled: true,
1513
1513
  text: 'Highcharts.com',
1514
1514
  href: 'http://www.highcharts.com',
1515
1515
  position: {
@@ -1821,15 +1821,15 @@ function setTimeMethods() {
1821
1821
  * @param {Object} options The new custom options
1822
1822
  */
1823
1823
  function setOptions(options) {
1824
-
1825
- // Pull out axis options and apply them to the respective default axis options
1824
+
1825
+ // Pull out axis options and apply them to the respective default axis options
1826
1826
  defaultXAxisOptions = merge(defaultXAxisOptions, options.xAxis);
1827
1827
  defaultYAxisOptions = merge(defaultYAxisOptions, options.yAxis);
1828
1828
  options.xAxis = options.yAxis = UNDEFINED;
1829
-
1829
+
1830
1830
  // Merge in the default options
1831
1831
  defaultOptions = merge(defaultOptions, options);
1832
-
1832
+
1833
1833
  // Apply UTC
1834
1834
  setTimeMethods();
1835
1835
 
@@ -2190,14 +2190,14 @@ SVGElement.prototype = {
2190
2190
  }
2191
2191
 
2192
2192
  }
2193
-
2193
+
2194
2194
  // Workaround for our #732, WebKit's issue https://bugs.webkit.org/show_bug.cgi?id=78385
2195
2195
  // TODO: If the WebKit team fix this bug before the final release of Chrome 18, remove the workaround.
2196
2196
  if (isWebKit && /Chrome\/(18|19)/.test(userAgent)) {
2197
2197
  if (nodeName === 'text' && (hash.x !== UNDEFINED || hash.y !== UNDEFINED)) {
2198
2198
  var parent = element.parentNode,
2199
2199
  next = element.nextSibling;
2200
-
2200
+
2201
2201
  if (parent) {
2202
2202
  parent.removeChild(element);
2203
2203
  if (next) {
@@ -2209,7 +2209,7 @@ SVGElement.prototype = {
2209
2209
  }
2210
2210
  }
2211
2211
  // End of workaround for #732
2212
-
2212
+
2213
2213
  return ret;
2214
2214
  },
2215
2215
 
@@ -2667,7 +2667,7 @@ SVGElement.prototype = {
2667
2667
  // SVG elements
2668
2668
  if (element.namespaceURI === SVG_NS) {
2669
2669
  try { // Fails in Firefox if the container has display: none.
2670
-
2670
+
2671
2671
  bBox = element.getBBox ?
2672
2672
  // SVG: use extend because IE9 is not allowed to change width and height in case
2673
2673
  // of rotation (below)
@@ -2678,13 +2678,13 @@ SVGElement.prototype = {
2678
2678
  height: element.offsetHeight
2679
2679
  };
2680
2680
  } catch (e) {}
2681
-
2681
+
2682
2682
  // If the bBox is not set, the try-catch block above failed. The other condition
2683
2683
  // is for Opera that returns a width of -Infinity on hidden elements.
2684
2684
  if (!bBox || bBox.width < 0) {
2685
2685
  bBox = { width: 0, height: 0 };
2686
2686
  }
2687
-
2687
+
2688
2688
  width = bBox.width;
2689
2689
  height = bBox.height;
2690
2690
 
@@ -4195,12 +4195,12 @@ var VMLElementExtension = {
4195
4195
  toggleChildren: function (element, visibility) {
4196
4196
  var childNodes = element.childNodes,
4197
4197
  i = childNodes.length;
4198
-
4198
+
4199
4199
  while (i--) {
4200
-
4200
+
4201
4201
  // apply the visibility
4202
4202
  css(childNodes[i], { visibility: visibility });
4203
-
4203
+
4204
4204
  // we have a nested group, apply it to its children again
4205
4205
  if (childNodes[i].nodeName === 'DIV') {
4206
4206
  this.toggleChildren(childNodes[i], visibility);
@@ -4329,9 +4329,9 @@ var VMLElementExtension = {
4329
4329
 
4330
4330
  // width and height
4331
4331
  } else if (key === 'width' || key === 'height') {
4332
-
4332
+
4333
4333
  value = mathMax(0, value); // don't set width or height below zero (#311)
4334
-
4334
+
4335
4335
  this[key] = value; // used in getter
4336
4336
 
4337
4337
  // clipping rectangle special
@@ -4721,15 +4721,15 @@ VMLRendererExtension = { // inherit SVGRenderer
4721
4721
  (y2 - y1) / // y vector
4722
4722
  (x2 - x1) // x vector
4723
4723
  ) * 180 / mathPI;
4724
-
4725
-
4724
+
4725
+
4726
4726
  // when colors attribute is used, the meanings of opacity and o:opacity2
4727
4727
  // are reversed.
4728
4728
  markup = ['<fill colors="0% ', color1, ',100% ', color2, '" angle="', angle,
4729
4729
  '" opacity="', opacity2, '" o:opacity2="', opacity1,
4730
4730
  '" type="gradient" focus="100%" method="any" />'];
4731
4731
  createElement(this.prepVML(markup), null, null, elem);
4732
-
4732
+
4733
4733
  // Gradients are not supported for VML stroke, return the first color. #722.
4734
4734
  } else {
4735
4735
  return stopColor;
@@ -5864,7 +5864,7 @@ function Chart(options, callback) {
5864
5864
  yDataLength,
5865
5865
  activeYData = [],
5866
5866
  activeCounter = 0;
5867
-
5867
+
5868
5868
  // Validate threshold in logarithmic axes
5869
5869
  if (isLog && threshold <= 0) {
5870
5870
  threshold = seriesOptions.threshold = null;
@@ -6015,7 +6015,7 @@ function Chart(options, callback) {
6015
6015
  *
6016
6016
  */
6017
6017
  translate = function (val, backwards, cvsCoord, old, handleLog) {
6018
-
6018
+
6019
6019
  var sign = 1,
6020
6020
  cvsOffset = 0,
6021
6021
  localA = old ? oldTransA : transA,
@@ -6130,28 +6130,28 @@ function Chart(options, callback) {
6130
6130
  }
6131
6131
  return tickPositions;
6132
6132
  }
6133
-
6133
+
6134
6134
  /**
6135
6135
  * Set the tick positions of a logarithmic axis
6136
6136
  */
6137
6137
  function getLogTickPositions(interval, min, max, minor) {
6138
-
6138
+
6139
6139
  // Since we use this method for both major and minor ticks,
6140
6140
  // use a local variable and return the result
6141
- var positions = [];
6142
-
6141
+ var positions = [];
6142
+
6143
6143
  // Reset
6144
6144
  if (!minor) {
6145
6145
  axis._minorAutoInterval = null;
6146
6146
  }
6147
-
6147
+
6148
6148
  // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.
6149
6149
  if (interval >= 0.5) {
6150
6150
  interval = mathRound(interval);
6151
6151
  positions = getLinearTickPositions(interval, min, max);
6152
-
6153
- // Second case: We need intermediary ticks. For example
6154
- // 1, 2, 4, 6, 8, 10, 20, 40 etc.
6152
+
6153
+ // Second case: We need intermediary ticks. For example
6154
+ // 1, 2, 4, 6, 8, 10, 20, 40 etc.
6155
6155
  } else if (interval >= 0.08) {
6156
6156
  var roundedMin = mathFloor(min),
6157
6157
  intermediate,
@@ -6161,7 +6161,7 @@ function Chart(options, callback) {
6161
6161
  pos,
6162
6162
  lastPos,
6163
6163
  break2;
6164
-
6164
+
6165
6165
  if (interval > 0.3) {
6166
6166
  intermediate = [1, 2, 4];
6167
6167
  } else if (interval > 0.15) { // 0.2 equals five minor ticks per 1, 10, 100 etc
@@ -6169,23 +6169,23 @@ function Chart(options, callback) {
6169
6169
  } else { // 0.1 equals ten minor ticks per 1, 10, 100 etc
6170
6170
  intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];
6171
6171
  }
6172
-
6172
+
6173
6173
  for (i = roundedMin; i < max + 1 && !break2; i++) {
6174
6174
  len = intermediate.length;
6175
6175
  for (j = 0; j < len && !break2; j++) {
6176
6176
  pos = log2lin(lin2log(i) * intermediate[j]);
6177
-
6177
+
6178
6178
  if (pos > min) {
6179
6179
  positions.push(lastPos);
6180
6180
  }
6181
-
6181
+
6182
6182
  if (lastPos > max) {
6183
6183
  break2 = true;
6184
6184
  }
6185
6185
  lastPos = pos;
6186
6186
  }
6187
6187
  }
6188
-
6188
+
6189
6189
  // Third case: We are so deep in between whole logarithmic values that
6190
6190
  // we might as well handle the tick positions like a linear axis. For
6191
6191
  // example 1.01, 1.02, 1.03, 1.04.
@@ -6196,37 +6196,37 @@ function Chart(options, callback) {
6196
6196
  filteredTickIntervalOption = tickIntervalOption === 'auto' ? null : tickIntervalOption,
6197
6197
  tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1),
6198
6198
  totalPixelLength = minor ? axisLength / tickPositions.length : axisLength;
6199
-
6199
+
6200
6200
  interval = pick(
6201
6201
  filteredTickIntervalOption,
6202
6202
  axis._minorAutoInterval,
6203
6203
  (realMax - realMin) * tickPixelIntervalOption / (totalPixelLength || 1)
6204
6204
  );
6205
-
6205
+
6206
6206
  interval = normalizeTickInterval(
6207
- interval,
6208
- null,
6207
+ interval,
6208
+ null,
6209
6209
  math.pow(10, mathFloor(math.log(interval) / math.LN10))
6210
6210
  );
6211
-
6211
+
6212
6212
  positions = map(getLinearTickPositions(
6213
- interval,
6213
+ interval,
6214
6214
  realMin,
6215
- realMax
6215
+ realMax
6216
6216
  ), log2lin);
6217
-
6217
+
6218
6218
  if (!minor) {
6219
6219
  axis._minorAutoInterval = interval / 5;
6220
6220
  }
6221
6221
  }
6222
-
6223
- // Set the axis-level tickInterval variable
6222
+
6223
+ // Set the axis-level tickInterval variable
6224
6224
  if (!minor) {
6225
6225
  tickInterval = interval;
6226
6226
  }
6227
6227
  return positions;
6228
6228
  }
6229
-
6229
+
6230
6230
  /**
6231
6231
  * Return the minor tick positions. For logarithmic axes, reuse the same logic
6232
6232
  * as for major ticks.
@@ -6236,27 +6236,27 @@ function Chart(options, callback) {
6236
6236
  pos,
6237
6237
  i,
6238
6238
  len;
6239
-
6239
+
6240
6240
  if (isLog) {
6241
6241
  len = tickPositions.length;
6242
6242
  for (i = 1; i < len; i++) {
6243
6243
  minorTickPositions = minorTickPositions.concat(
6244
6244
  getLogTickPositions(minorTickInterval, tickPositions[i - 1], tickPositions[i], true)
6245
- );
6245
+ );
6246
6246
  }
6247
-
6248
- } else {
6247
+
6248
+ } else {
6249
6249
  for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {
6250
- minorTickPositions.push(pos);
6250
+ minorTickPositions.push(pos);
6251
6251
  }
6252
6252
  }
6253
-
6253
+
6254
6254
  return minorTickPositions;
6255
6255
  }
6256
6256
 
6257
6257
  /**
6258
- * Adjust the min and max for the minimum range. Keep in mind that the series data is
6259
- * not yet processed, so we don't have information on data cropping and grouping, or
6258
+ * Adjust the min and max for the minimum range. Keep in mind that the series data is
6259
+ * not yet processed, so we don't have information on data cropping and grouping, or
6260
6260
  * updated axis.pointRange or series.pointRange. The data can't be processed until
6261
6261
  * we have finally established min and max.
6262
6262
  */
@@ -6270,10 +6270,10 @@ function Chart(options, callback) {
6270
6270
  loopLength,
6271
6271
  minArgs,
6272
6272
  maxArgs;
6273
-
6273
+
6274
6274
  // Set the automatic minimum range based on the closest point distance
6275
6275
  if (isXAxis && minRange === UNDEFINED && !isLog) {
6276
-
6276
+
6277
6277
  if (defined(options.min) || defined(options.max)) {
6278
6278
  minRange = null; // don't do this again
6279
6279
 
@@ -6294,7 +6294,7 @@ function Chart(options, callback) {
6294
6294
  minRange = mathMin(closestDataRange * 5, dataMax - dataMin);
6295
6295
  }
6296
6296
  }
6297
-
6297
+
6298
6298
  // if minRange is exceeded, adjust
6299
6299
  if (max - min < minRange) {
6300
6300
 
@@ -6311,7 +6311,7 @@ function Chart(options, callback) {
6311
6311
  if (spaceAvailable) { // if space is availabe, stay within the data range
6312
6312
  maxArgs[2] = dataMax;
6313
6313
  }
6314
-
6314
+
6315
6315
  max = arrayMin(maxArgs);
6316
6316
 
6317
6317
  // now if the max is adjusted, adjust the min back
@@ -6395,10 +6395,10 @@ function Chart(options, callback) {
6395
6395
  }
6396
6396
 
6397
6397
  // Now we're finished detecting min and max, crop and group series data. This
6398
- // is in turn needed in order to find tick positions in ordinal axes.
6398
+ // is in turn needed in order to find tick positions in ordinal axes.
6399
6399
  if (isXAxis && !secondPass) {
6400
6400
  each(axis.series, function (series) {
6401
- series.processData(min !== oldMin || max !== oldMax);
6401
+ series.processData(min !== oldMin || max !== oldMax);
6402
6402
  });
6403
6403
  }
6404
6404
 
@@ -6409,10 +6409,10 @@ function Chart(options, callback) {
6409
6409
  if (axis.beforeSetTickPositions) {
6410
6410
  axis.beforeSetTickPositions();
6411
6411
  }
6412
-
6412
+
6413
6413
  // hook for extensions, used in Highstock ordinal axes
6414
6414
  if (axis.postProcessTickInterval) {
6415
- tickInterval = axis.postProcessTickInterval(tickInterval);
6415
+ tickInterval = axis.postProcessTickInterval(tickInterval);
6416
6416
  }
6417
6417
 
6418
6418
  // for linear axes, get magnitude and normalize the interval
@@ -6450,7 +6450,7 @@ function Chart(options, callback) {
6450
6450
  }
6451
6451
  }
6452
6452
 
6453
- // post process positions, used in ordinal axes in Highstock.
6453
+ // post process positions, used in ordinal axes in Highstock.
6454
6454
  // TODO: combine with getNonLinearTimeTicks
6455
6455
  fireEvent(axis, 'afterSetTickPositions', {
6456
6456
  tickPositions: tickPositions
@@ -6593,14 +6593,14 @@ function Chart(options, callback) {
6593
6593
 
6594
6594
  userMin = newMin;
6595
6595
  userMax = newMax;
6596
-
6596
+
6597
6597
  // redraw
6598
6598
  if (redraw) {
6599
6599
  chart.redraw(animation);
6600
6600
  }
6601
6601
  });
6602
6602
  }
6603
-
6603
+
6604
6604
  /**
6605
6605
  * Update translation information
6606
6606
  */
@@ -6609,7 +6609,7 @@ function Chart(options, callback) {
6609
6609
  pointRange = 0,
6610
6610
  closestPointRange,
6611
6611
  seriesClosestPointRange;
6612
-
6612
+
6613
6613
  // adjust translation for padding
6614
6614
  if (isXAxis) {
6615
6615
  if (isLinked) {
@@ -6625,7 +6625,7 @@ function Chart(options, callback) {
6625
6625
  }
6626
6626
  });
6627
6627
  }
6628
-
6628
+
6629
6629
  // pointRange means the width reserved for each point, like in a column chart
6630
6630
  axis.pointRange = pointRange;
6631
6631
 
@@ -6687,7 +6687,7 @@ function Chart(options, callback) {
6687
6687
  function getThreshold(threshold) {
6688
6688
  var realMin = isLog ? lin2log(min) : min,
6689
6689
  realMax = isLog ? lin2log(max) : max;
6690
-
6690
+
6691
6691
  if (realMin > threshold || threshold === null) {
6692
6692
  threshold = realMin;
6693
6693
  } else if (realMax < threshold) {
@@ -7034,16 +7034,16 @@ function Chart(options, callback) {
7034
7034
  }
7035
7035
  }
7036
7036
  }
7037
-
7037
+
7038
7038
  /**
7039
7039
  * Update the axis title by options
7040
7040
  */
7041
7041
  function setTitle(newTitleOptions, redraw) {
7042
7042
  options.title = merge(options.title, newTitleOptions);
7043
-
7043
+
7044
7044
  axisTitle = axisTitle.destroy();
7045
7045
  axis.isDirty = true;
7046
-
7046
+
7047
7047
  if (pick(redraw, true)) {
7048
7048
  chart.redraw();
7049
7049
  }
@@ -7263,10 +7263,10 @@ function Chart(options, callback) {
7263
7263
  s.push((series.tooltipFormatter && series.tooltipFormatter(item)) ||
7264
7264
  item.point.tooltipFormatter(series.tooltipOptions.pointFormat));
7265
7265
  });
7266
-
7266
+
7267
7267
  // footer
7268
7268
  s.push(options.footerFormat || '');
7269
-
7269
+
7270
7270
  return s.join('');
7271
7271
  }
7272
7272
 
@@ -8126,7 +8126,7 @@ function Chart(options, callback) {
8126
8126
  legendSymbol = item.legendSymbol,
8127
8127
  symbolX,
8128
8128
  checkbox = item.checkbox;
8129
-
8129
+
8130
8130
  if (legendItem) {
8131
8131
  legendItem.attr({
8132
8132
  x: ltr ? itemX : legendWidth - itemX,
@@ -8294,11 +8294,11 @@ function Chart(options, callback) {
8294
8294
  //'stroke-width': 0,
8295
8295
  zIndex: 3
8296
8296
  }).add(legendGroup);
8297
-
8297
+
8298
8298
  if (!ltr) {
8299
8299
  symbolX += symbolWidth;
8300
8300
  }
8301
-
8301
+
8302
8302
  } else if (itemOptions && itemOptions.marker && itemOptions.marker.enabled) { // draw the marker
8303
8303
  radius = itemOptions.marker.radius;
8304
8304
  legendSymbol = renderer.symbol(
@@ -8311,14 +8311,14 @@ function Chart(options, callback) {
8311
8311
  .attr(item.pointAttr[NORMAL_STATE])
8312
8312
  .attr({ zIndex: 3 })
8313
8313
  .add(legendGroup);
8314
-
8314
+
8315
8315
  if (!ltr) {
8316
8316
  symbolX += symbolWidth / 2;
8317
8317
  }
8318
8318
 
8319
8319
  }
8320
8320
  if (legendSymbol) {
8321
-
8321
+
8322
8322
  legendSymbol.xOff = symbolX + (strokeWidth % 2 / 2);
8323
8323
  legendSymbol.yOff = symbolY + (strokeWidth % 2 / 2);
8324
8324
  }
@@ -8470,8 +8470,8 @@ function Chart(options, callback) {
8470
8470
  // hide the border if no items
8471
8471
  box[allItems.length ? 'show' : 'hide']();
8472
8472
  }
8473
-
8474
- // Now that the legend width and height are extablished, put the items in the
8473
+
8474
+ // Now that the legend width and height are extablished, put the items in the
8475
8475
  // final position
8476
8476
  each(allItems, positionItem);
8477
8477
 
@@ -8680,9 +8680,9 @@ function Chart(options, callback) {
8680
8680
 
8681
8681
  // redraw axes
8682
8682
  each(axes, function (axis) {
8683
- fireEvent(axis, 'afterSetExtremes', axis.getExtremes()); // #747, #751
8684
- if (axis.isDirty) {
8685
- axis.redraw();
8683
+ fireEvent(axis, 'afterSetExtremes', axis.getExtremes()); // #747, #751
8684
+ if (axis.isDirty) {
8685
+ axis.redraw();
8686
8686
  }
8687
8687
  });
8688
8688
 
@@ -9052,7 +9052,7 @@ function Chart(options, callback) {
9052
9052
  if (isString(renderTo)) {
9053
9053
  renderTo = doc.getElementById(renderTo);
9054
9054
  }
9055
-
9055
+
9056
9056
  // Display an error if the renderTo is wrong
9057
9057
  if (!renderTo) {
9058
9058
  error(13, true);
@@ -9239,11 +9239,11 @@ function Chart(options, callback) {
9239
9239
  var width = optionsChart.width || renderTo.offsetWidth,
9240
9240
  height = optionsChart.height || renderTo.offsetHeight,
9241
9241
  target = e.target;
9242
-
9242
+
9243
9243
  // Width and height checks for display:none. Target is doc in IE8 and Opera,
9244
9244
  // win in Firefox, Chrome and IE9.
9245
9245
  if (width && height && (target === win || target === doc)) {
9246
-
9246
+
9247
9247
  if (width !== containerWidth || height !== containerHeight) {
9248
9248
  clearTimeout(reflowTimeout);
9249
9249
  reflowTimeout = setTimeout(function () {
@@ -9899,8 +9899,8 @@ Point.prototype = {
9899
9899
  // copy options directly to point
9900
9900
  extend(point, options);
9901
9901
  point.options = options;
9902
-
9903
- // This is the fastest way to detect if there are individual point dataLabels that need
9902
+
9903
+ // This is the fastest way to detect if there are individual point dataLabels that need
9904
9904
  // to be considered in drawDataLabels. These can only occur in object configs.
9905
9905
  if (options.dataLabels) {
9906
9906
  series._hasPointLabels = true;
@@ -9909,7 +9909,7 @@ Point.prototype = {
9909
9909
  point.name = options[0];
9910
9910
  point.y = options[1];
9911
9911
  }
9912
-
9912
+
9913
9913
  /*
9914
9914
  * If no x is set by now, get auto incremented value. All points must have an
9915
9915
  * x value, however the y value can be null to create a gap in the series
@@ -9918,8 +9918,8 @@ Point.prototype = {
9918
9918
  if (point.x === UNDEFINED) {
9919
9919
  point.x = x === UNDEFINED ? series.autoIncrement() : x;
9920
9920
  }
9921
-
9922
-
9921
+
9922
+
9923
9923
 
9924
9924
  },
9925
9925
 
@@ -10077,23 +10077,23 @@ Point.prototype = {
10077
10077
  // loop over the variables defined on the form {series.name}, {point.y} etc
10078
10078
  for (i in match) {
10079
10079
  key = match[i];
10080
-
10081
- if (isString(key) && key !== pointFormat) { // IE matches more than just the variables
10080
+
10081
+ if (isString(key) && key !== pointFormat) { // IE matches more than just the variables
10082
10082
  obj = key.indexOf('point') === 1 ? point : series;
10083
-
10084
- if (key === '{point.y}') { // add some preformatting
10085
- replacement = (seriesTooltipOptions.valuePrefix || seriesTooltipOptions.yPrefix || '') +
10083
+
10084
+ if (key === '{point.y}') { // add some preformatting
10085
+ replacement = (seriesTooltipOptions.valuePrefix || seriesTooltipOptions.yPrefix || '') +
10086
10086
  numberFormat(point.y, pick(seriesTooltipOptions.valueDecimals, seriesTooltipOptions.yDecimals, originalDecimals)) +
10087
10087
  (seriesTooltipOptions.valueSuffix || seriesTooltipOptions.ySuffix || '');
10088
-
10088
+
10089
10089
  } else { // automatic replacement
10090
10090
  replacement = obj[match[i].split(splitter)[1]];
10091
10091
  }
10092
-
10092
+
10093
10093
  pointFormat = pointFormat.replace(match[i], replacement);
10094
10094
  }
10095
10095
  }
10096
-
10096
+
10097
10097
  return pointFormat;
10098
10098
  },
10099
10099
 
@@ -10365,7 +10365,7 @@ Series.prototype = {
10365
10365
 
10366
10366
  series.chart = chart;
10367
10367
  series.options = options = series.setOptions(options); // merge with plotOptions
10368
-
10368
+
10369
10369
  // bind the axes
10370
10370
  series.bindAxes();
10371
10371
 
@@ -10378,7 +10378,7 @@ Series.prototype = {
10378
10378
  visible: options.visible !== false, // true by default
10379
10379
  selected: options.selected === true // false by default
10380
10380
  });
10381
-
10381
+
10382
10382
  // special
10383
10383
  if (useCanVG) {
10384
10384
  options.animation = false;
@@ -10404,9 +10404,9 @@ Series.prototype = {
10404
10404
  series.setData(options.data, false);
10405
10405
 
10406
10406
  },
10407
-
10408
-
10409
-
10407
+
10408
+
10409
+
10410
10410
  /**
10411
10411
  * Set the xAxis and yAxis properties of cartesian series, and register the series
10412
10412
  * in the axis.series array
@@ -10416,31 +10416,31 @@ Series.prototype = {
10416
10416
  seriesOptions = series.options,
10417
10417
  chart = series.chart,
10418
10418
  axisOptions;
10419
-
10419
+
10420
10420
  if (series.isCartesian) {
10421
-
10421
+
10422
10422
  each(['xAxis', 'yAxis'], function (AXIS) { // repeat for xAxis and yAxis
10423
-
10423
+
10424
10424
  each(chart[AXIS], function (axis) { // loop through the chart's axis objects
10425
-
10425
+
10426
10426
  axisOptions = axis.options;
10427
-
10428
- // apply if the series xAxis or yAxis option mathches the number of the
10427
+
10428
+ // apply if the series xAxis or yAxis option mathches the number of the
10429
10429
  // axis, or if undefined, use the first axis
10430
10430
  if ((seriesOptions[AXIS] === axisOptions.index) ||
10431
10431
  (seriesOptions[AXIS] === UNDEFINED && axisOptions.index === 0)) {
10432
-
10432
+
10433
10433
  // register this series in the axis.series lookup
10434
10434
  axis.series.push(series);
10435
-
10435
+
10436
10436
  // set this series.xAxis or series.yAxis reference
10437
10437
  series[AXIS] = axis;
10438
-
10438
+
10439
10439
  // mark dirty for redraw
10440
10440
  axis.isDirty = true;
10441
10441
  }
10442
10442
  });
10443
-
10443
+
10444
10444
  });
10445
10445
  }
10446
10446
  },
@@ -10475,7 +10475,7 @@ Series.prototype = {
10475
10475
  pointsLength = points.length;
10476
10476
 
10477
10477
  if (pointsLength) { // no action required for []
10478
-
10478
+
10479
10479
  // if connect nulls, just remove null points
10480
10480
  if (series.options.connectNulls) {
10481
10481
  i = pointsLength;
@@ -10485,7 +10485,7 @@ Series.prototype = {
10485
10485
  }
10486
10486
  }
10487
10487
  segments = [points];
10488
-
10488
+
10489
10489
  // else, split on null points
10490
10490
  } else {
10491
10491
  each(points, function (point, i) {
@@ -10500,7 +10500,7 @@ Series.prototype = {
10500
10500
  });
10501
10501
  }
10502
10502
  }
10503
-
10503
+
10504
10504
  // register it
10505
10505
  series.segments = segments;
10506
10506
  },
@@ -10523,13 +10523,13 @@ Series.prototype = {
10523
10523
  plotOptions.series,
10524
10524
  itemOptions
10525
10525
  );
10526
-
10526
+
10527
10527
  // Re-insert the data array to the options and the original config (#717)
10528
10528
  options.data = itemOptions.data = data;
10529
-
10529
+
10530
10530
  // the tooltip options are merged between global and series specific options
10531
10531
  series.tooltipOptions = merge(chartOptions.tooltip, options.tooltip);
10532
-
10532
+
10533
10533
  return options;
10534
10534
 
10535
10535
  },
@@ -10552,7 +10552,7 @@ Series.prototype = {
10552
10552
  defaultSymbols = chart.options.symbols,
10553
10553
  counters = chart.counters;
10554
10554
  series.symbol = seriesMarkerOption.symbol || defaultSymbols[counters.symbol++];
10555
-
10555
+
10556
10556
  // don't substract radius in image symbols (#604)
10557
10557
  if (/^url/.test(series.symbol)) {
10558
10558
  seriesMarkerOption.radius = 0;
@@ -10642,11 +10642,11 @@ Series.prototype = {
10642
10642
  // reset properties
10643
10643
  series.xIncrement = null;
10644
10644
  series.pointRange = (series.xAxis && series.xAxis.categories && 1) || options.pointRange;
10645
-
10645
+
10646
10646
  if (defined(initialColor)) { // reset colors for pie
10647
10647
  chart.counters.color = initialColor;
10648
10648
  }
10649
-
10649
+
10650
10650
  // parallel arrays
10651
10651
  var xData = [],
10652
10652
  yData = [],
@@ -10660,15 +10660,15 @@ Series.prototype = {
10660
10660
  // way. Although the 'for' loops are similar, they are repeated inside each
10661
10661
  // if-else conditional for max performance.
10662
10662
  if (dataLength > turboThreshold) {
10663
-
10663
+
10664
10664
  // find the first non-null point
10665
10665
  i = 0;
10666
10666
  while (firstPoint === null && i < dataLength) {
10667
10667
  firstPoint = data[i];
10668
10668
  i++;
10669
10669
  }
10670
-
10671
-
10670
+
10671
+
10672
10672
  if (isNumber(firstPoint)) { // assume all points are numbers
10673
10673
  var x = pick(options.pointStart, 0),
10674
10674
  pointInterval = pick(options.pointInterval, 1);
@@ -10781,7 +10781,7 @@ Series.prototype = {
10781
10781
  cropThreshold = options.cropThreshold;
10782
10782
 
10783
10783
  // If the series data or axes haven't changed, don't go through this. Return false to pass
10784
- // the message on to override methods like in data grouping.
10784
+ // the message on to override methods like in data grouping.
10785
10785
  if (series.isCartesian && !series.isDirty && !xAxis.isDirty && !series.yAxis.isDirty && !force) {
10786
10786
  return false;
10787
10787
  }
@@ -10796,7 +10796,7 @@ Series.prototype = {
10796
10796
  if (processedXData[dataLength - 1] < min || processedXData[0] > max) {
10797
10797
  processedXData = [];
10798
10798
  processedYData = [];
10799
-
10799
+
10800
10800
  // only crop if it's actually spilling out
10801
10801
  } else if (processedXData[0] < min || processedXData[dataLength - 1] > max) {
10802
10802
 
@@ -10813,15 +10813,15 @@ Series.prototype = {
10813
10813
  cropEnd = i + 1;
10814
10814
  break;
10815
10815
  }
10816
-
10816
+
10817
10817
  }
10818
10818
  processedXData = processedXData.slice(cropStart, cropEnd);
10819
10819
  processedYData = processedYData.slice(cropStart, cropEnd);
10820
10820
  cropped = true;
10821
10821
  }
10822
10822
  }
10823
-
10824
-
10823
+
10824
+
10825
10825
  // Find the closest distance between processed points
10826
10826
  for (i = processedXData.length - 1; i > 0; i--) {
10827
10827
  distance = processedXData[i] - processedXData[i - 1];
@@ -10829,18 +10829,18 @@ Series.prototype = {
10829
10829
  closestPointRange = distance;
10830
10830
  }
10831
10831
  }
10832
-
10832
+
10833
10833
  // Record the properties
10834
10834
  series.cropped = cropped; // undefined or true
10835
10835
  series.cropStart = cropStart;
10836
10836
  series.processedXData = processedXData;
10837
10837
  series.processedYData = processedYData;
10838
-
10838
+
10839
10839
  if (options.pointRange === null) { // null means auto, as for columns, candlesticks and OHLC
10840
10840
  series.pointRange = closestPointRange || 1;
10841
10841
  }
10842
10842
  series.closestPointRange = closestPointRange;
10843
-
10843
+
10844
10844
  },
10845
10845
 
10846
10846
  /**
@@ -10886,7 +10886,7 @@ Series.prototype = {
10886
10886
  }
10887
10887
 
10888
10888
  // Hide cropped-away points - this only runs when the number of points is above cropThreshold, or when
10889
- // swithching view from non-grouped data to grouped data (#637)
10889
+ // swithching view from non-grouped data to grouped data (#637)
10890
10890
  if (data && (processedDataLength !== (dataLength = data.length) || hasGroupedData)) {
10891
10891
  for (i = 0; i < dataLength; i++) {
10892
10892
  if (i === cropStart && !hasGroupedData) { // when has grouped data, clear all points
@@ -10924,7 +10924,7 @@ Series.prototype = {
10924
10924
  isLastSeries,
10925
10925
  allStackSeries = yAxis.series,
10926
10926
  i = allStackSeries.length;
10927
-
10927
+
10928
10928
  // Is it the last visible series?
10929
10929
  while (i--) {
10930
10930
  if (allStackSeries[i].visible) {
@@ -10934,7 +10934,7 @@ Series.prototype = {
10934
10934
  break;
10935
10935
  }
10936
10936
  }
10937
-
10937
+
10938
10938
  // Translate each point
10939
10939
  for (i = 0; i < dataLength; i++) {
10940
10940
  var point = points[i],
@@ -10944,7 +10944,7 @@ Series.prototype = {
10944
10944
  stack = yAxis.stacks[(yValue < options.threshold ? '-' : '') + series.stackKey],
10945
10945
  pointStack,
10946
10946
  pointStackTotal;
10947
-
10947
+
10948
10948
  // get the plotX translation
10949
10949
  point.plotX = mathRound(xAxis.translate(xValue, 0, 0, 0, 1) * 10) / 10; // Math.round fixes #591
10950
10950
 
@@ -10954,11 +10954,11 @@ Series.prototype = {
10954
10954
  pointStackTotal = pointStack.total;
10955
10955
  pointStack.cum = yBottom = pointStack.cum - yValue; // start from top
10956
10956
  yValue = yBottom + yValue;
10957
-
10957
+
10958
10958
  if (isLastSeries) {
10959
10959
  yBottom = options.threshold;
10960
10960
  }
10961
-
10961
+
10962
10962
  if (stacking === 'percent') {
10963
10963
  yBottom = pointStackTotal ? yBottom * 100 / pointStackTotal : 0;
10964
10964
  yValue = pointStackTotal ? yValue * 100 / pointStackTotal : 0;
@@ -10969,10 +10969,10 @@ Series.prototype = {
10969
10969
  }
10970
10970
 
10971
10971
  // Set translated yBottom or remove it
10972
- point.yBottom = defined(yBottom) ?
10972
+ point.yBottom = defined(yBottom) ?
10973
10973
  yAxis.translate(yBottom, 0, 1, 0, 1) :
10974
10974
  null;
10975
-
10975
+
10976
10976
  // general hook, used for Highstock compare mode
10977
10977
  if (hasModifyValue) {
10978
10978
  yValue = series.modifyValue(yValue, point);
@@ -11061,7 +11061,7 @@ Series.prototype = {
11061
11061
  xDateFormat = tooltipOptions.xDateFormat || '%A, %b %e, %Y',
11062
11062
  xAxis = series.xAxis,
11063
11063
  isDateTime = xAxis && xAxis.options.type === 'datetime';
11064
-
11064
+
11065
11065
  return tooltipOptions.headerFormat
11066
11066
  .replace('{point.key}', isDateTime ? dateFormat(xDateFormat, key) : key)
11067
11067
  .replace('{series.name}', series.name)
@@ -11388,7 +11388,7 @@ Series.prototype = {
11388
11388
 
11389
11389
  // remove all events
11390
11390
  removeEvent(series);
11391
-
11391
+
11392
11392
  // erase from axes
11393
11393
  each(['xAxis', 'yAxis'], function (AXIS) {
11394
11394
  axis = series[AXIS];
@@ -11448,11 +11448,11 @@ Series.prototype = {
11448
11448
  * Draw the data labels
11449
11449
  */
11450
11450
  drawDataLabels: function () {
11451
-
11451
+
11452
11452
  var series = this,
11453
11453
  seriesOptions = series.options,
11454
11454
  options = seriesOptions.dataLabels;
11455
-
11455
+
11456
11456
  if (options.enabled || series._hasPointLabels) {
11457
11457
  var x,
11458
11458
  y,
@@ -11508,55 +11508,55 @@ Series.prototype = {
11508
11508
  } else {
11509
11509
  dataLabelsGroup.translate(groupLeft, groupTop);
11510
11510
  }
11511
-
11511
+
11512
11512
  // make the labels for each point
11513
11513
  generalOptions = options;
11514
11514
  each(points, function (point) {
11515
-
11515
+
11516
11516
  dataLabel = point.dataLabel;
11517
-
11517
+
11518
11518
  // Merge in individual options from point
11519
11519
  options = generalOptions; // reset changes from previous points
11520
11520
  pointOptions = point.options;
11521
11521
  if (pointOptions && pointOptions.dataLabels) {
11522
11522
  options = merge(options, pointOptions.dataLabels);
11523
11523
  }
11524
-
11524
+
11525
11525
  // If the point is outside the plot area, destroy it. #678
11526
11526
  if (dataLabel && series.isCartesian && !chart.isInsidePlot(point.plotX, point.plotY)) {
11527
11527
  point.dataLabel = dataLabel.destroy();
11528
-
11529
- // Individual labels are disabled if the are explicitly disabled
11528
+
11529
+ // Individual labels are disabled if the are explicitly disabled
11530
11530
  // in the point options, or if they fall outside the plot area.
11531
11531
  } else if (options.enabled) {
11532
-
11532
+
11533
11533
  // Get the string
11534
11534
  str = options.formatter.call(point.getLabelConfig(), options);
11535
-
11535
+
11536
11536
  var barX = point.barX,
11537
11537
  plotX = (barX && barX + point.barW / 2) || point.plotX || -999,
11538
11538
  plotY = pick(point.plotY, -999),
11539
11539
  align = options.align,
11540
11540
  individualYDelta = yIsNull ? (point.y >= 0 ? -6 : 12) : options.y;
11541
-
11541
+
11542
11542
  // Postprocess the positions
11543
11543
  x = (inverted ? chart.plotWidth - plotY : plotX) + options.x;
11544
11544
  y = (inverted ? chart.plotHeight - plotX : plotY) + individualYDelta;
11545
-
11545
+
11546
11546
  // in columns, align the string to the column
11547
11547
  if (seriesType === 'column') {
11548
11548
  x += { left: -1, right: 1 }[align] * point.barW / 2 || 0;
11549
11549
  }
11550
-
11550
+
11551
11551
  if (!stacking && inverted && point.y < 0) {
11552
11552
  align = 'right';
11553
11553
  x -= 10;
11554
11554
  }
11555
-
11555
+
11556
11556
  // Determine the color
11557
11557
  options.style.color = pick(options.color, options.style.color, series.color, 'black');
11558
-
11559
-
11558
+
11559
+
11560
11560
  // update existing label
11561
11561
  if (dataLabel) {
11562
11562
  // vertically centered
@@ -11592,12 +11592,12 @@ Series.prototype = {
11592
11592
  });
11593
11593
  }
11594
11594
  }
11595
-
11595
+
11596
11596
  if (isBarLike && seriesOptions.stacking && dataLabel) {
11597
11597
  var barY = point.barY,
11598
11598
  barW = point.barW,
11599
11599
  barH = point.barH;
11600
-
11600
+
11601
11601
  dataLabel.align(options, null,
11602
11602
  {
11603
11603
  x: inverted ? chart.plotWidth - barY - barH : barX,
@@ -11606,8 +11606,8 @@ Series.prototype = {
11606
11606
  height: inverted ? barW : barH
11607
11607
  });
11608
11608
  }
11609
-
11610
-
11609
+
11610
+
11611
11611
  }
11612
11612
  });
11613
11613
  }
@@ -11688,17 +11688,17 @@ Series.prototype = {
11688
11688
  areaSegmentPath.push(L, segmentPath[1], segmentPath[2]);
11689
11689
  }
11690
11690
  if (options.stacking && series.type !== 'areaspline') {
11691
-
11692
- // Follow stack back. Todo: implement areaspline. A general solution could be to
11691
+
11692
+ // Follow stack back. Todo: implement areaspline. A general solution could be to
11693
11693
  // reverse the entire graphPath of the previous series, though may be hard with
11694
11694
  // splines and with series with different extremes
11695
11695
  for (i = segment.length - 1; i >= 0; i--) {
11696
-
11696
+
11697
11697
  // step line?
11698
11698
  if (i < segment.length - 1 && options.step) {
11699
11699
  areaSegmentPath.push(segment[i + 1].plotX, segment[i].yBottom);
11700
11700
  }
11701
-
11701
+
11702
11702
  areaSegmentPath.push(segment[i].plotX, segment[i].yBottom);
11703
11703
  }
11704
11704
 
@@ -11791,7 +11791,7 @@ Series.prototype = {
11791
11791
  chart.clipRect = clipRect;
11792
11792
  }
11793
11793
  }
11794
-
11794
+
11795
11795
 
11796
11796
  // the group
11797
11797
  if (!series.group) {
@@ -12081,8 +12081,8 @@ Series.prototype = {
12081
12081
  trackerPath.push(M, singlePoint.plotX - snap, singlePoint.plotY,
12082
12082
  L, singlePoint.plotX + snap, singlePoint.plotY);
12083
12083
  }
12084
-
12085
-
12084
+
12085
+
12086
12086
 
12087
12087
  // draw the tracker
12088
12088
  if (tracker) {
@@ -12092,7 +12092,7 @@ Series.prototype = {
12092
12092
  group = renderer.g()
12093
12093
  .clip(chart.clipRect)
12094
12094
  .add(chart.trackerGroup);
12095
-
12095
+
12096
12096
  series.tracker = renderer.path(trackerPath)
12097
12097
  .attr({
12098
12098
  isTracker: true,
@@ -12437,12 +12437,12 @@ var ColumnSeries = extendClass(Series, {
12437
12437
  css = cursor && { cursor: cursor },
12438
12438
  group,
12439
12439
  rel;
12440
-
12440
+
12441
12441
  // Add a series specific group to allow clipping the trackers
12442
12442
  if (series.isCartesian) {
12443
12443
  group = renderer.g()
12444
12444
  .clip(chart.clipRect)
12445
- .add(chart.trackerGroup);
12445
+ .add(chart.trackerGroup);
12446
12446
  }
12447
12447
 
12448
12448
  each(series.points, function (point) {
@@ -12514,7 +12514,7 @@ var ColumnSeries = extendClass(Series, {
12514
12514
  // start values
12515
12515
  graphic.attr({
12516
12516
  height: 0,
12517
- y: defined(threshold) ?
12517
+ y: defined(threshold) ?
12518
12518
  yAxis.getThreshold(threshold) :
12519
12519
  yAxis.translate(yAxis.getExtremes().min, 0, 1, 0, 1)
12520
12520
  });
@@ -12605,10 +12605,10 @@ var ScatterSeries = extendClass(Series, {
12605
12605
  while (i--) {
12606
12606
  graphic = points[i].graphic;
12607
12607
  if (graphic) { // doesn't exist for null points
12608
- graphic.element._index = i;
12608
+ graphic.element._index = i;
12609
12609
  }
12610
12610
  }
12611
-
12611
+
12612
12612
  // Add the event listeners, we need to do this only once
12613
12613
  if (!series._hasTracking) {
12614
12614
  series.group
@@ -12798,7 +12798,7 @@ var PieSeries = extendClass(Series, {
12798
12798
  */
12799
12799
  translate: function () {
12800
12800
  this.generatePoints();
12801
-
12801
+
12802
12802
  var total = 0,
12803
12803
  series = this,
12804
12804
  cumulative = -0.25, // start at top
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: highcharts-js-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
16
- requirement: &70322876824920 !ruby/object:Gem::Requirement
16
+ requirement: &70118123745480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70322876824920
24
+ version_requirements: *70118123745480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: railties
27
- requirement: &70322876824420 !ruby/object:Gem::Requirement
27
+ requirement: &70118123744980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70322876824420
35
+ version_requirements: *70118123744980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70322876824040 !ruby/object:Gem::Requirement
38
+ requirement: &70118123744600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70322876824040
46
+ version_requirements: *70118123744600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70322876823580 !ruby/object:Gem::Requirement
49
+ requirement: &70118123744140 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70322876823580
57
+ version_requirements: *70118123744140
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &70322876823160 !ruby/object:Gem::Requirement
60
+ requirement: &70118123743720 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70322876823160
68
+ version_requirements: *70118123743720
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &70322876822740 !ruby/object:Gem::Requirement
71
+ requirement: &70118123743300 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70322876822740
79
+ version_requirements: *70118123743300
80
80
  description: Easily configure a Highcharts JS chart for use in a Rails application
81
81
  email:
82
82
  - agrobbin@gmail.com
@@ -92,7 +92,7 @@ files:
92
92
  - README.md
93
93
  - Rakefile
94
94
  - highcharts-js-rails.gemspec
95
- - lib/highcharts.rb
95
+ - lib/highcharts-js-rails.rb
96
96
  - lib/highcharts/axis.rb
97
97
  - lib/highcharts/base.rb
98
98
  - lib/highcharts/chart.rb