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