highcharts-rails 5.0.4 → 5.0.5

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: 795f04a64d8258b4aff9c34f5a50b5d96b5e1cb2
4
- data.tar.gz: 67cdb5e6fee754b308dfee7a36b90035ccfeb0a5
3
+ metadata.gz: 95ab880ad7d56585567f26fae9f38887e342f414
4
+ data.tar.gz: bee88fcee2bdb7a4d9590c9c2eeebaa34733b8bd
5
5
  SHA512:
6
- metadata.gz: 48c49d9e0aa65d573a878faa2f284df8e291934643f826ff48ab7b0b31c2545ec39a13915738cd70c34409d59e3dbf57142c637c062d8e5506fb132ba6b4077e
7
- data.tar.gz: 5fdf501e659c673b6c27e919ae6242c73a854fe3076b2203d0f910b6e590bca2368816160f6a956800d862607dc124e45b7450e4a8eec79cebb3a4c9dcf5477b
6
+ metadata.gz: bbcb7a42695ea87def28b41ba5dd197f42bd76e22a9d15d5810f1e423a5ae31cecce315d8316fdf8c69b1ec97a746f4261886919491b2fd706ea89777db600fe
7
+ data.tar.gz: 9de87e7e096b9c7a54adf61cbac48ef3d3afb5d234503ca0cb3a56c5ac0a61092b8448b9b89135cbba61e2f67e4fbb2acc2a991bda0657c613e5cbc6fea1ac2a
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,19 @@
1
+ # 5.0.5 / 2017-01-25
2
+
3
+ * Updated Highcharts to 5.0.5 (2016-11-29)
4
+ * Fixed #5997, panning not working with reversed axes. Also closes #3278.
5
+ * Fixed #3398, click event for dataLabels when useHTML was set to true didn't work.
6
+ * Fixed #4338, incorrect minPointLength for negative values in waterfall series.
7
+ * Fixed #5860, bubble series in styled mode caused errors.
8
+ * Fixed #5892, errors in console on animating in splines as they are added.
9
+ * Fixed #5947, HTML dataLabels didn't show tooltip on mouseover.
10
+ * Fixed #6014, issue with zooming out of bounds.
11
+ * Fixed #6033, threshold ignored when chart.reflow was used.
12
+ * Fixed issue with build settings of Highcharts themes, and added a minimum of test.
13
+ * Fixed regression related to animation, where the complete step was not executed. This specifically affected drilldown, solid gauge and color axis updates. Closes #6017, 6032, #6023.
14
+ * Fixed wrong product name in license headers.
15
+
16
+
1
17
  # 5.0.4 / 2017-01-25
2
18
 
3
19
  * Updated Highcharts to 5.0.4 (2016-11-22)
data/Rakefile CHANGED
@@ -2,6 +2,20 @@ require 'bundler/gem_tasks'
2
2
  require 'open-uri'
3
3
  require 'zip'
4
4
 
5
+ module Bundler
6
+ class GemHelper
7
+ def tag_version
8
+ sh "git tag -s -m \"Version #{version}\" #{version_tag}"
9
+ Bundler.ui.confirm "Tagged #{version_tag}."
10
+ yield if block_given?
11
+ rescue
12
+ Bundler.ui.error "Untagging #{version_tag} due to error."
13
+ sh_with_code "git tag -d #{version_tag}"
14
+ raise
15
+ end
16
+ end
17
+ end
18
+
5
19
  desc 'Update to the latest version of Highcharts'
6
20
  task :update, :version do |_, args|
7
21
  # After highcharts 5.0.0, chart code was was seperated into to files: code/
@@ -81,5 +95,6 @@ task :dist, :version do |_, args|
81
95
  system "git commit -m '#{message}'"
82
96
 
83
97
  # Tag, build and release
98
+ load 'lib/highcharts/version.rb' # Re-load this so Bundler gets the right version
84
99
  Rake::Task["release"].invoke
85
100
  end
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -21,6 +21,7 @@
21
21
  *
22
22
  * License: www.highcharts.com/license
23
23
  */
24
+ 'use strict';
24
25
  /* global window */
25
26
  var win = window,
26
27
  doc = win.document;
@@ -35,7 +36,7 @@
35
36
 
36
37
  var Highcharts = win.Highcharts ? win.Highcharts.error(16, true) : {
37
38
  product: 'Highcharts',
38
- version: '5.0.4',
39
+ version: '5.0.5',
39
40
  deg2rad: Math.PI * 2 / 360,
40
41
  doc: doc,
41
42
  hasBidiBug: hasBidiBug,
@@ -57,7 +58,6 @@
57
58
  return undefined;
58
59
  }
59
60
  };
60
-
61
61
  return Highcharts;
62
62
  }());
63
63
  (function(H) {
@@ -67,6 +67,7 @@
67
67
  * License: www.highcharts.com/license
68
68
  */
69
69
  /* eslint max-len: ["warn", 80, 4] */
70
+ 'use strict';
70
71
 
71
72
  /**
72
73
  * The Highcharts object is the placeholder for all other members, and various
@@ -152,9 +153,7 @@
152
153
  } else {
153
154
  ret = end;
154
155
  }
155
- this.elem.animProp = 'd';
156
- this.elem.attr('d', ret);
157
- this.elem.animProp = null;
156
+ this.elem.attr('d', ret, null, true);
158
157
  },
159
158
 
160
159
  /**
@@ -176,9 +175,7 @@
176
175
  // Other animations on SVGElement
177
176
  } else if (elem.attr) {
178
177
  if (elem.element) {
179
- elem.animProp = prop;
180
- elem.attr(prop, now);
181
- elem.animProp = null;
178
+ elem.attr(prop, now, null, true);
182
179
  }
183
180
 
184
181
  // HTML styles, raw HTML content like container size
@@ -327,7 +324,7 @@
327
324
  // three places behind (#5788)
328
325
  isOperator = arr[i] === 'M' || arr[i] === 'L';
329
326
  nextIsOperator = /[a-zA-Z]/.test(arr[i + 3]);
330
- if (isOperator && !nextIsOperator) {
327
+ if (isOperator && nextIsOperator) {
331
328
  arr.splice(
332
329
  i + 1, 0,
333
330
  arr[i + 1], arr[i + 2],
@@ -434,11 +431,11 @@
434
431
  }
435
432
  }
436
433
 
437
- if (start.length && H.isNumber(shift)) {
434
+ if (start.length) {
438
435
 
439
436
  // The common target length for the start and end array, where both
440
437
  // arrays are padded in opposite ends
441
- fullLength = end.length + shift * positionFactor * numParams;
438
+ fullLength = end.length + (shift || 0) * positionFactor * numParams;
442
439
 
443
440
  if (!reverse) {
444
441
  prepend(end, start);
@@ -2063,6 +2060,7 @@
2063
2060
  *
2064
2061
  * License: www.highcharts.com/license
2065
2062
  */
2063
+ 'use strict';
2066
2064
  var each = H.each,
2067
2065
  isNumber = H.isNumber,
2068
2066
  map = H.map,
@@ -2231,6 +2229,7 @@
2231
2229
  *
2232
2230
  * License: www.highcharts.com/license
2233
2231
  */
2232
+ 'use strict';
2234
2233
  var SVGElement,
2235
2234
  SVGRenderer,
2236
2235
 
@@ -2643,6 +2642,9 @@
2643
2642
  * @param {Function} complete - A callback function to execute after setting
2644
2643
  * the attributes. This makes the function compliant and interchangeable
2645
2644
  * with the {@link SVGElement#animate} function.
2645
+ * @param {boolean} continueAnimation - Used internally when `.attr` is
2646
+ * called as part of an animation step. Otherwise, calling `.attr` for an
2647
+ * attribute will stop animation for that attribute.
2646
2648
  *
2647
2649
  * @returns {SVGElement|string|number} If used as a setter, it returns the
2648
2650
  * current {@link SVGElement} so the calls can be chained. If used as a
@@ -2664,7 +2666,7 @@
2664
2666
  * element.attr('stroke'); // => 'red'
2665
2667
  *
2666
2668
  */
2667
- attr: function(hash, val, complete) {
2669
+ attr: function(hash, val, complete, continueAnimation) {
2668
2670
  var key,
2669
2671
  value,
2670
2672
  element = this.element,
@@ -2693,7 +2695,7 @@
2693
2695
 
2694
2696
  // Unless .attr is from the animator update, stop current
2695
2697
  // running animation of this property
2696
- if (key !== this.animProp) {
2698
+ if (!continueAnimation) {
2697
2699
  stop(this, key);
2698
2700
  }
2699
2701
 
@@ -3959,7 +3961,7 @@
3959
3961
 
3960
3962
  // Add description
3961
3963
  desc = this.createElement('desc').add();
3962
- desc.element.appendChild(doc.createTextNode('Created with Highcharts 5.0.4'));
3964
+ desc.element.appendChild(doc.createTextNode('Created with Highcharts 5.0.5'));
3963
3965
 
3964
3966
 
3965
3967
  renderer.defs = this.createElement('defs').add();
@@ -5669,6 +5671,7 @@
5669
5671
  *
5670
5672
  * License: www.highcharts.com/license
5671
5673
  */
5674
+ 'use strict';
5672
5675
  var attr = H.attr,
5673
5676
  createElement = H.createElement,
5674
5677
  css = H.css,
@@ -5984,6 +5987,12 @@
5984
5987
  // Set listeners to update the HTML div's position whenever the SVG group
5985
5988
  // position is changed
5986
5989
  extend(parentGroup, {
5990
+ on: function() {
5991
+ wrapper.on.apply({
5992
+ element: parents[0].div
5993
+ }, arguments);
5994
+ return parentGroup;
5995
+ },
5987
5996
  translateXSetter: function(value, key) {
5988
5997
  htmlGroupStyle.left = value + 'px';
5989
5998
  parentGroup[key] = value;
@@ -6025,6 +6034,7 @@
6025
6034
  *
6026
6035
  * License: www.highcharts.com/license
6027
6036
  */
6037
+ 'use strict';
6028
6038
 
6029
6039
  var VMLRenderer,
6030
6040
  VMLRendererExtension,
@@ -7176,6 +7186,7 @@
7176
7186
  *
7177
7187
  * License: www.highcharts.com/license
7178
7188
  */
7189
+ 'use strict';
7179
7190
  var color = H.color,
7180
7191
  each = H.each,
7181
7192
  getTZOffset = H.getTZOffset,
@@ -7211,7 +7222,7 @@
7211
7222
  useUTC: true,
7212
7223
  //timezoneOffset: 0,
7213
7224
 
7214
- VMLRadialGradientURL: 'http://code.highcharts.com/5.0.4/gfx/vml-radial-gradient.png'
7225
+ VMLRadialGradientURL: 'http://code.highcharts.com/5.0.5/gfx/vml-radial-gradient.png'
7215
7226
 
7216
7227
  },
7217
7228
  chart: {
@@ -7273,12 +7284,7 @@
7273
7284
  // x: 0,
7274
7285
  // verticalAlign: 'top',
7275
7286
  // y: null,
7276
-
7277
- style: {
7278
- color: '#333333',
7279
- fontSize: '18px'
7280
- },
7281
-
7287
+ // style: {}, // defined inline
7282
7288
  widthAdjust: -44
7283
7289
 
7284
7290
  },
@@ -7289,11 +7295,7 @@
7289
7295
  // x: 0,
7290
7296
  // verticalAlign: 'top',
7291
7297
  // y: null,
7292
-
7293
- style: {
7294
- color: '#666666'
7295
- },
7296
-
7298
+ // style: {}, // defined inline
7297
7299
  widthAdjust: -44
7298
7300
  },
7299
7301
 
@@ -7535,6 +7537,7 @@
7535
7537
  *
7536
7538
  * License: www.highcharts.com/license
7537
7539
  */
7540
+ 'use strict';
7538
7541
  var arrayMax = H.arrayMax,
7539
7542
  arrayMin = H.arrayMin,
7540
7543
  defined = H.defined,
@@ -7860,6 +7863,7 @@
7860
7863
  *
7861
7864
  * License: www.highcharts.com/license
7862
7865
  */
7866
+ 'use strict';
7863
7867
  var correctFloat = H.correctFloat,
7864
7868
  defined = H.defined,
7865
7869
  destroyObjectProperties = H.destroyObjectProperties,
@@ -8273,6 +8277,7 @@
8273
8277
  *
8274
8278
  * License: www.highcharts.com/license
8275
8279
  */
8280
+ 'use strict';
8276
8281
 
8277
8282
  var addEvent = H.addEvent,
8278
8283
  animObject = H.animObject,
@@ -9237,15 +9242,14 @@
9237
9242
 
9238
9243
  // Adjust translation for padding. Y axis with categories need to go through the same (#1784).
9239
9244
  if (isXAxis || hasCategories || pointRange) {
9245
+
9246
+ // Get the closest points
9247
+ closestPointRange = axis.getClosest();
9248
+
9240
9249
  if (linkedParent) {
9241
9250
  minPointOffset = linkedParent.minPointOffset;
9242
9251
  pointRangePadding = linkedParent.pointRangePadding;
9243
-
9244
9252
  } else {
9245
-
9246
- // Get the closest points
9247
- closestPointRange = axis.getClosest();
9248
-
9249
9253
  each(axis.series, function(series) {
9250
9254
  var seriesPointRange = hasCategories ?
9251
9255
  1 :
@@ -9833,11 +9837,22 @@
9833
9837
 
9834
9838
  // Prevent pinch zooming out of range. Check for defined is for #1946. #1734.
9835
9839
  if (!this.allowZoomOutside) {
9836
- if (defined(dataMin) && newMin <= min) {
9837
- newMin = min;
9840
+ // #6014, sometimes newMax will be smaller than min (or newMin will be larger than max).
9841
+ if (defined(dataMin)) {
9842
+ if (newMin < min) {
9843
+ newMin = min;
9844
+ }
9845
+ if (newMin > max) {
9846
+ newMin = max;
9847
+ }
9838
9848
  }
9839
- if (defined(dataMax) && newMax >= max) {
9840
- newMax = max;
9849
+ if (defined(dataMax)) {
9850
+ if (newMax < min) {
9851
+ newMax = min;
9852
+ }
9853
+ if (newMax > max) {
9854
+ newMax = max;
9855
+ }
9841
9856
  }
9842
9857
  }
9843
9858
 
@@ -10841,6 +10856,7 @@
10841
10856
  *
10842
10857
  * License: www.highcharts.com/license
10843
10858
  */
10859
+ 'use strict';
10844
10860
  var Axis = H.Axis,
10845
10861
  Date = H.Date,
10846
10862
  dateFormat = H.dateFormat,
@@ -11094,6 +11110,7 @@
11094
11110
  *
11095
11111
  * License: www.highcharts.com/license
11096
11112
  */
11113
+ 'use strict';
11097
11114
  var Axis = H.Axis,
11098
11115
  getMagnitude = H.getMagnitude,
11099
11116
  map = H.map,
@@ -11217,6 +11234,7 @@
11217
11234
  *
11218
11235
  * License: www.highcharts.com/license
11219
11236
  */
11237
+ 'use strict';
11220
11238
  var dateFormat = H.dateFormat,
11221
11239
  each = H.each,
11222
11240
  extend = H.extend,
@@ -11958,6 +11976,7 @@
11958
11976
  *
11959
11977
  * License: www.highcharts.com/license
11960
11978
  */
11979
+ 'use strict';
11961
11980
  var addEvent = H.addEvent,
11962
11981
  attr = H.attr,
11963
11982
  charts = H.charts,
@@ -12736,6 +12755,7 @@
12736
12755
  *
12737
12756
  * License: www.highcharts.com/license
12738
12757
  */
12758
+ 'use strict';
12739
12759
  var charts = H.charts,
12740
12760
  each = H.each,
12741
12761
  extend = H.extend,
@@ -13013,6 +13033,7 @@
13013
13033
  *
13014
13034
  * License: www.highcharts.com/license
13015
13035
  */
13036
+ 'use strict';
13016
13037
  var addEvent = H.addEvent,
13017
13038
  charts = H.charts,
13018
13039
  css = H.css,
@@ -13132,6 +13153,7 @@
13132
13153
  *
13133
13154
  * License: www.highcharts.com/license
13134
13155
  */
13156
+ 'use strict';
13135
13157
  var Legend,
13136
13158
 
13137
13159
  addEvent = H.addEvent,
@@ -14071,6 +14093,7 @@
14071
14093
  *
14072
14094
  * License: www.highcharts.com/license
14073
14095
  */
14096
+ 'use strict';
14074
14097
  var addEvent = H.addEvent,
14075
14098
  animate = H.animate,
14076
14099
  animObject = H.animObject,
@@ -14527,8 +14550,31 @@
14527
14550
  chartTitleOptions,
14528
14551
  chartSubtitleOptions;
14529
14552
 
14530
- chartTitleOptions = options.title = merge(options.title, titleOptions);
14531
- chartSubtitleOptions = options.subtitle = merge(options.subtitle, subtitleOptions);
14553
+ chartTitleOptions = options.title = merge(
14554
+
14555
+ // Default styles
14556
+ {
14557
+ style: {
14558
+ color: '#333333',
14559
+ fontSize: options.isStock ? '16px' : '18px' // #2944
14560
+ }
14561
+ },
14562
+
14563
+ options.title,
14564
+ titleOptions
14565
+ );
14566
+ chartSubtitleOptions = options.subtitle = merge(
14567
+
14568
+ // Default styles
14569
+ {
14570
+ style: {
14571
+ color: '#666666'
14572
+ }
14573
+ },
14574
+
14575
+ options.subtitle,
14576
+ subtitleOptions
14577
+ );
14532
14578
 
14533
14579
  // add title and subtitle
14534
14580
  each([
@@ -15625,6 +15671,7 @@
15625
15671
  *
15626
15672
  * License: www.highcharts.com/license
15627
15673
  */
15674
+ 'use strict';
15628
15675
  var Point,
15629
15676
 
15630
15677
  each = H.each,
@@ -15971,6 +16018,7 @@
15971
16018
  *
15972
16019
  * License: www.highcharts.com/license
15973
16020
  */
16021
+ 'use strict';
15974
16022
  var addEvent = H.addEvent,
15975
16023
  animObject = H.animObject,
15976
16024
  arrayMax = H.arrayMax,
@@ -17988,6 +18036,7 @@
17988
18036
  *
17989
18037
  * License: www.highcharts.com/license
17990
18038
  */
18039
+ 'use strict';
17991
18040
  var Axis = H.Axis,
17992
18041
  Chart = H.Chart,
17993
18042
  correctFloat = H.correctFloat,
@@ -18243,7 +18292,7 @@
18243
18292
  // Reset stacks
18244
18293
  } else {
18245
18294
  stacks[type][i].total = null;
18246
- stacks[type][i].cum = 0;
18295
+ stacks[type][i].cum = null;
18247
18296
  }
18248
18297
  }
18249
18298
  }
@@ -18473,6 +18522,7 @@
18473
18522
  *
18474
18523
  * License: www.highcharts.com/license
18475
18524
  */
18525
+ 'use strict';
18476
18526
  var addEvent = H.addEvent,
18477
18527
  animate = H.animate,
18478
18528
  Axis = H.Axis,
@@ -19183,6 +19233,7 @@
19183
19233
  *
19184
19234
  * License: www.highcharts.com/license
19185
19235
  */
19236
+ 'use strict';
19186
19237
  var color = H.color,
19187
19238
  each = H.each,
19188
19239
  LegendSymbolMixin = H.LegendSymbolMixin,
@@ -19512,6 +19563,7 @@
19512
19563
  *
19513
19564
  * License: www.highcharts.com/license
19514
19565
  */
19566
+ 'use strict';
19515
19567
  var pick = H.pick,
19516
19568
  seriesType = H.seriesType;
19517
19569
 
@@ -19647,6 +19699,7 @@
19647
19699
  *
19648
19700
  * License: www.highcharts.com/license
19649
19701
  */
19702
+ 'use strict';
19650
19703
  var areaProto = H.seriesTypes.area.prototype,
19651
19704
  defaultPlotOptions = H.defaultPlotOptions,
19652
19705
  LegendSymbolMixin = H.LegendSymbolMixin,
@@ -19669,6 +19722,7 @@
19669
19722
  *
19670
19723
  * License: www.highcharts.com/license
19671
19724
  */
19725
+ 'use strict';
19672
19726
  var animObject = H.animObject,
19673
19727
  color = H.color,
19674
19728
  each = H.each,
@@ -20129,6 +20183,7 @@
20129
20183
  *
20130
20184
  * License: www.highcharts.com/license
20131
20185
  */
20186
+ 'use strict';
20132
20187
 
20133
20188
  var seriesType = H.seriesType;
20134
20189
 
@@ -20146,6 +20201,7 @@
20146
20201
  *
20147
20202
  * License: www.highcharts.com/license
20148
20203
  */
20204
+ 'use strict';
20149
20205
  var Series = H.Series,
20150
20206
  seriesType = H.seriesType;
20151
20207
  /**
@@ -20183,6 +20239,7 @@
20183
20239
  *
20184
20240
  * License: www.highcharts.com/license
20185
20241
  */
20242
+ 'use strict';
20186
20243
  var pick = H.pick,
20187
20244
  relativeLength = H.relativeLength;
20188
20245
 
@@ -20232,6 +20289,7 @@
20232
20289
  *
20233
20290
  * License: www.highcharts.com/license
20234
20291
  */
20292
+ 'use strict';
20235
20293
  var addEvent = H.addEvent,
20236
20294
  CenteredSeriesMixin = H.CenteredSeriesMixin,
20237
20295
  defined = H.defined,
@@ -20729,6 +20787,7 @@
20729
20787
  *
20730
20788
  * License: www.highcharts.com/license
20731
20789
  */
20790
+ 'use strict';
20732
20791
  var addEvent = H.addEvent,
20733
20792
  arrayMax = H.arrayMax,
20734
20793
  defined = H.defined,
@@ -21004,7 +21063,11 @@
21004
21063
  )
21005
21064
  .attr(attr);
21006
21065
 
21007
- dataLabel.addClass('highcharts-data-label-color-' + point.colorIndex + ' ' + (options.className || ''));
21066
+ dataLabel.addClass(
21067
+ 'highcharts-data-label-color-' + point.colorIndex +
21068
+ ' ' + (options.className || '') +
21069
+ (options.useHTML ? 'highcharts-tracker' : '') // #3398
21070
+ );
21008
21071
 
21009
21072
 
21010
21073
  // Styles must be applied before add in order to read text bounding box
@@ -21585,6 +21648,7 @@
21585
21648
  *
21586
21649
  * License: www.highcharts.com/license
21587
21650
  */
21651
+ 'use strict';
21588
21652
  /**
21589
21653
  * Highcharts module to hide overlapping data labels. This module is included in Highcharts.
21590
21654
  */
@@ -21733,6 +21797,7 @@
21733
21797
  *
21734
21798
  * License: www.highcharts.com/license
21735
21799
  */
21800
+ 'use strict';
21736
21801
  var addEvent = H.addEvent,
21737
21802
  Chart = H.Chart,
21738
21803
  createElement = H.createElement,
@@ -21788,7 +21853,11 @@
21788
21853
  point.graphic.element.point = point;
21789
21854
  }
21790
21855
  if (point.dataLabel) {
21791
- point.dataLabel.element.point = point;
21856
+ if (point.dataLabel.div) {
21857
+ point.dataLabel.div.point = point;
21858
+ } else {
21859
+ point.dataLabel.element.point = point;
21860
+ }
21792
21861
  }
21793
21862
  });
21794
21863
 
@@ -22138,14 +22207,24 @@
22138
22207
  each(panning === 'xy' ? [1, 0] : [1], function(isX) { // xy is used in maps
22139
22208
  var axis = chart[isX ? 'xAxis' : 'yAxis'][0],
22140
22209
  horiz = axis.horiz,
22210
+ reversed = axis.reversed,
22141
22211
  mousePos = e[horiz ? 'chartX' : 'chartY'],
22142
22212
  mouseDown = horiz ? 'mouseDownX' : 'mouseDownY',
22143
22213
  startPos = chart[mouseDown],
22144
- halfPointRange = (axis.pointRange || 0) / 2,
22214
+ halfPointRange = (axis.pointRange || 0) / (reversed ? -2 : 2),
22145
22215
  extremes = axis.getExtremes(),
22146
22216
  newMin = axis.toValue(startPos - mousePos, true) + halfPointRange,
22147
22217
  newMax = axis.toValue(startPos + axis.len - mousePos, true) - halfPointRange,
22148
- goingLeft = startPos > mousePos; // #3613
22218
+ goingLeft = startPos > mousePos, // #3613
22219
+ tmp;
22220
+
22221
+ // Swap min/max for reversed axes (#5997)
22222
+ if (reversed) {
22223
+ goingLeft = !goingLeft;
22224
+ tmp = newMin;
22225
+ newMin = newMax;
22226
+ newMax = tmp;
22227
+ }
22149
22228
 
22150
22229
  if (axis.series.length &&
22151
22230
  (goingLeft || newMin > Math.min(extremes.dataMin, extremes.min)) &&
@@ -22689,6 +22768,7 @@
22689
22768
  *
22690
22769
  * License: www.highcharts.com/license
22691
22770
  */
22771
+ 'use strict';
22692
22772
  var Chart = H.Chart,
22693
22773
  each = H.each,
22694
22774
  inArray = H.inArray,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * 3D features for Highcharts JS
5
5
  *
@@ -18,6 +18,7 @@
18
18
  *
19
19
  * License: www.highcharts.com/license
20
20
  */
21
+ 'use strict';
21
22
  /**
22
23
  * Mathematical Functionility
23
24
  */
@@ -140,6 +141,7 @@
140
141
  *
141
142
  * License: www.highcharts.com/license
142
143
  */
144
+ 'use strict';
143
145
  var cos = Math.cos,
144
146
  PI = Math.PI,
145
147
  sin = Math.sin;
@@ -857,6 +859,7 @@
857
859
  *
858
860
  * License: www.highcharts.com/license
859
861
  */
862
+ 'use strict';
860
863
  var Chart = H.Chart,
861
864
  each = H.each,
862
865
  merge = H.merge,
@@ -1094,6 +1097,7 @@
1094
1097
  *
1095
1098
  * License: www.highcharts.com/license
1096
1099
  */
1100
+ 'use strict';
1097
1101
  var ZAxis,
1098
1102
 
1099
1103
  Axis = H.Axis,
@@ -1503,6 +1507,7 @@
1503
1507
  *
1504
1508
  * License: www.highcharts.com/license
1505
1509
  */
1510
+ 'use strict';
1506
1511
  var each = H.each,
1507
1512
  perspective = H.perspective,
1508
1513
  pick = H.pick,
@@ -1758,6 +1763,7 @@
1758
1763
  *
1759
1764
  * License: www.highcharts.com/license
1760
1765
  */
1766
+ 'use strict';
1761
1767
  var deg2rad = H.deg2rad,
1762
1768
  each = H.each,
1763
1769
  pick = H.pick,
@@ -1948,6 +1954,7 @@
1948
1954
  *
1949
1955
  * License: www.highcharts.com/license
1950
1956
  */
1957
+ 'use strict';
1951
1958
  var perspective = H.perspective,
1952
1959
  pick = H.pick,
1953
1960
  seriesTypes = H.seriesTypes,
@@ -2039,7 +2046,7 @@
2039
2046
  */
2040
2047
  wrap(seriesTypes.scatter.prototype, 'pointAttribs', function(proceed, point) {
2041
2048
  var pointOptions = proceed.apply(this, [].slice.call(arguments, 1));
2042
- if (point) {
2049
+ if (this.chart.is3d() && point) {
2043
2050
  pointOptions.zIndex = H.pointCameraDistance(point, this.chart);
2044
2051
  }
2045
2052
  return pointOptions;
@@ -2052,6 +2059,7 @@
2052
2059
  *
2053
2060
  * License: www.highcharts.com/license
2054
2061
  */
2062
+ 'use strict';
2055
2063
 
2056
2064
  var Axis = H.Axis,
2057
2065
  SVGRenderer = H.SVGRenderer,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -18,6 +18,7 @@
18
18
  *
19
19
  * License: www.highcharts.com/license
20
20
  */
21
+ 'use strict';
21
22
  var each = H.each,
22
23
  extend = H.extend,
23
24
  merge = H.merge,
@@ -125,6 +126,7 @@
125
126
  *
126
127
  * License: www.highcharts.com/license
127
128
  */
129
+ 'use strict';
128
130
  var Axis = H.Axis,
129
131
  CenteredSeriesMixin = H.CenteredSeriesMixin,
130
132
  each = H.each,
@@ -709,6 +711,7 @@
709
711
  *
710
712
  * License: www.highcharts.com/license
711
713
  */
714
+ 'use strict';
712
715
  var each = H.each,
713
716
  noop = H.noop,
714
717
  pick = H.pick,
@@ -1018,6 +1021,7 @@
1018
1021
  *
1019
1022
  * License: www.highcharts.com/license
1020
1023
  */
1024
+ 'use strict';
1021
1025
 
1022
1026
  var seriesType = H.seriesType,
1023
1027
  seriesTypes = H.seriesTypes;
@@ -1036,6 +1040,7 @@
1036
1040
  *
1037
1041
  * License: www.highcharts.com/license
1038
1042
  */
1043
+ 'use strict';
1039
1044
  var defaultPlotOptions = H.defaultPlotOptions,
1040
1045
  each = H.each,
1041
1046
  merge = H.merge,
@@ -1143,6 +1148,7 @@
1143
1148
  *
1144
1149
  * License: www.highcharts.com/license
1145
1150
  */
1151
+ 'use strict';
1146
1152
  var each = H.each,
1147
1153
  isNumber = H.isNumber,
1148
1154
  merge = H.merge,
@@ -1407,6 +1413,7 @@
1407
1413
  *
1408
1414
  * License: www.highcharts.com/license
1409
1415
  */
1416
+ 'use strict';
1410
1417
  var each = H.each,
1411
1418
  noop = H.noop,
1412
1419
  pick = H.pick,
@@ -1710,6 +1717,7 @@
1710
1717
  *
1711
1718
  * License: www.highcharts.com/license
1712
1719
  */
1720
+ 'use strict';
1713
1721
  var each = H.each,
1714
1722
  noop = H.noop,
1715
1723
  seriesType = H.seriesType,
@@ -1769,6 +1777,7 @@
1769
1777
  *
1770
1778
  * License: www.highcharts.com/license
1771
1779
  */
1780
+ 'use strict';
1772
1781
  var correctFloat = H.correctFloat,
1773
1782
  isNumber = H.isNumber,
1774
1783
  noop = H.noop,
@@ -1822,11 +1831,13 @@
1822
1831
  minPointLength = pick(options.minPointLength, 5),
1823
1832
  threshold = options.threshold,
1824
1833
  stacking = options.stacking,
1834
+ // Separate offsets for negative and positive columns:
1835
+ positiveOffset = 0,
1836
+ negativeOffset = 0,
1825
1837
  tooltipY;
1826
1838
 
1827
1839
  // run column series translate
1828
1840
  seriesTypes.column.prototype.translate.apply(this);
1829
- series.minPointLengthOffset = 0;
1830
1841
 
1831
1842
  previousY = previousIntermediate = threshold;
1832
1843
  points = series.points;
@@ -1857,11 +1868,13 @@
1857
1868
  // sum points
1858
1869
  if (point.isSum) {
1859
1870
  shapeArgs.y = yAxis.toPixels(range[1], true);
1860
- shapeArgs.height = Math.min(yAxis.toPixels(range[0], true), yAxis.len) - shapeArgs.y + series.minPointLengthOffset; // #4256
1871
+ shapeArgs.height = Math.min(yAxis.toPixels(range[0], true), yAxis.len) -
1872
+ shapeArgs.y + positiveOffset + negativeOffset; // #4256
1861
1873
 
1862
1874
  } else if (point.isIntermediateSum) {
1863
1875
  shapeArgs.y = yAxis.toPixels(range[1], true);
1864
- shapeArgs.height = Math.min(yAxis.toPixels(previousIntermediate, true), yAxis.len) - shapeArgs.y + series.minPointLengthOffset;
1876
+ shapeArgs.height = Math.min(yAxis.toPixels(previousIntermediate, true), yAxis.len) -
1877
+ shapeArgs.y + positiveOffset + negativeOffset;
1865
1878
  previousIntermediate = range[1];
1866
1879
 
1867
1880
  // If it's not the sum point, update previous stack end position and get
@@ -1882,21 +1895,29 @@
1882
1895
  shapeArgs.height = Math.max(Math.round(shapeArgs.height), 0.001); // #3151
1883
1896
  point.yBottom = shapeArgs.y + shapeArgs.height;
1884
1897
 
1898
+ // Before minPointLength, apply negative offset:
1899
+ shapeArgs.y -= negativeOffset;
1900
+
1885
1901
  if (shapeArgs.height <= minPointLength) {
1886
1902
  shapeArgs.height = minPointLength;
1887
- series.minPointLengthOffset += minPointLength;
1903
+ if (point.y < 0) {
1904
+ negativeOffset -= minPointLength;
1905
+ } else {
1906
+ positiveOffset += minPointLength;
1907
+ }
1888
1908
  }
1889
1909
 
1890
- shapeArgs.y -= series.minPointLengthOffset;
1910
+ // After minPointLength is updated, apply positive offset:
1911
+ shapeArgs.y -= positiveOffset;
1891
1912
 
1892
1913
  // Correct tooltip placement (#3014)
1893
- tooltipY = point.plotY + (point.negative ? shapeArgs.height : 0) - series.minPointLengthOffset;
1914
+ tooltipY = point.plotY - negativeOffset - positiveOffset +
1915
+ (point.negative && negativeOffset >= 0 ? shapeArgs.height : 0);
1894
1916
  if (series.chart.inverted) {
1895
1917
  point.tooltipPos[0] = yAxis.len - tooltipY;
1896
1918
  } else {
1897
1919
  point.tooltipPos[1] = tooltipY;
1898
1920
  }
1899
-
1900
1921
  }
1901
1922
  },
1902
1923
 
@@ -2073,6 +2094,7 @@
2073
2094
  *
2074
2095
  * License: www.highcharts.com/license
2075
2096
  */
2097
+ 'use strict';
2076
2098
  var LegendSymbolMixin = H.LegendSymbolMixin,
2077
2099
  noop = H.noop,
2078
2100
  Series = H.Series,
@@ -2132,6 +2154,7 @@
2132
2154
  *
2133
2155
  * License: www.highcharts.com/license
2134
2156
  */
2157
+ 'use strict';
2135
2158
  var arrayMax = H.arrayMax,
2136
2159
  arrayMin = H.arrayMin,
2137
2160
  Axis = H.Axis,
@@ -2199,7 +2222,7 @@
2199
2222
  trackerGroups: ['group', 'dataLabelsGroup'],
2200
2223
  bubblePadding: true,
2201
2224
  zoneAxis: 'z',
2202
- markerAttribs: null,
2225
+ markerAttribs: noop,
2203
2226
 
2204
2227
 
2205
2228
  pointAttribs: function(point, state) {
@@ -2343,7 +2366,10 @@
2343
2366
  */
2344
2367
  drawLegendSymbol: function(legend, item) {
2345
2368
  var renderer = this.chart.renderer,
2346
- radius = renderer.fontMetrics(legend.itemStyle.fontSize).f / 2;
2369
+ radius = renderer.fontMetrics(
2370
+ legend.itemStyle && legend.itemStyle.fontSize,
2371
+ item.legendItem
2372
+ ).f / 2;
2347
2373
 
2348
2374
  item.legendSymbol = renderer.circle(
2349
2375
  radius,
@@ -2487,6 +2513,7 @@
2487
2513
  *
2488
2514
  * License: www.highcharts.com/license
2489
2515
  */
2516
+ 'use strict';
2490
2517
 
2491
2518
  /**
2492
2519
  * Extensions for polar charts. Additionally, much of the geometry required for polar charts is
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Accessibility module
4
4
  *
5
5
  * (c) 2010-2016 Highsoft AS
@@ -23,6 +23,7 @@
23
23
  *
24
24
  * License: www.highcharts.com/license
25
25
  */
26
+ 'use strict';
26
27
 
27
28
  var win = H.win,
28
29
  doc = win.document,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -18,6 +18,7 @@
18
18
  *
19
19
  * License: www.highcharts.com/license
20
20
  */
21
+ 'use strict';
21
22
 
22
23
  var defined = H.defined,
23
24
  isNumber = H.isNumber,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Boost module
4
4
  *
5
5
  * (c) 2010-2016 Highsoft AS
@@ -65,6 +65,7 @@
65
65
  * use optimizations.
66
66
  */
67
67
 
68
+ 'use strict';
68
69
 
69
70
  var win = H.win,
70
71
  doc = win.document,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -18,6 +18,7 @@
18
18
  *
19
19
  * License: www.highcharts.com/license
20
20
  */
21
+ 'use strict';
21
22
 
22
23
  var pick = H.pick,
23
24
  wrap = H.wrap,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Data module
4
4
  *
5
5
  * (c) 2012-2016 Torstein Honsi
@@ -23,6 +23,7 @@
23
23
  */
24
24
 
25
25
  /* global jQuery */
26
+ 'use strict';
26
27
 
27
28
  // Utilities
28
29
  var win = Highcharts.win,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Highcharts Drilldown module
4
4
  *
5
5
  * Author: Torstein Honsi
@@ -22,6 +22,7 @@
22
22
  *
23
23
  */
24
24
 
25
+ 'use strict';
25
26
 
26
27
  var noop = H.noop,
27
28
  color = H.color,
@@ -74,7 +75,12 @@
74
75
  */
75
76
  each(['fill', 'stroke'], function(prop) {
76
77
  H.Fx.prototype[prop + 'Setter'] = function() {
77
- this.elem.attr(prop, tweenColors(color(this.start), color(this.end), this.pos));
78
+ this.elem.attr(
79
+ prop,
80
+ tweenColors(color(this.start), color(this.end), this.pos),
81
+ null,
82
+ true
83
+ );
78
84
  };
79
85
  });
80
86
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Exporting module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
@@ -23,6 +23,7 @@
23
23
  */
24
24
 
25
25
  /* eslint indent:0 */
26
+ 'use strict';
26
27
 
27
28
  // create shortcuts
28
29
  var defaultOptions = H.defaultOptions,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Highcharts funnel module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
@@ -22,6 +22,7 @@
22
22
  * License: www.highcharts.com/license
23
23
  */
24
24
  /* eslint indent:0 */
25
+ 'use strict';
25
26
 
26
27
  // create shortcuts
27
28
  var seriesType = Highcharts.seriesType,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * GridAxis
4
4
  *
5
5
  * (c) 2016 Lars A. V. Cabrera
@@ -22,6 +22,7 @@
22
22
  *
23
23
  * License: www.highcharts.com/license
24
24
  */
25
+ 'use strict';
25
26
 
26
27
  var dateFormat = H.dateFormat,
27
28
  each = H.each,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -18,6 +18,7 @@
18
18
  *
19
19
  * License: www.highcharts.com/license
20
20
  */
21
+ 'use strict';
21
22
  var Axis = H.Axis,
22
23
  Chart = H.Chart,
23
24
  color = H.color,
@@ -515,7 +516,16 @@
515
516
  */
516
517
  each(['fill', 'stroke'], function(prop) {
517
518
  H.Fx.prototype[prop + 'Setter'] = function() {
518
- this.elem.attr(prop, ColorAxis.prototype.tweenColors(color(this.start), color(this.end), this.pos));
519
+ this.elem.attr(
520
+ prop,
521
+ ColorAxis.prototype.tweenColors(
522
+ color(this.start),
523
+ color(this.end),
524
+ this.pos
525
+ ),
526
+ null,
527
+ true
528
+ );
519
529
  };
520
530
  });
521
531
 
@@ -581,6 +591,7 @@
581
591
  *
582
592
  * License: www.highcharts.com/license
583
593
  */
594
+ 'use strict';
584
595
  var defined = H.defined,
585
596
  each = H.each,
586
597
  noop = H.noop,
@@ -667,6 +678,7 @@
667
678
  *
668
679
  * License: www.highcharts.com/license
669
680
  */
681
+ 'use strict';
670
682
  var colorPointMixin = H.colorPointMixin,
671
683
  colorSeriesMixin = H.colorSeriesMixin,
672
684
  each = H.each,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Plugin for displaying a message when there is no data visible in chart.
4
4
  *
5
5
  * (c) 2010-2016 Highsoft AS
@@ -23,6 +23,7 @@
23
23
  *
24
24
  * License: www.highcharts.com/license
25
25
  */
26
+ 'use strict';
26
27
 
27
28
  var seriesTypes = H.seriesTypes,
28
29
  chartPrototype = H.Chart.prototype,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Client side exporting module
4
4
  *
5
5
  * (c) 2015 Torstein Honsi / Oystein Moseng
@@ -22,6 +22,7 @@
22
22
  * License: www.highcharts.com/license
23
23
  */
24
24
 
25
+ 'use strict';
25
26
  /*global MSBlobBuilder */
26
27
 
27
28
  var merge = Highcharts.merge,
@@ -439,7 +440,7 @@
439
440
 
440
441
  // Extend the default options to use the local exporter logic
441
442
  merge(true, Highcharts.getOptions().exporting, {
442
- libURL: 'https://code.highcharts.com/5.0.4/lib/',
443
+ libURL: 'https://code.highcharts.com/5.0.5/lib/',
443
444
  buttons: {
444
445
  contextButton: {
445
446
  menuItems: [{
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -18,6 +18,7 @@
18
18
  *
19
19
  * License: www.highcharts.com/license
20
20
  */
21
+ 'use strict';
21
22
  /**
22
23
  * Highcharts module to hide overlapping data labels. This module is included in Highcharts.
23
24
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2009-2016 Torstein Honsi
5
5
  *
@@ -33,6 +33,7 @@
33
33
  * http://jsfiddle.net/highcharts/y5A37/
34
34
  */
35
35
 
36
+ 'use strict';
36
37
 
37
38
  var labelDistance = 3,
38
39
  wrap = H.wrap,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * Solid angular gauge module
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi
@@ -22,6 +22,7 @@
22
22
  * License: www.highcharts.com/license
23
23
  */
24
24
 
25
+ 'use strict';
25
26
 
26
27
  var pInt = H.pInt,
27
28
  pick = H.pick,
@@ -159,7 +160,16 @@
159
160
  */
160
161
  each(['fill', 'stroke'], function(prop) {
161
162
  H.Fx.prototype[prop + 'Setter'] = function() {
162
- this.elem.attr(prop, colorAxisMethods.tweenColors(H.color(this.start), H.color(this.end), this.pos));
163
+ this.elem.attr(
164
+ prop,
165
+ colorAxisMethods.tweenColors(
166
+ H.color(this.start),
167
+ H.color(this.end),
168
+ this.pos
169
+ ),
170
+ null,
171
+ true
172
+ );
163
173
  };
164
174
  });
165
175
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  *
4
4
  * (c) 2014 Highsoft AS
5
5
  * Authors: Jon Arild Nygard / Oystein Moseng
@@ -20,6 +20,7 @@
20
20
  *
21
21
  * License: www.highcharts.com/license
22
22
  */
23
+ 'use strict';
23
24
 
24
25
  var seriesType = H.seriesType,
25
26
  seriesTypes = H.seriesTypes,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v5.0.4 (2016-11-25)
2
+ * @license Highcharts JS v5.0.5 (2016-11-29)
3
3
  * X-range series
4
4
  *
5
5
  * (c) 2010-2016 Torstein Honsi, Lars A. V. Cabrera
@@ -22,6 +22,7 @@
22
22
  *
23
23
  * License: www.highcharts.com/license
24
24
  */
25
+ 'use strict';
25
26
 
26
27
  var defaultPlotOptions = H.getOptions().plotOptions,
27
28
  color = H.Color,
@@ -1,3 +1,3 @@
1
1
  module Highcharts
2
- VERSION = "5.0.4"
2
+ VERSION = "5.0.5"
3
3
  end
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
4
+ version: 5.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Per Christian B. Viken