highcharts
Version:
JavaScript charting framework
107 lines (104 loc) • 87.3 kB
JavaScript
/*
Highcharts Gantt JS v8.0.1 (2020-03-02)
Gantt series
(c) 2016-2019 Lars A. V. Cabrera
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?(n["default"]=n,module.exports=n):"function"===typeof define&&define.amd?define("highcharts/modules/gantt",["highcharts"],function(G){n(G);n.Highcharts=G;return n}):n("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(n){function G(e,a,v,l){e.hasOwnProperty(a)||(e[a]=l.apply(null,v))}n=n?n._modules:{};G(n,"parts-gantt/CurrentDateIndicator.js",[n["parts/Globals.js"],n["parts/Utilities.js"]],function(e,a){var v=a.addEvent,l=a.merge;a=
a.wrap;var w=e.PlotLineOrBand,D={currentDateIndicator:!0,color:"#ccd6eb",width:2,label:{format:"%a, %b %d %Y, %H:%M",formatter:function(a,l){return e.dateFormat(l,a)},rotation:0,style:{fontSize:"10px"}}};v(e.Axis,"afterSetOptions",function(){var a=this.options,e=a.currentDateIndicator;e&&(e="object"===typeof e?l(D,e):l(D),e.value=new Date,a.plotLines||(a.plotLines=[]),a.plotLines.push(e))});v(w,"render",function(){this.label&&this.label.attr({text:this.getLabelText(this.options.label)})});a(w.prototype,
"getLabelText",function(a,l){var e=this.options;return e.currentDateIndicator&&e.label&&"function"===typeof e.label.formatter?(e.value=new Date,e.label.formatter.call(this,e.value,e.label.format)):a.call(this,l)})});G(n,"parts-gantt/GridAxis.js",[n["parts/Globals.js"],n["parts/Tick.js"],n["parts/Utilities.js"]],function(e,a,v){var l=v.addEvent,w=v.defined,D=v.erase,n=v.find,z=v.isArray,y=v.isNumber,x=v.merge,r=v.pick,m=v.timeUnits,A=v.wrap,F=e.dateFormat,t=function(b){return v.isObject(b,!0)},h=e.Chart,
c=e.Axis,k=function(b){var d=b.options;d.labels||(d.labels={});d.labels.align=r(d.labels.align,"center");b.categories||(d.showLastLabel=!1);b.labelRotation=0;d.labels.rotation=0},B={top:0,right:1,bottom:2,left:3,0:"top",1:"right",2:"bottom",3:"left"};c.prototype.isOuterAxis=function(){var b=this,d=b.columnIndex,p=b.linkedParent&&b.linkedParent.columns||b.columns,c=d?b.linkedParent:b,f=-1,k=0;b.chart[b.coll].forEach(function(g,q){g.side!==b.side||g.options.isInternal||(k=q,g===c&&(f=q))});return k===
f&&(y(d)?p.length===d:!0)};c.prototype.getMaxLabelDimensions=function(b,d){var p={width:0,height:0};d.forEach(function(d){d=b[d];if(t(d)){var c=t(d.label)?d.label:{};d=c.getBBox?c.getBBox().height:0;c.textStr&&!y(c.textPxLength)&&(c.textPxLength=c.getBBox().width);c=y(c.textPxLength)?Math.round(c.textPxLength):0;p.height=Math.max(d,p.height);p.width=Math.max(c,p.width)}});return p};e.dateFormats.W=function(b){b=new this.Date(b);var d=(this.get("Day",b)+6)%7,p=new this.Date(b.valueOf());this.set("Date",
p,this.get("Date",b)-d+3);d=new this.Date(this.get("FullYear",p),0,1);4!==this.get("Day",d)&&(this.set("Month",b,0),this.set("Date",b,1+(11-this.get("Day",d))%7));return(1+Math.floor((p.valueOf()-d.valueOf())/6048E5)).toString()};e.dateFormats.E=function(b){return F("%a",b,!0).charAt(0)};l(a,"afterGetLabelPosition",function(b){var d=this.label,p=this.axis,c=p.reversed,f=p.chart,k=p.options,g=k&&t(k.grid)?k.grid:{};k=p.options.labels;var q=k.align,u=B[p.side],C=b.tickmarkOffset,H=p.tickPositions,J=
this.pos-C;H=y(H[b.index+1])?H[b.index+1]-C:p.max+C;var I=p.tickSize("tick",!0);C=z(I)?I[0]:0;I=I&&I[1]/2;if(!0===g.enabled){if("top"===u){g=p.top+p.offset;var h=g-C}else"bottom"===u?(h=f.chartHeight-p.bottom+p.offset,g=h+C):(g=p.top+p.len-p.translate(c?H:J),h=p.top+p.len-p.translate(c?J:H));"right"===u?(u=f.chartWidth-p.right+p.offset,c=u+C):"left"===u?(c=p.left+p.offset,u=c-C):(u=Math.round(p.left+p.translate(c?H:J))-I,c=Math.round(p.left+p.translate(c?J:H))-I);this.slotWidth=c-u;b.pos.x="left"===
q?u:"right"===q?c:u+(c-u)/2;b.pos.y=h+(g-h)/2;f=f.renderer.fontMetrics(k.style.fontSize,d.element);d=d.getBBox().height;k.useHTML?b.pos.y+=f.b+-(d/2):(d=Math.round(d/f.h),b.pos.y+=(f.b-(f.h-f.f))/2+-((d-1)*f.h/2));b.pos.x+=p.horiz&&k.x||0}});l(c,"afterTickSize",function(b){var d=this.defaultLeftAxisOptions,c=this.horiz,f=this.options.grid;f=void 0===f?{}:f;var k=this.maxLabelDimensions;f.enabled&&(d=2*Math.abs(d.labels.x),c=c?f.cellHeight||d+k.height:d+k.width,z(b.tickSize)?b.tickSize[0]=c:b.tickSize=
[c])});l(c,"afterGetTitlePosition",function(b){var d=this.options;if(!0===(d&&t(d.grid)?d.grid:{}).enabled){var c=this.axisTitle,f=c&&c.getBBox().width,k=this.horiz,h=this.left,g=this.top,q=this.width,u=this.height,C=d.title;d=this.opposite;var H=this.offset,J=this.tickSize()||[0],I=C.x||0,P=C.y||0,m=r(C.margin,k?5:10);c=this.chart.renderer.fontMetrics(C.style&&C.style.fontSize,c).f;J=(k?g+u:h)+J[0]/2*(d?-1:1)*(k?1:-1)+(this.side===B.bottom?c:0);b.titlePosition.x=k?h-f/2-m+I:J+(d?q:0)+H+I;b.titlePosition.y=
k?J-(d?u:0)+(d?c:-c)/2+H+P:g-m+P}});A(c.prototype,"unsquish",function(b){var d=this.options;return!0===(d&&t(d.grid)?d.grid:{}).enabled&&this.categories?this.tickInterval:b.apply(this,Array.prototype.slice.call(arguments,1))});l(c,"afterSetOptions",function(b){var d=this.options;b=b.userOptions;var c=d&&t(d.grid)?d.grid:{};if(!0===c.enabled){var f=x(!0,{className:"highcharts-grid-axis "+(b.className||""),dateTimeLabelFormats:{hour:{list:["%H:%M","%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"}},margin:0,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]]},b);"xAxis"===this.coll&&(w(b.linkedTo)&&!w(b.tickPixelInterval)&&(f.tickPixelInterval=350),w(b.tickPixelInterval)||!w(b.linkedTo)||w(b.tickPositioner)||w(b.tickInterval)||(f.tickPositioner=
function(b,d){var g=this.linkedParent&&this.linkedParent.tickPositions&&this.linkedParent.tickPositions.info;if(g){var q,u=f.units;for(q=0;q<u.length;q++)if(u[q][0]===g.unitName){var c=q;break}if(u[c+1]){var p=u[c+1][0];var k=(u[c+1][1]||[1])[0]}else"year"===g.unitName&&(p="year",k=10*g.count);g=m[p];this.tickInterval=g*k;return this.getTimeTicks({unitRange:g,count:k,unitName:p},b,d,this.options.startOfWeek)}}));x(!0,this.options,f);this.horiz&&(d.minPadding=r(b.minPadding,0),d.maxPadding=r(b.maxPadding,
0));y(d.grid.borderWidth)&&(d.tickWidth=d.lineWidth=c.borderWidth)}});l(c,"afterSetAxisTranslation",function(){var b=this.options,d=b&&t(b.grid)?b.grid:{},c=this.tickPositions&&this.tickPositions.info,f=this.userOptions.labels||{};this.horiz&&(!0===d.enabled&&this.series.forEach(function(b){b.options.pointRange=0}),c&&(!1===b.dateTimeLabelFormats[c.unitName].range||1<c.count)&&!w(f.align)&&(b.labels.align="left",w(f.x)||(b.labels.x=3)))});l(c,"trimTicks",function(){var b=this.options,d=b&&t(b.grid)?
b.grid:{},c=this.categories,f=this.tickPositions,k=f[0],h=f[f.length-1],g=this.linkedParent&&this.linkedParent.min||this.min,q=this.linkedParent&&this.linkedParent.max||this.max,u=this.tickInterval;!0!==d.enabled||c||!this.horiz&&!this.isLinked||(k<g&&k+u>g&&!b.startOnTick&&(f[0]=g),h>q&&h-u<q&&!b.endOnTick&&(f[f.length-1]=q))});l(c,"afterRender",function(){var b=this.options,d=b&&t(b.grid)?b.grid:{},c=this.chart.renderer;if(!0===d.enabled){this.maxLabelDimensions=this.getMaxLabelDimensions(this.ticks,
this.tickPositions);this.rightWall&&this.rightWall.destroy();if(this.isOuterAxis()&&this.axisLine){var f=b.lineWidth;if(f){var k=this.getLinePath(f);var h=k.indexOf("M")+1;var g=k.indexOf("L")+1;d=k.indexOf("M")+2;var q=k.indexOf("L")+2;var u=(this.tickSize("tick")[0]-1)*(this.side===B.top||this.side===B.left?-1:1);this.horiz?(k[d]+=u,k[q]+=u):(k[h]+=u,k[g]+=u);this.axisLineExtra?this.axisLineExtra.animate({d:k}):(this.axisLineExtra=c.path(k).attr({zIndex:7}).addClass("highcharts-axis-line").add(this.axisGroup),
c.styledMode||this.axisLineExtra.attr({stroke:b.lineColor,"stroke-width":f}));this.axisLine[this.showAxis?"show":"hide"](!0)}}(this.columns||[]).forEach(function(b){b.render()})}});var f={afterGetOffset:function(){(this.columns||[]).forEach(function(b){b.getOffset()})},afterInit:function(){var b=this.chart,d=this.userOptions,f=this.options;f=f&&t(f.grid)?f.grid:{};f.enabled&&(k(this),A(this,"labelFormatter",function(b){var g=this.axis,d=g.tickPositions,c=this.value,f=(g.isLinked?g.linkedParent:g).series[0],
p=c===d[0];d=c===d[d.length-1];f=f&&n(f.options.data,function(b){return b[g.isXAxis?"x":"y"]===c});this.isFirst=p;this.isLast=d;this.point=f;return b.call(this)}));if(f.columns)for(var h=this.columns=[],r=this.columnIndex=0;++r<f.columns.length;){var B=x(d,f.columns[f.columns.length-r-1],{linkedTo:0,type:"category"});delete B.grid.columns;B=new c(this.chart,B,!0);B.isColumn=!0;B.columnIndex=r;D(b.axes,B);D(b[this.coll],B);h.push(B)}},afterSetOptions:function(b){b=(b=b.userOptions)&&t(b.grid)?b.grid:
{};var d=b.columns;b.enabled&&d&&x(!0,this.options,d[d.length-1])},afterSetScale:function(){(this.columns||[]).forEach(function(b){b.setScale()})},destroy:function(b){(this.columns||[]).forEach(function(d){d.destroy(b.keepEvents)})},init:function(b){var d=(b=b.userOptions)&&t(b.grid)?b.grid:{};d.enabled&&w(d.borderColor)&&(b.tickColor=b.lineColor=d.borderColor)}};Object.keys(f).forEach(function(b){l(c,b,f[b])});l(h,"afterSetChartSize",function(){this.axes.forEach(function(b){(b.columns||[]).forEach(function(b){b.setAxisSize();
b.setAxisTranslation()})})})});G(n,"modules/static-scale.src.js",[n["parts/Globals.js"],n["parts/Utilities.js"]],function(e,a){var v=a.addEvent,l=a.defined,w=a.isNumber,D=a.pick;a=e.Chart;v(e.Axis,"afterSetOptions",function(){var a=this.chart.options&&this.chart.options.chart;!this.horiz&&w(this.options.staticScale)&&(!a.height||a.scrollablePlotArea&&a.scrollablePlotArea.minHeight)&&(this.staticScale=this.options.staticScale)});a.prototype.adjustHeight=function(){"adjustHeight"!==this.redrawTrigger&&
((this.axes||[]).forEach(function(a){var e=a.chart,y=!!e.initiatedScale&&e.options.animation,x=a.options.staticScale;if(a.staticScale&&l(a.min)){var r=D(a.unitLength,a.max+a.tickInterval-a.min)*x;r=Math.max(r,x);x=r-e.plotHeight;1<=Math.abs(x)&&(e.plotHeight=r,e.redrawTrigger="adjustHeight",e.setSize(void 0,e.chartHeight+x,y));a.series.forEach(function(r){(r=r.sharedClipKey&&e[r.sharedClipKey])&&r.attr({height:e.plotHeight})})}}),this.initiatedScale=!0);this.redrawTrigger=null};v(a,"render",a.prototype.adjustHeight)});
G(n,"mixins/tree-series.js",[n["parts/Color.js"],n["parts/Utilities.js"]],function(e,a){var v=a.extend,l=a.isArray,w=a.isNumber,D=a.isObject,n=a.merge,z=a.pick;return{getColor:function(a,x){var r=x.index,m=x.mapOptionsToLevel,A=x.parentColor,l=x.parentColorIndex,t=x.series,h=x.colors,c=x.siblings,k=t.points,B=t.chart.options.chart,f;if(a){k=k[a.i];a=m[a.level]||{};if(m=k&&a.colorByPoint){var b=k.index%(h?h.length:B.colorCount);var d=h&&h[b]}if(!t.chart.styledMode){h=k&&k.options.color;B=a&&a.color;
if(f=A)f=(f=a&&a.colorVariation)&&"brightness"===f.key?e.parse(A).brighten(r/c*f.to).get():A;f=z(h,B,d,f,t.color)}var p=z(k&&k.options.colorIndex,a&&a.colorIndex,b,l,x.colorIndex)}return{color:f,colorIndex:p}},getLevelOptions:function(a){var x=null;if(D(a)){x={};var r=w(a.from)?a.from:1;var m=a.levels;var A={};var e=D(a.defaults)?a.defaults:{};l(m)&&(A=m.reduce(function(a,h){if(D(h)&&w(h.level)){var c=n({},h);var k="boolean"===typeof c.levelIsConstant?c.levelIsConstant:e.levelIsConstant;delete c.levelIsConstant;
delete c.level;h=h.level+(k?0:r-1);D(a[h])?v(a[h],c):a[h]=c}return a},{}));m=w(a.to)?a.to:1;for(a=0;a<=m;a++)x[a]=n({},e,D(A[a])?A[a]:{})}return x},setTreeValues:function m(a,r){var A=r.before,x=r.idRoot,t=r.mapIdToNode[x],h=r.points[a.i],c=h&&h.options||{},k=0,B=[];v(a,{levelDynamic:a.level-(("boolean"===typeof r.levelIsConstant?r.levelIsConstant:1)?0:t.level),name:z(h&&h.name,""),visible:x===a.id||("boolean"===typeof r.visible?r.visible:!1)});"function"===typeof A&&(a=A(a,r));a.children.forEach(function(c,
b){var d=v({},r);v(d,{index:b,siblings:a.children.length,visible:a.visible});c=m(c,d);B.push(c);c.visible&&(k+=c.val)});a.visible=0<k||a.visible;A=z(c.value,k);v(a,{children:B,childrenTotal:k,isLeaf:a.visible&&!k,val:A});return a},updateRootId:function(a){if(D(a)){var r=D(a.options)?a.options:{};r=z(a.rootNode,r.rootId,"");D(a.userOptions)&&(a.userOptions.rootId=r);a.rootNode=r}return r}}});G(n,"parts-gantt/Tree.js",[n["parts/Utilities.js"]],function(e){var a=e.extend,v=e.isNumber,l=e.pick,w=function(a,
e){var v=a.reduce(function(a,r){var m=l(r.parent,"");"undefined"===typeof a[m]&&(a[m]=[]);a[m].push(r);return a},{});Object.keys(v).forEach(function(a,r){var m=v[a];""!==a&&-1===e.indexOf(a)&&(m.forEach(function(a){r[""].push(a)}),delete r[a])});return v},D=function(e,w,n,x,r,m){var A=0,F=0,t=m&&m.after,h=m&&m.before;w={data:x,depth:n-1,id:e,level:n,parent:w};var c,k;"function"===typeof h&&h(w,m);h=(r[e]||[]).map(function(a){var f=D(a.id,e,n+1,a,r,m),b=a.start;a=!0===a.milestone?b:a.end;c=!v(c)||
b<c?b:c;k=!v(k)||a>k?a:k;A=A+1+f.descendants;F=Math.max(f.height+1,F);return f});x&&(x.start=l(x.start,c),x.end=l(x.end,k));a(w,{children:h,descendants:A,height:F});"function"===typeof t&&t(w,m);return w};return{getListOfParents:w,getNode:D,getTree:function(a,e){var l=a.map(function(a){return a.id});a=w(a,l);return D("",null,1,null,a,e)}}});G(n,"modules/broken-axis.src.js",[n["parts/Globals.js"],n["parts/Utilities.js"]],function(e,a){var v=a.addEvent,l=a.extend,w=a.find,n=a.fireEvent,E=a.isArray,
z=a.pick,y=e.Axis;a=e.Series;var x=function(a,m){return w(m,function(r){return r.from<a&&a<r.to})};l(y.prototype,{isInBreak:function(a,m){var r=a.repeat||Infinity,e=a.from,t=a.to-a.from;m=m>=e?(m-e)%r:r-(e-m)%r;return a.inclusive?m<=t:m<t&&0!==m},isInAnyBreak:function(a,m){var r=this.options.breaks,e=r&&r.length,t;if(e){for(;e--;)if(this.isInBreak(r[e],a)){var h=!0;t||(t=z(r[e].showPoints,!this.isXAxis))}var c=h&&m?h&&!t:h}return c}});v(y,"afterInit",function(){"function"===typeof this.setBreaks&&
this.setBreaks(this.options.breaks,!1)});v(y,"afterSetTickPositions",function(){if(this.isBroken){var a=this.tickPositions,m=this.tickPositions.info,e=[],l;for(l=0;l<a.length;l++)this.isInAnyBreak(a[l])||e.push(a[l]);this.tickPositions=e;this.tickPositions.info=m}});v(y,"afterSetOptions",function(){this.isBroken&&(this.options.ordinal=!1)});y.prototype.setBreaks=function(a,m){function r(c){var k=c,a;for(a=0;a<t.breakArray.length;a++){var f=t.breakArray[a];if(f.to<=c)k-=f.len;else if(f.from>=c)break;
else if(t.isInBreak(f,c)){k-=c-f.from;break}}return k}function e(c){var k;for(k=0;k<t.breakArray.length;k++){var a=t.breakArray[k];if(a.from>=c)break;else a.to<c?c+=a.len:t.isInBreak(a,c)&&(c+=a.len)}return c}var t=this,h=E(a)&&!!a.length;t.isDirty=t.isBroken!==h;t.isBroken=h;t.options.breaks=t.userOptions.breaks=a;t.forceRedraw=!0;t.series.forEach(function(c){c.isDirty=!0});h||t.val2lin!==r||(delete t.val2lin,delete t.lin2val);h&&(t.userOptions.ordinal=!1,t.val2lin=r,t.lin2val=e,t.setExtremes=function(c,
a,h,f,b){if(this.isBroken){for(var d,p=this.options.breaks;d=x(c,p);)c=d.to;for(;d=x(a,p);)a=d.from;a<c&&(a=c)}y.prototype.setExtremes.call(this,c,a,h,f,b)},t.setAxisTranslation=function(c){y.prototype.setAxisTranslation.call(this,c);this.unitLength=null;if(this.isBroken){c=t.options.breaks;var a=[],h=[],f=0,b,d=t.userMin||t.min,p=t.userMax||t.max,r=z(t.pointRangePadding,0),m;c.forEach(function(g){b=g.repeat||Infinity;t.isInBreak(g,d)&&(d+=g.to%b-d%b);t.isInBreak(g,p)&&(p-=p%b-g.from%b)});c.forEach(function(q){g=
q.from;for(b=q.repeat||Infinity;g-b>d;)g-=b;for(;g<d;)g+=b;for(m=g;m<p;m+=b)a.push({value:m,move:"in"}),a.push({value:m+(q.to-q.from),move:"out",size:q.breakSize})});a.sort(function(b,g){return b.value===g.value?("in"===b.move?0:1)-("in"===g.move?0:1):b.value-g.value});var e=0;var g=d;a.forEach(function(b){e+="in"===b.move?1:-1;1===e&&"in"===b.move&&(g=b.value);0===e&&(h.push({from:g,to:b.value,len:b.value-g-(b.size||0)}),f+=b.value-g-(b.size||0))});t.breakArray=h;t.unitLength=p-d-f+r;n(t,"afterBreaks");
t.staticScale?t.transA=t.staticScale:t.unitLength&&(t.transA*=(p-t.min+r)/t.unitLength);r&&(t.minPixelPadding=t.transA*t.minPointOffset);t.min=d;t.max=p}});z(m,!0)&&this.chart.redraw()};v(a,"afterGeneratePoints",function(){var a=this.options.connectNulls,m=this.points,e=this.xAxis,l=this.yAxis;if(this.isDirty)for(var t=m.length;t--;){var h=m[t],c=!(null===h.y&&!1===a)&&(e&&e.isInAnyBreak(h.x,!0)||l&&l.isInAnyBreak(h.y,!0));h.visible=c?!1:!1!==h.options.visible}});v(a,"afterRender",function(){this.drawBreaks(this.xAxis,
["x"]);this.drawBreaks(this.yAxis,z(this.pointArrayMap,["y"]))});e.Series.prototype.drawBreaks=function(a,m){var r=this,e=r.points,t,h,c,k;a&&m.forEach(function(m){t=a.breakArray||[];h=a.isXAxis?a.min:z(r.options.threshold,a.min);e.forEach(function(f){k=z(f["stack"+m.toUpperCase()],f[m]);t.forEach(function(b){c=!1;if(h<b.from&&k>b.to||h>b.from&&k<b.from)c="pointBreak";else if(h<b.from&&k>b.from&&k<b.to||h>b.from&&k>b.to&&k<b.from)c="pointInBreak";c&&n(a,c,{point:f,brk:b})})})})};e.Series.prototype.gappedPath=
function(){var a=this.currentDataGrouping,m=a&&a.gapSize;a=this.options.gapSize;var l=this.points.slice(),x=l.length-1,t=this.yAxis,h;if(a&&0<x)for("value"!==this.options.gapUnit&&(a*=this.basePointRange),m&&m>a&&m>=this.basePointRange&&(a=m),h=void 0;x--;)h&&!1!==h.visible||(h=l[x+1]),m=l[x],!1!==h.visible&&!1!==m.visible&&(h.x-m.x>a&&(h=(m.x+h.x)/2,l.splice(x+1,0,{isNull:!0,x:h}),this.options.stacking&&(h=t.stacks[this.stackKey][h]=new e.StackItem(t,t.options.stackLabels,!1,h,this.stack),h.total=
0)),h=m);return this.getGraphPath(l)}});G(n,"parts-gantt/TreeGrid.js",[n["parts/Globals.js"],n["mixins/tree-series.js"],n["parts/Tick.js"],n["parts-gantt/Tree.js"],n["parts/Utilities.js"]],function(e,a,v,l,w){var n=w.addEvent,E=w.defined,z=w.fireEvent,y=w.extend,x=w.isNumber,r=w.isString,m=w.merge,A=w.pick,F=w.wrap,t=function(b){return Array.prototype.slice.call(b,1)},h=w.find,c=a.getLevelOptions,k=function(b){return w.isObject(b,!0)};e=e.Axis;a=function(b,q){var g;for(g in q)if(Object.hasOwnProperty.call(q,
g)){var d=q[g];F(b,g,d)}};var B=function(b,q){var g=b.collapseStart;b=b.collapseEnd;b>=q&&(g-=.5);return{from:g,to:b,showPoints:!1}},f=function(b){return Object.keys(b.mapOfPosToGridNode).reduce(function(g,d){d=+d;b.min<=d&&b.max>=d&&!b.isInAnyBreak(d)&&g.push(d);return g},[])},b=function(b,d){var g=b.options.breaks||[],q=B(d,b.max);return g.some(function(b){return b.from===q.from&&b.to===q.to})},d=function(b,d){var g=b.options.breaks||[];b=B(d,b.max);g.push(b);return g},p=function(b,d){var g=b.options.breaks||
[],q=B(d,b.max);return g.reduce(function(b,g){g.to===q.to&&g.from===q.from||b.push(g);return b},[])},S=function(b,d){var g=b.labelIcon,q=!g,c=d.renderer,f=d.xy,a=d.options,p=a.width,k=a.height,h=f.x-p/2-a.padding;f=f.y-k/2;var r=d.collapsed?90:180,m=d.show&&x(f);q&&(b.labelIcon=g=c.path(c.symbols[a.type](a.x,a.y,p,k)).addClass("highcharts-label-icon").add(d.group));m||g.attr({y:-9999});c.styledMode||g.attr({"stroke-width":1,fill:A(d.color,"#666666")}).css({cursor:"pointer",stroke:a.lineColor,strokeWidth:a.lineWidth});
g[q?"attr":"animate"]({translateX:h,translateY:f,rotation:r})},K=function(b,d,c){var g=[],q=[],f={},a={},u=-1,p="boolean"===typeof d?d:!1;b=l.getTree(b,{after:function(b){b=a[b.pos];var g=0,d=0;b.children.forEach(function(b){d+=b.descendants+1;g=Math.max(b.height+1,g)});b.descendants=d;b.height=g;b.collapsed&&q.push(b)},before:function(b){var d=k(b.data)?b.data:{},q=r(d.name)?d.name:"",c=f[b.parent];c=k(c)?a[c.pos]:null;var C=function(b){return b.name===q},H;p&&k(c)&&(H=h(c.children,C))?(C=H.pos,
H.nodes.push(b)):C=u++;a[C]||(a[C]=H={depth:c?c.depth+1:0,name:q,nodes:[b],children:[],pos:C},-1!==C&&g.push(q),k(c)&&c.children.push(H));r(b.id)&&(f[b.id]=b);!0===d.collapsed&&(H.collapsed=!0);b.pos=C}});a=function(b,g){var d=function(b,q,c){var f=q+(-1===q?0:g-1),a=(f-q)/2,u=q+a;b.nodes.forEach(function(b){var g=b.data;k(g)&&(g.y=q+g.seriesIndex,delete g.seriesIndex);b.pos=u});c[u]=b;b.pos=u;b.tickmarkOffset=a+.5;b.collapseStart=f+.5;b.children.forEach(function(b){d(b,f+1,c);f=b.collapseEnd-.5});
b.collapseEnd=f+.5;return c};return d(b["-1"],-1,{})}(a,c);return{categories:g,mapOfIdToNode:f,mapOfPosToGridNode:a,collapsedNodes:q,tree:b}},O=function(b){b.target.axes.filter(function(b){return"treegrid"===b.options.type}).forEach(function(g){var q=g.options||{},f=q.labels,a,p=q.uniqueNames,h=0;if(!g.mapOfPosToGridNode||g.series.some(function(b){return!b.hasRendered||b.isDirtyData||b.isDirty})){q=g.series.reduce(function(b,g){g.visible&&(g.options.data.forEach(function(g){k(g)&&(g.seriesIndex=h,
b.push(g))}),!0===p&&h++);return b},[]);var r=K(q,p,!0===p?h:1);g.categories=r.categories;g.mapOfPosToGridNode=r.mapOfPosToGridNode;g.hasNames=!0;g.tree=r.tree;g.series.forEach(function(b){var g=b.options.data.map(function(b){return k(b)?m(b):b});b.visible&&b.setData(g,!1)});g.mapOptionsToLevel=c({defaults:f,from:1,levels:f.levels,to:g.tree.height});"beforeRender"===b.type&&(a=n(g,"foundExtremes",function(){r.collapsedNodes.forEach(function(b){b=d(g,b);g.setBreaks(b,!1)});a()}))}})};a(e.prototype,
{init:function(b,d,c){var g="treegrid"===c.type;g&&(n(d,"beforeRender",O),n(d,"beforeRedraw",O),c=m({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},c,{reversed:!0,grid:{columns:void 0}}));b.apply(this,[d,c]);g&&(this.hasNames=!0,this.options.showLastLabel=!0)},getMaxLabelDimensions:function(b){var g=this.options,d=g&&g.labels;g=d&&x(d.indentation)?g.labels.indentation:
0;d=b.apply(this,t(arguments));if("treegrid"===this.options.type&&this.mapOfPosToGridNode){var c=this.mapOfPosToGridNode[-1].height;d.width+=g*(c-1)}return d},generateTick:function(b,d){var g=k(this.mapOptionsToLevel)?this.mapOptionsToLevel:{},c=this.ticks,q=c[d],f;if("treegrid"===this.options.type){var a=this.mapOfPosToGridNode[d];(g=g[a.depth])&&(f={labels:g});q?(q.parameters.category=a.name,q.options=f,q.addLabel()):c[d]=new v(this,d,null,void 0,{category:a.name,tickmarkOffset:a.tickmarkOffset,
options:f})}else b.apply(this,t(arguments))},setTickInterval:function(b){var g=this.options;"treegrid"===g.type?(this.min=A(this.userMin,g.min,this.dataMin),this.max=A(this.userMax,g.max,this.dataMax),z(this,"foundExtremes"),this.setAxisTranslation(!0),this.tickmarkOffset=.5,this.tickInterval=1,this.tickPositions=this.mapOfPosToGridNode?f(this):[]):b.apply(this,t(arguments))}});a(v.prototype,{getLabelPosition:function(b,d,c,f,a,p,h,r,m){var g=A(this.options&&this.options.labels,p);p=this.pos;var q=
this.axis,u="treegrid"===q.options.type;b=b.apply(this,[d,c,f,a,g,h,r,m]);u&&(d=g&&k(g.symbol)?g.symbol:{},g=g&&x(g.indentation)?g.indentation:0,p=(p=(q=q.mapOfPosToGridNode)&&q[p])&&p.depth||1,b.x+=d.width+2*d.padding+(p-1)*g);return b},renderLabel:function(g){var d=this,c=d.pos,f=d.axis,a=d.label,p=f.mapOfPosToGridNode,h=f.options,r=A(d.options&&d.options.labels,h&&h.labels),m=r&&k(r.symbol)?r.symbol:{},e=(p=p&&p[c])&&p.depth;h="treegrid"===h.type;var B=!(!a||!a.element),K=-1<f.tickPositions.indexOf(c);
c=f.chart.styledMode;h&&p&&B&&a.addClass("highcharts-treegrid-node-level-"+e);g.apply(d,t(arguments));h&&p&&B&&0<p.descendants&&(f=b(f,p),S(d,{color:!c&&a.styles.color,collapsed:f,group:a.parentGroup,options:m,renderer:a.renderer,show:K,xy:a.xy}),m="highcharts-treegrid-node-"+(f?"expanded":"collapsed"),a.addClass("highcharts-treegrid-node-"+(f?"collapsed":"expanded")).removeClass(m),c||a.css({cursor:"pointer"}),[a,d.labelIcon].forEach(function(b){b.attachedTreeGridEvents||(n(b.element,"mouseover",
function(){a.addClass("highcharts-treegrid-node-active");a.renderer.styledMode||a.css({textDecoration:"underline"})}),n(b.element,"mouseout",function(){var b=E(r.style)?r.style:{};a.removeClass("highcharts-treegrid-node-active");a.renderer.styledMode||a.css({textDecoration:b.textDecoration})}),n(b.element,"click",function(){d.toggleCollapse()}),b.attachedTreeGridEvents=!0)}))}});y(v.prototype,{collapse:function(b){var g=this.axis,c=d(g,g.mapOfPosToGridNode[this.pos]);g.setBreaks(c,A(b,!0))},expand:function(b){var g=
this.axis,d=p(g,g.mapOfPosToGridNode[this.pos]);g.setBreaks(d,A(b,!0))},toggleCollapse:function(g){var c=this.axis;var f=c.mapOfPosToGridNode[this.pos];f=b(c,f)?p(c,f):d(c,f);c.setBreaks(f,A(g,!0))}});e.prototype.utils={getNode:l.getNode}});G(n,"parts-gantt/PathfinderAlgorithms.js",[n["parts/Utilities.js"]],function(e){function a(a,m,e){e=e||0;var r=a.length-1;m-=1e-7;for(var t,h;e<=r;)if(t=r+e>>1,h=m-a[t].xMin,0<h)e=t+1;else if(0>h)r=t-1;else return t;return 0<e?e-1:0}function v(r,m){for(var e=a(r,
m.x+1)+1;e--;){var l;if(l=r[e].xMax>=m.x)l=r[e],l=m.x<=l.xMax&&m.x>=l.xMin&&m.y<=l.yMax&&m.y>=l.yMin;if(l)return e}return-1}function l(a){var r=[];if(a.length){r.push("M",a[0].start.x,a[0].start.y);for(var e=0;e<a.length;++e)r.push("L",a[e].end.x,a[e].end.y)}return r}function n(a,e){a.yMin=y(a.yMin,e.yMin);a.yMax=z(a.yMax,e.yMax);a.xMin=y(a.xMin,e.xMin);a.xMax=z(a.xMax,e.xMax)}var D=e.extend,E=e.pick,z=Math.min,y=Math.max,x=Math.abs;return{straight:function(a,e){return{path:["M",a.x,a.y,"L",e.x,e.y],
obstacles:[{start:a,end:e}]}},simpleConnect:D(function(a,e,n){function r(b,c,a,f,k){b={x:b.x,y:b.y};b[c]=a[f||c]+(k||0);return b}function m(b,c,a){var d=x(c[a]-b[a+"Min"])>x(c[a]-b[a+"Max"]);return r(c,a,b,a+(d?"Max":"Min"),d?1:-1)}var h=[],c=E(n.startDirectionX,x(e.x-a.x)>x(e.y-a.y))?"x":"y",k=n.chartObstacles,B=v(k,a);n=v(k,e);if(-1<n){var f=k[n];n=m(f,e,c);f={start:n,end:e};var b=n}else b=e;-1<B&&(k=k[B],n=m(k,a,c),h.push({start:a,end:n}),n[c]>=a[c]===n[c]>=b[c]&&(c="y"===c?"x":"y",e=a[c]<e[c],
h.push({start:n,end:r(n,c,k,c+(e?"Max":"Min"),e?1:-1)}),c="y"===c?"x":"y"));a=h.length?h[h.length-1].end:a;n=r(a,c,b);h.push({start:a,end:n});c=r(n,"y"===c?"x":"y",b);h.push({start:n,end:c});h.push(f);return{path:l(h),obstacles:h}},{requiresObstacles:!0}),fastAvoid:D(function(e,m,w){function r(b,d,c){var f,q=b.x<d.x?1:-1;if(b.x<d.x){var p=b;var u=d}else p=d,u=b;if(b.y<d.y){var k=b;var h=d}else k=d,h=b;for(f=0>q?z(a(g,u.x),g.length-1):0;g[f]&&(0<q&&g[f].xMin<=u.x||0>q&&g[f].xMax>=p.x);){if(g[f].xMin<=
u.x&&g[f].xMax>=p.x&&g[f].yMin<=h.y&&g[f].yMax>=k.y)return c?{y:b.y,x:b.x<d.x?g[f].xMin-1:g[f].xMax+1,obstacle:g[f]}:{x:b.x,y:b.y<d.y?g[f].yMin-1:g[f].yMax+1,obstacle:g[f]};f+=q}return d}function t(b,g,d,c,f){var a=f.soft,q=f.hard,p=c?"x":"y",u={x:g.x,y:g.y},k={x:g.x,y:g.y};f=b[p+"Max"]>=a[p+"Max"];a=b[p+"Min"]<=a[p+"Min"];var h=b[p+"Max"]>=q[p+"Max"];q=b[p+"Min"]<=q[p+"Min"];var e=x(b[p+"Min"]-g[p]),C=x(b[p+"Max"]-g[p]);d=10>x(e-C)?g[p]<d[p]:C<e;k[p]=b[p+"Min"];u[p]=b[p+"Max"];b=r(g,k,c)[p]!==k[p];
g=r(g,u,c)[p]!==u[p];d=b?g?d:!0:g?!1:d;d=a?f?d:!0:f?!1:d;return q?h?d:!0:h?!1:d}function h(d,c,f){if(d.x===c.x&&d.y===c.y)return[];var a=f?"x":"y",q=w.obstacleOptions.margin;var u={soft:{xMin:p,xMax:S,yMin:K,yMax:O},hard:w.hardBounds};var k=v(g,d);if(-1<k){k=g[k];u=t(k,d,c,f,u);n(k,w.hardBounds);var e=f?{y:d.y,x:k[u?"xMax":"xMin"]+(u?1:-1)}:{x:d.x,y:k[u?"yMax":"yMin"]+(u?1:-1)};var C=v(g,e);-1<C&&(C=g[C],n(C,w.hardBounds),e[a]=u?y(k[a+"Max"]-q+1,(C[a+"Min"]+k[a+"Max"])/2):z(k[a+"Min"]+q-1,(C[a+"Max"]+
k[a+"Min"])/2),d.x===e.x&&d.y===e.y?(b&&(e[a]=u?y(k[a+"Max"],C[a+"Max"])+1:z(k[a+"Min"],C[a+"Min"])-1),b=!b):b=!1);d=[{start:d,end:e}]}else a=r(d,{x:f?c.x:d.x,y:f?d.y:c.y},f),d=[{start:d,end:{x:a.x,y:a.y}}],a[f?"x":"y"]!==c[f?"x":"y"]&&(u=t(a.obstacle,a,c,!f,u),n(a.obstacle,w.hardBounds),u={x:f?a.x:a.obstacle[u?"xMax":"xMin"]+(u?1:-1),y:f?a.obstacle[u?"yMax":"yMin"]+(u?1:-1):a.y},f=!f,d=d.concat(h({x:a.x,y:a.y},u,f)));return d=d.concat(h(d[d.length-1].end,c,!f))}function c(b,g,d){var c=z(b.xMax-g.x,
g.x-b.xMin)<z(b.yMax-g.y,g.y-b.yMin);d=t(b,g,d,c,{soft:w.hardBounds,hard:w.hardBounds});return c?{y:g.y,x:b[d?"xMax":"xMin"]+(d?1:-1)}:{x:g.x,y:b[d?"yMax":"yMin"]+(d?1:-1)}}var k=E(w.startDirectionX,x(m.x-e.x)>x(m.y-e.y)),B=k?"x":"y",f=[],b=!1,d=w.obstacleMetrics,p=z(e.x,m.x)-d.maxWidth-10,S=y(e.x,m.x)+d.maxWidth+10,K=z(e.y,m.y)-d.maxHeight-10,O=y(e.y,m.y)+d.maxHeight+10,g=w.chartObstacles;var q=a(g,p);d=a(g,S);g=g.slice(q,d+1);if(-1<(d=v(g,m))){var u=c(g[d],m,e);f.push({end:m,start:u});m=u}for(;-1<
(d=v(g,m));)q=0>m[B]-e[B],u={x:m.x,y:m.y},u[B]=g[d][q?B+"Max":B+"Min"]+(q?1:-1),f.push({end:m,start:u}),m=u;e=h(e,m,k);e=e.concat(f.reverse());return{path:l(e),obstacles:e}},{requiresObstacles:!0})}});G(n,"parts-gantt/ArrowSymbols.js",[n["parts/Globals.js"]],function(e){e.SVGRenderer.prototype.symbols.arrow=function(a,e,l,n){return["M",a,e+n/2,"L",a+l,e,"L",a,e+n/2,"L",a+l,e+n]};e.SVGRenderer.prototype.symbols["arrow-half"]=function(a,n,l,w){return e.SVGRenderer.prototype.symbols.arrow(a,n,l/2,w)};
e.SVGRenderer.prototype.symbols["triangle-left"]=function(a,e,l,n){return["M",a+l,e,"L",a,e+n/2,"L",a+l,e+n,"Z"]};e.SVGRenderer.prototype.symbols["arrow-filled"]=e.SVGRenderer.prototype.symbols["triangle-left"];e.SVGRenderer.prototype.symbols["triangle-left-half"]=function(a,n,l,w){return e.SVGRenderer.prototype.symbols["triangle-left"](a,n,l/2,w)};e.SVGRenderer.prototype.symbols["arrow-filled-half"]=e.SVGRenderer.prototype.symbols["triangle-left-half"]});G(n,"parts-gantt/Pathfinder.js",[n["parts/Globals.js"],
n["parts/Point.js"],n["parts/Utilities.js"],n["parts-gantt/PathfinderAlgorithms.js"]],function(e,a,n,l){function w(b){var d=b.shapeArgs;return d?{xMin:d.x,xMax:d.x+d.width,yMin:d.y,yMax:d.y+d.height}:(d=b.graphic&&b.graphic.getBBox())?{xMin:b.plotX-d.width/2,xMax:b.plotX+d.width/2,yMin:b.plotY-d.height/2,yMax:b.plotY+d.height/2}:null}function v(b){for(var d=b.length,c=0,a,k,e=[],g=function(b,d,c){c=h(c,10);var a=b.yMax+c>d.yMin-c&&b.yMin-c<d.yMax+c,q=b.xMax+c>d.xMin-c&&b.xMin-c<d.xMax+c,p=a?b.xMin>
d.xMax?b.xMin-d.xMax:d.xMin-b.xMax:Infinity,u=q?b.yMin>d.yMax?b.yMin-d.yMax:d.yMin-b.yMax:Infinity;return q&&a?c?g(b,d,Math.floor(c/2)):Infinity:f(p,u)};c<d;++c)for(a=c+1;a<d;++a)k=g(b[c],b[a]),80>k&&e.push(k);e.push(80);return B(Math.floor(e.sort(function(b,d){return b-d})[Math.floor(e.length/10)]/2-1),1)}function E(b,d,c){this.init(b,d,c)}function z(b){this.init(b)}function y(b){if(b.options.pathfinder||b.series.reduce(function(b,c){c.options&&F(!0,c.options.connectors=c.options.connectors||{},
c.options.pathfinder);return b||c.options&&c.options.pathfinder},!1))F(!0,b.options.connectors=b.options.connectors||{},b.options.pathfinder),m('WARNING: Pathfinder options have been renamed. Use "chart.connectors" or "series.connectors" instead.')}"";var x=n.addEvent,r=n.defined,m=n.error,A=n.extend,F=n.merge,t=n.objectEach,h=n.pick,c=n.splat,k=e.deg2rad,B=Math.max,f=Math.min;A(e.defaultOptions,{connectors:{type:"straight",lineWidth:1,marker:{enabled:!1,align:"center",verticalAlign:"middle",inside:!1,
lineWidth:1},startMarker:{symbol:"diamond"},endMarker:{symbol:"arrow-filled"}}});E.prototype={init:function(b,d,c){this.fromPoint=b;this.toPoint=d;this.options=c;this.chart=b.series.chart;this.pathfinder=this.chart.pathfinder},renderPath:function(b,d,c){var a=this.chart,f=a.styledMode,p=a.pathfinder,g=!a.options.chart.forExport&&!1!==c,q=this.graphics&&this.graphics.path;p.group||(p.group=a.renderer.g().addClass("highcharts-pathfinder-group").attr({zIndex:-1}).add(a.seriesGroup));p.group.translate(a.plotLeft,
a.plotTop);q&&q.renderer||(q=a.renderer.path().add(p.group),f||q.attr({opacity:0}));q.attr(d);b={d:b};f||(b.opacity=1);q[g?"animate":"attr"](b,c);this.graphics=this.graphics||{};this.graphics.path=q},addMarker:function(b,d,c){var a=this.fromPoint.series.chart,f=a.pathfinder;a=a.renderer;var p="start"===b?this.fromPoint:this.toPoint,g=p.getPathfinderAnchorPoint(d);if(d.enabled){c="start"===b?{x:c[4],y:c[5]}:{x:c[c.length-5],y:c[c.length-4]};c=p.getRadiansToVector(c,g);g=p.getMarkerVector(c,d.radius,
g);c=-c/k;if(d.width&&d.height){var q=d.width;var u=d.height}else q=u=2*d.radius;this.graphics=this.graphics||{};g={x:g.x-q/2,y:g.y-u/2,width:q,height:u,rotation:c,rotationOriginX:g.x,rotationOriginY:g.y};this.graphics[b]?this.graphics[b].animate(g):(this.graphics[b]=a.symbol(d.symbol).addClass("highcharts-point-connecting-path-"+b+"-marker").attr(g).add(f.group),a.styledMode||this.graphics[b].attr({fill:d.color||this.fromPoint.color,stroke:d.lineColor,"stroke-width":d.lineWidth,opacity:0}).animate({opacity:1},
p.series.options.animation))}},getPath:function(b){var d=this.pathfinder,c=this.chart,a=d.algorithms[b.type],f=d.chartObstacles;if("function"!==typeof a)m('"'+b.type+'" is not a Pathfinder algorithm.');else return a.requiresObstacles&&!f&&(f=d.chartObstacles=d.getChartObstacles(b),c.options.connectors.algorithmMargin=b.algorithmMargin,d.chartObstacleMetrics=d.getObstacleMetrics(f)),a(this.fromPoint.getPathfinderAnchorPoint(b.startMarker),this.toPoint.getPathfinderAnchorPoint(b.endMarker),F({chartObstacles:f,
lineObstacles:d.lineObstacles||[],obstacleMetrics:d.chartObstacleMetrics,hardBounds:{xMin:0,xMax:c.plotWidth,yMin:0,yMax:c.plotHeight},obstacleOptions:{margin:b.algorithmMargin},startDirectionX:d.getAlgorithmStartDirection(b.startMarker)},b))},render:function(){var b=this.fromPoint,d=b.series,c=d.chart,a=c.pathfinder,k=F(c.options.connectors,d.options.connectors,b.options.connectors,this.options),e={};c.styledMode||(e.stroke=k.lineColor||b.color,e["stroke-width"]=k.lineWidth,k.dashStyle&&(e.dashstyle=
k.dashStyle));e["class"]="highcharts-point-connecting-path highcharts-color-"+b.colorIndex;k=F(e,k);r(k.marker.radius)||(k.marker.radius=f(B(Math.ceil((k.algorithmMargin||8)/2)-1,1),5));b=this.getPath(k);c=b.path;b.obstacles&&(a.lineObstacles=a.lineObstacles||[],a.lineObstacles=a.lineObstacles.concat(b.obstacles));this.renderPath(c,e,d.options.animation);this.addMarker("start",F(k.marker,k.startMarker),c);this.addMarker("end",F(k.marker,k.endMarker),c)},destroy:function(){this.graphics&&(t(this.graphics,
function(b){b.destroy()}),delete this.graphics)}};z.prototype={algorithms:l,init:function(b){this.chart=b;this.connections=[];x(b,"redraw",function(){this.pathfinder.update()})},update:function(b){var d=this.chart,f=this,k=f.connections;f.connections=[];d.series.forEach(function(b){b.visible&&!b.options.isInternal&&b.points.forEach(function(b){var g,q=b.options&&b.options.connect&&c(b.options.connect);b.visible&&!1!==b.isInside&&q&&q.forEach(function(c){g=d.get("string"===typeof c?c:c.to);g instanceof
a&&g.series.visible&&g.visible&&!1!==g.isInside&&f.connections.push(new E(b,g,"string"===typeof c?{}:c))})})});for(var e=0,h,g,q=k.length,u=f.connections.length;e<q;++e){g=!1;for(h=0;h<u;++h)if(k[e].fromPoint===f.connections[h].fromPoint&&k[e].toPoint===f.connections[h].toPoint){f.connections[h].graphics=k[e].graphics;g=!0;break}g||k[e].destroy()}delete this.chartObstacles;delete this.lineObstacles;f.renderConnections(b)},renderConnections:function(b){b?this.chart.series.forEach(function(b){var d=
function(){var d=b.chart.pathfinder;(d&&d.connections||[]).forEach(function(d){d.fromPoint&&d.fromPoint.series===b&&d.render()});b.pathfinderRemoveRenderEvent&&(b.pathfinderRemoveRenderEvent(),delete b.pathfinderRemoveRenderEvent)};!1===b.options.animation?d():b.pathfinderRemoveRenderEvent=x(b,"afterAnimate",d)}):this.connections.forEach(function(b){b.render()})},getChartObstacles:function(b){for(var d=[],c=this.chart.series,a=h(b.algorithmMargin,0),f,k=0,g=c.length;k<g;++k)if(c[k].visible&&!c[k].options.isInternal)for(var q=
0,u=c[k].points.length,e;q<u;++q)e=c[k].points[q],e.visible&&(e=w(e))&&d.push({xMin:e.xMin-a,xMax:e.xMax+a,yMin:e.yMin-a,yMax:e.yMax+a});d=d.sort(function(b,g){return b.xMin-g.xMin});r(b.algorithmMargin)||(f=b.algorithmMargin=v(d),d.forEach(function(b){b.xMin-=f;b.xMax+=f;b.yMin-=f;b.yMax+=f}));return d},getObstacleMetrics:function(b){for(var d=0,c=0,a,f,k=b.length;k--;)a=b[k].xMax-b[k].xMin,f=b[k].yMax-b[k].yMin,d<a&&(d=a),c<f&&(c=f);return{maxHeight:c,maxWidth:d}},getAlgorithmStartDirection:function(b){var d=
"top"!==b.verticalAlign&&"bottom"!==b.verticalAlign;return"left"!==b.align&&"right"!==b.align?d?void 0:!1:d?!0:void 0}};e.Connection=E;e.Pathfinder=z;A(a.prototype,{getPathfinderAnchorPoint:function(b){var d=w(this);switch(b.align){case "right":var c="xMax";break;case "left":c="xMin"}switch(b.verticalAlign){case "top":var a="yMin";break;case "bottom":a="yMax"}return{x:c?d[c]:(d.xMin+d.xMax)/2,y:a?d[a]:(d.yMin+d.yMax)/2}},getRadiansToVector:function(b,d){r(d)||(d=w(this),d={x:(d.xMin+d.xMax)/2,y:(d.yMin+
d.yMax)/2});return Math.atan2(d.y-b.y,b.x-d.x)},getMarkerVector:function(b,d,c){var a=2*Math.PI,f=w(this),k=f.xMax-f.xMin,g=f.yMax-f.yMin,q=Math.atan2(g,k),u=!1;k/=2;var p=g/2,e=f.xMin+k;f=f.yMin+p;for(var h=e,m=f,r={},B=1,t=1;b<-Math.PI;)b+=a;for(;b>Math.PI;)b-=a;a=Math.tan(b);b>-q&&b<=q?(t=-1,u=!0):b>q&&b<=Math.PI-q?t=-1:b>Math.PI-q||b<=-(Math.PI-q)?(B=-1,u=!0):B=-1;u?(h+=B*k,m+=t*k*a):(h+=g/(2*a)*B,m+=t*p);c.x!==e&&(h=c.x);c.y!==f&&(m=c.y);r.x=h+d*Math.cos(b);r.y=m-d*Math.sin(b);return r}});e.Chart.prototype.callbacks.push(function(b){!1!==
b.options.connectors.enabled&&(y(b),this.pathfinder=new z(this),this.pathfinder.update(!0))})});G(n,"modules/xrange.src.js",[n["parts/Globals.js"],n["parts/Color.js"],n["parts/Point.js"],n["parts/Utilities.js"]],function(e,a,n,l){var w=a.parse;a=l.addEvent;var v=l.clamp,E=l.correctFloat,z=l.defined,y=l.find,x=l.isNumber,r=l.isObject,m=l.merge,A=l.pick;l=l.seriesType;var F=e.seriesTypes.column,t=e.Axis,h=e.Series;l("xrange","column",{colorByPoint:!0,dataLabels:{formatter:function(){var c=this.point.partialFill;
r(c)&&(c=c.amount);if(x(c)&&0<c)return E(100*c)+"%"},inside:!0,verticalAlign:"middle"},tooltip:{headerFormat:'<span style="font-size: 10px">{point.x} - {point.x2}</span><br/>',pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.yCategory}</b><br/>'},borderRadius:3,pointRange:0},{type:"xrange",parallelArrays:["x","x2","y"],requireSorting:!1,animate:e.seriesTypes.line.prototype.animate,cropShoulder:1,getExtremesFromAll:!0,autoIncrement:e.noop,buildKDTree:e.noop,getColumnMetrics:function(){function c(){a.series.forEach(function(c){var b=
c.xAxis;c.xAxis=c.yAxis;c.yAxis=b})}var a=this.chart;c();var e=F.prototype.getColumnMetrics.call(this);c();return e},cropData:function(c,a,e,f){a=h.prototype.cropData.call(this,this.x2Data,a,e,f);a.xData=c.slice(a.start,a.end);return a},findPointIndex:function(c){var a=this.cropped,e=this.cropStart,f=this.points,b=c.id;if(b)var d=(d=y(f,function(d){return d.id===b}))?d.index:void 0;"undefined"===typeof d&&(d=(d=y(f,function(b){return b.x===c.x&&b.x2===c.x2&&!b.touched}))?d.index:void 0);a&&x(d)&&
x(e)&&d>=e&&(d-=e);return d},translatePoint:function(c){var a=this.xAxis,e=this.yAxis,f=this.columnMetrics,b=this.options,d=b.minPointLength||0,p=c.plotX,h=A(c.x2,c.x+(c.len||0)),t=a.translate(h,0,0,0,1);h=Math.abs(t-p);var l=this.chart.inverted,g=A(b.borderWidth,1)%2/2,q=f.offset,u=Math.round(f.width);d&&(d-=h,0>d&&(d=0),p-=d/2,t+=d/2);p=Math.max(p,-10);t=v(t,-10,a.len+10);z(c.options.pointWidth)&&(q-=(Math.ceil(c.options.pointWidth)-u)/2,u=Math.ceil(c.options.pointWidth));b.pointPlacement&&x(c.plotY)&&
e.categories&&(c.plotY=e.translate(c.y,0,1,0,1,b.pointPlacement));c.shapeArgs={x:Math.floor(Math.min(p,t))+g,y:Math.floor(c.plotY+q)+g,width:Math.round(Math.abs(t-p)),height:u,r:this.options.borderRadius};b=c.shapeArgs.x;d=b+c.shapeArgs.width;0>b||d>a.len?(b=v(b,0,a.len),d=v(d,0,a.len),t=d-b,c.dlBox=m(c.shapeArgs,{x:b,width:d-b,centerX:t?t/2:null})):c.dlBox=null;b=c.tooltipPos;d=l?1:0;t=l?0:1;f=this.columnMetrics?this.columnMetrics.offset:-f.width/2;b[d]=v(b[d]+h/2*(a.reversed?-1:1)*(l?-1:1),0,a.len-
1);b[t]=v(b[t]+(l?-1:1)*f,0,e.len-1);if(f=c.partialFill)r(f)&&(f=f.amount),x(f)||(f=0),e=c.shapeArgs,c.partShapeArgs={x:e.x,y:e.y,width:e.width,height:e.height,r:this.options.borderRadius},p=Math.max(Math.round(h*f+c.plotX-p),0),c.clipRectArgs={x:a.reversed?e.x+h-p:e.x,y:e.y,width:p,height:e.height}},translate:function(){F.prototype.translate.apply(this,arguments);this.points.forEach(function(c){this.translatePoint(c)},this)},drawPoint:function(c,a){var k=this.options,f=this.chart.renderer,b=c.graphic,
d=c.shapeType,e=c.shapeArgs,h=c.partShapeArgs,t=c.clipRectArgs,l=c.partialFill,g=k.stacking&&!k.borderRadius,q=c.state,u=k.states[q||"normal"]||{},C="undefined"===typeof q?"attr":a;q=this.pointAttribs(c,q);u=A(this.chart.options.chart.animation,u.animation);if(c.isNull||!1===c.visible)b&&(c.graphic=b.destroy());else{if(b)b.rect[a](e);else c.graphic=b=f.g("point").addClass(c.getClassName()).add(c.group||this.group),b.rect=f[d](m(e)).addClass(c.getClassName()).addClass("highcharts-partfill-original").add(b);
h&&(b.partRect?(b.partRect[a](m(h)),b.partialClipRect[a](m(t))):(b.partialClipRect=f.clipRect(t.x,t.y,t.width,t.height),b.partRect=f[d](h).addClass("highcharts-partfill-overlay").add(b).clip(b.partialClipRect)));this.chart.styledMode||(b.rect[a](q,u).shadow(k.shadow,null,g),h&&(r(l)||(l={}),r(k.partialFill)&&(l=m(l,k.partialFill)),c=l.fill||w(q.fill).brighten(-.3).get()||w(c.color||this.color).brighten(-.3).get(),q.fill=c,b.partRect[C](q,u).shadow(k.shadow,null,g)))}},drawPoints:function(){var c=
this,a=c.getAnimationVerb();c.points.forEach(function(k){c.drawPoint(k,a)})},getAnimationVerb:function(){return this.chart.pointCount<(this.options.animationLimit||250)?"animate":"attr"}},{resolveColor:function(){var c=this.series;if(c.options.colorByPoint&&!this.options.color){var a=c.options.colors||c.chart.options.colors;var e=this.y%(a?a.length:c.chart.options.chart.colorCount);a=a&&a[e];c.chart.styledMode||(this.color=a);this.options.colorIndex||(this.colorIndex=e)}else this.color||(this.color=
c.color)},init:function(){n.prototype.init.apply(this,arguments);this.y||(this.y=0);return this},setState:function(){n.prototype.setState.apply(this,arguments);this.series.drawPoint(this,this.series.getAnimationVerb())},getLabelConfig:function(){var c=n.prototype.getLabelConfig.call(this),a=this.series.yAxis.categories;c.x2=this.x2;c.yCategory=this.yCategory=a&&a[this.y];return c},tooltipDateKeys:["x","x2"],isValid:function(){return"number"===typeof this.x&&"number"===typeof this.x2}});a(t,"afterGetSeriesExtremes",
function(){var c=this.series,a;if(this.isXAxis){var e=A(this.dataMax,-Number.MAX_VALUE);c.forEach(function(c){c.x2Data&&c.x2Data.forEach(function(b){b>e&&(e=b,a=!0)})});a&&(this.dataMax=e)}});""});G(n,"parts-gantt/GanttSeries.js",[n["parts/Globals.js"],n["parts/Utilities.js"]],function(e,a){var n=a.isNumber,l=a.merge,w=a.pick,D=a.seriesType,E=a.splat,z=e.dateFormat,y=e.seriesTypes.xrange;D("gantt","xrange",{grouping:!1,dataLabels:{enabled:!0},tooltip:{headerFormat:'<span style="font-size: 10px">{series.name}</span><br/>',
pointFormat:null,pointFormatter:function(){var a=this.series,e=a.chart.tooltip,m=a.xAxis,l=a.tooltipOptions.dateTimeLabelFormats,n=m.options.startOfWeek,t=a.tooltipOptions,h=t.xDateFormat;a=this.options.milestone;var c="<b>"+(this.name||this.yCategory)+"</b>";if(t.pointFormat)return this.tooltipFormatter(t.pointFormat);h||(h=E(e.getDateFormat(m.closestPointRange,this.start,n,l))[0]);e=z(h,this.start);m=z(h,this.end);c+="<br/>";return a?c+(e+"<br/>"):c+("Start: "+e+"<br/>End: ")+(m+"<br/>")}},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","end","y"],keyboardMoveVertical:!1,translatePoint:function(a){y.prototype.translatePoint.call(this,a);if(a.options.milestone){var e=a.shapeArgs;var m=e.height;a.shapeArgs={x:e.x-m/2,y:e.y,width:m,height:m}}},drawPoint:function(a,e){var m=this.options,l=this.chart.renderer,r=a.shapeArgs,t=a.plotY,h=a.graphic,c=a.selected&&"select",k=
m.stacking&&!m.borderRadius;if(a.options.milestone)if(n(t)&&null!==a.y&&!1!==a.visible){r=l.symbols.diamond(r.x,r.y,r.width,r.height);if(h)h[e]({d:r});else a.graphic=l.path(r).addClass(a.getClassName(),!0).add(a.group||this.group);this.chart.styledMode||a.graphic.attr(this.pointAttribs(a,c)).shadow(m.shadow,null,k)}else h&&(a.graphic=h.destroy());else y.prototype.drawPoint.call(this,a,e)},setData:e.Series.prototype.setData,setGanttPointAliases:function(a){function e(e,l){"undefined"!==typeof l&&(a[e]=
l)}e("x",w(a.start,a.x));e("x2",w(a.end,a.x2));e("partialFill",w(a.completed,a.partialFill));e("connect",w(a.dependency,a.connect))}},l(y.prototype.pointClass.prototype,{applyOptions:function(a,r){a=l(a);e.seriesTypes.gantt.prototype.setGanttPointAliases(a);return a=y.prototype.pointClass.prototype.applyOptions.call(this,a,r)},isValid:function(){return("number"===typeof this.start||"number"===typeof this.x)&&("number"===typeof this.end||"number"===typeof this.x2||this.milestone)}}));""});G(n,"parts-gantt/GanttChart.js",
[n["parts/Globals.js"],n["parts/Utilities.js"]],function(e,a){var n=a.isArray,l=a.merge,w=a.splat,D=e.Chart;e.ganttChart=function(a,v,y){var x="string"===typeof a||a.nodeName,r=v.series,m=e.getOptions(),A,z=v;v=arguments[x?1:0];n(v.xAxis)||(v.xAxis=[v.xAxis||{},{}]);v.xAxis=v.xAxis.map(function(a,e){1===e&&(A=0);return l(m.xAxis,{grid:{enabled:!0},opposite:!0,linkedTo:A},a,{type:"datetime"})});v.yAxis=w(v.yAxis||{}).map(function(a){return l(m.yAxis,{grid:{enabled:!0},staticScale:50,reversed:!0,type:a.categories?
a.type:"treegrid"},a)});v.series=null;v=l(!0,{chart:{type:"gantt"},title:{text:null},legend:{enabled:!1}},v,{isGantt:!0});v.series=z.series=r;v.series.forEach(function(a){a.data.forEach(function(a){e.seriesTypes.gantt.prototype.setGanttPointAliases(a)})});return x?new D(a,v,y):new D(v,v)}});G(n,"parts/Scrollbar.js",[n["parts/Globals.js"],n["parts/Utilities.js"]],function(e,a){var n=a.addEvent,l=a.correctFloat,w=a.defined,D=a.destroyObjectProperties,E=a.fireEvent,z=a.merge,y=a.pick,x=a.removeEvent;
a=e.Axis;var r=e.defaultOptions,m=e.hasTouch,A,F={height:e.isTouchDevice?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:void 0,margin:10,minWidth:6,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:1,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"#333333",trackBackgroundColor:"#f2f2f2",trackBorderColor:"#f2f2f2",trackBorderWidth:1};r.scrollbar=z(!0,F,r.scrollbar);e.swapXY=A=function(a,
c){var e=a.length;if(c)for(c=0;c<e;c+=3){var h=a[c+1];a[c+1]=a[c+2];a[c+2]=h}return a};var t=function(){function a(a,e,h){this._events=[];this.from=this.chartY=this.chartX=0;this.scrollbar=this.group=void 0;this.scrollbarButtons=[];this.scrollbarGroup=void 0;this.scrollbarLeft=0;this.scrollbarRifles=void 0;this.scrollbarStrokeWidth=1;this.to=this.size=this.scrollbarTop=0;this.track=void 0;this.trackBorderWidth=1;this.userOptions={};this.y=this.x=0;this.chart=h;this.options=e;this.renderer=h.renderer;
this.init(a,e,h)}a.prototype.addEvents=function(){var a=this.options.inverted?[1,0]:[0,1],e=this.scrollbarButtons,h=this.scrollbarGroup.element,f=this.track.element,b=this.mouseDownHandler.bind(this),d=this.mouseMoveHandler.bind(this),p=this.mouseUpHandler.bind(this);a=[[e[a[0]].element,"click",this.buttonToMinClick.bind(this)],[e[a[1]].element,"click",this.buttonToMaxClick.bind(this)],[f,"click",this.trackClick.bind(this)],[h,"mousedown",b],[h.ownerDocument,"mousemove",d],[h.ownerDocument,"mouseup",
p]];m&&a.push([h,"touchstart",b],[h.ownerDocument,"touchmove",d],[h.ownerDocument,"touchend",p]);a.forEach(function(b){n.apply(null,b)});this._events=a};a.prototype.buttonToMaxClick=function(a){var c=(this.to-this.from)*y(this.options.step,.2);this.updatePosition(this.from+c,this.to+c);E(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:a})};a.prototype.buttonToMinClick=function(a){var c=l(this.to-this.from)*y(this.options.step,.2);this.updatePosition(l(this.from-c),l(this.to-
c));E(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:a})};a.prototype.cursorToScrollbarPosition=function(a){var c=this.options;c=c.minWidth>this.calculatedWidth?c.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-c),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-c)}};a.prototype.destroy=function(){var a=this.chart.scroller;this.removeEvents();["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(a){this[a]&&this[a].destroy&&
(this[a]=this[a].destroy())},this);a&&this===a.scrollbar&&(a.scrollbar=null,D(a.scrollbarButtons))};a.prototype.drawScrollbarButton=function(a){var c=this.renderer,e=this.scrollbarButtons,f=this.options,b=this.size;var d=c.g().add(this.group);e.push(d);d=c.rect().addClass("highcharts-scrollbar-button").add(d);this.chart.styledMode||d.attr({stroke:f.buttonBorderColor,"stroke-width":f.buttonBorderWidth,fill:f.buttonBackgroundColor});d.attr(d.crisp({x:-.5,y:-.5,width:b+1,height:b+1,r:f.buttonBorderRadius},
d.strokeWidth()));d=c.path(A(["M",b/2+(a?-1:1),b/2-3,"L",b/2+(a?-1:1),b/2+3,"L",b/2+(a?2:-2),b/2],f.vertical)).addClass("highcharts-scrollbar-arrow").add(e[a]);this.chart.styledMode||d.attr({fill:f.buttonArrowColor})};a.prototype.init=function(a,e,h){this.scrollbarButtons=[];this.renderer=a;this.userOptions=e;this.options=z(F,e);this.chart=h;this.size=y(this.options.size,this.options.height);e.enabled&&(this.render(),this.addEvents())};a.prototype.mouseDownHandler=function(a){a=this.chart.pointer.normalize(a);
a=this.cursorToScrollbarPosition(a);this.chartX=a.chartX;this.chartY=a.chartY;this.initPositions=[this.from,this.to];this.grabbedCenter=!0};a.prototype.mouseMoveHandler=function(a){var c=this.chart.pointer.normalize(a),e=this.options.vertical?"chartY":"chartX",f=this.initPositions||[];!this.grabbedCenter||a.touches&&0===a.touches[0][e]||(c=this.cursorToScrollbarPosition(c)[e],e=this[e],e=c-e,this.hasDragged=!0,this.updatePosition(f[0]+e,f[1]+e),this.hasDragged&&E(this,"changed",{from:this.from,to:this.to,
trigger:"scrollbar",DOMType:a.type,DOMEvent:a}))};a.prototype.mouseUpHandler=function(a){this.hasDragged&&E(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:a.type,DOMEvent:a});this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null};a.prototype.position=function(a,e,h,f){var b=this.