gantt.js 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. Highcharts JS v7.0.2 (2019-01-17)
  3. Gantt series
  4. (c) 2016-2019 Lars A. V. Cabrera
  5. License: www.highcharts.com/license
  6. */
  7. (function(C){"object"===typeof module&&module.exports?(C["default"]=C,module.exports=C):"function"===typeof define&&define.amd?define(function(){return C}):C("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(C){(function(b){var k=b.addEvent,t=b.PlotLineOrBand,m=b.merge,w={currentDateIndicator:!0,color:"#ccd6eb",width:2,label:{format:"%a, %b %d %Y, %H:%M",formatter:void 0,rotation:0,style:{fontSize:"10px"}}};k(b.Axis,"afterSetOptions",function(){var b=this.options,q=b.currentDateIndicator;
  8. q&&("object"===typeof q?(q.label&&q.label.format&&(q.label.formatter=void 0),q=m(w,q)):q=m(w),q.value=new Date,b.plotLines||(b.plotLines=[]),b.plotLines.push(q))});k(t,"render",function(){var m=this.options,q,r;m.currentDateIndicator&&m.label&&(q=m.label.format,r=m.label.formatter,m.value=new Date,m.label.text="function"===typeof r?r(this):b.dateFormat(q,new Date),this.label&&this.label.attr({text:m.label.text}))})})(C);(function(b){var k=b.addEvent,t=b.dateFormat,m=b.defined,w=b.isArray,p=b.isNumber,
  9. q=function(a){return b.isObject(a,!0)},r=b.merge,n=b.pick,a=b.wrap,g=b.Axis,e=b.Tick,h={top:0,right:1,bottom:2,left:3,0:"top",1:"right",2:"bottom",3:"left"};g.prototype.isNavigatorAxis=function(){return/highcharts-navigator-[xy]axis/.test(this.options.className)};g.prototype.isOuterAxis=function(){var a=this,f=-1,c=!0;a.chart.axes.forEach(function(d,l){d.side!==a.side||d.isNavigatorAxis()||(d===a?f=l:0<=f&&l>f&&(c=!1))});return c};g.prototype.getMaxLabelDimensions=function(a,f){var c={width:0,height:0};
  10. f.forEach(function(d){d=a[d];var f;q(d)&&(f=q(d.label)?d.label:{},d=f.getBBox?f.getBBox().height:0,f=p(f.textPxLength)?f.textPxLength:0,c.height=Math.max(d,c.height),c.width=Math.max(f,c.width))});return c};b.dateFormats={W:function(a){a=new Date(a);var f;a.setHours(0,0,0,0);a.setDate(a.getDate()-(a.getDay()||7));f=new Date(a.getFullYear(),0,1);return Math.ceil(((a-f)/864E5+1)/7)},E:function(a){return t("%a",a,!0).charAt(0)}};k(e,"afterGetLabelPosition",function(a){var f=this.label,c=this.axis,d=
  11. c.reversed,l=c.chart,u=c.options,g=u&&q(u.grid)?u.grid:{},u=c.options.labels,e=u.align,b=h[c.side],v=a.tickmarkOffset,n=c.tickPositions,z=this.pos-v,n=p(n[a.index+1])?n[a.index+1]-v:c.max+v,D=c.tickSize("tick",!0),v=w(D)?D[0]:0,D=D&&D[1]/2,E;!0===g.enabled&&("top"===b?(g=c.top+c.offset,E=g-v):"bottom"===b?(E=l.chartHeight-c.bottom+c.offset,g=E+v):(g=c.top+c.len-c.translate(d?n:z),E=c.top+c.len-c.translate(d?z:n)),"right"===b?(b=l.chartWidth-c.right+c.offset,d=b+v):"left"===b?(d=c.left+c.offset,b=
  12. d-v):(b=Math.round(c.left+c.translate(d?n:z))-D,d=Math.round(c.left+c.translate(d?z:n))-D),this.slotWidth=d-b,a.pos.x="left"===e?b:"right"===e?d:b+(d-b)/2,a.pos.y=E+(g-E)/2,l=l.renderer.fontMetrics(u.style.fontSize,f.element),f=f.getBBox().height,u.useHTML?a.pos.y+=l.b+-(f/2):(f=Math.round(f/l.h),a.pos.y+=(l.b-(l.h-l.f))/2+-((f-1)*l.h/2)),a.pos.x+=c.horiz&&u.x||0)});k(g,"afterTickSize",function(a){var f=this.maxLabelDimensions,c=this.options;!0===(c&&q(c.grid)?c.grid:{}).enabled&&(c=2*Math.abs(this.defaultLeftAxisOptions.labels.x),
  13. f=c+(this.horiz?f.height:f.width),w(a.tickSize)?a.tickSize[0]=f:a.tickSize=[f])});k(g,"afterGetTitlePosition",function(a){var f=this.options;if(!0===(f&&q(f.grid)?f.grid:{}).enabled){var c=this.axisTitle,d=c&&c.getBBox().width,l=this.horiz,g=this.left,b=this.top,e=this.width,v=this.height,y=f.title,f=this.opposite,r=this.offset,z=this.tickSize()||[0],D=y.x||0,E=y.y||0,A=n(y.margin,l?5:10),c=this.chart.renderer.fontMetrics(y.style&&y.style.fontSize,c).f,z=(l?b+v:g)+z[0]/2*(f?-1:1)*(l?1:-1)+(this.side===
  14. h.bottom?c:0);a.titlePosition.x=l?g-d/2-A+D:z+(f?e:0)+r+D;a.titlePosition.y=l?z-(f?v:0)+(f?c:-c)/2+r+E:b-A+E}});a(g.prototype,"unsquish",function(a){var f=this.options;return!0===(f&&q(f.grid)?f.grid:{}).enabled&&this.categories?this.tickInterval:a.apply(this,Array.prototype.slice.call(arguments,1))});k(g,"afterSetOptions",function(a){var f=this.options;a=a.userOptions;var c,d=f&&q(f.grid)?f.grid:{};!0===d.enabled&&(c=r(!0,{className:"highcharts-grid-axis "+(a.className||""),dateTimeLabelFormats:{hour:{list:["%H:%M",
  15. "%H"]},day:{list:["%A, %e. %B","%a, %e. %b","%E"]},week:{list:["Week %W","W%W"]},month:{list:["%B","%b","%o"]}},grid:{borderWidth:1},labels:{padding:2,style:{fontSize:"13px"}},title:{text:null,reserveSpace:!1,rotation:0},units:[["millisecond",[1,10,100]],["second",[1,10]],["minute",[1,5,15]],["hour",[1,6]],["day",[1]],["week",[1]],["month",[1]],["year",null]]},a),"xAxis"===this.coll&&(m(a.linkedTo)&&!m(a.tickPixelInterval)&&(c.tickPixelInterval=350),m(a.tickPixelInterval)||!m(a.linkedTo)||m(a.tickPositioner)||
  16. m(a.tickInterval)||(c.tickPositioner=function(d,f){var a=this.linkedParent&&this.linkedParent.tickPositions&&this.linkedParent.tickPositions.info;if(a){var l,g,u,e,z=c.units;for(e=0;e<z.length;e++)if(z[e][0]===a.unitName){l=e;break}if(z[l][1])return z[l+1]&&(u=z[l+1][0],g=(z[l+1][1]||[1])[0]),a=b.timeUnits[u],this.tickInterval=a*g,this.getTimeTicks({unitRange:a,count:g,unitName:u},d,f,this.options.startOfWeek)}})),r(!0,this.options,c),this.horiz&&(f.minPadding=n(a.minPadding,0),f.maxPadding=n(a.maxPadding,
  17. 0)),p(f.grid.borderWidth)&&(f.tickWidth=f.lineWidth=d.borderWidth))});k(g,"afterSetAxisTranslation",function(){var a=this.options,f=a&&q(a.grid)?a.grid:{},c=this.tickPositions&&this.tickPositions.info,d=this.userOptions.labels||{};this.horiz&&(!0===f.enabled&&this.series.forEach(function(c){c.options.pointRange=0}),c&&(!1===a.dateTimeLabelFormats[c.unitName].range||1<c.count)&&!m(d.align)&&(a.labels.align="left",m(d.x)||(a.labels.x=3)))});k(g,"trimTicks",function(){var a=this.options,f=a&&q(a.grid)?
  18. a.grid:{},c=this.categories,d=this.tickPositions,l=d[0],g=d[d.length-1],b=this.linkedParent&&this.linkedParent.min||this.min,e=this.linkedParent&&this.linkedParent.max||this.max,h=this.tickInterval;!0!==f.enabled||c||!this.horiz&&!this.isLinked||((l>b||l<b&&l+h>b)&&!a.startOnTick&&(d[0]=b),(g<e||g>e&&g-h<e)&&!a.endOnTick&&(d[d.length-1]=e))});k(g,"afterRender",function(){var a=this.options,f=a&&q(a.grid)?a.grid:{},c,d,l,g,b,e,n=this.chart.renderer,y=this.horiz;if(!0===f.enabled&&(f=2*Math.abs(this.defaultLeftAxisOptions.labels.x),
  19. this.maxLabelDimensions=this.getMaxLabelDimensions(this.ticks,this.tickPositions),f=this.maxLabelDimensions.width+f,c=a.lineWidth,this.rightWall&&this.rightWall.destroy(),d=this.axisGroup.getBBox(),this.isOuterAxis()&&this.axisLine&&(y&&(f=d.height-1),c))){d=this.getLinePath(c);b=d.indexOf("M")+1;e=d.indexOf("L")+1;l=d.indexOf("M")+2;g=d.indexOf("L")+2;if(this.side===h.top||this.side===h.left)f=-f;y?(d[l]+=f,d[g]+=f):(d[b]+=f,d[e]+=f);this.axisLineExtra?this.axisLineExtra.animate({d:d}):this.axisLineExtra=
  20. n.path(d).attr({stroke:a.lineColor,"stroke-width":c,zIndex:7}).addClass("highcharts-axis-line").add(this.axisGroup);this.axisLine[this.showAxis?"show":"hide"](!0)}});k(g,"init",function(e){function f(){var d=c.options,a=25/11,f=c.chart.renderer.fontMetrics(d.labels.style.fontSize);d.labels||(d.labels={});d.labels.align=n(d.labels.align,"center");c.categories||(d.showLastLabel=!1);c.horiz&&(d.tickLength=l.cellHeight||f.h*a);c.labelRotation=0;d.labels.rotation=0}var c=this,d=c.chart,l=(e=e.userOptions)&&
  21. q(e.grid)?e.grid:{},u,h,B;if(l.enabled)if(m(l.borderColor)&&(e.tickColor=e.lineColor=l.borderColor),w(l.columns)){h=0;for(B=l.columns.length;B--;)u=r(e,l.columns[B],{type:"category"}),delete u.grid.columns,u=new g(c.chart,u),u.isColumn=!0,u.columnIndex=h,a(u,"labelFormatter",function(c){var d=this.axis,a=d.tickPositions,f=this.value,l=f===a[0],a=f===a[a.length-1],g=b.find(d.series[0].options.data,function(c){return c[d.isXAxis?"x":"y"]===f});this.isFirst=l;this.isLast=a;this.point=g;return c.call(this)}),
  22. h++;k(this,"afterInit",function(){b.erase(d.axes,this);b.erase(d[c.coll],this)})}else k(this,"afterInit",f)})})(C);(function(b){var k=b.Chart,t=b.pick;b.addEvent(b.Axis,"afterSetOptions",function(){this.horiz||!b.isNumber(this.options.staticScale)||this.chart.options.chart.height||(this.staticScale=this.options.staticScale)});k.prototype.adjustHeight=function(){"adjustHeight"!==this.redrawTrigger&&((this.axes||[]).forEach(function(m){var k=m.chart,p=!!k.initiatedScale&&k.options.animation,q=m.options.staticScale,
  23. r;m.staticScale&&b.defined(m.min)&&(r=t(m.unitLength,m.max+m.tickInterval-m.min)*q,r=Math.max(r,q),q=r-k.plotHeight,1<=Math.abs(q)&&(k.plotHeight=r,k.redrawTrigger="adjustHeight",k.setSize(void 0,k.chartHeight+q,p)),m.series.forEach(function(b){(b=b.sharedClipKey&&k[b.sharedClipKey])&&b.attr({height:k.plotHeight})}))}),this.initiatedScale=!0);this.redrawTrigger=null};b.addEvent(k,"render",k.prototype.adjustHeight)})(C);var H=function(b){var k=b.extend,t=b.isNumber,m=b.pick,w=function(b,r){var n=b.reduce(function(a,
  24. b){var e=m(b.parent,"");void 0===a[e]&&(a[e]=[]);a[e].push(b);return a},{});Object.keys(n).forEach(function(a,b){var e=n[a];""!==a&&-1===r.indexOf(a)&&(e.forEach(function(a){b[""].push(a)}),delete b[a])});return n},p=function(b,r,n,a,g,e){var h=0,v=0,f=e&&e.after,c=e&&e.before;r={data:a,depth:n-1,id:b,level:n,parent:r};var d,l;"function"===typeof c&&c(r,e);c=(g[b]||[]).map(function(c){var a=p(c.id,b,n+1,c,g,e),f=c.start;c=!0===c.milestone?f:c.end;d=!t(d)||f<d?f:d;l=!t(l)||c>l?c:l;h=h+1+a.descendants;
  25. v=Math.max(a.height+1,v);return a});a&&(a.start=m(a.start,d),a.end=m(a.end,l));k(r,{children:c,descendants:h,height:v});"function"===typeof f&&f(r,e);return r};return{getListOfParents:w,getNode:p,getTree:function(b,r){var n=b.map(function(a){return a.id});b=w(b,n);return p("",null,1,null,b,r)}}}(C),I=function(b){var k=b.extend,t=b.isArray,m=b.isObject,w=b.isNumber,p=b.merge,q=b.pick;return{getColor:function(r,n){var a=n.index,g=n.mapOptionsToLevel,e=n.parentColor,h=n.parentColorIndex,v=n.series,f=
  26. n.colors,c=n.siblings,d=v.points,l=v.chart.options.chart,u,x,B,k;if(r){d=d[r.i];r=g[r.level]||{};if(g=d&&r.colorByPoint)x=d.index%(f?f.length:l.colorCount),u=f&&f[x];if(!v.chart.styledMode){f=d&&d.options.color;l=r&&r.color;if(B=e)B=(B=r&&r.colorVariation)&&"brightness"===B.key?b.color(e).brighten(a/c*B.to).get():e;B=q(f,l,u,B,v.color)}k=q(d&&d.options.colorIndex,r&&r.colorIndex,x,h,n.colorIndex)}return{color:B,colorIndex:k}},getLevelOptions:function(b){var n=null,a,g,e,h;if(m(b))for(n={},e=w(b.from)?
  27. b.from:1,h=b.levels,g={},a=m(b.defaults)?b.defaults:{},t(h)&&(g=h.reduce(function(b,f){var c,d;m(f)&&w(f.level)&&(d=p({},f),c="boolean"===typeof d.levelIsConstant?d.levelIsConstant:a.levelIsConstant,delete d.levelIsConstant,delete d.level,f=f.level+(c?0:e-1),m(b[f])?k(b[f],d):b[f]=d);return b},{})),h=w(b.to)?b.to:1,b=0;b<=h;b++)n[b]=p({},a,m(g[b])?g[b]:{});return n},setTreeValues:function n(a,b){var e=b.before,g=b.idRoot,v=b.mapIdToNode[g],f=b.points[a.i],c=f&&f.options||{},d=0,l=[];k(a,{levelDynamic:a.level-
  28. (("boolean"===typeof b.levelIsConstant?b.levelIsConstant:1)?0:v.level),name:q(f&&f.name,""),visible:g===a.id||("boolean"===typeof b.visible?b.visible:!1)});"function"===typeof e&&(a=e(a,b));a.children.forEach(function(c,f){var e=k({},b);k(e,{index:f,siblings:a.children.length,visible:a.visible});c=n(c,e);l.push(c);c.visible&&(d+=c.val)});a.visible=0<d||a.visible;e=q(c.value,d);k(a,{children:l,childrenTotal:d,isLeaf:a.visible&&!d,val:e});return a},updateRootId:function(b){var a;m(b)&&(a=m(b.options)?
  29. b.options:{},a=q(b.rootNode,a.rootId,""),m(b.userOptions)&&(b.userOptions.rootId=a),b.rootNode=a);return a}}}(C);(function(b){var k=b.addEvent,t=b.pick,m=b.extend,w=b.isArray,p=b.fireEvent,q=b.Axis,r=b.Series;m(q.prototype,{isInBreak:function(b,a){var g=b.repeat||Infinity,e=b.from,h=b.to-b.from;a=a>=e?(a-e)%g:g-(e-a)%g;return b.inclusive?a<=h:a<h&&0!==a},isInAnyBreak:function(b,a){var g=this.options.breaks,e=g&&g.length,h,n,f;if(e){for(;e--;)this.isInBreak(g[e],b)&&(h=!0,n||(n=t(g[e].showPoints,!this.isXAxis)));
  30. f=h&&a?h&&!n:h}return f}});k(q,"afterInit",function(){"function"===typeof this.setBreaks&&this.setBreaks(this.options.breaks,!1)});k(q,"afterSetTickPositions",function(){if(this.isBroken){var b=this.tickPositions,a=this.tickPositions.info,g=[],e;for(e=0;e<b.length;e++)this.isInAnyBreak(b[e])||g.push(b[e]);this.tickPositions=g;this.tickPositions.info=a}});k(q,"afterSetOptions",function(){this.isBroken&&(this.options.ordinal=!1)});q.prototype.setBreaks=function(b,a){function g(a){var c=a,d,f;for(f=
  31. 0;f<h.breakArray.length;f++)if(d=h.breakArray[f],d.to<=a)c-=d.len;else if(d.from>=a)break;else if(h.isInBreak(d,a)){c-=a-d.from;break}return c}function e(a){var c,d;for(d=0;d<h.breakArray.length&&!(c=h.breakArray[d],c.from>=a);d++)c.to<a?a+=c.len:h.isInBreak(c,a)&&(a+=c.len);return a}var h=this,n=w(b)&&!!b.length;h.isDirty=h.isBroken!==n;h.isBroken=n;h.options.breaks=h.userOptions.breaks=b;h.forceRedraw=!0;n||h.val2lin!==g||(delete h.val2lin,delete h.lin2val);n&&(h.userOptions.ordinal=!1,h.val2lin=
  32. g,h.lin2val=e,h.setExtremes=function(a,c,d,b,e){if(this.isBroken){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(c);)c-=this.closestPointRange}q.prototype.setExtremes.call(this,a,c,d,b,e)},h.setAxisTranslation=function(a){q.prototype.setAxisTranslation.call(this,a);this.unitLength=null;if(this.isBroken){a=h.options.breaks;var c=[],d=[],f=0,b,e,g=h.userMin||h.min,n=h.userMax||h.max,y=t(h.pointRangePadding,0),k,z;a.forEach(function(c){e=c.repeat||Infinity;h.isInBreak(c,
  33. g)&&(g+=c.to%e-g%e);h.isInBreak(c,n)&&(n-=n%e-c.from%e)});a.forEach(function(a){k=a.from;for(e=a.repeat||Infinity;k-e>g;)k-=e;for(;k<g;)k+=e;for(z=k;z<n;z+=e)c.push({value:z,move:"in"}),c.push({value:z+(a.to-a.from),move:"out",size:a.breakSize})});c.sort(function(c,a){return c.value===a.value?("in"===c.move?0:1)-("in"===a.move?0:1):c.value-a.value});b=0;k=g;c.forEach(function(c){b+="in"===c.move?1:-1;1===b&&"in"===c.move&&(k=c.value);0===b&&(d.push({from:k,to:c.value,len:c.value-k-(c.size||0)}),f+=
  34. c.value-k-(c.size||0))});h.breakArray=d;h.unitLength=n-g-f+y;p(h,"afterBreaks");h.staticScale?h.transA=h.staticScale:h.unitLength&&(h.transA*=(n-h.min+y)/h.unitLength);y&&(h.minPixelPadding=h.transA*h.minPointOffset);h.min=g;h.max=n}});t(a,!0)&&this.chart.redraw()};k(r,"afterGeneratePoints",function(){var b=this.xAxis,a=this.yAxis,g=this.points,e,h=g.length,k=this.options.connectNulls,f;if(b&&a&&(b.options.breaks||a.options.breaks))for(;h--;)e=g[h],f=null===e.y&&!1===k,f||!b.isInAnyBreak(e.x,!0)&&
  35. !a.isInAnyBreak(e.y,!0)||(g.splice(h,1),this.data[h]&&this.data[h].destroyElements())});k(r,"afterRender",function(){this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,t(this.pointArrayMap,["y"]))});b.Series.prototype.drawBreaks=function(b,a){var g=this,e=g.points,h,k,f,c;b&&a.forEach(function(a){h=b.breakArray||[];k=b.isXAxis?b.min:t(g.options.threshold,b.min);e.forEach(function(d){c=t(d["stack"+a.toUpperCase()],d[a]);h.forEach(function(a){f=!1;if(k<a.from&&c>a.to||k>a.from&&c<a.from)f=
  36. "pointBreak";else if(k<a.from&&c>a.from&&c<a.to||k>a.from&&c>a.to&&c<a.from)f="pointInBreak";f&&p(b,f,{point:d,brk:a})})})})};b.Series.prototype.gappedPath=function(){var k=this.currentDataGrouping,a=k&&k.totalRange,k=this.options.gapSize,g=this.points.slice(),e=g.length-1,h=this.yAxis;if(k&&0<e)for("value"!==this.options.gapUnit&&(k*=this.closestPointRange),a&&a>k&&(k=a);e--;)g[e+1].x-g[e].x>k&&(a=(g[e].x+g[e+1].x)/2,g.splice(e+1,0,{isNull:!0,x:a}),this.options.stacking&&(a=h.stacks[this.stackKey][a]=
  37. new b.StackItem(h,h.options.stackLabels,!1,a,this.stack),a.total=0));return this.getGraphPath(g)}})(C);(function(b,k,t){var m=function(c){return Array.prototype.slice.call(c,1)},w=b.defined,p=b.extend,q=b.find,r=b.fireEvent,n=t.getLevelOptions,a=b.merge,g=b.isNumber,e=function(c){return b.isObject(c,!0)},h=b.isString,v=b.pick,f=b.wrap;t=b.Axis;var c=b.Tick,d=function(c,a){var d,b;for(d in a)a.hasOwnProperty(d)&&(b=a[d],f(c,d,b))},l=function(c,a){var d=c.collapseStart;c=c.collapseEnd;c>=a&&(d-=.5);
  38. return{from:d,to:c,showPoints:!1}},u=function(c){return Object.keys(c.mapOfPosToGridNode).reduce(function(a,d){d=+d;c.min<=d&&c.max>=d&&!c.isInAnyBreak(d)&&a.push(d);return a},[])},x=function(c,a){var d=c.options.breaks||[],b=l(a,c.max);return d.some(function(c){return c.from===b.from&&c.to===b.to})},B=function(c,a){var d=c.options.breaks||[];c=l(a,c.max);d.push(c);return d},F=function(c,a){var d=c.options.breaks||[],b=l(a,c.max);return d.reduce(function(c,a){a.to===b.to&&a.from===b.from||c.push(a);
  39. return c},[])},y=function(c,a){var d=c.labelIcon,f=!d,e=a.renderer,l=a.xy,g=a.options,h=g.width,u=g.height,z=l.x-h/2-g.padding,l=l.y-u/2,k=a.collapsed?90:180,D=a.show&&b.isNumber(l);f&&(c.labelIcon=d=e.path(e.symbols[g.type](g.x,g.y,h,u)).addClass("highcharts-label-icon").add(a.group));D||d.attr({y:-9999});e.styledMode||d.attr({"stroke-width":1,fill:v(a.color,"#666666")}).css({cursor:"pointer",stroke:g.lineColor,strokeWidth:g.lineWidth});d[f?"attr":"animate"]({translateX:z,translateY:l,rotation:k})},
  40. G=function(c,a,d){var b=[],f=[],g={},l={},u=-1,z="boolean"===typeof a?a:!1;c=k.getTree(c,{after:function(c){c=l[c.pos];var a=0,d=0;c.children.forEach(function(c){d+=c.descendants+1;a=Math.max(c.height+1,a)});c.descendants=d;c.height=a;c.collapsed&&f.push(c)},before:function(c){var a=e(c.data)?c.data:{},d=h(a.name)?a.name:"",f=g[c.parent],f=e(f)?l[f.pos]:null,k=function(c){return c.name===d},D;z&&e(f)&&(D=q(f.children,k))?(k=D.pos,D.nodes.push(c)):k=u++;l[k]||(l[k]=D={depth:f?f.depth+1:0,name:d,nodes:[c],
  41. children:[],pos:k},-1!==k&&b.push(d),e(f)&&f.children.push(D));h(c.id)&&(g[c.id]=c);!0===a.collapsed&&(D.collapsed=!0);c.pos=k}});l=function(c,a){var d=function(c,b,f){var l=b+(-1===b?0:a-1),g=(l-b)/2,h=b+g;c.nodes.forEach(function(c){var a=c.data;e(a)&&(a.y=b+a.seriesIndex,delete a.seriesIndex);c.pos=h});f[h]=c;c.pos=h;c.tickmarkOffset=g+.5;c.collapseStart=l+.5;c.children.forEach(function(c){d(c,l+1,f);l=c.collapseEnd-.5});c.collapseEnd=l+.5;return f};return d(c["-1"],-1,{})}(l,d);return{categories:b,
  42. mapOfIdToNode:g,mapOfPosToGridNode:l,collapsedNodes:f,tree:c}};b.addEvent(b.Chart,"beforeRender",function(){this.axes.forEach(function(c){if("treegrid"===c.userOptions.type){var a=c.options&&c.options.labels,d;c.updateYNames();c.series.forEach(function(c){c.yData=c.options.data.map(function(c){return c.y})});c.mapOptionsToLevel=n({defaults:a,from:1,levels:a.levels,to:c.tree.height});d=b.addEvent(c,"foundExtremes",function(){c.collapsedNodes.forEach(function(a){a=B(c,a);c.setBreaks(a,!1)});d()})}})});
  43. d(t.prototype,{init:function(c,d,b){var f="treegrid"===b.type;f&&(b=a({grid:{enabled:!0},labels:{align:"left",levels:[{level:void 0},{level:1,style:{fontWeight:"bold"}}],symbol:{type:"triangle",x:-5,y:-5,height:10,width:10,padding:5}},uniqueNames:!1},b,{reversed:!0,grid:{columns:void 0}}));c.apply(this,[d,b]);f&&(this.hasNames=!0,this.options.showLastLabel=!0)},getMaxLabelDimensions:function(c){var a=this.options,d=a&&a.labels,a=d&&g(d.indentation)?a.labels.indentation:0,d=c.apply(this,m(arguments)),
  44. b;"treegrid"===this.options.type&&this.mapOfPosToGridNode&&(b=this.mapOfPosToGridNode[-1].height,d.width+=a*(b-1));return d},generateTick:function(a,d){var b=e(this.mapOptionsToLevel)?this.mapOptionsToLevel:{},f=this.ticks,l=f[d],g,h;"treegrid"===this.options.type?(h=this.mapOfPosToGridNode[d],(b=b[h.depth])&&(g={labels:b}),l?(l.parameters.category=h.name,l.options=g,l.addLabel()):f[d]=new c(this,d,null,void 0,{category:h.name,tickmarkOffset:h.tickmarkOffset,options:g})):a.apply(this,m(arguments))},
  45. setTickInterval:function(c){var a=this.options;"treegrid"===a.type&&this.mapOfPosToGridNode?(this.min=v(this.userMin,a.min,this.dataMin),this.max=v(this.userMax,a.max,this.dataMax),r(this,"foundExtremes"),this.setAxisTranslation(!0),this.tickmarkOffset=.5,this.tickInterval=1,this.tickPositions=u(this)):c.apply(this,m(arguments))}});d(c.prototype,{getLabelPosition:function(c,a,d,b,f,l,h,u,k){var x=v(this.options&&this.options.labels,l);l=this.pos;var y=this.axis,B="treegrid"===y.options.type;c=c.apply(this,
  46. [a,d,b,f,x,h,u,k]);B&&(a=x&&e(x.symbol)?x.symbol:{},x=x&&g(x.indentation)?x.indentation:0,l=(l=(y=y.mapOfPosToGridNode)&&y[l])&&l.depth||1,c.x+=a.width+2*a.padding+(l-1)*x);return c},renderLabel:function(c){var a=this,d=a.pos,f=a.axis,l=a.label,g=f.mapOfPosToGridNode,h=f.options,u=v(a.options&&a.options.labels,h&&h.labels),k=u&&e(u.symbol)?u.symbol:{},B=(g=g&&g[d])&&g.depth,h="treegrid"===h.type,z=!(!l||!l.element),n=-1<f.tickPositions.indexOf(d),d=f.chart.styledMode;h&&g&&z&&l.addClass("highcharts-treegrid-node-level-"+
  47. B);c.apply(a,m(arguments));h&&g&&z&&0<g.descendants&&(f=x(f,g),y(a,{color:!d&&l.styles.color,collapsed:f,group:l.parentGroup,options:k,renderer:l.renderer,show:n,xy:l.xy}),k="highcharts-treegrid-node-"+(f?"expanded":"collapsed"),l.addClass("highcharts-treegrid-node-"+(f?"collapsed":"expanded")).removeClass(k),d||l.css({cursor:"pointer"}),[l,a.labelIcon].forEach(function(c){c.attachedTreeGridEvents||(b.addEvent(c.element,"mouseover",function(){var c=l;c.addClass("highcharts-treegrid-node-active");
  48. c.renderer.styledMode||c.css({textDecoration:"underline"})}),b.addEvent(c.element,"mouseout",function(){var c=l,a=u,a=w(a.style)?a.style:{};c.removeClass("highcharts-treegrid-node-active");c.renderer.styledMode||c.css({textDecoration:a.textDecoration})}),b.addEvent(c.element,"click",function(){a.toggleCollapse()}),c.attachedTreeGridEvents=!0)}))}});p(c.prototype,{collapse:function(c){var a=this.axis,d=B(a,a.mapOfPosToGridNode[this.pos]);a.setBreaks(d,v(c,!0))},expand:function(c){var a=this.axis,d=
  49. F(a,a.mapOfPosToGridNode[this.pos]);a.setBreaks(d,v(c,!0))},toggleCollapse:function(c){var a=this.axis,d;d=a.mapOfPosToGridNode[this.pos];d=x(a,d)?F(a,d):B(a,d);a.setBreaks(d,v(c,!0))}});t.prototype.updateYNames=function(){var c=this.options,a=c.uniqueNames,d=!this.isXAxis,b=this.series,f=0;"treegrid"===c.type&&d&&(c=b.reduce(function(c,d){d.visible&&(d.options.data.forEach(function(a){e(a)&&(a.seriesIndex=f,c.push(a))}),!0===a&&f++);return c},[]),c=G(c,a,!0===a?f:1),this.categories=c.categories,
  50. this.mapOfPosToGridNode=c.mapOfPosToGridNode,this.collapsedNodes=c.collapsedNodes,this.hasNames=!0,this.tree=c.tree)};t.prototype.utils={getNode:k.getNode}})(C,H,I);H=function(b){function k(a,b,e){e=e||0;var g=a.length-1;b-=1e-7;for(var k,f;e<=g;)if(k=g+e>>1,f=b-a[k].xMin,0<f)e=k+1;else if(0>f)g=k-1;else return k;return 0<e?e-1:0}function t(a,b){for(var g=k(a,b.x+1)+1;g--;){var h;if(h=a[g].xMax>=b.x)h=a[g],h=b.x<=h.xMax&&b.x>=h.xMin&&b.y<=h.yMax&&b.y>=h.yMin;if(h)return g}return-1}function m(a){var b=
  51. [];if(a.length){b.push("M",a[0].start.x,a[0].start.y);for(var e=0;e<a.length;++e)b.push("L",a[e].end.x,a[e].end.y)}return b}function w(a,b){a.yMin=q(a.yMin,b.yMin);a.yMax=p(a.yMax,b.yMax);a.xMin=q(a.xMin,b.xMin);a.xMax=p(a.xMax,b.xMax)}var p=Math.min,q=Math.max,r=Math.abs,n=b.pick;return{straight:function(a,b){return{path:["M",a.x,a.y,"L",b.x,b.y],obstacles:[{start:a,end:b}]}},simpleConnect:b.extend(function(a,b,e){function g(c,a,d,b,f){c={x:c.x,y:c.y};c[a]=d[b||a]+(f||0);return c}function k(c,a,
  52. d){var b=r(a[d]-c[d+"Min"])>r(a[d]-c[d+"Max"]);return g(a,d,c,d+(b?"Max":"Min"),b?1:-1)}var f=[],c,d=n(e.startDirectionX,r(b.x-a.x)>r(b.y-a.y))?"x":"y",l=e.chartObstacles,u=t(l,a);e=t(l,b);var x;-1<e?(c=l[e],e=k(c,b,d),c={start:e,end:b},x=e):x=b;-1<u&&(l=l[u],e=k(l,a,d),f.push({start:a,end:e}),e[d]>a[d]===e[d]>x[d]&&(d="y"===d?"x":"y",b=a[d]<b[d],f.push({start:e,end:g(e,d,l,d+(b?"Max":"Min"),b?1:-1)}),d="y"===d?"x":"y"));a=f.length?f[f.length-1].end:a;e=g(a,d,x);f.push({start:a,end:e});d=g(e,"y"===
  53. d?"x":"y",x);f.push({start:e,end:d});f.push(c);return{path:m(f),obstacles:f}},{requiresObstacles:!0}),fastAvoid:b.extend(function(a,b,e){function g(c,a,d){var b,f,l,e,g,h=c.x<a.x?1:-1;c.x<a.x?(b=c,f=a):(b=a,f=c);c.y<a.y?(e=c,l=a):(e=a,l=c);for(g=0>h?p(k(A,f.x),A.length-1):0;A[g]&&(0<h&&A[g].xMin<=f.x||0>h&&A[g].xMax>=b.x);){if(A[g].xMin<=f.x&&A[g].xMax>=b.x&&A[g].yMin<=l.y&&A[g].yMax>=e.y)return d?{y:c.y,x:c.x<a.x?A[g].xMin-1:A[g].xMax+1,obstacle:A[g]}:{x:c.x,y:c.y<a.y?A[g].yMin-1:A[g].yMax+1,obstacle:A[g]};
  54. g+=h}return a}function v(c,a,d,b,f){var l=f.soft,e=f.hard,h=b?"x":"y",k={x:a.x,y:a.y},u={x:a.x,y:a.y};f=c[h+"Max"]>=l[h+"Max"];var l=c[h+"Min"]<=l[h+"Min"],x=c[h+"Max"]>=e[h+"Max"],e=c[h+"Min"]<=e[h+"Min"],y=r(c[h+"Min"]-a[h]),B=r(c[h+"Max"]-a[h]);d=10>r(y-B)?a[h]<d[h]:B<y;u[h]=c[h+"Min"];k[h]=c[h+"Max"];c=g(a,u,b)[h]!==u[h];a=g(a,k,b)[h]!==k[h];d=c?a?d:!0:a?!1:d;d=l?f?d:!0:f?!1:d;return e?x?d:!0:x?!1:d}function f(c,a,d){if(c.x===a.x&&c.y===a.y)return[];var b=d?"x":"y",l,h,k,u,x=e.obstacleOptions.margin;
  55. l={soft:{xMin:G,xMax:z,yMin:D,yMax:E},hard:e.hardBounds};h=t(A,c);-1<h?(h=A[h],l=v(h,c,a,d,l),w(h,e.hardBounds),u=d?{y:c.y,x:h[l?"xMax":"xMin"]+(l?1:-1)}:{x:c.x,y:h[l?"yMax":"yMin"]+(l?1:-1)},k=t(A,u),-1<k&&(k=A[k],w(k,e.hardBounds),u[b]=l?q(h[b+"Max"]-x+1,(k[b+"Min"]+h[b+"Max"])/2):p(h[b+"Min"]+x-1,(k[b+"Max"]+h[b+"Min"])/2),c.x===u.x&&c.y===u.y?(F&&(u[b]=l?q(h[b+"Max"],k[b+"Max"])+1:p(h[b+"Min"],k[b+"Min"])-1),F=!F):F=!1),c=[{start:c,end:u}]):(b=g(c,{x:d?a.x:c.x,y:d?c.y:a.y},d),c=[{start:c,end:{x:b.x,
  56. y:b.y}}],b[d?"x":"y"]!==a[d?"x":"y"]&&(l=v(b.obstacle,b,a,!d,l),w(b.obstacle,e.hardBounds),l={x:d?b.x:b.obstacle[l?"xMax":"xMin"]+(l?1:-1),y:d?b.obstacle[l?"yMax":"yMin"]+(l?1:-1):b.y},d=!d,c=c.concat(f({x:b.x,y:b.y},l,d))));return c=c.concat(f(c[c.length-1].end,a,!d))}function c(c,a,d){var b=p(c.xMax-a.x,a.x-c.xMin)<p(c.yMax-a.y,a.y-c.yMin);d=v(c,a,d,b,{soft:e.hardBounds,hard:e.hardBounds});return b?{y:a.y,x:c[d?"xMax":"xMin"]+(d?1:-1)}:{x:a.x,y:c[d?"yMax":"yMin"]+(d?1:-1)}}var d=n(e.startDirectionX,
  57. r(b.x-a.x)>r(b.y-a.y)),l=d?"x":"y",u,x,B=[],F=!1,y=e.obstacleMetrics,G=p(a.x,b.x)-y.maxWidth-10,z=q(a.x,b.x)+y.maxWidth+10,D=p(a.y,b.y)-y.maxHeight-10,E=q(a.y,b.y)+y.maxHeight+10,A=e.chartObstacles;u=k(A,G);y=k(A,z);A=A.slice(u,y+1);-1<(y=t(A,b))&&(x=c(A[y],b,a),B.push({end:b,start:x}),b=x);for(;-1<(y=t(A,b));)u=0>b[l]-a[l],x={x:b.x,y:b.y},x[l]=A[y][u?l+"Max":l+"Min"]+(u?1:-1),B.push({end:b,start:x}),b=x;a=f(a,b,d);a=a.concat(B.reverse());return{path:m(a),obstacles:a}},{requiresObstacles:!0})}}(C);
  58. (function(b){b.SVGRenderer.prototype.symbols.arrow=function(b,t,m,w){return["M",b,t+w/2,"L",b+m,t,"L",b,t+w/2,"L",b+m,t+w]};b.SVGRenderer.prototype.symbols["arrow-half"]=function(k,t,m,w){return b.SVGRenderer.prototype.symbols.arrow(k,t,m/2,w)};b.SVGRenderer.prototype.symbols["triangle-left"]=function(b,t,m,w){return["M",b+m,t,"L",b,t+w/2,"L",b+m,t+w,"Z"]};b.SVGRenderer.prototype.symbols["arrow-filled"]=b.SVGRenderer.prototype.symbols["triangle-left"];b.SVGRenderer.prototype.symbols["triangle-left-half"]=
  59. function(k,t,m,w){return b.SVGRenderer.prototype.symbols["triangle-left"](k,t,m/2,w)};b.SVGRenderer.prototype.symbols["arrow-filled-half"]=b.SVGRenderer.prototype.symbols["triangle-left-half"]})(C);(function(b,k){function t(c){var a=c.shapeArgs;return a?{xMin:a.x,xMax:a.x+a.width,yMin:a.y,yMax:a.y+a.height}:(a=c.graphic&&c.graphic.getBBox())?{xMin:c.plotX-a.width/2,xMax:c.plotX+a.width/2,yMin:c.plotY-a.height/2,yMax:c.plotY+a.height/2}:null}function m(c){for(var a=c.length,b=0,e,g,k=[],n=function(c,
  60. a,b){b=h(b,10);var d=c.yMax+b>a.yMin-b&&c.yMin-b<a.yMax+b,l=c.xMax+b>a.xMin-b&&c.xMin-b<a.xMax+b,e=d?c.xMin>a.xMax?c.xMin-a.xMax:a.xMin-c.xMax:Infinity,g=l?c.yMin>a.yMax?c.yMin-a.yMax:a.yMin-c.yMax:Infinity;return l&&d?b?n(c,a,Math.floor(b/2)):Infinity:f(e,g)};b<a;++b)for(e=b+1;e<a;++e)g=n(c[b],c[e]),80>g&&k.push(g);k.push(80);return v(Math.floor(k.sort(function(c,a){return c-a})[Math.floor(k.length/10)]/2-1),1)}function w(c,a,b){this.init(c,a,b)}function p(c){this.init(c)}function q(c){if(c.options.pathfinder||
  61. c.series.reduce(function(c,a){a.options&&e(!0,a.options.connectors=a.options.connectors||{},a.options.pathfinder);return c||a.options&&a.options.pathfinder},!1))e(!0,c.options.connectors=c.options.connectors||{},c.options.pathfinder),b.error('WARNING: Pathfinder options have been renamed. Use "chart.connectors" or "series.connectors" instead.')}var r=b.defined,n=b.deg2rad,a=b.extend,g=b.addEvent,e=b.merge,h=b.pick,v=Math.max,f=Math.min;a(b.defaultOptions,{connectors:{type:"straight",lineWidth:1,marker:{enabled:!1,
  62. align:"center",verticalAlign:"middle",inside:!1,lineWidth:1},startMarker:{symbol:"diamond"},endMarker:{symbol:"arrow-filled"}}});w.prototype={init:function(c,a,b){this.fromPoint=c;this.toPoint=a;this.options=b;this.chart=c.series.chart;this.pathfinder=this.chart.pathfinder},renderPath:function(c,a,b){var d=this.chart,f=d.styledMode,l=d.pathfinder,e=!d.options.chart.forExport&&!1!==b,h=this.graphics&&this.graphics.path;l.group||(l.group=d.renderer.g().addClass("highcharts-pathfinder-group").attr({zIndex:-1}).add(d.seriesGroup));
  63. l.group.translate(d.plotLeft,d.plotTop);h&&h.renderer||(h=d.renderer.path().add(l.group),f||h.attr({opacity:0}));h.attr(a);c={d:c};f||(c.opacity=1);h[e?"animate":"attr"](c,b);this.graphics=this.graphics||{};this.graphics.path=h},addMarker:function(c,a,b){var d=this.fromPoint.series.chart,f=d.pathfinder,d=d.renderer,l="start"===c?this.fromPoint:this.toPoint,e=l.getPathfinderAnchorPoint(a),h,g;a.enabled&&(b="start"===c?{x:b[4],y:b[5]}:{x:b[b.length-5],y:b[b.length-4]},b=l.getRadiansToVector(b,e),e=
  64. l.getMarkerVector(b,a.radius,e),b=-b/n,a.width&&a.height?(h=a.width,g=a.height):h=g=2*a.radius,this.graphics=this.graphics||{},e={x:e.x-h/2,y:e.y-g/2,width:h,height:g,rotation:b,rotationOriginX:e.x,rotationOriginY:e.y},this.graphics[c]?this.graphics[c].animate(e):(this.graphics[c]=d.symbol(a.symbol).addClass("highcharts-point-connecting-path-"+c+"-marker").attr(e).add(f.group),d.styledMode||this.graphics[c].attr({fill:a.color||this.fromPoint.color,stroke:a.lineColor,"stroke-width":a.lineWidth,opacity:0}).animate({opacity:1},
  65. l.series.options.animation)))},getPath:function(c){var a=this.pathfinder,f=this.chart,h=a.algorithms[c.type],g=a.chartObstacles;if("function"!==typeof h)b.error('"'+c.type+'" is not a Pathfinder algorithm.');else return h.requiresObstacles&&!g&&(g=a.chartObstacles=a.getChartObstacles(c),f.options.connectors.algorithmMargin=c.algorithmMargin,a.chartObstacleMetrics=a.getObstacleMetrics(g)),h(this.fromPoint.getPathfinderAnchorPoint(c.startMarker),this.toPoint.getPathfinderAnchorPoint(c.endMarker),e({chartObstacles:g,
  66. lineObstacles:a.lineObstacles||[],obstacleMetrics:a.chartObstacleMetrics,hardBounds:{xMin:0,xMax:f.plotWidth,yMin:0,yMax:f.plotHeight},obstacleOptions:{margin:c.algorithmMargin},startDirectionX:a.getAlgorithmStartDirection(c.startMarker)},c))},render:function(){var c=this.fromPoint,a=c.series,b=a.chart,h=b.pathfinder,g=e(b.options.connectors,a.options.connectors,c.options.connectors,this.options),k={};b.styledMode||(k.stroke=g.lineColor||c.color,k["stroke-width"]=g.lineWidth,g.dashStyle&&(k.dashstyle=
  67. g.dashStyle));k.class="highcharts-point-connecting-path highcharts-color-"+c.colorIndex;g=e(k,g);r(g.marker.radius)||(g.marker.radius=f(v(Math.ceil((g.algorithmMargin||8)/2)-1,1),5));c=this.getPath(g);b=c.path;c.obstacles&&(h.lineObstacles=h.lineObstacles||[],h.lineObstacles=h.lineObstacles.concat(c.obstacles));this.renderPath(b,k,a.options.animation);this.addMarker("start",e(g.marker,g.startMarker),b);this.addMarker("end",e(g.marker,g.endMarker),b)},destroy:function(){this.graphics&&(b.objectEach(this.graphics,
  68. function(a){a.destroy()}),delete this.graphics)}};p.prototype={algorithms:k,init:function(a){this.chart=a;this.connections=[];g(a,"redraw",function(){this.pathfinder.update()})},update:function(a){var c=this.chart,f=this,e=f.connections;f.connections=[];c.series.forEach(function(a){a.visible&&a.points.forEach(function(a){var d,e=a.options&&a.options.connect&&b.splat(a.options.connect);a.visible&&!1!==a.isInside&&e&&e.forEach(function(e){d=c.get("string"===typeof e?e:e.to);d instanceof b.Point&&d.series.visible&&
  69. d.visible&&!1!==d.isInside&&f.connections.push(new w(a,d,"string"===typeof e?{}:e))})})});for(var g=0,h,k,n=e.length,m=f.connections.length;g<n;++g){k=!1;for(h=0;h<m;++h)if(e[g].fromPoint===f.connections[h].fromPoint&&e[g].toPoint===f.connections[h].toPoint){f.connections[h].graphics=e[g].graphics;k=!0;break}k||e[g].destroy()}delete this.chartObstacles;delete this.lineObstacles;f.renderConnections(a)},renderConnections:function(a){a?this.chart.series.forEach(function(a){var c=function(){var c=a.chart.pathfinder;
  70. (c&&c.connections||[]).forEach(function(c){c.fromPoint&&c.fromPoint.series===a&&c.render()});a.pathfinderRemoveRenderEvent&&(a.pathfinderRemoveRenderEvent(),delete a.pathfinderRemoveRenderEvent)};!1===a.options.animation?c():a.pathfinderRemoveRenderEvent=g(a,"afterAnimate",c)}):this.connections.forEach(function(a){a.render()})},getChartObstacles:function(a){for(var c=[],b=this.chart.series,f=h(a.algorithmMargin,0),e,g=0,k=b.length;g<k;++g)if(b[g].visible)for(var n=0,q=b[g].points.length,p;n<q;++n)p=
  71. b[g].points[n],p.visible&&(p=t(p))&&c.push({xMin:p.xMin-f,xMax:p.xMax+f,yMin:p.yMin-f,yMax:p.yMax+f});c=c.sort(function(a,c){return a.xMin-c.xMin});r(a.algorithmMargin)||(e=a.algorithmMargin=m(c),c.forEach(function(a){a.xMin-=e;a.xMax+=e;a.yMin-=e;a.yMax+=e}));return c},getObstacleMetrics:function(a){for(var c=0,b=0,f,e,g=a.length;g--;)f=a[g].xMax-a[g].xMin,e=a[g].yMax-a[g].yMin,c<f&&(c=f),b<e&&(b=e);return{maxHeight:b,maxWidth:c}},getAlgorithmStartDirection:function(a){var c="top"!==a.verticalAlign&&
  72. "bottom"!==a.verticalAlign;return"left"!==a.align&&"right"!==a.align?c?void 0:!1:c?!0:void 0}};b.Connection=w;b.Pathfinder=p;a(b.Point.prototype,{getPathfinderAnchorPoint:function(a){var c=t(this),b,f;switch(a.align){case "right":b="xMax";break;case "left":b="xMin"}switch(a.verticalAlign){case "top":f="yMin";break;case "bottom":f="yMax"}return{x:b?c[b]:(c.xMin+c.xMax)/2,y:f?c[f]:(c.yMin+c.yMax)/2}},getRadiansToVector:function(a,b){r(b)||(b=t(this),b={x:(b.xMin+b.xMax)/2,y:(b.yMin+b.yMax)/2});return Math.atan2(b.y-
  73. a.y,a.x-b.x)},getMarkerVector:function(a,b,f){for(var c=2*Math.PI,d=t(this),e=d.xMax-d.xMin,g=d.yMax-d.yMin,h=Math.atan2(g,e),l=!1,e=e/2,k=g/2,n=d.xMin+e,d=d.yMin+k,m=n,r=d,p={},q=1,v=1;a<-Math.PI;)a+=c;for(;a>Math.PI;)a-=c;c=Math.tan(a);a>-h&&a<=h?(v=-1,l=!0):a>h&&a<=Math.PI-h?v=-1:a>Math.PI-h||a<=-(Math.PI-h)?(q=-1,l=!0):q=-1;l?(m+=q*e,r+=v*e*c):(m+=g/(2*c)*q,r+=v*k);f.x!==n&&(m=f.x);f.y!==d&&(r=f.y);p.x=m+b*Math.cos(a);p.y=r-b*Math.sin(a);return p}});b.Chart.prototype.callbacks.push(function(a){!1!==
  74. a.options.connectors.enabled&&(q(a),this.pathfinder=new p(this),this.pathfinder.update(!0))})})(C,H);(function(b){var k=b.addEvent,t=b.defined,m=b.Color,w=b.seriesTypes.column,p=b.correctFloat,q=b.isNumber,r=b.isObject,n=b.merge,a=b.pick,g=b.seriesType,e=b.Axis,h=b.Point,v=b.Series;g("xrange","column",{colorByPoint:!0,dataLabels:{verticalAlign:"middle",inside:!0,formatter:function(){var a=this.point.partialFill;r(a)&&(a=a.amount);t(a)||(a=0);return p(100*a)+"%"}},tooltip:{headerFormat:'\x3cspan style\x3d"font-size: 10px"\x3e{point.x} - {point.x2}\x3c/span\x3e\x3cbr/\x3e',
  75. pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.yCategory}\x3c/b\x3e\x3cbr/\x3e'},borderRadius:3,pointRange:0},{type:"xrange",parallelArrays:["x","x2","y"],requireSorting:!1,animate:b.seriesTypes.line.prototype.animate,cropShoulder:1,getExtremesFromAll:!0,autoIncrement:b.noop,getColumnMetrics:function(){function a(){b.series.forEach(function(a){var c=a.xAxis;a.xAxis=a.yAxis;a.yAxis=c})}var c,b=this.chart;a();c=w.prototype.getColumnMetrics.call(this);
  76. a();return c},cropData:function(a,c,b,e){c=v.prototype.cropData.call(this,this.x2Data,c,b,e);c.xData=a.slice(c.start,c.end);return c},translatePoint:function(b){var c=this.xAxis,d=this.yAxis,f=this.columnMetrics,e=this.options,g=e.minPointLength||0,h=b.plotX,k=a(b.x2,b.x+(b.len||0)),m=c.translate(k,0,0,0,1),k=Math.abs(m-h),p=this.chart.inverted,v=a(e.borderWidth,1)%2/2,w=f.offset,C=Math.round(f.width);g&&(g-=k,0>g&&(g=0),h-=g/2,m+=g/2);h=Math.max(h,-10);m=Math.min(Math.max(m,-10),c.len+10);t(b.options.pointWidth)&&
  77. (w-=(Math.ceil(b.options.pointWidth)-C)/2,C=Math.ceil(b.options.pointWidth));e.pointPlacement&&q(b.plotY)&&d.categories&&(b.plotY=d.translate(b.y,0,1,0,1,e.pointPlacement));b.shapeArgs={x:Math.floor(Math.min(h,m))+v,y:Math.floor(b.plotY+w)+v,width:Math.round(Math.abs(m-h)),height:C,r:this.options.borderRadius};e=b.shapeArgs.x;g=e+b.shapeArgs.width;0>e||g>c.len?(e=Math.min(c.len,Math.max(0,e)),g=Math.max(0,Math.min(g,c.len)),m=g-e,b.dlBox=n(b.shapeArgs,{x:e,width:g-e,centerX:m?m/2:null})):b.dlBox=
  78. null;p?(b.tooltipPos[1]+=k/2*(c.reversed?1:-1),b.tooltipPos[0]+=f.width/2,b.tooltipPos[1]=Math.max(Math.min(b.tooltipPos[1],c.len-1),0),b.tooltipPos[0]=Math.max(Math.min(b.tooltipPos[0],d.len-1),0)):(b.tooltipPos[0]+=k/2*(c.reversed?-1:1),b.tooltipPos[1]-=f.width/2,b.tooltipPos[0]=Math.max(Math.min(b.tooltipPos[0],c.len-1),0),b.tooltipPos[1]=Math.max(Math.min(b.tooltipPos[1],d.len-1),0));if(d=b.partialFill)r(d)&&(d=d.amount),q(d)||(d=0),c=b.shapeArgs,b.partShapeArgs={x:c.x,y:c.y,width:c.width,height:c.height,
  79. r:this.options.borderRadius},b.clipRectArgs={x:c.x,y:c.y,width:Math.max(Math.round(k*d+(b.plotX-h)),0),height:c.height}},translate:function(){w.prototype.translate.apply(this,arguments);this.points.forEach(function(a){this.translatePoint(a)},this)},drawPoint:function(a,c){var b=this.options,f=this.chart.renderer,e=a.graphic,g=a.shapeType,h=a.shapeArgs,k=a.partShapeArgs,p=a.clipRectArgs,q=a.partialFill,v=a.selected&&"select",t=b.stacking&&!b.borderRadius;if(a.isNull)e&&(a.graphic=e.destroy());else{if(e)a.graphicOriginal[c](n(h));
  80. else a.graphic=e=f.g("point").addClass(a.getClassName()).add(a.group||this.group),a.graphicOriginal=f[g](h).addClass(a.getClassName()).addClass("highcharts-partfill-original").add(e);k&&(a.graphicOverlay?(a.graphicOverlay[c](n(k)),a.clipRect.animate(n(p))):(a.clipRect=f.clipRect(p.x,p.y,p.width,p.height),a.graphicOverlay=f[g](k).addClass("highcharts-partfill-overlay").add(e).clip(a.clipRect)));this.chart.styledMode||(a.graphicOriginal.attr(this.pointAttribs(a,v)).shadow(b.shadow,null,t),k&&(r(q)||
  81. (q={}),r(b.partialFill)&&(q=n(q,b.partialFill)),c=q.fill||m(a.color||this.color).brighten(-.3).get(),a.graphicOverlay.attr(this.pointAttribs(a,v)).attr({fill:c}).shadow(b.shadow,null,t)))}},drawPoints:function(){var a=this,c=a.getAnimationVerb();a.points.forEach(function(b){a.drawPoint(b,c)})},getAnimationVerb:function(){return this.chart.pointCount<(this.options.animationLimit||250)?"animate":"attr"}},{applyOptions:function(){var a,c=h.prototype.applyOptions.apply(this,arguments),b=c.series;if(b.options.colorByPoint&&
  82. !c.options.color){a=b.options.colors||b.chart.options.colors;var e=c.y%(a?a.length:b.chart.options.chart.colorCount);a=a&&a[e];b.chart.styledMode||(c.color=a);c.options.colorIndex||(c.colorIndex=e)}return c},init:function(){h.prototype.init.apply(this,arguments);this.y||(this.y=0);return this},setState:function(){h.prototype.setState.apply(this,arguments);this.series.drawPoint(this,this.series.getAnimationVerb())},getLabelConfig:function(){var a=h.prototype.getLabelConfig.call(this),c=this.series.yAxis.categories;
  83. a.x2=this.x2;a.yCategory=this.yCategory=c&&c[this.y];return a},tooltipDateKeys:["x","x2"],isValid:function(){return"number"===typeof this.x&&"number"===typeof this.x2}});k(e,"afterGetSeriesExtremes",function(){var b=this.series,c,d;this.isXAxis&&(c=a(this.dataMax,-Number.MAX_VALUE),b.forEach(function(a){a.x2Data&&a.x2Data.forEach(function(a){a>c&&(c=a,d=!0)})}),d&&(this.dataMax=c))})})(C);(function(b){var k=b.dateFormat,t=b.isObject,m=b.isNumber,w=b.merge,p=b.pick,q=b.seriesType,r=b.stop,n=b.seriesTypes.xrange;
  84. q("gantt","xrange",{grouping:!1,dataLabels:{enabled:!0,formatter:function(){var a=this.point.partialFill;t(a)&&(a=a.amount);if(m(a)&&0<a)return 100*a+"%"}},tooltip:{headerFormat:'\x3cspan style\x3d"font-size: 10px"\x3e{series.name}\x3c/span\x3e\x3cbr/\x3e',pointFormat:null,pointFormatter:function(){var a=this.series,g=a.chart.tooltip,e=a.xAxis,h=e.options.dateTimeLabelFormats,m=e.options.startOfWeek,f=a.tooltipOptions,c=f.xDateFormat,d=this.end?this.end-this.start:0,a=this.options.milestone,e="\x3cb\x3e"+
  85. (this.name||this.yCategory)+"\x3c/b\x3e";if(f.pointFormat)return this.tooltipFormatter(f.pointFormat);c||(c=b.splat(g.getDateFormat(d,this.start,m,h))[0]);g=k(c,this.start);h=k(c,this.end);e+="\x3cbr/\x3e";return a?e+("Date "+g+"\x3cbr/\x3e"):e+("Start: "+g+"\x3cbr/\x3e")+("End: "+h+"\x3cbr/\x3e")}},connectors:{type:"simpleConnect",animation:{reversed:!0},startMarker:{enabled:!0,symbol:"arrow-filled",radius:4,fill:"#fa0",align:"left"},endMarker:{enabled:!1,align:"right"}}},{pointArrayMap:["start",
  86. "end","y"],keyboardMoveVertical:!1,translatePoint:function(a){var b,e;n.prototype.translatePoint.call(this,a);a.options.milestone&&(b=a.shapeArgs,e=b.height,a.shapeArgs={x:b.x-e/2,y:b.y,width:e,height:e})},drawPoint:function(a,b){var e=this.options,g=this.chart.renderer,k=a.shapeArgs,f=a.plotY,c=a.graphic,d=a.selected&&"select",l=e.stacking&&!e.borderRadius;a.options.milestone?m(f)&&null!==a.y?(k=g.symbols.diamond(k.x,k.y,k.width,k.height),c?(r(c),c[b]({d:k})):a.graphic=g.path(k).addClass(a.getClassName(),
  87. !0).add(a.group||this.group),this.chart.styledMode||a.graphic.attr(this.pointAttribs(a,d)).shadow(e.shadow,null,l)):c&&(a.graphic=c.destroy()):n.prototype.drawPoint.call(this,a,b)},setData:b.Series.prototype.setData,setGanttPointAliases:function(a){function b(b,g){void 0!==g&&(a[b]=g)}b("x",p(a.start,a.x));b("x2",p(a.end,a.x2));b("partialFill",p(a.completed,a.partialFill));b("connect",p(a.dependency,a.connect))}},w(n.prototype.pointClass.prototype,{applyOptions:function(a,g){a=w(a);b.seriesTypes.gantt.prototype.setGanttPointAliases(a);
  88. return a=n.prototype.pointClass.prototype.applyOptions.call(this,a,g)}}))})(C);(function(b){var k=b.merge,t=b.splat,m=b.Chart;b.ganttChart=function(w,p,q){var r="string"===typeof w||w.nodeName,n=p.series,a=b.getOptions(),g,e=p;p=arguments[r?1:0];b.isArray(p.xAxis)||(p.xAxis=[p.xAxis||{},{}]);p.xAxis=p.xAxis.map(function(b,e){1===e&&(g=0);return k(a.xAxis,{grid:{enabled:!0},opposite:!0,linkedTo:g},b,{type:"datetime"})});p.yAxis=t(p.yAxis||{}).map(function(b){return k(a.yAxis,{grid:{enabled:!0},staticScale:50,
  89. reversed:!0,type:b.categories?b.type:"treegrid"},b)});p.series=null;p=k(!0,{chart:{type:"gantt"},title:{text:null},legend:{enabled:!1}},p,{isGantt:!0});p.series=e.series=n;p.series.forEach(function(a){a.data.forEach(function(a){b.seriesTypes.gantt.prototype.setGanttPointAliases(a)})});return r?new m(w,p,q):new m(p,p)}})(C)});
  90. //# sourceMappingURL=gantt.js.map