highstock-rails 2.1.10 → 5.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/css/highcharts.css +760 -0
  3. data/app/assets/javascripts/highstock.js +511 -419
  4. data/app/assets/javascripts/highstock/highstock.js +472 -0
  5. data/app/assets/javascripts/highstock/highstock.js.map +8 -0
  6. data/app/assets/javascripts/highstock/highstock.src.js +28809 -0
  7. data/app/assets/javascripts/highstock/modules/accessibility.js +48 -0
  8. data/app/assets/javascripts/highstock/modules/accessibility.js.map +8 -0
  9. data/app/assets/javascripts/highstock/modules/accessibility.src.js +1131 -0
  10. data/app/assets/javascripts/highstock/modules/annotations.js +14 -0
  11. data/app/assets/javascripts/highstock/modules/annotations.js.map +8 -0
  12. data/app/assets/javascripts/highstock/modules/annotations.src.js +407 -0
  13. data/app/assets/javascripts/highstock/modules/boost-canvas.js +23 -0
  14. data/app/assets/javascripts/highstock/modules/boost-canvas.js.map +8 -0
  15. data/app/assets/javascripts/highstock/modules/boost-canvas.src.js +771 -0
  16. data/app/assets/javascripts/highstock/modules/boost.js +51 -12
  17. data/app/assets/javascripts/highstock/modules/boost.js.map +8 -0
  18. data/app/assets/javascripts/highstock/modules/boost.src.js +2580 -492
  19. data/app/assets/javascripts/highstock/modules/broken-axis.js.map +8 -0
  20. data/app/assets/javascripts/highstock/modules/canvasrenderer.experimental.js.map +8 -0
  21. data/app/assets/javascripts/highstock/modules/data.js +19 -19
  22. data/app/assets/javascripts/highstock/modules/data.js.map +8 -0
  23. data/app/assets/javascripts/highstock/modules/data.src.js +974 -950
  24. data/app/assets/javascripts/highstock/modules/drilldown.js +25 -17
  25. data/app/assets/javascripts/highstock/modules/drilldown.js.map +8 -0
  26. data/app/assets/javascripts/highstock/modules/drilldown.src.js +790 -709
  27. data/app/assets/javascripts/highstock/modules/export-data.js +17 -0
  28. data/app/assets/javascripts/highstock/modules/export-data.js.map +8 -0
  29. data/app/assets/javascripts/highstock/modules/export-data.src.js +417 -0
  30. data/app/assets/javascripts/highstock/modules/exporting.js +21 -18
  31. data/app/assets/javascripts/highstock/modules/exporting.js.map +8 -0
  32. data/app/assets/javascripts/highstock/modules/exporting.src.js +1013 -768
  33. data/app/assets/javascripts/highstock/modules/funnel.js +6 -7
  34. data/app/assets/javascripts/highstock/modules/funnel.js.map +8 -0
  35. data/app/assets/javascripts/highstock/modules/funnel.src.js +284 -308
  36. data/app/assets/javascripts/highstock/modules/gantt.js +24 -0
  37. data/app/assets/javascripts/highstock/modules/gantt.js.map +8 -0
  38. data/app/assets/javascripts/highstock/modules/gantt.src.js +793 -0
  39. data/app/assets/javascripts/highstock/modules/grid-axis.js +19 -0
  40. data/app/assets/javascripts/highstock/modules/grid-axis.js.map +8 -0
  41. data/app/assets/javascripts/highstock/modules/grid-axis.src.js +545 -0
  42. data/app/assets/javascripts/highstock/modules/heatmap.js +20 -18
  43. data/app/assets/javascripts/highstock/modules/heatmap.js.map +8 -0
  44. data/app/assets/javascripts/highstock/modules/heatmap.src.js +738 -633
  45. data/app/assets/javascripts/highstock/modules/map-parser.js.map +8 -0
  46. data/app/assets/javascripts/highstock/modules/map.js.map +8 -0
  47. data/app/assets/javascripts/highstock/modules/no-data-to-display.js +5 -5
  48. data/app/assets/javascripts/highstock/modules/no-data-to-display.js.map +8 -0
  49. data/app/assets/javascripts/highstock/modules/no-data-to-display.src.js +140 -133
  50. data/app/assets/javascripts/highstock/modules/offline-exporting.js +12 -7
  51. data/app/assets/javascripts/highstock/modules/offline-exporting.js.map +8 -0
  52. data/app/assets/javascripts/highstock/modules/offline-exporting.src.js +543 -270
  53. data/app/assets/javascripts/highstock/modules/overlapping-datalabels.js +10 -0
  54. data/app/assets/javascripts/highstock/modules/overlapping-datalabels.js.map +8 -0
  55. data/app/assets/javascripts/highstock/modules/overlapping-datalabels.src.js +187 -0
  56. data/app/assets/javascripts/highstock/modules/series-label.js +19 -0
  57. data/app/assets/javascripts/highstock/modules/series-label.js.map +8 -0
  58. data/app/assets/javascripts/highstock/modules/series-label.src.js +606 -0
  59. data/app/assets/javascripts/highstock/modules/solid-gauge.js +9 -8
  60. data/app/assets/javascripts/highstock/modules/solid-gauge.js.map +8 -0
  61. data/app/assets/javascripts/highstock/modules/solid-gauge.src.js +334 -266
  62. data/app/assets/javascripts/highstock/modules/static-scale.js +12 -0
  63. data/app/assets/javascripts/highstock/modules/static-scale.js.map +8 -0
  64. data/app/assets/javascripts/highstock/modules/static-scale.src.js +64 -0
  65. data/app/assets/javascripts/highstock/modules/stock.js +123 -0
  66. data/app/assets/javascripts/highstock/modules/stock.js.map +8 -0
  67. data/app/assets/javascripts/highstock/modules/stock.src.js +6247 -0
  68. data/app/assets/javascripts/highstock/modules/treemap.js +22 -23
  69. data/app/assets/javascripts/highstock/modules/treemap.js.map +8 -0
  70. data/app/assets/javascripts/highstock/modules/treemap.src.js +884 -859
  71. data/app/assets/javascripts/highstock/modules/xrange-series.js +15 -0
  72. data/app/assets/javascripts/highstock/modules/xrange-series.js.map +8 -0
  73. data/app/assets/javascripts/highstock/modules/xrange-series.src.js +258 -0
  74. data/app/assets/javascripts/highstock/themes/dark-blue.js +307 -244
  75. data/app/assets/javascripts/highstock/themes/dark-green.js +303 -244
  76. data/app/assets/javascripts/highstock/themes/dark-unica.js +231 -201
  77. data/app/assets/javascripts/highstock/themes/gray.js +314 -245
  78. data/app/assets/javascripts/highstock/themes/grid-light.js +91 -66
  79. data/app/assets/javascripts/highstock/themes/grid.js +124 -96
  80. data/app/assets/javascripts/highstock/themes/sand-signika.js +119 -94
  81. data/app/assets/javascripts/highstock/themes/skies.js +108 -85
  82. data/lib/highstock/rails/version.rb +1 -1
  83. metadata +54 -11
  84. data/app/assets/javascripts/highstock/adapters/standalone-framework.js +0 -18
  85. data/app/assets/javascripts/highstock/adapters/standalone-framework.src.js +0 -635
  86. data/app/assets/javascripts/highstock/highcharts-3d.js +0 -48
  87. data/app/assets/javascripts/highstock/highcharts-3d.src.js +0 -1711
  88. data/app/assets/javascripts/highstock/highcharts-more.js +0 -55
  89. data/app/assets/javascripts/highstock/highstock-all.js +0 -637
  90. data/app/assets/javascripts/highstock/modules/canvas-tools.js +0 -133
  91. data/app/assets/javascripts/highstock/modules/canvas-tools.src.js +0 -3114
@@ -1,23 +1,25 @@
1
1
  /*
2
- Highcharts JS v4.1.10 (2015-12-07)
2
+ Highcharts JS v5.0.11 (2017-05-04)
3
3
 
4
- (c) 2011-2014 Torstein Honsi
4
+ (c) 2009-2017 Torstein Honsi
5
5
 
6
6
  License: www.highcharts.com/license
7
7
  */
8
- (function(d){typeof module==="object"&&module.exports?module.exports=d:d(Highcharts)})(function(d){var m=d.Axis,q=d.Chart,i=d.Color,x=d.Legend,s=d.LegendSymbolMixin,t=d.Series,y=d.Point,u=d.getOptions(),h=d.each,r=d.extend,v=d.extendClass,j=d.merge,k=d.pick,o=d.seriesTypes,w=d.wrap,n=function(){},p=d.ColorAxis=function(){this.isColorAxis=!0;this.init.apply(this,arguments)};r(p.prototype,m.prototype);r(p.prototype,{defaultColorAxisOptions:{lineWidth:0,minPadding:0,maxPadding:0,gridLineWidth:1,tickPixelInterval:72,
9
- startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},color:"gray",width:0.01},labels:{overflow:"justify"},minColor:"#EFEFFF",maxColor:"#003875",tickLength:5},init:function(a,b){var c=a.options.legend.layout!=="vertical",f;f=j(this.defaultColorAxisOptions,{side:c?2:1,reversed:!c},b,{opposite:!c,showEmpty:!1,title:null,isColor:!0});m.prototype.init.call(this,a,f);b.dataClasses&&this.initDataClasses(b);this.initStops(b);this.horiz=c;this.zoomEnabled=!1},tweenColors:function(a,b,c){var f;
10
- !b.rgba.length||!a.rgba.length?a=b.input||"none":(a=a.rgba,b=b.rgba,f=b[3]!==1||a[3]!==1,a=(f?"rgba(":"rgb(")+Math.round(b[0]+(a[0]-b[0])*(1-c))+","+Math.round(b[1]+(a[1]-b[1])*(1-c))+","+Math.round(b[2]+(a[2]-b[2])*(1-c))+(f?","+(b[3]+(a[3]-b[3])*(1-c)):"")+")");return a},initDataClasses:function(a){var b=this,c=this.chart,f,e=0,l=this.options,g=a.dataClasses.length;this.dataClasses=f=[];this.legendItems=[];h(a.dataClasses,function(a,d){var h,a=j(a);f.push(a);if(!a.color)l.dataClassColor==="category"?
11
- (h=c.options.colors,a.color=h[e++],e===h.length&&(e=0)):a.color=b.tweenColors(i(l.minColor),i(l.maxColor),g<2?0.5:d/(g-1))})},initStops:function(a){this.stops=a.stops||[[0,this.options.minColor],[1,this.options.maxColor]];h(this.stops,function(a){a.color=i(a[1])})},setOptions:function(a){m.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker;this.coll="colorAxis"},setAxisSize:function(){var a=this.legendSymbol,b=this.chart,c,f,e;if(a)this.left=c=a.attr("x"),this.top=f=a.attr("y"),
12
- this.width=e=a.attr("width"),this.height=a=a.attr("height"),this.right=b.chartWidth-c-e,this.bottom=b.chartHeight-f-a,this.len=this.horiz?e:a,this.pos=this.horiz?c:f},toColor:function(a,b){var c,f=this.stops,e,l=this.dataClasses,g,d;if(l)for(d=l.length;d--;){if(g=l[d],e=g.from,f=g.to,(e===void 0||a>=e)&&(f===void 0||a<=f)){c=g.color;if(b)b.dataClass=d;break}}else{this.isLog&&(a=this.val2lin(a));c=1-(this.max-a)/(this.max-this.min||1);for(d=f.length;d--;)if(c>f[d][0])break;e=f[d]||f[d+1];f=f[d+1]||
13
- e;c=1-(f[0]-c)/(f[0]-e[0]||1);c=this.tweenColors(e.color,f.color,c)}return c},getOffset:function(){var a=this.legendGroup,b=this.chart.axisOffset[this.side];if(a){this.axisParent=a;m.prototype.getOffset.call(this);if(!this.added)this.added=!0,this.labelLeft=0,this.labelRight=this.width;this.chart.axisOffset[this.side]=b}},setLegendColor:function(){var a,b=this.options,c=this.reversed;a=c?1:0;c=c?0:1;a=this.horiz?[a,0,c,0]:[0,c,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],y2:a[3]},
14
- stops:b.stops||[[0,b.minColor],[1,b.maxColor]]}},drawLegendSymbol:function(a,b){var c=a.padding,f=a.options,e=this.horiz,d=k(f.symbolWidth,e?200:12),g=k(f.symbolHeight,e?12:200),h=k(f.labelPadding,e?16:30),f=k(f.itemDistance,10);this.setLegendColor();b.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,d,g).attr({zIndex:1}).add(b.legendGroup);this.legendItemWidth=d+c+(e?f:h);this.legendItemHeight=g+c+(e?h:0)},setState:n,visible:!0,setVisible:n,getSeriesExtremes:function(){var a;if(this.series.length)a=
15
- this.series[0],this.dataMin=a.valueMin,this.dataMax=a.valueMax},drawCrosshair:function(a,b){var c=b&&b.plotX,f=b&&b.plotY,e,d=this.pos,g=this.len;if(b)e=this.toPixels(b[b.series.colorKey]),e<d?e=d-2:e>d+g&&(e=d+g+2),b.plotX=e,b.plotY=this.len-e,m.prototype.drawCrosshair.call(this,a,b),b.plotX=c,b.plotY=f,this.cross&&this.cross.attr({fill:this.crosshair.color}).add(this.legendGroup)},getPlotLinePath:function(a,b,c,f,e){return typeof e==="number"?this.horiz?["M",e-4,this.top-6,"L",e+4,this.top-6,e,
16
- this.top,"Z"]:["M",this.left,e,"L",this.left-6,e+6,this.left-6,e-6,"Z"]:m.prototype.getPlotLinePath.call(this,a,b,c,f)},update:function(a,b){var c=this.chart,f=c.legend;h(this.series,function(a){a.isDirtyData=!0});if(a.dataClasses&&f.allItems)h(f.allItems,function(a){a.isDataClass&&a.legendGroup.destroy()}),c.isDirtyLegend=!0;c.options[this.coll]=j(this.userOptions,a);m.prototype.update.call(this,a,b);this.legendItem&&(this.setLegendColor(),f.colorizeItem(this,!0))},getDataClassLegendSymbols:function(){var a=
17
- this,b=this.chart,c=this.legendItems,f=b.options.legend,e=f.valueDecimals,l=f.valueSuffix||"",g;c.length||h(this.dataClasses,function(f,m){var i=!0,j=f.from,k=f.to;g="";j===void 0?g="< ":k===void 0&&(g="> ");j!==void 0&&(g+=d.numberFormat(j,e)+l);j!==void 0&&k!==void 0&&(g+=" - ");k!==void 0&&(g+=d.numberFormat(k,e)+l);c.push(r({chart:b,name:g,options:{},drawLegendSymbol:s.drawRectangle,visible:!0,setState:n,isDataClass:!0,setVisible:function(){i=this.visible=!i;h(a.series,function(a){h(a.points,
18
- function(a){a.dataClass===m&&a.setVisible(i)})});b.legend.colorizeItem(this,i)}},f))});return c},name:""});h(["fill","stroke"],function(a){d.addAnimSetter(a,function(b){b.elem.attr(a,p.prototype.tweenColors(i(b.start),i(b.end),b.pos))})});w(q.prototype,"getAxes",function(a){var b=this.options.colorAxis;a.call(this);this.colorAxis=[];b&&new p(this,b)});w(x.prototype,"getAllItems",function(a){var b=[],c=this.chart.colorAxis[0];c&&(c.options.dataClasses?b=b.concat(c.getDataClassLegendSymbols()):b.push(c),
19
- h(c.series,function(a){a.options.showInLegend=!1}));return b.concat(a.call(this))});q={pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color",dashstyle:"dashStyle"},pointArrayMap:["value"],axisTypes:["xAxis","yAxis","colorAxis"],optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:n,parallelArrays:["x","y","value"],colorKey:"value",translateColors:function(){var a=this,b=this.options.nullColor,c=this.colorAxis,f=this.colorKey;h(this.data,
20
- function(e){var d=e[f];if(d=e.options.color||(d===null?b:c&&d!==void 0?c.toColor(d,e):e.color||a.color))e.color=d})}};u.plotOptions.heatmap=j(u.plotOptions.scatter,{animation:!1,borderWidth:0,nullColor:"#F8F8F8",dataLabels:{formatter:function(){return this.point.value},inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},marker:null,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}<br/>"},states:{normal:{animation:!0},hover:{halo:!1,brightness:0.2}}});o.heatmap=
21
- v(o.scatter,j(q,{type:"heatmap",pointArrayMap:["y","value"],hasPointSpecificOptions:!0,pointClass:v(y,{setVisible:function(a){var b=this,c=a?"show":"hide";h(["graphic","dataLabel"],function(a){if(b[a])b[a][c]()})}}),supportsDrilldown:!0,getExtremesFromAll:!0,directTouch:!0,init:function(){var a;o.scatter.prototype.init.apply(this,arguments);a=this.options;a.pointRange=k(a.pointRange,a.colsize||1);this.yAxis.axisPointRange=a.rowsize||1},translate:function(){var a=this.options,b=this.xAxis,c=this.yAxis,
22
- f=function(a,b,c){return Math.min(Math.max(b,a),c)};this.generatePoints();h(this.points,function(e){var d=(a.colsize||1)/2,g=(a.rowsize||1)/2,h=f(Math.round(b.len-b.translate(e.x-d,0,1,0,1)),0,b.len),d=f(Math.round(b.len-b.translate(e.x+d,0,1,0,1)),0,b.len),i=f(Math.round(c.translate(e.y-g,0,1,0,1)),0,c.len),g=f(Math.round(c.translate(e.y+g,0,1,0,1)),0,c.len);e.plotX=e.clientX=(h+d)/2;e.plotY=(i+g)/2;e.shapeType="rect";e.shapeArgs={x:Math.min(h,d),y:Math.min(i,g),width:Math.abs(d-h),height:Math.abs(g-
23
- i)}});this.translateColors();this.chart.hasRendered&&h(this.points,function(a){a.shapeArgs.fill=a.options.color||a.color})},drawPoints:o.column.prototype.drawPoints,animate:n,getBox:n,drawLegendSymbol:s.drawRectangle,getExtremes:function(){t.prototype.getExtremes.call(this,this.valueData);this.valueMin=this.dataMin;this.valueMax=this.dataMax;t.prototype.getExtremes.call(this)}}))});
8
+ (function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(c){var k=c.Axis,r=c.Chart,h=c.color,g,e=c.each,w=c.extend,x=c.isNumber,m=c.Legend,t=c.LegendSymbolMixin,y=c.noop,q=c.merge,v=c.pick,u=c.wrap;g=c.ColorAxis=function(){this.init.apply(this,arguments)};w(g.prototype,k.prototype);w(g.prototype,{defaultColorAxisOptions:{lineWidth:0,minPadding:0,maxPadding:0,gridLineWidth:1,tickPixelInterval:72,startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},
9
+ width:.01},labels:{overflow:"justify",rotation:0},minColor:"#e6ebf5",maxColor:"#003399",tickLength:5,showInLegend:!0},keepProps:["legendGroup","legendItemHeight","legendItemWidth","legendItem","legendSymbol"].concat(k.prototype.keepProps),init:function(a,b){var d="vertical"!==a.options.legend.layout,f;this.coll="colorAxis";f=q(this.defaultColorAxisOptions,{side:d?2:1,reversed:!d},b,{opposite:!d,showEmpty:!1,title:null});k.prototype.init.call(this,a,f);b.dataClasses&&this.initDataClasses(b);this.initStops(b);
10
+ this.horiz=d;this.zoomEnabled=!1;this.defaultLegendLength=200},tweenColors:function(a,b,d){var f;b.rgba.length&&a.rgba.length?(a=a.rgba,b=b.rgba,f=1!==b[3]||1!==a[3],a=(f?"rgba(":"rgb(")+Math.round(b[0]+(a[0]-b[0])*(1-d))+","+Math.round(b[1]+(a[1]-b[1])*(1-d))+","+Math.round(b[2]+(a[2]-b[2])*(1-d))+(f?","+(b[3]+(a[3]-b[3])*(1-d)):"")+")"):a=b.input||"none";return a},initDataClasses:function(a){var b=this,d,f=0,p=this.chart.options.chart.colorCount,c=this.options,l=a.dataClasses.length;this.dataClasses=
11
+ d=[];this.legendItems=[];e(a.dataClasses,function(a,e){a=q(a);d.push(a);a.color||("category"===c.dataClassColor?(a.colorIndex=f,f++,f===p&&(f=0)):a.color=b.tweenColors(h(c.minColor),h(c.maxColor),2>l?.5:e/(l-1)))})},initStops:function(a){this.stops=a.stops||[[0,this.options.minColor],[1,this.options.maxColor]];e(this.stops,function(a){a.color=h(a[1])})},setOptions:function(a){k.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker},setAxisSize:function(){var a=this.legendSymbol,
12
+ b=this.chart,d=b.options.legend||{},f,p;a?(this.left=d=a.attr("x"),this.top=f=a.attr("y"),this.width=p=a.attr("width"),this.height=a=a.attr("height"),this.right=b.chartWidth-d-p,this.bottom=b.chartHeight-f-a,this.len=this.horiz?p:a,this.pos=this.horiz?d:f):this.len=(this.horiz?d.symbolWidth:d.symbolHeight)||this.defaultLegendLength},toColor:function(a,b){var d=this.stops,f,p,c=this.dataClasses,l,e;if(c)for(e=c.length;e--;){if(l=c[e],f=l.from,d=l.to,(void 0===f||a>=f)&&(void 0===d||a<=d)){p=l.color;
13
+ b&&(b.dataClass=e,b.colorIndex=l.colorIndex);break}}else{this.isLog&&(a=this.val2lin(a));a=1-(this.max-a)/(this.max-this.min||1);for(e=d.length;e--&&!(a>d[e][0]););f=d[e]||d[e+1];d=d[e+1]||f;a=1-(d[0]-a)/(d[0]-f[0]||1);p=this.tweenColors(f.color,d.color,a)}return p},getOffset:function(){var a=this.legendGroup,b=this.chart.axisOffset[this.side];a&&(this.axisParent=a,k.prototype.getOffset.call(this),this.added||(this.added=!0,this.labelLeft=0,this.labelRight=this.width),this.chart.axisOffset[this.side]=
14
+ b)},setLegendColor:function(){var a,b=this.options,d=this.reversed;a=d?1:0;d=d?0:1;a=this.horiz?[a,0,d,0]:[0,d,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],y2:a[3]},stops:b.stops||[[0,b.minColor],[1,b.maxColor]]}},drawLegendSymbol:function(a,b){var d=a.padding,f=a.options,c=this.horiz,e=v(f.symbolWidth,c?this.defaultLegendLength:12),l=v(f.symbolHeight,c?12:this.defaultLegendLength),g=v(f.labelPadding,c?16:30),f=v(f.itemDistance,10);this.setLegendColor();b.legendSymbol=this.chart.renderer.rect(0,
15
+ a.baseline-11,e,l).attr({zIndex:1}).add(b.legendGroup);this.legendItemWidth=e+d+(c?f:g);this.legendItemHeight=l+d+(c?g:0)},setState:y,visible:!0,setVisible:y,getSeriesExtremes:function(){var a=this.series,b=a.length;this.dataMin=Infinity;for(this.dataMax=-Infinity;b--;)void 0!==a[b].valueMin&&(this.dataMin=Math.min(this.dataMin,a[b].valueMin),this.dataMax=Math.max(this.dataMax,a[b].valueMax))},drawCrosshair:function(a,b){var d=b&&b.plotX,c=b&&b.plotY,e,g=this.pos,l=this.len;b&&(e=this.toPixels(b[b.series.colorKey]),
16
+ e<g?e=g-2:e>g+l&&(e=g+l+2),b.plotX=e,b.plotY=this.len-e,k.prototype.drawCrosshair.call(this,a,b),b.plotX=d,b.plotY=c,this.cross&&this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup))},getPlotLinePath:function(a,b,d,c,e){return x(e)?this.horiz?["M",e-4,this.top-6,"L",e+4,this.top-6,e,this.top,"Z"]:["M",this.left,e,"L",this.left-6,e+6,this.left-6,e-6,"Z"]:k.prototype.getPlotLinePath.call(this,a,b,d,c)},update:function(a,b){var d=this.chart,c=d.legend;e(this.series,function(a){a.isDirtyData=
17
+ !0});a.dataClasses&&c.allItems&&(e(c.allItems,function(a){a.isDataClass&&a.legendGroup&&a.legendGroup.destroy()}),d.isDirtyLegend=!0);d.options[this.coll]=q(this.userOptions,a);k.prototype.update.call(this,a,b);this.legendItem&&(this.setLegendColor(),c.colorizeItem(this,!0))},remove:function(){this.legendItem&&this.chart.legend.destroyItem(this);k.prototype.remove.call(this)},getDataClassLegendSymbols:function(){var a=this,b=this.chart,d=this.legendItems,f=b.options.legend,g=f.valueDecimals,u=f.valueSuffix||
18
+ "",l;d.length||e(this.dataClasses,function(f,k){var m=!0,q=f.from,h=f.to;l="";void 0===q?l="\x3c ":void 0===h&&(l="\x3e ");void 0!==q&&(l+=c.numberFormat(q,g)+u);void 0!==q&&void 0!==h&&(l+=" - ");void 0!==h&&(l+=c.numberFormat(h,g)+u);d.push(w({chart:b,name:l,options:{},drawLegendSymbol:t.drawRectangle,visible:!0,setState:y,isDataClass:!0,setVisible:function(){m=this.visible=!m;e(a.series,function(a){e(a.points,function(a){a.dataClass===k&&a.setVisible(m)})});b.legend.colorizeItem(this,m)}},f))});
19
+ return d},name:""});e(["fill","stroke"],function(a){c.Fx.prototype[a+"Setter"]=function(){this.elem.attr(a,g.prototype.tweenColors(h(this.start),h(this.end),this.pos),null,!0)}});u(r.prototype,"getAxes",function(a){var b=this.options.colorAxis;a.call(this);this.colorAxis=[];b&&new g(this,b)});u(m.prototype,"getAllItems",function(a){var b=[],d=this.chart.colorAxis[0];d&&d.options&&(d.options.showInLegend&&(d.options.dataClasses?b=b.concat(d.getDataClassLegendSymbols()):b.push(d)),e(d.series,function(a){a.options.showInLegend=
20
+ !1}));return b.concat(a.call(this))});u(m.prototype,"colorizeItem",function(a,b,d){a.call(this,b,d);d&&b.legendColor&&b.legendSymbol.attr({fill:b.legendColor})})})(n);(function(c){var k=c.defined,r=c.each,h=c.noop;c.colorPointMixin={isValid:function(){return null!==this.value},setVisible:function(c){var e=this,g=c?"show":"hide";r(["graphic","dataLabel"],function(c){if(e[c])e[c][g]()})},setState:function(g){c.Point.prototype.setState.call(this,g);this.graphic&&this.graphic.attr({zIndex:"hover"===g?
21
+ 1:0})}};c.colorSeriesMixin={pointArrayMap:["value"],axisTypes:["xAxis","yAxis","colorAxis"],optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:h,parallelArrays:["x","y","value"],colorKey:"value",translateColors:function(){var c=this,e=this.options.nullColor,k=this.colorAxis,h=this.colorKey;r(this.data,function(g){var t=g[h];if(t=g.options.color||(g.isNull?e:k&&void 0!==t?k.toColor(t,g):g.color||c.color))g.color=t})},colorAttribs:function(c){var e={};k(c.color)&&
22
+ (e[this.colorProp||"fill"]=c.color);return e}}})(n);(function(c){var k=c.colorPointMixin,r=c.each,h=c.merge,g=c.noop,e=c.pick,n=c.Series,x=c.seriesType,m=c.seriesTypes;x("heatmap","scatter",{animation:!1,borderWidth:0,dataLabels:{formatter:function(){return this.point.value},inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},marker:null,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{halo:!1,brightness:.2}}},
23
+ h(c.colorSeriesMixin,{pointArrayMap:["y","value"],hasPointSpecificOptions:!0,supportsDrilldown:!0,getExtremesFromAll:!0,directTouch:!0,init:function(){var c;m.scatter.prototype.init.apply(this,arguments);c=this.options;c.pointRange=e(c.pointRange,c.colsize||1);this.yAxis.axisPointRange=c.rowsize||1},translate:function(){var c=this.options,e=this.xAxis,g=this.yAxis,k=function(c,a,b){return Math.min(Math.max(a,c),b)};this.generatePoints();r(this.points,function(h){var a=(c.colsize||1)/2,b=(c.rowsize||
24
+ 1)/2,d=k(Math.round(e.len-e.translate(h.x-a,0,1,0,1)),-e.len,2*e.len),a=k(Math.round(e.len-e.translate(h.x+a,0,1,0,1)),-e.len,2*e.len),f=k(Math.round(g.translate(h.y-b,0,1,0,1)),-g.len,2*g.len),b=k(Math.round(g.translate(h.y+b,0,1,0,1)),-g.len,2*g.len);h.plotX=h.clientX=(d+a)/2;h.plotY=(f+b)/2;h.shapeType="rect";h.shapeArgs={x:Math.min(d,a),y:Math.min(f,b),width:Math.abs(a-d),height:Math.abs(b-f)}});this.translateColors()},drawPoints:function(){m.column.prototype.drawPoints.call(this);r(this.points,
25
+ function(c){c.graphic.css(this.colorAttribs(c))},this)},animate:g,getBox:g,drawLegendSymbol:c.LegendSymbolMixin.drawRectangle,alignDataLabel:m.column.prototype.alignDataLabel,getExtremes:function(){n.prototype.getExtremes.call(this,this.valueData);this.valueMin=this.dataMin;this.valueMax=this.dataMax;n.prototype.getExtremes.call(this)}}),k)})(n)});
@@ -0,0 +1,8 @@
1
+ {
2
+ "version":3,
3
+ "file":"",
4
+ "lineCount":25,
5
+ "mappings":"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",
6
+ "sources":["Input_0"],
7
+ "names":["factory","module","exports","Highcharts","H","Axis","Chart","color","ColorAxis","each","extend","isNumber","Legend","LegendSymbolMixin","noop","merge","pick","wrap","H.ColorAxis","init","apply","arguments","prototype","defaultColorAxisOptions","lineWidth","minPadding","maxPadding","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","offset","marker","animation","duration","width","labels","overflow","rotation","minColor","maxColor","tickLength","showInLegend","keepProps","concat","chart","userOptions","horiz","options","legend","layout","coll","side","reversed","opposite","showEmpty","title","call","dataClasses","initDataClasses","initStops","zoomEnabled","defaultLegendLength","tweenColors","from","to","pos","hasAlpha","rgba","length","ret","Math","round","input","axis","colorCounter","colorCount","len","legendItems","dataClass","i","push","dataClassColor","colorIndex","stops","stop","setOptions","crosshair","setAxisSize","symbol","legendSymbol","legendOptions","y","left","x","attr","top","height","right","chartWidth","bottom","chartHeight","symbolWidth","symbolHeight","toColor","value","point","undefined","isLog","val2lin","max","min","getOffset","group","legendGroup","sideOffset","axisOffset","axisParent","added","labelLeft","labelRight","setLegendColor","grad","one","zero","legendColor","linearGradient","x1","y1","x2","y2","drawLegendSymbol","item","padding","labelPadding","itemDistance","renderer","rect","baseline","zIndex","add","legendItemWidth","legendItemHeight","setState","visible","setVisible","getSeriesExtremes","series","dataMin","Infinity","dataMax","valueMin","valueMax","drawCrosshair","e","plotX","plotY","crossPos","axisPos","axisLen","toPixels","colorKey","cross","addClass","getPlotLinePath","a","b","c","d","update","newOptions","redraw","isDirtyData","allItems","isDataClass","destroy","isDirtyLegend","legendItem","colorizeItem","remove","destroyItem","getDataClassLegendSymbols","valueDecimals","valueSuffix","name","vis","numberFormat","drawRectangle","points","prop","Fx","elem","start","end","proceed","colorAxisOptions","colorAxis","fill","defined","colorPointMixin","isValid","method","key","state","Point","graphic","colorSeriesMixin","pointArrayMap","axisTypes","optionalAxis","trackerGroups","getSymbol","parallelArrays","translateColors","nullColor","data","isNull","colorAttribs","colorProp","Series","seriesType","seriesTypes","borderWidth","dataLabels","formatter","inside","verticalAlign","crop","pointRange","tooltip","pointFormat","states","normal","hover","halo","brightness","hasPointSpecificOptions","supportsDrilldown","getExtremesFromAll","directTouch","scatter","colsize","yAxis","axisPointRange","rowsize","translate","xAxis","between","generatePoints","xPad","yPad","clientX","shapeType","shapeArgs","abs","drawPoints","column","css","animate","getBox","alignDataLabel","getExtremes","valueData"]
8
+ }
@@ -1,711 +1,816 @@
1
1
  /**
2
- * @license Highcharts JS v4.1.10 (2015-12-07)
2
+ * @license Highcharts JS v5.0.11 (2017-05-04)
3
3
  *
4
- * (c) 2011-2014 Torstein Honsi
4
+ * (c) 2009-2017 Torstein Honsi
5
5
  *
6
6
  * License: www.highcharts.com/license
7
7
  */
8
- /* eslint indent: [2, 4] */
9
- (function (factory) {
8
+ 'use strict';
9
+ (function(factory) {
10
10
  if (typeof module === 'object' && module.exports) {
11
11
  module.exports = factory;
12
12
  } else {
13
13
  factory(Highcharts);
14
14
  }
15
- }(function (Highcharts) {
16
-
17
-
18
- var UNDEFINED,
19
- Axis = Highcharts.Axis,
20
- Chart = Highcharts.Chart,
21
- Color = Highcharts.Color,
22
- Legend = Highcharts.Legend,
23
- LegendSymbolMixin = Highcharts.LegendSymbolMixin,
24
- Series = Highcharts.Series,
25
- Point = Highcharts.Point,
26
-
27
- defaultOptions = Highcharts.getOptions(),
28
- each = Highcharts.each,
29
- extend = Highcharts.extend,
30
- extendClass = Highcharts.extendClass,
31
- merge = Highcharts.merge,
32
- pick = Highcharts.pick,
33
- seriesTypes = Highcharts.seriesTypes,
34
- wrap = Highcharts.wrap,
35
- noop = function () {};
36
-
37
-
38
-
39
-
40
- /**
41
- * The ColorAxis object for inclusion in gradient legends
42
- */
43
- var ColorAxis = Highcharts.ColorAxis = function () {
44
- this.isColorAxis = true;
45
- this.init.apply(this, arguments);
46
- };
47
- extend(ColorAxis.prototype, Axis.prototype);
48
- extend(ColorAxis.prototype, {
49
- defaultColorAxisOptions: {
50
- lineWidth: 0,
51
- minPadding: 0,
52
- maxPadding: 0,
53
- gridLineWidth: 1,
54
- tickPixelInterval: 72,
55
- startOnTick: true,
56
- endOnTick: true,
57
- offset: 0,
58
- marker: {
59
- animation: {
60
- duration: 50
15
+ }(function(Highcharts) {
16
+ (function(H) {
17
+ /**
18
+ * (c) 2010-2017 Torstein Honsi
19
+ *
20
+ * License: www.highcharts.com/license
21
+ */
22
+ var Axis = H.Axis,
23
+ Chart = H.Chart,
24
+ color = H.color,
25
+ ColorAxis,
26
+ each = H.each,
27
+ extend = H.extend,
28
+ isNumber = H.isNumber,
29
+ Legend = H.Legend,
30
+ LegendSymbolMixin = H.LegendSymbolMixin,
31
+ noop = H.noop,
32
+ merge = H.merge,
33
+ pick = H.pick,
34
+ wrap = H.wrap;
35
+
36
+ /**
37
+ * The ColorAxis object for inclusion in gradient legends
38
+ */
39
+ ColorAxis = H.ColorAxis = function() {
40
+ this.init.apply(this, arguments);
41
+ };
42
+ extend(ColorAxis.prototype, Axis.prototype);
43
+ extend(ColorAxis.prototype, {
44
+ defaultColorAxisOptions: {
45
+ lineWidth: 0,
46
+ minPadding: 0,
47
+ maxPadding: 0,
48
+ gridLineWidth: 1,
49
+ tickPixelInterval: 72,
50
+ startOnTick: true,
51
+ endOnTick: true,
52
+ offset: 0,
53
+ marker: {
54
+ animation: {
55
+ duration: 50
56
+ },
57
+ width: 0.01
58
+
59
+ },
60
+ labels: {
61
+ overflow: 'justify',
62
+ rotation: 0
61
63
  },
62
- color: 'gray',
63
- width: 0.01
64
+ minColor: '#e6ebf5',
65
+ maxColor: '#003399',
66
+ tickLength: 5,
67
+ showInLegend: true
64
68
  },
65
- labels: {
66
- overflow: 'justify'
69
+
70
+ // Properties to preserve after destroy, for Axis.update (#5881, #6025)
71
+ keepProps: [
72
+ 'legendGroup',
73
+ 'legendItemHeight',
74
+ 'legendItemWidth',
75
+ 'legendItem',
76
+ 'legendSymbol'
77
+ ].concat(Axis.prototype.keepProps),
78
+
79
+ /**
80
+ * Initialize the color axis
81
+ */
82
+ init: function(chart, userOptions) {
83
+ var horiz = chart.options.legend.layout !== 'vertical',
84
+ options;
85
+
86
+ this.coll = 'colorAxis';
87
+
88
+ // Build the options
89
+ options = merge(this.defaultColorAxisOptions, {
90
+ side: horiz ? 2 : 1,
91
+ reversed: !horiz
92
+ }, userOptions, {
93
+ opposite: !horiz,
94
+ showEmpty: false,
95
+ title: null
96
+ });
97
+
98
+ Axis.prototype.init.call(this, chart, options);
99
+
100
+ // Base init() pushes it to the xAxis array, now pop it again
101
+ //chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
102
+
103
+ // Prepare data classes
104
+ if (userOptions.dataClasses) {
105
+ this.initDataClasses(userOptions);
106
+ }
107
+ this.initStops(userOptions);
108
+
109
+ // Override original axis properties
110
+ this.horiz = horiz;
111
+ this.zoomEnabled = false;
112
+
113
+ // Add default values
114
+ this.defaultLegendLength = 200;
67
115
  },
68
- minColor: '#EFEFFF',
69
- maxColor: '#003875',
70
- tickLength: 5
71
- },
72
- init: function (chart, userOptions) {
73
- var horiz = chart.options.legend.layout !== 'vertical',
74
- options;
75
-
76
- // Build the options
77
- options = merge(this.defaultColorAxisOptions, {
78
- side: horiz ? 2 : 1,
79
- reversed: !horiz
80
- }, userOptions, {
81
- opposite: !horiz,
82
- showEmpty: false,
83
- title: null,
84
- isColor: true
85
- });
86
-
87
- Axis.prototype.init.call(this, chart, options);
88
-
89
- // Base init() pushes it to the xAxis array, now pop it again
90
- //chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
91
-
92
- // Prepare data classes
93
- if (userOptions.dataClasses) {
94
- this.initDataClasses(userOptions);
95
- }
96
- this.initStops(userOptions);
97
-
98
- // Override original axis properties
99
- this.horiz = horiz;
100
- this.zoomEnabled = false;
101
- },
102
-
103
- /*
104
- * Return an intermediate color between two colors, according to pos where 0
105
- * is the from color and 1 is the to color.
106
- * NOTE: Changes here should be copied
107
- * to the same function in drilldown.src.js and solid-gauge-src.js.
108
- */
109
- tweenColors: function (from, to, pos) {
110
- // Check for has alpha, because rgba colors perform worse due to lack of
111
- // support in WebKit.
112
- var hasAlpha,
113
- ret;
114
-
115
- // Unsupported color, return to-color (#3920)
116
- if (!to.rgba.length || !from.rgba.length) {
117
- ret = to.input || 'none';
118
-
119
- // Interpolate
120
- } else {
121
- from = from.rgba;
122
- to = to.rgba;
123
- hasAlpha = (to[3] !== 1 || from[3] !== 1);
124
- ret = (hasAlpha ? 'rgba(' : 'rgb(') +
125
- Math.round(to[0] + (from[0] - to[0]) * (1 - pos)) + ',' +
126
- Math.round(to[1] + (from[1] - to[1]) * (1 - pos)) + ',' +
127
- Math.round(to[2] + (from[2] - to[2]) * (1 - pos)) +
128
- (hasAlpha ? (',' + (to[3] + (from[3] - to[3]) * (1 - pos))) : '') + ')';
129
- }
130
- return ret;
131
- },
132
-
133
- initDataClasses: function (userOptions) {
134
- var axis = this,
135
- chart = this.chart,
136
- dataClasses,
137
- colorCounter = 0,
138
- options = this.options,
139
- len = userOptions.dataClasses.length;
140
- this.dataClasses = dataClasses = [];
141
- this.legendItems = [];
142
-
143
- each(userOptions.dataClasses, function (dataClass, i) {
144
- var colors;
145
-
146
- dataClass = merge(dataClass);
147
- dataClasses.push(dataClass);
148
- if (!dataClass.color) {
149
- if (options.dataClassColor === 'category') {
150
- colors = chart.options.colors;
151
- dataClass.color = colors[colorCounter++];
152
- // loop back to zero
153
- if (colorCounter === colors.length) {
154
- colorCounter = 0;
116
+
117
+ /*
118
+ * Return an intermediate color between two colors, according to pos where 0
119
+ * is the from color and 1 is the to color.
120
+ * NOTE: Changes here should be copied
121
+ * to the same function in drilldown.src.js and solid-gauge-src.js.
122
+ */
123
+ tweenColors: function(from, to, pos) {
124
+ // Check for has alpha, because rgba colors perform worse due to lack of
125
+ // support in WebKit.
126
+ var hasAlpha,
127
+ ret;
128
+
129
+ // Unsupported color, return to-color (#3920)
130
+ if (!to.rgba.length || !from.rgba.length) {
131
+ ret = to.input || 'none';
132
+
133
+ // Interpolate
134
+ } else {
135
+ from = from.rgba;
136
+ to = to.rgba;
137
+ hasAlpha = (to[3] !== 1 || from[3] !== 1);
138
+ ret = (hasAlpha ? 'rgba(' : 'rgb(') +
139
+ Math.round(to[0] + (from[0] - to[0]) * (1 - pos)) + ',' +
140
+ Math.round(to[1] + (from[1] - to[1]) * (1 - pos)) + ',' +
141
+ Math.round(to[2] + (from[2] - to[2]) * (1 - pos)) +
142
+ (hasAlpha ? (',' + (to[3] + (from[3] - to[3]) * (1 - pos))) : '') + ')';
143
+ }
144
+ return ret;
145
+ },
146
+
147
+ initDataClasses: function(userOptions) {
148
+ var axis = this,
149
+ chart = this.chart,
150
+ dataClasses,
151
+ colorCounter = 0,
152
+ colorCount = chart.options.chart.colorCount,
153
+ options = this.options,
154
+ len = userOptions.dataClasses.length;
155
+ this.dataClasses = dataClasses = [];
156
+ this.legendItems = [];
157
+
158
+ each(userOptions.dataClasses, function(dataClass, i) {
159
+ var colors;
160
+
161
+ dataClass = merge(dataClass);
162
+ dataClasses.push(dataClass);
163
+ if (!dataClass.color) {
164
+ if (options.dataClassColor === 'category') {
165
+
166
+ dataClass.colorIndex = colorCounter;
167
+
168
+ // increase and loop back to zero
169
+ colorCounter++;
170
+ if (colorCounter === colorCount) {
171
+ colorCounter = 0;
172
+ }
173
+ } else {
174
+ dataClass.color = axis.tweenColors(
175
+ color(options.minColor),
176
+ color(options.maxColor),
177
+ len < 2 ? 0.5 : i / (len - 1) // #3219
178
+ );
155
179
  }
156
- } else {
157
- dataClass.color = axis.tweenColors(
158
- Color(options.minColor),
159
- Color(options.maxColor),
160
- len < 2 ? 0.5 : i / (len - 1) // #3219
161
- );
162
180
  }
181
+ });
182
+ },
183
+
184
+ initStops: function(userOptions) {
185
+ this.stops = userOptions.stops || [
186
+ [0, this.options.minColor],
187
+ [1, this.options.maxColor]
188
+ ];
189
+ each(this.stops, function(stop) {
190
+ stop.color = color(stop[1]);
191
+ });
192
+ },
193
+
194
+ /**
195
+ * Extend the setOptions method to process extreme colors and color
196
+ * stops.
197
+ */
198
+ setOptions: function(userOptions) {
199
+ Axis.prototype.setOptions.call(this, userOptions);
200
+
201
+ this.options.crosshair = this.options.marker;
202
+ },
203
+
204
+ setAxisSize: function() {
205
+ var symbol = this.legendSymbol,
206
+ chart = this.chart,
207
+ legendOptions = chart.options.legend || {},
208
+ x,
209
+ y,
210
+ width,
211
+ height;
212
+
213
+ if (symbol) {
214
+ this.left = x = symbol.attr('x');
215
+ this.top = y = symbol.attr('y');
216
+ this.width = width = symbol.attr('width');
217
+ this.height = height = symbol.attr('height');
218
+ this.right = chart.chartWidth - x - width;
219
+ this.bottom = chart.chartHeight - y - height;
220
+
221
+ this.len = this.horiz ? width : height;
222
+ this.pos = this.horiz ? x : y;
223
+ } else {
224
+ // Fake length for disabled legend to avoid tick issues and such (#5205)
225
+ this.len = (this.horiz ? legendOptions.symbolWidth : legendOptions.symbolHeight) || this.defaultLegendLength;
163
226
  }
164
- });
165
- },
166
-
167
- initStops: function (userOptions) {
168
- this.stops = userOptions.stops || [
169
- [0, this.options.minColor],
170
- [1, this.options.maxColor]
171
- ];
172
- each(this.stops, function (stop) {
173
- stop.color = Color(stop[1]);
174
- });
175
- },
227
+ },
176
228
 
177
- /**
178
- * Extend the setOptions method to process extreme colors and color
179
- * stops.
180
- */
181
- setOptions: function (userOptions) {
182
- Axis.prototype.setOptions.call(this, userOptions);
183
-
184
- this.options.crosshair = this.options.marker;
185
- this.coll = 'colorAxis';
186
- },
187
-
188
- setAxisSize: function () {
189
- var symbol = this.legendSymbol,
190
- chart = this.chart,
191
- x,
192
- y,
193
- width,
194
- height;
195
-
196
- if (symbol) {
197
- this.left = x = symbol.attr('x');
198
- this.top = y = symbol.attr('y');
199
- this.width = width = symbol.attr('width');
200
- this.height = height = symbol.attr('height');
201
- this.right = chart.chartWidth - x - width;
202
- this.bottom = chart.chartHeight - y - height;
203
-
204
- this.len = this.horiz ? width : height;
205
- this.pos = this.horiz ? x : y;
206
- }
207
- },
229
+ /**
230
+ * Translate from a value to a color
231
+ */
232
+ toColor: function(value, point) {
233
+ var pos,
234
+ stops = this.stops,
235
+ from,
236
+ to,
237
+ color,
238
+ dataClasses = this.dataClasses,
239
+ dataClass,
240
+ i;
241
+
242
+ if (dataClasses) {
243
+ i = dataClasses.length;
244
+ while (i--) {
245
+ dataClass = dataClasses[i];
246
+ from = dataClass.from;
247
+ to = dataClass.to;
248
+ if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
249
+ color = dataClass.color;
250
+ if (point) {
251
+ point.dataClass = i;
252
+ point.colorIndex = dataClass.colorIndex;
253
+ }
254
+ break;
255
+ }
256
+ }
208
257
 
209
- /**
210
- * Translate from a value to a color
211
- */
212
- toColor: function (value, point) {
213
- var pos,
214
- stops = this.stops,
215
- from,
216
- to,
217
- color,
218
- dataClasses = this.dataClasses,
219
- dataClass,
220
- i;
221
-
222
- if (dataClasses) {
223
- i = dataClasses.length;
224
- while (i--) {
225
- dataClass = dataClasses[i];
226
- from = dataClass.from;
227
- to = dataClass.to;
228
- if ((from === UNDEFINED || value >= from) && (to === UNDEFINED || value <= to)) {
229
- color = dataClass.color;
230
- if (point) {
231
- point.dataClass = i;
258
+ } else {
259
+
260
+ if (this.isLog) {
261
+ value = this.val2lin(value);
262
+ }
263
+ pos = 1 - ((this.max - value) / ((this.max - this.min) || 1));
264
+ i = stops.length;
265
+ while (i--) {
266
+ if (pos > stops[i][0]) {
267
+ break;
232
268
  }
233
- break;
234
269
  }
270
+ from = stops[i] || stops[i + 1];
271
+ to = stops[i + 1] || from;
272
+
273
+ // The position within the gradient
274
+ pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
275
+
276
+ color = this.tweenColors(
277
+ from.color,
278
+ to.color,
279
+ pos
280
+ );
235
281
  }
282
+ return color;
283
+ },
284
+
285
+ /**
286
+ * Override the getOffset method to add the whole axis groups inside the legend.
287
+ */
288
+ getOffset: function() {
289
+ var group = this.legendGroup,
290
+ sideOffset = this.chart.axisOffset[this.side];
291
+
292
+ if (group) {
236
293
 
237
- } else {
294
+ // Hook for the getOffset method to add groups to this parent group
295
+ this.axisParent = group;
238
296
 
239
- if (this.isLog) {
240
- value = this.val2lin(value);
297
+ // Call the base
298
+ Axis.prototype.getOffset.call(this);
299
+
300
+ // First time only
301
+ if (!this.added) {
302
+
303
+ this.added = true;
304
+
305
+ this.labelLeft = 0;
306
+ this.labelRight = this.width;
307
+ }
308
+ // Reset it to avoid color axis reserving space
309
+ this.chart.axisOffset[this.side] = sideOffset;
241
310
  }
242
- pos = 1 - ((this.max - value) / ((this.max - this.min) || 1));
243
- i = stops.length;
311
+ },
312
+
313
+ /**
314
+ * Create the color gradient
315
+ */
316
+ setLegendColor: function() {
317
+ var grad,
318
+ horiz = this.horiz,
319
+ options = this.options,
320
+ reversed = this.reversed,
321
+ one = reversed ? 1 : 0,
322
+ zero = reversed ? 0 : 1;
323
+
324
+ grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
325
+ this.legendColor = {
326
+ linearGradient: {
327
+ x1: grad[0],
328
+ y1: grad[1],
329
+ x2: grad[2],
330
+ y2: grad[3]
331
+ },
332
+ stops: options.stops || [
333
+ [0, options.minColor],
334
+ [1, options.maxColor]
335
+ ]
336
+ };
337
+ },
338
+
339
+ /**
340
+ * The color axis appears inside the legend and has its own legend symbol
341
+ */
342
+ drawLegendSymbol: function(legend, item) {
343
+ var padding = legend.padding,
344
+ legendOptions = legend.options,
345
+ horiz = this.horiz,
346
+ width = pick(legendOptions.symbolWidth, horiz ? this.defaultLegendLength : 12),
347
+ height = pick(legendOptions.symbolHeight, horiz ? 12 : this.defaultLegendLength),
348
+ labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
349
+ itemDistance = pick(legendOptions.itemDistance, 10);
350
+
351
+ this.setLegendColor();
352
+
353
+ // Create the gradient
354
+ item.legendSymbol = this.chart.renderer.rect(
355
+ 0,
356
+ legend.baseline - 11,
357
+ width,
358
+ height
359
+ ).attr({
360
+ zIndex: 1
361
+ }).add(item.legendGroup);
362
+
363
+ // Set how much space this legend item takes up
364
+ this.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
365
+ this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
366
+ },
367
+ /**
368
+ * Fool the legend
369
+ */
370
+ setState: noop,
371
+ visible: true,
372
+ setVisible: noop,
373
+ getSeriesExtremes: function() {
374
+ var series = this.series,
375
+ i = series.length;
376
+ this.dataMin = Infinity;
377
+ this.dataMax = -Infinity;
244
378
  while (i--) {
245
- if (pos > stops[i][0]) {
246
- break;
379
+ if (series[i].valueMin !== undefined) {
380
+ this.dataMin = Math.min(this.dataMin, series[i].valueMin);
381
+ this.dataMax = Math.max(this.dataMax, series[i].valueMax);
247
382
  }
248
383
  }
249
- from = stops[i] || stops[i + 1];
250
- to = stops[i + 1] || from;
384
+ },
385
+ drawCrosshair: function(e, point) {
386
+ var plotX = point && point.plotX,
387
+ plotY = point && point.plotY,
388
+ crossPos,
389
+ axisPos = this.pos,
390
+ axisLen = this.len;
391
+
392
+ if (point) {
393
+ crossPos = this.toPixels(point[point.series.colorKey]);
394
+ if (crossPos < axisPos) {
395
+ crossPos = axisPos - 2;
396
+ } else if (crossPos > axisPos + axisLen) {
397
+ crossPos = axisPos + axisLen + 2;
398
+ }
251
399
 
252
- // The position within the gradient
253
- pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
400
+ point.plotX = crossPos;
401
+ point.plotY = this.len - crossPos;
402
+ Axis.prototype.drawCrosshair.call(this, e, point);
403
+ point.plotX = plotX;
404
+ point.plotY = plotY;
254
405
 
255
- color = this.tweenColors(
256
- from.color,
257
- to.color,
258
- pos
259
- );
260
- }
261
- return color;
262
- },
406
+ if (this.cross) {
407
+ this.cross
408
+ .addClass('highcharts-coloraxis-marker')
409
+ .add(this.legendGroup);
263
410
 
264
- /**
265
- * Override the getOffset method to add the whole axis groups inside the legend.
266
- */
267
- getOffset: function () {
268
- var group = this.legendGroup,
269
- sideOffset = this.chart.axisOffset[this.side];
270
411
 
271
- if (group) {
272
412
 
273
- // Hook for the getOffset method to add groups to this parent group
274
- this.axisParent = group;
413
+ }
414
+ }
415
+ },
416
+ getPlotLinePath: function(a, b, c, d, pos) {
417
+ return isNumber(pos) ? // crosshairs only // #3969 pos can be 0 !!
418
+ (this.horiz ? ['M', pos - 4, this.top - 6, 'L', pos + 4, this.top - 6, pos, this.top, 'Z'] : ['M', this.left, pos, 'L', this.left - 6, pos + 6, this.left - 6, pos - 6, 'Z']) :
419
+ Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
420
+ },
275
421
 
276
- // Call the base
277
- Axis.prototype.getOffset.call(this);
422
+ update: function(newOptions, redraw) {
423
+ var chart = this.chart,
424
+ legend = chart.legend;
278
425
 
279
- // First time only
280
- if (!this.added) {
426
+ each(this.series, function(series) {
427
+ series.isDirtyData = true; // Needed for Axis.update when choropleth colors change
428
+ });
281
429
 
282
- this.added = true;
430
+ // When updating data classes, destroy old items and make sure new ones are created (#3207)
431
+ if (newOptions.dataClasses && legend.allItems) {
432
+ each(legend.allItems, function(item) {
433
+ if (item.isDataClass && item.legendGroup) {
434
+ item.legendGroup.destroy();
435
+ }
436
+ });
437
+ chart.isDirtyLegend = true;
438
+ }
283
439
 
284
- this.labelLeft = 0;
285
- this.labelRight = this.width;
440
+ // Keep the options structure updated for export. Unlike xAxis and yAxis, the colorAxis is
441
+ // not an array. (#3207)
442
+ chart.options[this.coll] = merge(this.userOptions, newOptions);
443
+
444
+ Axis.prototype.update.call(this, newOptions, redraw);
445
+ if (this.legendItem) {
446
+ this.setLegendColor();
447
+ legend.colorizeItem(this, true);
286
448
  }
287
- // Reset it to avoid color axis reserving space
288
- this.chart.axisOffset[this.side] = sideOffset;
289
- }
290
- },
449
+ },
450
+
451
+ /**
452
+ * Extend basic axis remove by also removing the legend item.
453
+ */
454
+ remove: function() {
455
+ if (this.legendItem) {
456
+ this.chart.legend.destroyItem(this);
457
+ }
458
+ Axis.prototype.remove.call(this);
459
+ },
460
+
461
+ /**
462
+ * Get the legend item symbols for data classes
463
+ */
464
+ getDataClassLegendSymbols: function() {
465
+ var axis = this,
466
+ chart = this.chart,
467
+ legendItems = this.legendItems,
468
+ legendOptions = chart.options.legend,
469
+ valueDecimals = legendOptions.valueDecimals,
470
+ valueSuffix = legendOptions.valueSuffix || '',
471
+ name;
472
+
473
+ if (!legendItems.length) {
474
+ each(this.dataClasses, function(dataClass, i) {
475
+ var vis = true,
476
+ from = dataClass.from,
477
+ to = dataClass.to;
478
+
479
+ // Assemble the default name. This can be overridden by legend.options.labelFormatter
480
+ name = '';
481
+ if (from === undefined) {
482
+ name = '< ';
483
+ } else if (to === undefined) {
484
+ name = '> ';
485
+ }
486
+ if (from !== undefined) {
487
+ name += H.numberFormat(from, valueDecimals) + valueSuffix;
488
+ }
489
+ if (from !== undefined && to !== undefined) {
490
+ name += ' - ';
491
+ }
492
+ if (to !== undefined) {
493
+ name += H.numberFormat(to, valueDecimals) + valueSuffix;
494
+ }
495
+ // Add a mock object to the legend items
496
+ legendItems.push(extend({
497
+ chart: chart,
498
+ name: name,
499
+ options: {},
500
+ drawLegendSymbol: LegendSymbolMixin.drawRectangle,
501
+ visible: true,
502
+ setState: noop,
503
+ isDataClass: true,
504
+ setVisible: function() {
505
+ vis = this.visible = !vis;
506
+ each(axis.series, function(series) {
507
+ each(series.points, function(point) {
508
+ if (point.dataClass === i) {
509
+ point.setVisible(vis);
510
+ }
511
+ });
512
+ });
513
+
514
+ chart.legend.colorizeItem(this, vis);
515
+ }
516
+ }, dataClass));
517
+ });
518
+ }
519
+ return legendItems;
520
+ },
521
+ name: '' // Prevents 'undefined' in legend in IE8
522
+ });
291
523
 
292
524
  /**
293
- * Create the color gradient
525
+ * Handle animation of the color attributes directly
294
526
  */
295
- setLegendColor: function () {
296
- var grad,
297
- horiz = this.horiz,
298
- options = this.options,
299
- reversed = this.reversed,
300
- one = reversed ? 1 : 0,
301
- zero = reversed ? 0 : 1;
302
-
303
- grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
304
- this.legendColor = {
305
- linearGradient: { x1: grad[0], y1: grad[1], x2: grad[2], y2: grad[3] },
306
- stops: options.stops || [
307
- [0, options.minColor],
308
- [1, options.maxColor]
309
- ]
527
+ each(['fill', 'stroke'], function(prop) {
528
+ H.Fx.prototype[prop + 'Setter'] = function() {
529
+ this.elem.attr(
530
+ prop,
531
+ ColorAxis.prototype.tweenColors(
532
+ color(this.start),
533
+ color(this.end),
534
+ this.pos
535
+ ),
536
+ null,
537
+ true
538
+ );
310
539
  };
311
- },
540
+ });
312
541
 
313
542
  /**
314
- * The color axis appears inside the legend and has its own legend symbol
315
- */
316
- drawLegendSymbol: function (legend, item) {
317
- var padding = legend.padding,
318
- legendOptions = legend.options,
319
- horiz = this.horiz,
320
- width = pick(legendOptions.symbolWidth, horiz ? 200 : 12),
321
- height = pick(legendOptions.symbolHeight, horiz ? 12 : 200),
322
- labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
323
- itemDistance = pick(legendOptions.itemDistance, 10);
324
-
325
- this.setLegendColor();
326
-
327
- // Create the gradient
328
- item.legendSymbol = this.chart.renderer.rect(
329
- 0,
330
- legend.baseline - 11,
331
- width,
332
- height
333
- ).attr({
334
- zIndex: 1
335
- }).add(item.legendGroup);
336
-
337
- // Set how much space this legend item takes up
338
- this.legendItemWidth = width + padding + (horiz ? itemDistance : labelPadding);
339
- this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
340
- },
341
- /**
342
- * Fool the legend
543
+ * Extend the chart getAxes method to also get the color axis
343
544
  */
344
- setState: noop,
345
- visible: true,
346
- setVisible: noop,
347
- getSeriesExtremes: function () {
348
- var series;
349
- if (this.series.length) {
350
- series = this.series[0];
351
- this.dataMin = series.valueMin;
352
- this.dataMax = series.valueMax;
353
- }
354
- },
355
- drawCrosshair: function (e, point) {
356
- var plotX = point && point.plotX,
357
- plotY = point && point.plotY,
358
- crossPos,
359
- axisPos = this.pos,
360
- axisLen = this.len;
361
-
362
- if (point) {
363
- crossPos = this.toPixels(point[point.series.colorKey]);
364
- if (crossPos < axisPos) {
365
- crossPos = axisPos - 2;
366
- } else if (crossPos > axisPos + axisLen) {
367
- crossPos = axisPos + axisLen + 2;
368
- }
545
+ wrap(Chart.prototype, 'getAxes', function(proceed) {
369
546
 
370
- point.plotX = crossPos;
371
- point.plotY = this.len - crossPos;
372
- Axis.prototype.drawCrosshair.call(this, e, point);
373
- point.plotX = plotX;
374
- point.plotY = plotY;
375
-
376
- if (this.cross) {
377
- this.cross
378
- .attr({
379
- fill: this.crosshair.color
380
- })
381
- .add(this.legendGroup);
382
- }
383
- }
384
- },
385
- getPlotLinePath: function (a, b, c, d, pos) {
386
- return typeof pos === 'number' ? // crosshairs only // #3969 pos can be 0 !!
387
- (this.horiz ?
388
- ['M', pos - 4, this.top - 6, 'L', pos + 4, this.top - 6, pos, this.top, 'Z'] :
389
- ['M', this.left, pos, 'L', this.left - 6, pos + 6, this.left - 6, pos - 6, 'Z']
390
- ) :
391
- Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
392
- },
393
-
394
- update: function (newOptions, redraw) {
395
- var chart = this.chart,
396
- legend = chart.legend;
397
-
398
- each(this.series, function (series) {
399
- series.isDirtyData = true; // Needed for Axis.update when choropleth colors change
400
- });
401
-
402
- // When updating data classes, destroy old items and make sure new ones are created (#3207)
403
- if (newOptions.dataClasses && legend.allItems) {
404
- each(legend.allItems, function (item) {
405
- if (item.isDataClass) {
406
- item.legendGroup.destroy();
407
- }
408
- });
409
- chart.isDirtyLegend = true;
410
- }
547
+ var options = this.options,
548
+ colorAxisOptions = options.colorAxis;
411
549
 
412
- // Keep the options structure updated for export. Unlike xAxis and yAxis, the colorAxis is
413
- // not an array. (#3207)
414
- chart.options[this.coll] = merge(this.userOptions, newOptions);
550
+ proceed.call(this);
415
551
 
416
- Axis.prototype.update.call(this, newOptions, redraw);
417
- if (this.legendItem) {
418
- this.setLegendColor();
419
- legend.colorizeItem(this, true);
552
+ this.colorAxis = [];
553
+ if (colorAxisOptions) {
554
+ new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
420
555
  }
421
- },
556
+ });
557
+
422
558
 
423
559
  /**
424
- * Get the legend item symbols for data classes
560
+ * Wrap the legend getAllItems method to add the color axis. This also removes the
561
+ * axis' own series to prevent them from showing up individually.
425
562
  */
426
- getDataClassLegendSymbols: function () {
427
- var axis = this,
428
- chart = this.chart,
429
- legendItems = this.legendItems,
430
- legendOptions = chart.options.legend,
431
- valueDecimals = legendOptions.valueDecimals,
432
- valueSuffix = legendOptions.valueSuffix || '',
433
- name;
434
-
435
- if (!legendItems.length) {
436
- each(this.dataClasses, function (dataClass, i) {
437
- var vis = true,
438
- from = dataClass.from,
439
- to = dataClass.to;
440
-
441
- // Assemble the default name. This can be overridden by legend.options.labelFormatter
442
- name = '';
443
- if (from === UNDEFINED) {
444
- name = '< ';
445
- } else if (to === UNDEFINED) {
446
- name = '> ';
447
- }
448
- if (from !== UNDEFINED) {
449
- name += Highcharts.numberFormat(from, valueDecimals) + valueSuffix;
450
- }
451
- if (from !== UNDEFINED && to !== UNDEFINED) {
452
- name += ' - ';
453
- }
454
- if (to !== UNDEFINED) {
455
- name += Highcharts.numberFormat(to, valueDecimals) + valueSuffix;
563
+ wrap(Legend.prototype, 'getAllItems', function(proceed) {
564
+ var allItems = [],
565
+ colorAxis = this.chart.colorAxis[0];
566
+
567
+ if (colorAxis && colorAxis.options) {
568
+ if (colorAxis.options.showInLegend) {
569
+ // Data classes
570
+ if (colorAxis.options.dataClasses) {
571
+ allItems = allItems.concat(colorAxis.getDataClassLegendSymbols());
572
+ // Gradient legend
573
+ } else {
574
+ // Add this axis on top
575
+ allItems.push(colorAxis);
456
576
  }
577
+ }
457
578
 
458
- // Add a mock object to the legend items
459
- legendItems.push(extend({
460
- chart: chart,
461
- name: name,
462
- options: {},
463
- drawLegendSymbol: LegendSymbolMixin.drawRectangle,
464
- visible: true,
465
- setState: noop,
466
- isDataClass: true,
467
- setVisible: function () {
468
- vis = this.visible = !vis;
469
- each(axis.series, function (series) {
470
- each(series.points, function (point) {
471
- if (point.dataClass === i) {
472
- point.setVisible(vis);
473
- }
474
- });
475
- });
476
-
477
- chart.legend.colorizeItem(this, vis);
478
- }
479
- }, dataClass));
579
+ // Don't add the color axis' series
580
+ each(colorAxis.series, function(series) {
581
+ series.options.showInLegend = false;
480
582
  });
481
583
  }
482
- return legendItems;
483
- },
484
- name: '' // Prevents 'undefined' in legend in IE8
485
- });
486
-
487
- /**
488
- * Handle animation of the color attributes directly
489
- */
490
- each(['fill', 'stroke'], function (prop) {
491
- Highcharts.addAnimSetter(prop, function (fx) {
492
- fx.elem.attr(prop, ColorAxis.prototype.tweenColors(Color(fx.start), Color(fx.end), fx.pos));
584
+
585
+ return allItems.concat(proceed.call(this));
493
586
  });
494
- });
495
-
496
- /**
497
- * Extend the chart getAxes method to also get the color axis
498
- */
499
- wrap(Chart.prototype, 'getAxes', function (proceed) {
500
-
501
- var options = this.options,
502
- colorAxisOptions = options.colorAxis;
503
-
504
- proceed.call(this);
505
-
506
- this.colorAxis = [];
507
- if (colorAxisOptions) {
508
- new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
509
- }
510
- });
511
-
512
-
513
- /**
514
- * Wrap the legend getAllItems method to add the color axis. This also removes the
515
- * axis' own series to prevent them from showing up individually.
516
- */
517
- wrap(Legend.prototype, 'getAllItems', function (proceed) {
518
- var allItems = [],
519
- colorAxis = this.chart.colorAxis[0];
520
-
521
- if (colorAxis) {
522
-
523
- // Data classes
524
- if (colorAxis.options.dataClasses) {
525
- allItems = allItems.concat(colorAxis.getDataClassLegendSymbols());
526
- // Gradient legend
527
- } else {
528
- // Add this axis on top
529
- allItems.push(colorAxis);
587
+
588
+ wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
589
+ proceed.call(this, item, visible);
590
+ if (visible && item.legendColor) {
591
+ item.legendSymbol.attr({
592
+ fill: item.legendColor
593
+ });
530
594
  }
595
+ });
531
596
 
532
- // Don't add the color axis' series
533
- each(colorAxis.series, function (series) {
534
- series.options.showInLegend = false;
535
- });
536
- }
537
-
538
- return allItems.concat(proceed.call(this));
539
- });
540
- /**
541
- * Mixin for maps and heatmaps
542
- */
543
- var colorPointMixin = {
597
+ }(Highcharts));
598
+ (function(H) {
544
599
  /**
545
- * Set the visibility of a single point
600
+ * (c) 2010-2017 Torstein Honsi
601
+ *
602
+ * License: www.highcharts.com/license
546
603
  */
547
- setVisible: function (vis) {
548
- var point = this,
549
- method = vis ? 'show' : 'hide';
550
-
551
- // Show and hide associated elements
552
- each(['graphic', 'dataLabel'], function (key) {
553
- if (point[key]) {
554
- point[key][method]();
555
- }
556
- });
557
- }
558
- };
559
- var colorSeriesMixin = {
560
-
561
- pointAttrToOptions: { // mapping between SVG attributes and the corresponding options
562
- stroke: 'borderColor',
563
- 'stroke-width': 'borderWidth',
564
- fill: 'color',
565
- dashstyle: 'dashStyle'
566
- },
567
- pointArrayMap: ['value'],
568
- axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
569
- optionalAxis: 'colorAxis',
570
- trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
571
- getSymbol: noop,
572
- parallelArrays: ['x', 'y', 'value'],
573
- colorKey: 'value',
604
+ var defined = H.defined,
605
+ each = H.each,
606
+ noop = H.noop,
607
+ seriesTypes = H.seriesTypes;
574
608
 
575
609
  /**
576
- * In choropleth maps, the color is a result of the value, so this needs translation too
610
+ * Mixin for maps and heatmaps
577
611
  */
578
- translateColors: function () {
579
- var series = this,
580
- nullColor = this.options.nullColor,
581
- colorAxis = this.colorAxis,
582
- colorKey = this.colorKey;
583
-
584
- each(this.data, function (point) {
585
- var value = point[colorKey],
586
- color;
587
-
588
- color = point.options.color ||
589
- (value === null ? nullColor : (colorAxis && value !== undefined) ? colorAxis.toColor(value, point) : point.color || series.color);
590
-
591
- if (color) {
592
- point.color = color;
593
- }
594
- });
595
- }
596
- };
597
-
598
- /**
599
- * Extend the default options with map options
600
- */
601
- defaultOptions.plotOptions.heatmap = merge(defaultOptions.plotOptions.scatter, {
602
- animation: false,
603
- borderWidth: 0,
604
- nullColor: '#F8F8F8',
605
- dataLabels: {
606
- formatter: function () { // #2945
607
- return this.point.value;
612
+ H.colorPointMixin = {
613
+ /**
614
+ * Color points have a value option that determines whether or not it is a null point
615
+ */
616
+ isValid: function() {
617
+ return this.value !== null;
608
618
  },
609
- inside: true,
610
- verticalAlign: 'middle',
611
- crop: false,
612
- overflow: false,
613
- padding: 0 // #3837
614
- },
615
- marker: null,
616
- pointRange: null, // dynamically set to colsize by default
617
- tooltip: {
618
- pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
619
- },
620
- states: {
621
- normal: {
622
- animation: true
619
+
620
+ /**
621
+ * Set the visibility of a single point
622
+ */
623
+ setVisible: function(vis) {
624
+ var point = this,
625
+ method = vis ? 'show' : 'hide';
626
+
627
+ // Show and hide associated elements
628
+ each(['graphic', 'dataLabel'], function(key) {
629
+ if (point[key]) {
630
+ point[key][method]();
631
+ }
632
+ });
623
633
  },
624
- hover: {
625
- halo: false, // #3406, halo is not required on heatmaps
626
- brightness: 0.2
634
+ setState: function(state) {
635
+ H.Point.prototype.setState.call(this, state);
636
+ if (this.graphic) {
637
+ this.graphic.attr({
638
+ zIndex: state === 'hover' ? 1 : 0
639
+ });
640
+ }
627
641
  }
628
- }
629
- });
630
-
631
- // The Heatmap series type
632
- seriesTypes.heatmap = extendClass(seriesTypes.scatter, merge(colorSeriesMixin, {
633
- type: 'heatmap',
634
- pointArrayMap: ['y', 'value'],
635
- hasPointSpecificOptions: true,
636
- pointClass: extendClass(Point, colorPointMixin),
637
- supportsDrilldown: true,
638
- getExtremesFromAll: true,
639
- directTouch: true,
642
+ };
640
643
 
641
- /**
642
- * Override the init method to add point ranges on both axes.
643
- */
644
- init: function () {
645
- var options;
646
- seriesTypes.scatter.prototype.init.apply(this, arguments);
647
-
648
- options = this.options;
649
- options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData
650
- this.yAxis.axisPointRange = options.rowsize || 1; // general point range
651
- },
652
- translate: function () {
653
- var series = this,
654
- options = series.options,
655
- xAxis = series.xAxis,
656
- yAxis = series.yAxis,
657
- between = function (x, a, b) {
658
- return Math.min(Math.max(a, x), b);
659
- };
644
+ H.colorSeriesMixin = {
645
+ pointArrayMap: ['value'],
646
+ axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
647
+ optionalAxis: 'colorAxis',
648
+ trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
649
+ getSymbol: noop,
650
+ parallelArrays: ['x', 'y', 'value'],
651
+ colorKey: 'value',
660
652
 
661
- series.generatePoints();
662
-
663
- each(series.points, function (point) {
664
- var xPad = (options.colsize || 1) / 2,
665
- yPad = (options.rowsize || 1) / 2,
666
- x1 = between(Math.round(xAxis.len - xAxis.translate(point.x - xPad, 0, 1, 0, 1)), 0, xAxis.len),
667
- x2 = between(Math.round(xAxis.len - xAxis.translate(point.x + xPad, 0, 1, 0, 1)), 0, xAxis.len),
668
- y1 = between(Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), 0, yAxis.len),
669
- y2 = between(Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), 0, yAxis.len);
670
-
671
- // Set plotX and plotY for use in K-D-Tree and more
672
- point.plotX = point.clientX = (x1 + x2) / 2;
673
- point.plotY = (y1 + y2) / 2;
674
-
675
- point.shapeType = 'rect';
676
- point.shapeArgs = {
677
- x: Math.min(x1, x2),
678
- y: Math.min(y1, y2),
679
- width: Math.abs(x2 - x1),
680
- height: Math.abs(y2 - y1)
681
- };
682
- });
683
653
 
684
- series.translateColors();
685
654
 
686
- // Make sure colors are updated on colorAxis update (#2893)
687
- if (this.chart.hasRendered) {
688
- each(series.points, function (point) {
689
- point.shapeArgs.fill = point.options.color || point.color; // #3311
655
+ /**
656
+ * In choropleth maps, the color is a result of the value, so this needs translation too
657
+ */
658
+ translateColors: function() {
659
+ var series = this,
660
+ nullColor = this.options.nullColor,
661
+ colorAxis = this.colorAxis,
662
+ colorKey = this.colorKey;
663
+
664
+ each(this.data, function(point) {
665
+ var value = point[colorKey],
666
+ color;
667
+
668
+ color = point.options.color ||
669
+ (point.isNull ? nullColor : (colorAxis && value !== undefined) ? colorAxis.toColor(value, point) : point.color || series.color);
670
+
671
+ if (color) {
672
+ point.color = color;
673
+ }
690
674
  });
675
+ },
676
+
677
+ /**
678
+ * Get the color attibutes to apply on the graphic
679
+ */
680
+ colorAttribs: function(point) {
681
+ var ret = {};
682
+ if (defined(point.color)) {
683
+ ret[this.colorProp || 'fill'] = point.color;
684
+ }
685
+ return ret;
691
686
  }
692
- },
693
- drawPoints: seriesTypes.column.prototype.drawPoints,
694
- animate: noop,
695
- getBox: noop,
696
- drawLegendSymbol: LegendSymbolMixin.drawRectangle,
687
+ };
697
688
 
698
- getExtremes: function () {
699
- // Get the extremes from the value data
700
- Series.prototype.getExtremes.call(this, this.valueData);
701
- this.valueMin = this.dataMin;
702
- this.valueMax = this.dataMax;
689
+ }(Highcharts));
690
+ (function(H) {
691
+ /**
692
+ * (c) 2010-2017 Torstein Honsi
693
+ *
694
+ * License: www.highcharts.com/license
695
+ */
696
+ var colorPointMixin = H.colorPointMixin,
697
+ colorSeriesMixin = H.colorSeriesMixin,
698
+ each = H.each,
699
+ LegendSymbolMixin = H.LegendSymbolMixin,
700
+ merge = H.merge,
701
+ noop = H.noop,
702
+ pick = H.pick,
703
+ Series = H.Series,
704
+ seriesType = H.seriesType,
705
+ seriesTypes = H.seriesTypes;
706
+
707
+ // The Heatmap series type
708
+ seriesType('heatmap', 'scatter', {
709
+ animation: false,
710
+ borderWidth: 0,
711
+
712
+ dataLabels: {
713
+ formatter: function() { // #2945
714
+ return this.point.value;
715
+ },
716
+ inside: true,
717
+ verticalAlign: 'middle',
718
+ crop: false,
719
+ overflow: false,
720
+ padding: 0 // #3837
721
+ },
722
+ marker: null,
723
+ pointRange: null, // dynamically set to colsize by default
724
+ tooltip: {
725
+ pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
726
+ },
727
+ states: {
728
+ normal: {
729
+ animation: true
730
+ },
731
+ hover: {
732
+ halo: false, // #3406, halo is not required on heatmaps
733
+ brightness: 0.2
734
+ }
735
+ }
736
+ }, merge(colorSeriesMixin, {
737
+ pointArrayMap: ['y', 'value'],
738
+ hasPointSpecificOptions: true,
739
+ supportsDrilldown: true,
740
+ getExtremesFromAll: true,
741
+ directTouch: true,
742
+
743
+ /**
744
+ * Override the init method to add point ranges on both axes.
745
+ */
746
+ init: function() {
747
+ var options;
748
+ seriesTypes.scatter.prototype.init.apply(this, arguments);
749
+
750
+ options = this.options;
751
+ options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData
752
+ this.yAxis.axisPointRange = options.rowsize || 1; // general point range
753
+ },
754
+ translate: function() {
755
+ var series = this,
756
+ options = series.options,
757
+ xAxis = series.xAxis,
758
+ yAxis = series.yAxis,
759
+ between = function(x, a, b) {
760
+ return Math.min(Math.max(a, x), b);
761
+ };
762
+
763
+ series.generatePoints();
764
+
765
+ each(series.points, function(point) {
766
+ var xPad = (options.colsize || 1) / 2,
767
+ yPad = (options.rowsize || 1) / 2,
768
+ x1 = between(Math.round(xAxis.len - xAxis.translate(point.x - xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
769
+ x2 = between(Math.round(xAxis.len - xAxis.translate(point.x + xPad, 0, 1, 0, 1)), -xAxis.len, 2 * xAxis.len),
770
+ y1 = between(Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len),
771
+ y2 = between(Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len);
772
+
773
+ // Set plotX and plotY for use in K-D-Tree and more
774
+ point.plotX = point.clientX = (x1 + x2) / 2;
775
+ point.plotY = (y1 + y2) / 2;
776
+
777
+ point.shapeType = 'rect';
778
+ point.shapeArgs = {
779
+ x: Math.min(x1, x2),
780
+ y: Math.min(y1, y2),
781
+ width: Math.abs(x2 - x1),
782
+ height: Math.abs(y2 - y1)
783
+ };
784
+ });
703
785
 
704
- // Get the extremes from the y data
705
- Series.prototype.getExtremes.call(this);
706
- }
786
+ series.translateColors();
787
+ },
788
+ drawPoints: function() {
789
+ seriesTypes.column.prototype.drawPoints.call(this);
707
790
 
708
- }));
791
+ each(this.points, function(point) {
792
+
793
+ // In styled mode, use CSS, otherwise the fill used in the style
794
+ // sheet will take precesence over the fill attribute.
795
+ point.graphic.css(this.colorAttribs(point));
796
+
797
+ }, this);
798
+ },
799
+ animate: noop,
800
+ getBox: noop,
801
+ drawLegendSymbol: LegendSymbolMixin.drawRectangle,
802
+ alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
803
+ getExtremes: function() {
804
+ // Get the extremes from the value data
805
+ Series.prototype.getExtremes.call(this, this.valueData);
806
+ this.valueMin = this.dataMin;
807
+ this.valueMax = this.dataMax;
808
+
809
+ // Get the extremes from the y data
810
+ Series.prototype.getExtremes.call(this);
811
+ }
709
812
 
813
+ }), colorPointMixin);
710
814
 
815
+ }(Highcharts));
711
816
  }));