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