highcharts-rails 3.0.8 → 3.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffe4fc2fd86a3187d89a3ce8046f2d1d4b5b09db
4
- data.tar.gz: 58fee3a500a3aecb4238587ef347183be0711710
3
+ metadata.gz: e24562dd01a4658fb93f40796dca0312b6f9ac68
4
+ data.tar.gz: 44ff0bfcf4d78c5e8aef8a354f8c3b7f0fe450c9
5
5
  SHA512:
6
- metadata.gz: 448e927dd38767e45a5ccad29c39e553efcfa070fceb7de324336f4e7db35514ca0c130c791881c64be3190f609b234b01656a9914311208483d3aecb99448ae
7
- data.tar.gz: 9f52f7f8544553d6911d290699facef3330e49c464634c5390bd683c7ee048acc011b755a6e744acaef6b649eaf24923942ed811dfab26ce4065473961c80b28
6
+ metadata.gz: 15b919d02b6e1d2f84fa4d56f70214c12c2babac3031aac05dda8f094e476ac76eba920396999bdb52407934333601098607053727d70a9ff95a451365b61144
7
+ data.tar.gz: 832f0b1bde80d4cf886f5d760dfb6ec2173b30a038582a4403eb5f2a3851adafb8d0714a22ff3ff3fcdaee345711510659326e250f69b104b529ad78243192d3
checksums.yaml.gz.asc CHANGED
@@ -2,17 +2,17 @@
2
2
  Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQIcBAABAgAGBQJSzv3QAAoJEH1ncb0Txu7XdFAQAKHvA/HFaZ6t8jlWORdsXZqu
6
- RRZhR7VOCV0XwaZ4jK3zgWbkpBbURvk8o+qJALQFy0K3hiqndusMfdRYbAWgaTkf
7
- 7gox1ttKjPRFiI2FNaHuT+PWdGZYRqL2ZcA8+K1jbY9YnuYoxPGuYUN/xBKRRd9a
8
- xxfmfMGbe+3RAZ5gosLUwUUs2XQbBAzXxoMqE8w8ulWnayNnPhpjAdAGxd7DiFHe
9
- +1e0GQI0C+fxLnwikyS1k8euDcnmLozWdu+Zjh6khd1mENf20VEpEyJta49UD+iK
10
- kWSIbNQI9IC+HJRGMJo75mPO8DrGSCC5/WDO2QZEMRMfCa8jgE3+ZG4GLcaUhXaA
11
- nTEt++nZ0/pI4Jy0ONitMFDQNmBGtITBp5yhdORaHs4n46M8KOnYDlhb79GpM9af
12
- lUZVGMp463l0d6sXjOAMAftKeJ7tR24XbpnSKGCjyB/UC35INChTwzVEf8SELFJ+
13
- DsMzyh0NGQF8aJ0LkLfgzhU8vPP5KUf6K/kQHwxJIWT3UH6RALnJjg1M09xPQHWd
14
- ZzQk1E1yC8Xa16gDzYNEubCQTrp4IkP9K/Nxx92hnoeYi5L63/h+gMfA9nAf7vss
15
- cvtiLjpe4BQT7swuSxSMtJw7UPr7DO78ffhyMN4DhDLgPN/xxBVXRe+ft9rviVcW
16
- ezBHT00xL3ihCzp2Ie75
17
- =rGT3
5
+ iQIcBAABAgAGBQJS1mNAAAoJEH1ncb0Txu7X14wP+wVxkh+IpSrYl9UobGQGiEtg
6
+ UKL72qT4iyLmmhDjZ6uoWUV4vqLZ5o9fRda1UDME/dypHZ34itoLeiTC8NWPvstF
7
+ 5gdte22q2TWT2+/7Hq1oUyd1LO2FQRJgcrcypi8gNZrhzFvMgNjh0T3mVo9vP28Z
8
+ JV4BKakda/uqKvj3f2crubtAKMJzlVzeUYJWLTuYXXFCUC6N6Ii/cUjdVF5o2xX5
9
+ tSTyX/KNt3eEe8cfxPs9aGRKy8/0lZDwPtYSZqzLrBtkjDlfKOcu8Vt16TazdEOO
10
+ eLujL7DAYe7hJVWxpVOIL5xYsxYC53nxkY7wT8Le/SOcvwp4ljtMEIFahT/n4rY1
11
+ pGV5k8HZgdRkrQXIkvw6cGc3YUcfSPZ+Cd6iOpmt8E4+rGIDu/fQ8r08545/UzMF
12
+ 3ymNmNBCkvf3dFbkGMBd+CrNfl+OC4VFXG4VYOahUm1oR0flxr9wvdYFitYHueVQ
13
+ 2f8hYHOTwZOT/JrmdLPXcS9WXVTu11jBvTDfAfre3fgRPdHprE1SKkwYURoEGVOJ
14
+ K9gTka4Fi4phXoitTHBq8U8PCkNjaEJQrZHue3PnXFvXfljoaAVpLTnoPr4Rn6Yu
15
+ CLp7V3AUrLZIaZ/DzbwwemJ3cTkb7rFgZiT9mccxBUMllaPIgKBUeVEHgwSCVz58
16
+ DTkBqgruP1mZW6+jLh15
17
+ =ArMS
18
18
  -----END PGP SIGNATURE-----
data.tar.gz.asc CHANGED
@@ -2,17 +2,17 @@
2
2
  Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQIcBAABAgAGBQJSzv3QAAoJEH1ncb0Txu7XlgcQAItfq2CwLTlI8mvoYb5f4Unl
6
- oiRWCDug9omLVklafLZFSgJm3T/bMNPYN4XJfItC9mBxBB8MW8HdngqTSjyyo9N2
7
- QO6ATnhZqrUslhsa7X9toyZZ1gWGGwWSzHIdeWfxMztiDuZzhiAjTkx94e/QnRjH
8
- FlCt4Xwid7kBGZWJdDZRSTcgzWh+6VlJe1UJHcIHfM6YnhPNKRrT+gCMhwCn1gLc
9
- Kdid5jf+83XlPxh5UDvObyEHsWxKsweY6GLdi0ucipV9ORDwS7/9L/qXwN+c/Zv+
10
- H/MjWFs1Xp6B0JBfv5lxisKXGtbVWjOw8swQ8MZV7D7oKFV+Tvl9kWhtODXZ/Qck
11
- eE5pjU0S2J0d+3uu6AcOdZwgfILWD6Hq3PRknE/sB476KBq45T46A7EE+sX3hU9d
12
- pqUW+9/S1vuHrVLvxOHBTm8ThCrc21fTzqa0JY5ixlYql9meOfHook9CfbEbR5H4
13
- 8U36ct526BSccI9gO38ansrmu/K2JP+yfjapy8qlH+DSTvF7QFszjKtGyn/yk/rl
14
- GbyUpG0rMrI5rMsqVYOJXwtW1B9EM5AVyk1n9V9faA3tPilFIBOMthJrQJHvN2OS
15
- c0ymzuBSKAkCMkBzJF0mb8qyavAK6rXVirbbFZonlvfQT0YZtVaprLTAbEnNFE47
16
- 9a7xpRZX1jVEL00VN91c
17
- =709u
5
+ iQIcBAABAgAGBQJS1mNAAAoJEH1ncb0Txu7XwbQQALDnpvWuEFOtD6jgkTz+j5jy
6
+ hCGBBzp0ntgiSYKOxUnDSOhpKRaYC3KVsi5u/SUE/QgXbBSeq34Trwzu6eLf5OUd
7
+ JI+M6V77Ys4JSOdhmbUoP3MYhsOEUFScy+o1/PRijxTwoITfGcgU2R4b54h7V/5B
8
+ E/SjBp0McUmgvgkgBFzf+ePD4bZML/SWAMGAh74ln5jHtbT1BcNZACTzZlcwYMjS
9
+ JJ83hVyqZCyX81ybTHhCKlCXIxutkKiDBKDhbQ3VKBlbbBCfFHzSC5fo9JNUI+mY
10
+ SyDx7vltGoOEwHlemiJup9m1IgzjURNn8kb3iUWNhV5M2SF2pr8WJeWAFg3IYCVD
11
+ vM0yh/Kb4/IBN3hAhLIvAuOezBvYD6+S2QxnVRaD+3lZLR+EBnN0ActgObzbMmQ0
12
+ wh3nyfWKHsN1rj4hvwg9S+mgGrUX+L3MCn/6tVFtKqQqv/eyiBO9jrp19JKrRIR9
13
+ 9b4QhzBpC/Ndyao8BxrLi/LZTV9RaPAQ3ViWjpzLPqEEVPD18u9vmlNNLk5YtNyU
14
+ VPYuYy6uKRJfEt3OalxPGHE0Q5uy43rVqUaFtzpJvniI2yLgDksY4LhMGu7+BxO6
15
+ 6lw288GM5J8serY04nHyRPFpwDVh0pODO3LUzvaeO3PhhRWloraQrdR4q0Sn5TGw
16
+ utTFR5Gct1/T+ggURhWP
17
+ =Edn+
18
18
  -----END PGP SIGNATURE-----
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,23 @@
1
+ # 3.0.9 / 2014-01-15
2
+
3
+ * Updated Highcharts to 3.0.9
4
+ * Added bower.json file. Closes #2244.
5
+ * Fixed JS error on quickly moving the mouse out of a chart. Related to #2499.
6
+ * Fixed issue with text positioning in modern IE when CSS line height was much smaller than font size. Closes #2444. Closes #2568. Closes #2569. Affects #2591.
7
+ * Fixed issue with crosshairs not exactly following the tooltip, mostly visible ou touch devices. Closes #2582
8
+ * Fixed issue with categorized Y axis on gauges being positioned wrong. Closes #2593.
9
+ * Reverted optimization that skipped individual handling of point attributes. Closes #2549. Closes #2587.
10
+ * Fixed issue with adding a point in the middle of a line series failing. Issue #1109.
11
+ * Fixed regression with datetime tooltip header format falling back to full years. Closes #2581.
12
+ * Fixed rounding error in stack labels. Closes #2576.
13
+ * Implemented new option, switchRowsAndColumns, in the data module.
14
+ * Fixed regression in 3.0.8 with hover color of columns having individual color option. Closes #2579.
15
+ * Fixed issue with fillColor on box plots not honored when colorByPoint is true. Closes #2574.
16
+
17
+ # 3.0.8 / 2014-01-09
18
+
19
+ * Updated Highcharts to 3.0.8
20
+
1
21
  # 3.0.7 / 2013-10-24
2
22
 
3
23
  * Updated Highcharts to 3.0.7
@@ -2,7 +2,7 @@
2
2
  // @compilation_level SIMPLE_OPTIMIZATIONS
3
3
 
4
4
  /**
5
- * @license Highcharts JS v3.0.8 (2014-01-09)
5
+ * @license Highcharts JS v3.0.9 (2014-01-15)
6
6
  *
7
7
  * (c) 2009-2014 Torstein Honsi
8
8
  *
@@ -55,7 +55,7 @@ var UNDEFINED,
55
55
  noop = function () {},
56
56
  charts = [],
57
57
  PRODUCT = 'Highcharts',
58
- VERSION = '3.0.8',
58
+ VERSION = '3.0.9',
59
59
 
60
60
  // some constants for frequently used strings
61
61
  DIV = 'div',
@@ -1303,8 +1303,7 @@ defaultLabelOptions = {
1303
1303
  style: {
1304
1304
  color: '#666',
1305
1305
  cursor: 'default',
1306
- fontSize: '11px',
1307
- lineHeight: '14px'
1306
+ fontSize: '11px'
1308
1307
  }
1309
1308
  };
1310
1309
 
@@ -1326,9 +1325,9 @@ defaultOptions = {
1326
1325
  },
1327
1326
  global: {
1328
1327
  useUTC: true,
1329
- //timezoneOffset: 0, // docs: highcharts/global/timezoneoffset
1330
- canvasToolsURL: 'http://code.highcharts.com/3.0.8/modules/canvas-tools.js',
1331
- VMLRadialGradientURL: 'http://code.highcharts.com/3.0.8/gfx/vml-radial-gradient.png'
1328
+ //timezoneOffset: 0,
1329
+ canvasToolsURL: 'http://code.highcharts.com/3.0.9/modules/canvas-tools.js',
1330
+ VMLRadialGradientURL: 'http://code.highcharts.com/3.0.9/gfx/vml-radial-gradient.png'
1332
1331
  },
1333
1332
  chart: {
1334
1333
  //animation: true,
@@ -2489,8 +2488,8 @@ SVGElement.prototype = {
2489
2488
  width = bBox.width;
2490
2489
  height = bBox.height;
2491
2490
 
2492
- // Workaround for wrong bounding box in IE9 and IE10 (#1101, #1505, #1669)
2493
- if (isIE && styles && styles.fontSize === '11px' && height.toPrecision(3) === '22.7') {
2491
+ // Workaround for wrong bounding box in IE9 and IE10 (#1101, #1505, #1669, #2568)
2492
+ if (isIE && styles && styles.fontSize === '11px' && height.toPrecision(3) === '16.9') {
2494
2493
  bBox.height = height = 14;
2495
2494
  }
2496
2495
 
@@ -2894,7 +2893,16 @@ SVGRenderer.prototype = {
2894
2893
  textStyles = wrapper.styles,
2895
2894
  width = wrapper.textWidth,
2896
2895
  textLineHeight = textStyles && textStyles.lineHeight,
2897
- i = childNodes.length;
2896
+ i = childNodes.length,
2897
+ getLineHeight = function (tspan) {
2898
+ return textLineHeight ?
2899
+ pInt(textLineHeight) :
2900
+ renderer.fontMetrics(
2901
+ /px$/.test(tspan && tspan.style.fontSize) ?
2902
+ tspan.style.fontSize :
2903
+ (textStyles.fontSize || 11)
2904
+ ).h;
2905
+ };
2898
2906
 
2899
2907
  /// remove old text
2900
2908
  while (i--) {
@@ -2963,11 +2971,7 @@ SVGRenderer.prototype = {
2963
2971
  attr(
2964
2972
  tspan,
2965
2973
  'dy',
2966
- textLineHeight || renderer.fontMetrics(
2967
- /px$/.test(tspan.style.fontSize) ?
2968
- tspan.style.fontSize :
2969
- textStyles.fontSize
2970
- ).h,
2974
+ getLineHeight(tspan),
2971
2975
  // Safari 6.0.2 - too optimized for its own good (#1539)
2972
2976
  // TODO: revisit this with future versions of Safari
2973
2977
  isWebKit && tspan.offsetHeight
@@ -2982,12 +2986,12 @@ SVGRenderer.prototype = {
2982
2986
  // check width and apply soft breaks
2983
2987
  if (width) {
2984
2988
  var words = span.replace(/([^\^])-/g, '$1- ').split(' '), // #1273
2985
- hasWhiteSpace = words.length > 1 && textStyles.whiteSpace !== 'nowrap', // docs: nowrap
2989
+ hasWhiteSpace = words.length > 1 && textStyles.whiteSpace !== 'nowrap',
2986
2990
  tooLong,
2987
2991
  actualWidth,
2988
2992
  clipHeight = wrapper._clipHeight,
2989
2993
  rest = [],
2990
- dy = pInt(textLineHeight || 16),
2994
+ dy = getLineHeight(),
2991
2995
  softLineNo = 1,
2992
2996
  bBox;
2993
2997
 
@@ -5788,7 +5792,6 @@ Tick.prototype = {
5788
5792
  labelEdge = axis.labelEdge,
5789
5793
  justifyLabel = axis.justifyLabels && (isFirst || isLast);
5790
5794
 
5791
- // docs: auto step pulls out overlapping labels
5792
5795
  // Hide it if it now overlaps the neighbour label
5793
5796
  if (labelEdge[line] === UNDEFINED || pxPos + leftSide > labelEdge[line]) {
5794
5797
  labelEdge[line] = pxPos + rightSide;
@@ -9265,7 +9268,7 @@ Pointer.prototype = {
9265
9268
 
9266
9269
  // Draw independent crosshairs
9267
9270
  each(chart.axes, function (axis) {
9268
- axis.drawCrosshair(e, pick(hoverPoint, point));
9271
+ axis.drawCrosshair(e, pick(point, hoverPoint));
9269
9272
  });
9270
9273
  },
9271
9274
 
@@ -9770,7 +9773,7 @@ Pointer.prototype = {
9770
9773
  onTrackerMouseOut: function (e) {
9771
9774
  var series = this.chart.hoverSeries,
9772
9775
  relatedTarget = e.relatedTarget || e.toElement,
9773
- relatedSeries = relatedTarget.point && relatedTarget.point.series; // #2499
9776
+ relatedSeries = relatedTarget && relatedTarget.point && relatedTarget.point.series; // #2499
9774
9777
 
9775
9778
  if (series && !series.options.stickyTracking && !this.inClass(relatedTarget, PREFIX + 'tooltip') &&
9776
9779
  relatedSeries !== series) {
@@ -10840,14 +10843,14 @@ var LegendSymbolMixin = Highcharts.LegendSymbolMixin = {
10840
10843
  * @param {Object} item The series (this) or point
10841
10844
  */
10842
10845
  drawRectangle: function (legend, item) {
10843
- var symbolHeight = legend.options.symbolHeight || 12; // docs
10846
+ var symbolHeight = legend.options.symbolHeight || 12;
10844
10847
 
10845
10848
  item.legendSymbol = this.chart.renderer.rect(
10846
10849
  0,
10847
10850
  legend.baseline - 5 - (symbolHeight / 2),
10848
10851
  legend.symbolWidth,
10849
10852
  symbolHeight,
10850
- pick(legend.options.symbolRadius, 2) // docs
10853
+ pick(legend.options.symbolRadius, 2)
10851
10854
  ).attr({
10852
10855
  zIndex: 3
10853
10856
  }).add(item.legendGroup);
@@ -13611,10 +13614,10 @@ Series.prototype = {
13611
13614
 
13612
13615
  // Percent stacked areas
13613
13616
  } else {
13614
- stack.total += mathAbs(y) || 0;
13617
+ stack.total = correctFloat(stack.total + (mathAbs(y) || 0));
13615
13618
  }
13616
13619
  } else {
13617
- stack.total += y || 0;
13620
+ stack.total = correctFloat(stack.total + (y || 0));
13618
13621
  }
13619
13622
 
13620
13623
  stack.cum = (stack.cum || 0) + (y || 0);
@@ -13889,7 +13892,7 @@ Series.prototype = {
13889
13892
  var series = this,
13890
13893
  tooltipOptions = series.tooltipOptions,
13891
13894
  dateTimeLabelFormats = tooltipOptions.dateTimeLabelFormats,
13892
- xDateFormat = tooltipOptions.xDateFormat || dateTimeLabelFormats.year, // #2546
13895
+ xDateFormat = tooltipOptions.xDateFormat,
13893
13896
  xAxis = series.xAxis,
13894
13897
  isDateTime = xAxis && xAxis.options.type === 'datetime',
13895
13898
  headerFormat = tooltipOptions.headerFormat,
@@ -13908,6 +13911,9 @@ Series.prototype = {
13908
13911
  } else {
13909
13912
  xDateFormat = dateTimeLabelFormats.day;
13910
13913
  }
13914
+
13915
+ xDateFormat = xDateFormat || dateTimeLabelFormats.year; // #2546, 2581
13916
+
13911
13917
  }
13912
13918
 
13913
13919
  // Insert the header date format if any
@@ -14082,7 +14088,6 @@ Series.prototype = {
14082
14088
  graphic,
14083
14089
  options = series.options,
14084
14090
  seriesMarkerOptions = options.marker,
14085
- seriesPointAttr = series.pointAttr[''],
14086
14091
  pointMarkerOptions,
14087
14092
  enabled,
14088
14093
  isInside,
@@ -14104,7 +14109,7 @@ Series.prototype = {
14104
14109
  if (enabled && plotY !== UNDEFINED && !isNaN(plotY) && point.y !== null) {
14105
14110
 
14106
14111
  // shortcuts
14107
- pointAttr = point.pointAttr[point.selected ? SELECT_STATE : NORMAL_STATE] || seriesPointAttr;
14112
+ pointAttr = point.pointAttr[point.selected ? SELECT_STATE : NORMAL_STATE];
14108
14113
  radius = pointAttr.r;
14109
14114
  symbol = pick(pointMarkerOptions.symbol, series.symbol);
14110
14115
  isImage = symbol.indexOf('url') === 0;
@@ -14192,9 +14197,10 @@ Series.prototype = {
14192
14197
  pointAttr,
14193
14198
  pointAttrToOptions = series.pointAttrToOptions,
14194
14199
  hasPointSpecificOptions,
14195
- turboThreshold = seriesOptions.turboThreshold,
14196
14200
  negativeColor = seriesOptions.negativeColor,
14197
14201
  defaultLineColor = normalOptions.lineColor,
14202
+ defaultFillColor = normalOptions.fillColor,
14203
+ attr,
14198
14204
  key;
14199
14205
 
14200
14206
  // series type specific modifications
@@ -14229,78 +14235,79 @@ Series.prototype = {
14229
14235
  // options are given. If not, create a referance to the series wide point
14230
14236
  // attributes
14231
14237
  i = points.length;
14232
- if (!turboThreshold || i < turboThreshold) {
14233
- while (i--) {
14234
- point = points[i];
14235
- normalOptions = (point.options && point.options.marker) || point.options;
14236
- if (normalOptions && normalOptions.enabled === false) {
14237
- normalOptions.radius = 0;
14238
- }
14238
+ while (i--) {
14239
+ point = points[i];
14240
+ normalOptions = (point.options && point.options.marker) || point.options;
14241
+ if (normalOptions && normalOptions.enabled === false) {
14242
+ normalOptions.radius = 0;
14243
+ }
14239
14244
 
14240
- if (point.negative && negativeColor) {
14241
- point.color = point.fillColor = negativeColor;
14242
- }
14245
+ if (point.negative && negativeColor) {
14246
+ point.color = point.fillColor = negativeColor;
14247
+ }
14243
14248
 
14244
- hasPointSpecificOptions = seriesOptions.colorByPoint || point.color; // #868
14249
+ hasPointSpecificOptions = seriesOptions.colorByPoint || point.color; // #868
14245
14250
 
14246
- // check if the point has specific visual options
14247
- if (point.options) {
14248
- for (key in pointAttrToOptions) {
14249
- if (defined(normalOptions[pointAttrToOptions[key]])) {
14250
- hasPointSpecificOptions = true;
14251
- }
14251
+ // check if the point has specific visual options
14252
+ if (point.options) {
14253
+ for (key in pointAttrToOptions) {
14254
+ if (defined(normalOptions[pointAttrToOptions[key]])) {
14255
+ hasPointSpecificOptions = true;
14252
14256
  }
14253
14257
  }
14258
+ }
14254
14259
 
14255
- // a specific marker config object is defined for the individual point:
14256
- // create it's own attribute collection
14257
- if (hasPointSpecificOptions) {
14258
- normalOptions = normalOptions || {};
14259
- pointAttr = [];
14260
- stateOptions = normalOptions.states || {}; // reassign for individual point
14261
- pointStateOptionsHover = stateOptions[HOVER_STATE] = stateOptions[HOVER_STATE] || {};
14262
-
14263
- // Handle colors for column and pies
14264
- if (!seriesOptions.marker) { // column, bar, point
14265
- // if no hover color is given, brighten the normal color
14266
- pointStateOptionsHover.color = pointStateOptionsHover.color || stateOptionsHover.color ||
14267
- Color(point.color)
14268
- .brighten(pointStateOptionsHover.brightness || stateOptionsHover.brightness)
14269
- .get();
14260
+ // a specific marker config object is defined for the individual point:
14261
+ // create it's own attribute collection
14262
+ if (hasPointSpecificOptions) {
14263
+ normalOptions = normalOptions || {};
14264
+ pointAttr = [];
14265
+ stateOptions = normalOptions.states || {}; // reassign for individual point
14266
+ pointStateOptionsHover = stateOptions[HOVER_STATE] = stateOptions[HOVER_STATE] || {};
14270
14267
 
14271
- }
14268
+ // Handle colors for column and pies
14269
+ if (!seriesOptions.marker) { // column, bar, point
14270
+ // if no hover color is given, brighten the normal color
14271
+ pointStateOptionsHover.color =
14272
+ Color(pointStateOptionsHover.color || point.color)
14273
+ .brighten(pointStateOptionsHover.brightness ||
14274
+ stateOptionsHover.brightness).get();
14272
14275
 
14273
- // normal point state inherits series wide normal state
14274
- pointAttr[NORMAL_STATE] = series.convertAttribs(extend({
14275
- color: point.color, // #868
14276
- fillColor: point.color, // Individual point color or negative color markers (#2219)
14277
- lineColor: defaultLineColor === null ? point.color : UNDEFINED // Bubbles take point color, line markers use white
14278
- }, normalOptions), seriesPointAttr[NORMAL_STATE]);
14279
-
14280
- // inherit from point normal and series hover
14281
- pointAttr[HOVER_STATE] = series.convertAttribs(
14282
- stateOptions[HOVER_STATE],
14283
- seriesPointAttr[HOVER_STATE],
14284
- pointAttr[NORMAL_STATE]
14285
- );
14276
+ }
14286
14277
 
14287
- // inherit from point normal and series hover
14288
- pointAttr[SELECT_STATE] = series.convertAttribs(
14289
- stateOptions[SELECT_STATE],
14290
- seriesPointAttr[SELECT_STATE],
14291
- pointAttr[NORMAL_STATE]
14292
- );
14278
+ // normal point state inherits series wide normal state
14279
+ attr = { color: point.color }; // #868
14280
+ if (!defaultFillColor) { // Individual point color or negative color markers (#2219)
14281
+ attr.fillColor = point.color;
14282
+ }
14283
+ if (!defaultLineColor) {
14284
+ attr.lineColor = point.color; // Bubbles take point color, line markers use white
14285
+ }
14286
+ pointAttr[NORMAL_STATE] = series.convertAttribs(extend(attr, normalOptions), seriesPointAttr[NORMAL_STATE]);
14293
14287
 
14288
+ // inherit from point normal and series hover
14289
+ pointAttr[HOVER_STATE] = series.convertAttribs(
14290
+ stateOptions[HOVER_STATE],
14291
+ seriesPointAttr[HOVER_STATE],
14292
+ pointAttr[NORMAL_STATE]
14293
+ );
14294
14294
 
14295
- // no marker config object is created: copy a reference to the series-wide
14296
- // attribute collection
14297
- } else {
14298
- pointAttr = seriesPointAttr;
14299
- }
14295
+ // inherit from point normal and series hover
14296
+ pointAttr[SELECT_STATE] = series.convertAttribs(
14297
+ stateOptions[SELECT_STATE],
14298
+ seriesPointAttr[SELECT_STATE],
14299
+ pointAttr[NORMAL_STATE]
14300
+ );
14300
14301
 
14301
- point.pointAttr = pointAttr;
14302
14302
 
14303
+ // no marker config object is created: copy a reference to the series-wide
14304
+ // attribute collection
14305
+ } else {
14306
+ pointAttr = seriesPointAttr;
14303
14307
  }
14308
+
14309
+ point.pointAttr = pointAttr;
14310
+
14304
14311
  }
14305
14312
  },
14306
14313
 
@@ -15230,7 +15237,7 @@ extend(Series.prototype, {
15230
15237
  }
15231
15238
  }
15232
15239
 
15233
- series.updateParallelArrays(point, 'splice', i); // insert undefined item
15240
+ series.updateParallelArrays(point, 'splice', i, 0, 0); // insert undefined item
15234
15241
  series.updateParallelArrays(point, i); // update it
15235
15242
 
15236
15243
  if (names) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v3.0.8 (2014-01-09)
2
+ * @license Highcharts JS v3.0.9 (2014-01-15)
3
3
  * MooTools adapter
4
4
  *
5
5
  * (c) 2010-2014 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v3.0.8 (2014-01-09)
2
+ * @license Highcharts JS v3.0.9 (2014-01-15)
3
3
  * Prototype adapter
4
4
  *
5
5
  * @author Michael Nelson, Torstein Honsi.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v3.0.8 (2014-01-09)
2
+ * @license Highcharts JS v3.0.9 (2014-01-15)
3
3
  *
4
4
  * Standalone Highcharts Framework
5
5
  *
@@ -2,7 +2,7 @@
2
2
  // @compilation_level SIMPLE_OPTIMIZATIONS
3
3
 
4
4
  /**
5
- * @license Highcharts JS v3.0.8 (2014-01-09)
5
+ * @license Highcharts JS v3.0.9 (2014-01-15)
6
6
  *
7
7
  * (c) 2009-2014 Torstein Honsi
8
8
  *
@@ -274,6 +274,10 @@ var radialAxisMixin = {
274
274
  if (this.isXAxis) {
275
275
  this.minPixelPadding = this.transA * this.minPointOffset +
276
276
  (this.reversed ? (this.endAngleRad - this.startAngleRad) / 4 : 0); // ???
277
+ } else {
278
+ // This is a workaround for regression #2593, but categories still don't position correctly.
279
+ // TODO: Implement true handling of Y axis categories on gauges.
280
+ this.minPixelPadding = 0;
277
281
  }
278
282
  }
279
283
  },
@@ -578,8 +582,7 @@ wrap(tickProto, 'getLabelPosition', function (proceed, x, y, label, horiz, label
578
582
 
579
583
  // Vertically centered
580
584
  } else if (optionsY === null) {
581
- optionsY = pInt(label.styles.lineHeight) * 0.9 - label.getBBox().height / 2;
582
-
585
+ optionsY = axis.chart.renderer.fontMetrics(label.styles.fontSize).b - label.getBBox().height / 2;
583
586
  }
584
587
 
585
588
  // Automatic alignment
@@ -2908,7 +2908,7 @@ if (CanvasRenderingContext2D) {
2908
2908
  });
2909
2909
  }
2910
2910
  }/**
2911
- * @license Highcharts JS v3.0.8 (2014-01-09)
2911
+ * @license Highcharts JS v3.0.9 (2014-01-15)
2912
2912
  * CanVGRenderer Extension module
2913
2913
  *
2914
2914
  * (c) 2011-2012 Torstein Honsi, Erik Olsson
@@ -72,6 +72,10 @@
72
72
  * - startRow : Integer
73
73
  * In tabular input data, the first row (indexed by 0) to use.
74
74
  *
75
+ * - switchRowsAndColumns : Boolean
76
+ * Switch rows and columns of the input data, so that this.columns effectively becomes the
77
+ * rows of the data set, and the rows are interpreted as series.
78
+ *
75
79
  * - table : String|HTMLElement
76
80
  * A HTML table or the id of such to be parsed as input data. Related options ara startRow,
77
81
  * endRow, startColumn and endColumn to delimit what part of the table is used.
@@ -144,8 +148,16 @@
144
148
  };
145
149
  },
146
150
 
147
-
151
+ /**
152
+ * When the data is parsed into columns, either by CSV, table, GS or direct input,
153
+ * continue with other operations.
154
+ */
148
155
  dataFound: function () {
156
+
157
+ if (this.options.switchRowsAndColumns) {
158
+ this.columns = this.rowsToColumns(this.columns);
159
+ }
160
+
149
161
  // Interpret the values into right types
150
162
  this.parseTypes();
151
163
 
@@ -250,8 +262,6 @@
250
262
  },
251
263
 
252
264
  /**
253
- * TODO:
254
- * - switchRowsAndColumns
255
265
  */
256
266
  parseGoogleSpreadsheet: function () {
257
267
  var self = this,
@@ -341,7 +351,6 @@
341
351
 
342
352
  /**
343
353
  * Parse numeric cells in to number types and date types in to true dates.
344
- * @param {Object} columns
345
354
  */
346
355
  parseTypes: function () {
347
356
  var columns = this.columns,
@@ -386,7 +395,11 @@
386
395
  }
387
396
  }
388
397
  },
389
- //*
398
+
399
+ /**
400
+ * A collection of available date formats, extendable from the outside to support
401
+ * custom date formats.
402
+ */
390
403
  dateFormats: {
391
404
  'YYYY-mm-dd': {
392
405
  regex: '^([0-9]{4})-([0-9]{2})-([0-9]{2})$',
@@ -395,7 +408,7 @@
395
408
  }
396
409
  }
397
410
  },
398
- // */
411
+
399
412
  /**
400
413
  * Parse a date and return it as a number. Overridable through options.parseDate.
401
414
  */
@@ -146,22 +146,30 @@
146
146
  Chart.prototype.showDrillUpButton = function () {
147
147
  var chart = this,
148
148
  backText = this.getDrilldownBackText(),
149
- buttonOptions = chart.options.drilldown.drillUpButton;
149
+ buttonOptions = chart.options.drilldown.drillUpButton,
150
+ attr,
151
+ states;
150
152
 
151
153
 
152
154
  if (!this.drillUpButton) {
155
+ attr = buttonOptions.theme;
156
+ states = attr && attr.states;
157
+
153
158
  this.drillUpButton = this.renderer.button(
154
159
  backText,
155
160
  null,
156
161
  null,
157
162
  function () {
158
163
  chart.drillUp();
159
- }
164
+ },
165
+ attr,
166
+ states && states.hover,
167
+ states && states.select
160
168
  )
161
- .attr(extend({
169
+ .attr({
162
170
  align: buttonOptions.position.align,
163
171
  zIndex: 9
164
- }, buttonOptions.theme))
172
+ })
165
173
  .add()
166
174
  .align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox');
167
175
  } else {
@@ -350,7 +358,7 @@
350
358
  var series = this.series,
351
359
  chart = series.chart,
352
360
  drilldown = chart.options.drilldown,
353
- i = drilldown.series.length,
361
+ i = (drilldown.series || []).length,
354
362
  seriesOptions;
355
363
 
356
364
  while (i-- && !seriesOptions) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v3.0.8 (2014-01-09)
2
+ * @license Highcharts JS v3.0.9 (2014-01-15)
3
3
  * Exporting module
4
4
  *
5
5
  * (c) 2010-2014 Torstein Honsi
@@ -167,7 +167,7 @@ Highcharts.post = function (url, data, formAttributes) {
167
167
  method: 'post',
168
168
  action: url,
169
169
  enctype: 'multipart/form-data'
170
- }, formAttributes), { // docs
170
+ }, formAttributes), {
171
171
  display: NONE
172
172
  }, doc.body);
173
173
 
@@ -326,7 +326,7 @@ extend(Chart.prototype, {
326
326
 
327
327
  /**
328
328
  * Submit the SVG representation of the chart to the server
329
- * @param {Object} options Exporting options. Possible members are url, type and width.
329
+ * @param {Object} options Exporting options. Possible members are url, type, width and formAttributes.
330
330
  * @param {Object} chartOptions Additional chart options for the SVG representation of the chart
331
331
  */
332
332
  exportChart: function (options, chartOptions) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v3.0.8 (2014-01-09)
2
+ * @license Highcharts JS v3.0.9 (2014-01-15)
3
3
  * Plugin for displaying a message when there is no data visible in chart.
4
4
  *
5
5
  * (c) 2010-2014 Highsoft AS
@@ -1,3 +1,3 @@
1
1
  module Highcharts
2
- VERSION = "3.0.8"
2
+ VERSION = "3.0.9"
3
3
  end
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: 3.0.8
4
+ version: 3.0.9
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: 2014-01-09 00:00:00.000000000 Z
11
+ date: 2014-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
metadata.gz.asc CHANGED
@@ -2,17 +2,17 @@
2
2
  Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQIcBAABAgAGBQJSzv3QAAoJEH1ncb0Txu7XGvIP/3uD8tWpRVNgA2nEnMOqjX1f
6
- 4cr1BrXgCJFr6KnrJNuzdZsYTg8xw64bW5TBGs+Sv0jvAg87iOwWWdlo+a4QtHIT
7
- X21XH0HtxXhmzl48qQ1FBkVS3FfSkSL5Oz5leF3rAYMo29ORWCqnIjq+3Lt1FkZI
8
- iXuqGHGjjcEp7fhgoHA+oOIm2zx0YxsNN5LxCos8GLIQtXFrD0Ku3+keDxQPmI7e
9
- cnfiAPdTYi2tyiBDa2VJ9QwQRQN8v2I/wBlE5Kd4vo01LVwemNvQKy1l+oFBCexh
10
- KQ2jjSiAD84YuTH//9RdI492WeZf49+Z+22Uv1Vj23QHiKZ5QSdnZnsvVzpljOKZ
11
- v3C/ZgvVRGPnG2CQEsq15NErseKkJ2v7wsYVusf1KQsfTWQZ0ZkVZNXTQaS9ktWr
12
- T6+Zkpoo/VN0CTtzc3y/illdKH8aWwy9f6eVcpuo9VkLzYlWW9AoCfq2R0UjvHfX
13
- pbu+jqpc2UcJEYpcmIuXtmraZN8Gr60c5bEJv2dxMiKRDm8xLCv9Q/V9uHEcgSsE
14
- Uct+LRG+5qwxKepISNdNsbXGYu3wUCWBkG5TygOnpr83BEa5qcoUhRUTVPnvwSkN
15
- RalC1Td2bDVzHQDqwEARyA+JlG3kP/wL9XRmzWZXVFV7MSxG90FgrBbm/sQJhvFo
16
- 5GdfcwoqoF7VwSYNgLrX
17
- =ocae
5
+ iQIcBAABAgAGBQJS1mNAAAoJEH1ncb0Txu7XfV4P/05oGakw9qagcBIc6WuZdZnu
6
+ iIuVVp2bHuMWgwaogJtEAINLR/6egMzAvsHKte/tdVJccEQ2xDaCI6o8bvl7DXhu
7
+ Rssn1xaNW2ov3IVPMXlB6gpo4RVKrLWaJp2ZXvO/owqUG/mvmIWnkZdbRvoc4NTg
8
+ /GZz/ftwsaKmB7QmOXfbhafpIiCh6b3pYAbby603u+upqcmO4vwQaDhdpaPVjLCI
9
+ qyf8M6JQkJOCu3Hlli7sxc4vWC/yjlNP4b1006WWRcn19Z2TJNjfsN9FHW0JZyCG
10
+ ZkL2nOSW6BGufsTIA+WHcZCKwWKEMIZtL6PcWEMhq6c5WcLNaMGsYjhknBDBxKNp
11
+ 3mM+1ZB/m0k+tQ//AQFtNdEtFmB8Fo8hmGfscRa3hDegMR8OIuB9tlWhq7ZBy5nK
12
+ NtZ0+6Zbr/wfeVOdjmKZaXL+TkPnmsuP+8S43A4R/T7jtqYUb2DwTaQO77HorIOJ
13
+ iWQ/H9AqCsGMwKLRfcPAxHYBjkYRNsF//OIT45nYrW5jgxvcb5hshVEdgJpdGeC/
14
+ M1ABEiVK3LlHP61w6Xh8QYSH3R5CLkO4iG304uWMNltTPkptiYVKQ5sPxASqzbWk
15
+ 9F41iBwQeDI9Ke4MTtJyAbqmqfirkBmTQKazBMkzPHiFBMR3LAguSvhd+WmBqQun
16
+ bI5BUHBiFL+xuuFSIarU
17
+ =u2+l
18
18
  -----END PGP SIGNATURE-----