UNPKG

highcharts

Version:
66 lines (63 loc) 28.6 kB
/* Highcharts Gantt JS v10.0.0 (2022-03-07) Tree Grid (c) 2016-2021 Jon Arild Nygard License: www.highcharts.com/license */ (function(e){"object"===typeof module&&module.exports?(e["default"]=e,module.exports=e):"function"===typeof define&&define.amd?define("highcharts/modules/treegrid",["highcharts"],function(B){e(B);e.Highcharts=B;return e}):e("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(e){function B(e,p,z,u){e.hasOwnProperty(p)||(e[p]=u.apply(null,z),"function"===typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:p,module:e[p]}})))}e=e?e._modules:{};B(e, "Core/Axis/BrokenAxis.js",[e["Extensions/Stacking.js"],e["Core/Utilities.js"]],function(e,p){var z=p.addEvent,u=p.find,q=p.fireEvent,n=p.isArray,k=p.isNumber,x=p.pick,C;(function(a){function h(){"undefined"!==typeof this.brokenAxis&&this.brokenAxis.setBreaks(this.options.breaks,!1)}function v(){this.brokenAxis&&this.brokenAxis.hasBreaks&&(this.options.ordinal=!1)}function p(){var a=this.brokenAxis;if(a&&a.hasBreaks){for(var b=this.tickPositions,f=this.tickPositions.info,G=[],m=0;m<b.length;m++)a.isInAnyBreak(b[m])|| G.push(b[m]);this.tickPositions=G;this.tickPositions.info=f}}function C(){this.brokenAxis||(this.brokenAxis=new w(this))}function g(){var a=this.options.connectNulls,b=this.points,f=this.xAxis,G=this.yAxis;if(this.isDirty)for(var m=b.length;m--;){var H=b[m],c=!(null===H.y&&!1===a)&&(f&&f.brokenAxis&&f.brokenAxis.isInAnyBreak(H.x,!0)||G&&G.brokenAxis&&G.brokenAxis.isInAnyBreak(H.y,!0));H.visible=c?!1:!1!==H.options.visible}}function d(){this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis, x(this.pointArrayMap,["y"]))}function f(a,b){var f=this,I=f.points,m,E,c,l;if(a&&a.brokenAxis&&a.brokenAxis.hasBreaks){var d=a.brokenAxis;b.forEach(function(b){m=d&&d.breakArray||[];E=a.isXAxis?a.min:x(f.options.threshold,a.min);I.forEach(function(f){l=x(f["stack"+b.toUpperCase()],f[b]);m.forEach(function(b){if(k(E)&&k(l)){c=!1;if(E<b.from&&l>b.to||E>b.from&&l<b.from)c="pointBreak";else if(E<b.from&&l>b.from&&l<b.to||E>b.from&&l>b.to&&l<b.from)c="pointInBreak";c&&q(a,c,{point:f,brk:b})}})})})}}function c(){var b= this.currentDataGrouping,a=b&&b.gapSize;b=this.points.slice();var f=this.yAxis,c=this.options.gapSize,m=b.length-1,d;if(c&&0<m)for("value"!==this.options.gapUnit&&(c*=this.basePointRange),a&&a>c&&a>=this.basePointRange&&(c=a),d=void 0;m--;)d&&!1!==d.visible||(d=b[m+1]),a=b[m],!1!==d.visible&&!1!==a.visible&&(d.x-a.x>c&&(d=(a.x+d.x)/2,b.splice(m+1,0,{isNull:!0,x:d}),f.stacking&&this.options.stacking&&(d=f.stacking.stacks[this.stackKey][d]=new e(f,f.options.stackLabels,!1,d,this.stack),d.total=0)), d=a);return this.getGraphPath(b)}var b=[];a.compose=function(a,I){-1===b.indexOf(a)&&(b.push(a),a.keepProps.push("brokenAxis"),z(a,"init",C),z(a,"afterInit",h),z(a,"afterSetTickPositions",p),z(a,"afterSetOptions",v));if(-1===b.indexOf(I)){b.push(I);var E=I.prototype;E.drawBreaks=f;E.gappedPath=c;z(I,"afterGeneratePoints",g);z(I,"afterRender",d)}return a};var w=function(){function a(a){this.hasBreaks=!1;this.axis=a}a.isInBreak=function(a,b){var f=a.repeat||Infinity,m=a.from,d=a.to-a.from;b=b>=m?(b- m)%f:f-(m-b)%f;return a.inclusive?b<=d:b<d&&0!==b};a.lin2Val=function(b){var f=this.brokenAxis;f=f&&f.breakArray;if(!f||!k(b))return b;var d;for(d=0;d<f.length;d++){var m=f[d];if(m.from>=b)break;else m.to<b?b+=m.len:a.isInBreak(m,b)&&(b+=m.len)}return b};a.val2Lin=function(b){var f=this.brokenAxis;f=f&&f.breakArray;if(!f||!k(b))return b;var d=b,m;for(m=0;m<f.length;m++){var c=f[m];if(c.to<=b)d-=c.len;else if(c.from>=b)break;else if(a.isInBreak(c,b)){d-=b-c.from;break}}return d};a.prototype.findBreakAt= function(a,b){return u(b,function(b){return b.from<a&&a<b.to})};a.prototype.isInAnyBreak=function(b,f){var d=this.axis,m=d.options.breaks||[],c=m.length,K;if(c&&k(b)){for(;c--;)if(a.isInBreak(m[c],b)){var l=!0;K||(K=x(m[c].showPoints,!d.isXAxis))}var y=l&&f?l&&!K:l}return y};a.prototype.setBreaks=function(b,f){var d=this,c=d.axis,h=n(b)&&!!b.length;c.isDirty=d.hasBreaks!==h;d.hasBreaks=h;c.options.breaks=c.userOptions.breaks=b;c.forceRedraw=!0;c.series.forEach(function(b){b.isDirty=!0});h||c.val2lin!== a.val2Lin||(delete c.val2lin,delete c.lin2val);h&&(c.userOptions.ordinal=!1,c.lin2val=a.lin2Val,c.val2lin=a.val2Lin,c.setExtremes=function(b,a,f,D,h){if(d.hasBreaks){for(var l=this.options.breaks||[],y;y=d.findBreakAt(b,l);)b=y.to;for(;y=d.findBreakAt(a,l);)a=y.from;a<b&&(a=b)}c.constructor.prototype.setExtremes.call(this,b,a,f,D,h)},c.setAxisTranslation=function(){c.constructor.prototype.setAxisTranslation.call(this);d.unitLength=void 0;if(d.hasBreaks){var b=c.options.breaks||[],f=[],y=[],h=x(c.pointRangePadding, 0),m=0,A,g=c.userMin||c.min,w=c.userMax||c.max,e;b.forEach(function(b){A=b.repeat||Infinity;k(g)&&k(w)&&(a.isInBreak(b,g)&&(g+=b.to%A-g%A),a.isInBreak(b,w)&&(w-=w%A-b.from%A))});b.forEach(function(b){t=b.from;A=b.repeat||Infinity;if(k(g)&&k(w)){for(;t-A>g;)t-=A;for(;t<g;)t+=A;for(e=t;e<w;e+=A)f.push({value:e,move:"in"}),f.push({value:e+b.to-b.from,move:"out",size:b.breakSize})}});f.sort(function(b,t){return b.value===t.value?("in"===b.move?0:1)-("in"===t.move?0:1):b.value-t.value});var r=0;var t= g;f.forEach(function(b){r+="in"===b.move?1:-1;1===r&&"in"===b.move&&(t=b.value);0===r&&k(t)&&(y.push({from:t,to:b.value,len:b.value-t-(b.size||0)}),m+=b.value-t-(b.size||0))});d.breakArray=y;k(g)&&k(w)&&k(c.min)&&(d.unitLength=w-g-m+h,q(c,"afterBreaks"),c.staticScale?c.transA=c.staticScale:d.unitLength&&(c.transA*=(w-c.min+h)/d.unitLength),h&&(c.minPixelPadding=c.transA*(c.minPointOffset||0)),c.min=g,c.max=w)}});x(f,!0)&&c.chart.redraw()};return a}();a.Additions=w})(C||(C={}));return C});B(e,"Core/Axis/GridAxis.js", [e["Core/Axis/Axis.js"],e["Core/Axis/AxisDefaults.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(e,p,z,u){var q=z.dateFormats,n=u.addEvent,k=u.defined,x=u.erase,C=u.find,a=u.isArray,h=u.isNumber,v=u.merge,J=u.pick,F=u.timeUnits,g=u.wrap,d;(function(f){function c(b,t){var a={width:0,height:0};t.forEach(function(t){t=b[t];if(u.isObject(t,!0)){var r=u.isObject(t.label,!0)?t.label:{};t=r.getBBox?r.getBBox().height:0;r.textStr&&!h(r.textPxLength)&&(r.textPxLength=r.getBBox().width);var c=h(r.textPxLength)? Math.round(r.textPxLength):0;r.textStr&&(c=Math.round(r.getBBox().width));a.height=Math.max(t,a.height);a.width=Math.max(c,a.width)}});"treegrid"===this.options.type&&this.treeGrid&&this.treeGrid.mapOfPosToGridNode&&(a.width+=this.options.labels.indentation*((this.treeGrid.mapOfPosToGridNode[-1].height||0)-1));return a}function b(){var b=this.grid;(b&&b.columns||[]).forEach(function(b){b.getOffset()})}function d(b){if(!0===(this.options.grid||{}).enabled){var t=this.axisTitle,a=this.height,r=this.horiz, c=this.left,d=this.offset,l=this.opposite,h=this.options,g=this.top,y=this.width,m=this.tickSize(),w=t&&t.getBBox().width,D=h.title.x,e=h.title.y,k=J(h.title.margin,r?5:10);t=this.chart.renderer.fontMetrics(h.title.style.fontSize,t).f;m=(r?g+a:c)+(r?1:-1)*(l?-1:1)*(m?m[0]/2:0)+(this.side===f.Side.bottom?t:0);b.titlePosition.x=r?c-(w||0)/2-k+D:m+(l?y:0)+d+D;b.titlePosition.y=r?m-(l?a:0)+(l?t:-t)/2+d+e:g-k+e}}function E(){var b=this.chart,a=this.options.grid;a=void 0===a?{}:a;var c=this.userOptions; if(a.enabled){var f=this.options;f.labels.align=J(f.labels.align,"center");this.categories||(f.showLastLabel=!1);this.labelRotation=0;f.labels.rotation=0}if(a.columns){f=this.grid.columns=[];for(var d=this.grid.columnIndex=0;++d<a.columns.length;){var l=v(c,a.columns[a.columns.length-d-1],{linkedTo:0,type:"category",scrollbar:{enabled:!1}});delete l.grid.columns;l=new e(this.chart,l);l.grid.isColumn=!0;l.grid.columnIndex=d;x(b.axes,l);x(b[this.coll],l);f.push(l)}}}function I(){var b=this.grid,a=this.options; if(!0===(a.grid||{}).enabled){var c=this.min||0,d=this.max||0;this.maxLabelDimensions=this.getMaxLabelDimensions(this.ticks,this.tickPositions);this.rightWall&&this.rightWall.destroy();if(this.grid&&this.grid.isOuterAxis()&&this.axisLine){var l=a.lineWidth;if(l){l=this.getLinePath(l);var h=l[0],g=l[1],m=((this.tickSize("tick")||[1])[0]-1)*(this.side===f.Side.top||this.side===f.Side.left?-1:1);"M"===h[0]&&"L"===g[0]&&(this.horiz?(h[2]+=m,g[2]+=m):(h[1]+=m,g[1]+=m));!this.horiz&&this.chart.marginRight&& (h=[h,["L",this.left,h[2]||0]],m=["L",this.chart.chartWidth-this.chart.marginRight,this.toPixels(d+this.tickmarkOffset)],g=[["M",g[1]||0,this.toPixels(d+this.tickmarkOffset)],m],this.grid.upperBorder||0===c%1||(this.grid.upperBorder=this.grid.renderBorder(h)),this.grid.upperBorder&&(this.grid.upperBorder.attr({stroke:a.lineColor,"stroke-width":a.lineWidth}),this.grid.upperBorder.animate({d:h})),this.grid.lowerBorder||0===d%1||(this.grid.lowerBorder=this.grid.renderBorder(g)),this.grid.lowerBorder&& (this.grid.lowerBorder.attr({stroke:a.lineColor,"stroke-width":a.lineWidth}),this.grid.lowerBorder.animate({d:g})));this.grid.axisLineExtra?(this.grid.axisLineExtra.attr({stroke:a.lineColor,"stroke-width":a.lineWidth}),this.grid.axisLineExtra.animate({d:l})):this.grid.axisLineExtra=this.grid.renderBorder(l);this.axisLine[this.showAxis?"show":"hide"](!0)}}(b&&b.columns||[]).forEach(function(b){b.render()});if(!this.horiz&&this.chart.hasRendered&&(this.scrollbar||this.linkedParent&&this.linkedParent.scrollbar)){b= this.tickmarkOffset;a=this.tickPositions[this.tickPositions.length-1];l=this.tickPositions[0];for(h=g=void 0;(g=this.hiddenLabels.pop())&&g.element;)g.show();for(;(h=this.hiddenMarks.pop())&&h.element;)h.show();(g=this.ticks[l].label)&&(c-l>b?this.hiddenLabels.push(g.hide()):g.show());(g=this.ticks[a].label)&&(a-d>b?this.hiddenLabels.push(g.hide()):g.show());(c=this.ticks[a].mark)&&a-d<b&&0<a-d&&this.ticks[a].isLast&&this.hiddenMarks.push(c.hide())}}}function q(){var b=this.tickPositions&&this.tickPositions.info, a=this.options,c=this.userOptions.labels||{};(a.grid||{}).enabled&&(this.horiz?(this.series.forEach(function(b){b.options.pointRange=0}),b&&a.dateTimeLabelFormats&&a.labels&&!k(c.align)&&(!1===a.dateTimeLabelFormats[b.unitName].range||1<b.count)&&(a.labels.align="left",k(c.x)||(a.labels.x=3))):"treegrid"!==this.options.type&&this.grid&&this.grid.columns&&(this.minPointOffset=this.tickInterval))}function G(b){var a=this.options;b=b.userOptions;var c=a&&u.isObject(a.grid,!0)?a.grid:{};if(!0===c.enabled){var r= v(!0,{className:"highcharts-grid-axis "+(b.className||""),dateTimeLabelFormats:{hour:{list:["%H:%M","%H"]},day:{list:["%A, %e. %B","%a, %e. %b","%E"]},week:{list:["Week %W","W%W"]},month:{list:["%B","%b","%o"]}},grid:{borderWidth:1},labels:{padding:2,style:{fontSize:"13px"}},margin:0,title:{text:null,reserveSpace:!1,rotation:0},units:[["millisecond",[1,10,100]],["second",[1,10]],["minute",[1,5,15]],["hour",[1,6]],["day",[1]],["week",[1]],["month",[1]],["year",null]]},b);"xAxis"===this.coll&&(k(b.linkedTo)&& !k(b.tickPixelInterval)&&(r.tickPixelInterval=350),k(b.tickPixelInterval)||!k(b.linkedTo)||k(b.tickPositioner)||k(b.tickInterval)||(r.tickPositioner=function(b,a){var c=this.linkedParent&&this.linkedParent.tickPositions&&this.linkedParent.tickPositions.info;if(c){for(var f=r.units||[],d=void 0,t=void 0,l=void 0,g=0;g<f.length;g++)if(f[g][0]===c.unitName){d=g;break}f[d+1]?(l=f[d+1][0],t=(f[d+1][1]||[1])[0]):"year"===c.unitName&&(l="year",t=10*c.count);c=F[l];this.tickInterval=c*t;return this.getTimeTicks({unitRange:c, count:t,unitName:l},b,a,this.options.startOfWeek)}}));v(!0,this.options,r);this.horiz&&(a.minPadding=J(b.minPadding,0),a.maxPadding=J(b.maxPadding,0));h(a.grid.borderWidth)&&(a.tickWidth=a.lineWidth=c.borderWidth)}}function m(b){b=(b=b.userOptions)&&b.grid||{};var a=b.columns;b.enabled&&a&&v(!0,this.options,a[a.length-1])}function H(){(this.grid.columns||[]).forEach(function(b){b.setScale()})}function K(b){var c=p.defaultLeftAxisOptions,f=this.horiz,d=this.maxLabelDimensions,r=this.options.grid;r= void 0===r?{}:r;r.enabled&&d&&(c=2*Math.abs(c.labels.x),f=f?r.cellHeight||c+d.height:c+d.width,a(b.tickSize)?b.tickSize[0]=f:b.tickSize=[f,0])}function l(){this.axes.forEach(function(b){(b.grid&&b.grid.columns||[]).forEach(function(b){b.setAxisSize();b.setAxisTranslation()})})}function y(b){var a=this.grid;(a.columns||[]).forEach(function(a){a.destroy(b.keepEvents)});a.columns=void 0}function D(b){b=b.userOptions||{};var a=b.grid||{};a.enabled&&k(a.borderColor)&&(b.tickColor=b.lineColor=a.borderColor); this.grid||(this.grid=new L(this));this.hiddenLabels=[];this.hiddenMarks=[]}function M(b){var a=this.label,c=this.axis,d=c.reversed,l=c.chart,r=c.options.grid||{},g=c.options.labels,m=g.align,y=f.Side[c.side],w=b.tickmarkOffset,D=c.tickPositions,e=this.pos-w;D=h(D[b.index+1])?D[b.index+1]-w:(c.max||0)+w;var k=c.tickSize("tick");w=k?k[0]:0;k=k?k[1]/2:0;if(!0===r.enabled){if("top"===y){r=c.top+c.offset;var A=r-w}else"bottom"===y?(A=l.chartHeight-c.bottom+c.offset,r=A+w):(r=c.top+c.len-(c.translate(d? D:e)||0),A=c.top+c.len-(c.translate(d?e:D)||0));"right"===y?(y=l.chartWidth-c.right+c.offset,d=y+w):"left"===y?(d=c.left+c.offset,y=d-w):(y=Math.round(c.left+(c.translate(d?D:e)||0))-k,d=Math.min(Math.round(c.left+(c.translate(d?e:D)||0))-k,c.left+c.len));this.slotWidth=d-y;b.pos.x="left"===m?y:"right"===m?d:y+(d-y)/2;b.pos.y=A+(r-A)/2;l=l.renderer.fontMetrics(g.style.fontSize,a&&a.element);a=a?a.getBBox().height:0;g.useHTML?b.pos.y+=l.b+-(a/2):(a=Math.round(a/l.h),b.pos.y+=(l.b-(l.h-l.f))/2+-((a- 1)*l.h/2));b.pos.x+=c.horiz&&g.x||0}}function A(b){var a=b.axis,c=b.value;if(a.options.grid&&a.options.grid.enabled){var d=a.tickPositions,f=(a.linkedParent||a).series[0],l=c===d[0];d=c===d[d.length-1];var r=f&&C(f.options.data,function(b){return b[a.isXAxis?"x":"y"]===c}),g=void 0;r&&f.is("gantt")&&(g=v(r),z.seriesTypes.gantt.prototype.pointClass.setGanttPointAliases(g));b.isFirst=l;b.isLast=d;b.point=g}}function N(){var b=this.options,a=this.categories,c=this.tickPositions,d=c[0],f=c[c.length-1], l=this.linkedParent&&this.linkedParent.min||this.min,g=this.linkedParent&&this.linkedParent.max||this.max,h=this.tickInterval;!0!==(b.grid||{}).enabled||a||!this.horiz&&!this.isLinked||(d<l&&d+h>l&&!b.startOnTick&&(c[0]=l),f>g&&f-h<g&&!b.endOnTick&&(c[c.length-1]=g))}function O(b){var a=this.options.grid;return!0===(void 0===a?{}:a).enabled&&this.categories?this.tickInterval:b.apply(this,Array.prototype.slice.call(arguments,1))}(function(b){b[b.top=0]="top";b[b.right=1]="right";b[b.bottom=2]="bottom"; b[b.left=3]="left"})(f.Side||(f.Side={}));f.compose=function(a,f,h){-1===a.keepProps.indexOf("grid")&&(a.keepProps.push("grid"),a.prototype.getMaxLabelDimensions=c,g(a.prototype,"unsquish",O),n(a,"init",D),n(a,"afterGetOffset",b),n(a,"afterGetTitlePosition",d),n(a,"afterInit",E),n(a,"afterRender",I),n(a,"afterSetAxisTranslation",q),n(a,"afterSetOptions",G),n(a,"afterSetOptions",m),n(a,"afterSetScale",H),n(a,"afterTickSize",K),n(a,"trimTicks",N),n(a,"destroy",y));n(f,"afterSetChartSize",l);n(h,"afterGetLabelPosition", M);n(h,"labelFormat",A);return a};var L=function(){function b(b){this.axis=b}b.prototype.isOuterAxis=function(){var b=this.axis,a=b.grid.columnIndex,c=b.linkedParent&&b.linkedParent.grid.columns||b.grid.columns,d=a?b.linkedParent:b,f=-1,l=0;b.chart[b.coll].forEach(function(a,c){a.side!==b.side||a.options.isInternal||(l=c,a===d&&(f=c))});return l===f&&(h(a)?c.length===a:!0)};b.prototype.renderBorder=function(b){var a=this.axis,c=a.chart.renderer,d=a.options;b=c.path(b).addClass("highcharts-axis-line").add(a.axisBorder); c.styledMode||b.attr({stroke:d.lineColor,"stroke-width":d.lineWidth,zIndex:7});return b};return b}();f.Additions=L})(d||(d={}));q.E=function(a){return this.dateFormat("%a",a,!0).charAt(0)};q.W=function(a){a=new this.Date(a);var c=(this.get("Day",a)+6)%7,b=new this.Date(a.valueOf());this.set("Date",b,this.get("Date",a)-c+3);c=new this.Date(this.get("FullYear",b),0,1);4!==this.get("Day",c)&&(this.set("Month",a,0),this.set("Date",a,1+(11-this.get("Day",c))%7));return(1+Math.floor((b.valueOf()-c.valueOf())/ 6048E5)).toString()};"";return d});B(e,"Gantt/Tree.js",[e["Core/Utilities.js"]],function(e){var p=e.extend,z=e.isNumber,u=e.pick,q=function(e,n){var k=e.reduce(function(a,h){var e=u(h.parent,"");"undefined"===typeof a[e]&&(a[e]=[]);a[e].push(h);return a},{});Object.keys(k).forEach(function(a,h){var e=k[a];""!==a&&-1===n.indexOf(a)&&(e.forEach(function(a){h[""].push(a)}),delete h[a])});return k},n=function(e,x,q,a,h,v){var k=0,F=0,g=v&&v.after,d=v&&v.before;x={data:a,depth:q-1,id:e,level:q,parent:x}; var f,c;"function"===typeof d&&d(x,v);d=(h[e]||[]).map(function(b){var a=n(b.id,e,q+1,b,h,v),d=b.start;b=!0===b.milestone?d:b.end;f=!z(f)||d<f?d:f;c=!z(c)||b>c?b:c;k=k+1+a.descendants;F=Math.max(a.height+1,F);return a});a&&(a.start=u(a.start,f),a.end=u(a.end,c));p(x,{children:d,descendants:k,height:F});"function"===typeof g&&g(x,v);return x};return{getListOfParents:q,getNode:n,getTree:function(e,p){var k=e.map(function(a){return a.id});e=q(e,k);return n("",null,1,null,e,p)}}});B(e,"Core/Axis/TreeGridTick.js", [e["Core/Utilities.js"]],function(e){var p=e.addEvent,z=e.isObject,u=e.isNumber,q=e.pick,n=e.wrap,k;(function(e){function k(){this.treeGrid||(this.treeGrid=new F(this))}function a(a,d){a=a.treeGrid;var f=!a.labelIcon,c=d.renderer,b=d.xy,g=d.options,e=g.width||0,h=g.height||0,k=b.x-e/2-(g.padding||0);b=b.y-h/2;var n=d.collapsed?90:180,m=d.show&&u(b),v=a.labelIcon;v||(a.labelIcon=v=c.path(c.symbols[g.type](g.x||0,g.y||0,e,h)).addClass("highcharts-label-icon").add(d.group));v.attr({y:m?0:-9999});c.styledMode|| v.attr({cursor:"pointer",fill:q(d.color,"#666666"),"stroke-width":1,stroke:g.lineColor,strokeWidth:g.lineWidth||0});v[f?"attr":"animate"]({translateX:k,translateY:b,rotation:n})}function h(a,d,f,c,b,e,h,k,n){var g=q(this.options&&this.options.labels,e);e=this.pos;var m=this.axis,w="treegrid"===m.options.type;a=a.apply(this,[d,f,c,b,g,h,k,n]);w&&(d=g&&z(g.symbol,!0)?g.symbol:{},g=g&&u(g.indentation)?g.indentation:0,e=(e=(m=m.treeGrid.mapOfPosToGridNode)&&m[e])&&e.depth||1,a.x+=(d.width||0)+2*(d.padding|| 0)+(e-1)*g);return a}function v(g){var d=this,f=d.pos,c=d.axis,b=d.label,e=c.treeGrid.mapOfPosToGridNode,h=c.options,k=q(d.options&&d.options.labels,h&&h.labels),n=k&&z(k.symbol,!0)?k.symbol:{},v=(e=e&&e[f])&&e.depth;h="treegrid"===h.type;var m=-1<c.tickPositions.indexOf(f);f=c.chart.styledMode;h&&e&&b&&b.element&&b.addClass("highcharts-treegrid-node-level-"+v);g.apply(d,Array.prototype.slice.call(arguments,1));h&&b&&b.element&&e&&e.descendants&&0<e.descendants&&(c=c.treeGrid.isCollapsed(e),a(d,{color:!f&& b.styles&&b.styles.color||"",collapsed:c,group:b.parentGroup,options:n,renderer:b.renderer,show:m,xy:b.xy}),n="highcharts-treegrid-node-"+(c?"expanded":"collapsed"),b.addClass("highcharts-treegrid-node-"+(c?"collapsed":"expanded")).removeClass(n),f||b.css({cursor:"pointer"}),[b,d.treeGrid.labelIcon].forEach(function(a){a&&!a.attachedTreeGridEvents&&(p(a.element,"mouseover",function(){b.addClass("highcharts-treegrid-node-active");b.renderer.styledMode||b.css({textDecoration:"underline"})}),p(a.element, "mouseout",function(){var a=z(k.style)?k.style:{};b.removeClass("highcharts-treegrid-node-active");b.renderer.styledMode||b.css({textDecoration:a.textDecoration})}),p(a.element,"click",function(){d.treeGrid.toggleCollapse()}),a.attachedTreeGridEvents=!0)}))}var x=!1;e.compose=function(a){x||(p(a,"init",k),n(a.prototype,"getLabelPosition",h),n(a.prototype,"renderLabel",v),a.prototype.collapse=function(a){this.treeGrid.collapse(a)},a.prototype.expand=function(a){this.treeGrid.expand(a)},a.prototype.toggleCollapse= function(a){this.treeGrid.toggleCollapse(a)},x=!0)};var F=function(){function a(a){this.tick=a}a.prototype.collapse=function(a){var d=this.tick,c=d.axis,b=c.brokenAxis;b&&c.treeGrid.mapOfPosToGridNode&&(d=c.treeGrid.collapse(c.treeGrid.mapOfPosToGridNode[d.pos]),b.setBreaks(d,q(a,!0)))};a.prototype.destroy=function(){this.labelIcon&&this.labelIcon.destroy()};a.prototype.expand=function(a){var d=this.tick,c=d.axis,b=c.brokenAxis;b&&c.treeGrid.mapOfPosToGridNode&&(d=c.treeGrid.expand(c.treeGrid.mapOfPosToGridNode[d.pos]), b.setBreaks(d,q(a,!0)))};a.prototype.toggleCollapse=function(a){var d=this.tick,c=d.axis,b=c.brokenAxis;b&&c.treeGrid.mapOfPosToGridNode&&(d=c.treeGrid.toggleCollapse(c.treeGrid.mapOfPosToGridNode[d.pos]),b.setBreaks(d,q(a,!0)))};return a}();e.Additions=F})(k||(k={}));return k});B(e,"Series/TreeUtilities.js",[e["Core/Color/Color.js"],e["Core/Utilities.js"]],function(e,p){function q(a,e){var h=e.before,k=e.idRoot,n=e.mapIdToNode[k],g=e.points[a.i],d=g&&g.options||{},f=[],c=0;a.levelDynamic=a.level- (!1!==e.levelIsConstant?0:n.level);a.name=C(g&&g.name,"");a.visible=k===a.id||!0===e.visible;"function"===typeof h&&(a=h(a,e));a.children.forEach(function(b,d){var h=u({},e);u(h,{index:d,siblings:a.children.length,visible:a.visible});b=q(b,h);f.push(b);b.visible&&(c+=b.val)});h=C(d.value,c);a.visible=0<=h&&(0<c||a.visible);a.children=f;a.childrenTotal=c;a.isLeaf=a.visible&&!c;a.val=h;return a}var u=p.extend,B=p.isArray,n=p.isNumber,k=p.isObject,x=p.merge,C=p.pick;return{getColor:function(a,h){var k= h.index,n=h.mapOptionsToLevel,p=h.parentColor,g=h.parentColorIndex,d=h.series,f=h.colors,c=h.siblings,b=d.points,w=d.chart.options.chart,q;if(a){b=b[a.i];a=n[a.level]||{};if(n=b&&a.colorByPoint){var u=b.index%(f?f.length:w.colorCount);var x=f&&f[u]}if(!d.chart.styledMode){f=b&&b.options.color;w=a&&a.color;if(q=p)q=(q=a&&a.colorVariation)&&"brightness"===q.key&&k&&c?e.parse(p).brighten(k/c*q.to).get():p;q=C(f,w,x,q,d.color)}var z=C(b&&b.options.colorIndex,a&&a.colorIndex,u,g,h.colorIndex)}return{color:q, colorIndex:z}},getLevelOptions:function(a){var e=null;if(k(a)){e={};var q=n(a.from)?a.from:1;var p=a.levels;var u={};var g=k(a.defaults)?a.defaults:{};B(p)&&(u=p.reduce(function(a,f){if(k(f)&&n(f.level)){var c=x({},f);var b=C(c.levelIsConstant,g.levelIsConstant);delete c.levelIsConstant;delete c.level;f=f.level+(b?0:q-1);k(a[f])?x(!0,a[f],c):a[f]=c}return a},{}));p=n(a.to)?a.to:1;for(a=0;a<=p;a++)e[a]=x({},g,k(u[a])?u[a]:{})}return e},setTreeValues:q,updateRootId:function(a){if(k(a)){var e=k(a.options)? a.options:{};e=C(a.rootNode,e.rootId,"");k(a.userOptions)&&(a.userOptions.rootId=e);a.rootNode=e}return e}}});B(e,"Core/Axis/TreeGridAxis.js",[e["Core/Axis/BrokenAxis.js"],e["Core/Axis/GridAxis.js"],e["Gantt/Tree.js"],e["Core/Axis/TreeGridTick.js"],e["Series/TreeUtilities.js"],e["Core/Utilities.js"]],function(e,p,z,u,B,n){var k=B.getLevelOptions,q=n.addEvent,C=n.find,a=n.fireEvent,h=n.isArray,v=n.isObject,J=n.isString,F=n.merge,g=n.pick,d=n.wrap,f;(function(c){function b(a,b){var c=a.collapseEnd|| 0;a=a.collapseStart||0;c>=b&&(a-=.5);return{from:a,to:c,showPoints:!1}}function f(a,b,c){var d=[],e=[],l={},f="boolean"===typeof b?b:!1,g={},h=-1;a=z.getTree(a,{after:function(a){a=g[a.pos];var b=0,c=0;a.children.forEach(function(a){c+=(a.descendants||0)+1;b=Math.max((a.height||0)+1,b)});a.descendants=c;a.height=b;a.collapsed&&e.push(a)},before:function(a){var b=v(a.data,!0)?a.data:{},c=J(b.name)?b.name:"",e=l[a.parent];e=v(e,!0)?g[e.pos]:null;var k=function(a){return a.name===c},m;f&&v(e,!0)&&(m= C(e.children,k))?(k=m.pos,m.nodes.push(a)):k=h++;g[k]||(g[k]=m={depth:e?e.depth+1:0,name:c,id:b.id,nodes:[a],children:[],pos:k},-1!==k&&d.push(c),v(e,!0)&&e.children.push(m));J(a.id)&&(l[a.id]=a);m&&!0===b.collapsed&&(m.collapsed=!0);a.pos=k}});g=function(a,b){var c=function(a,d,e){var l=d+(-1===d?0:b-1),f=(l-d)/2,g=d+f;a.nodes.forEach(function(a){var b=a.data;v(b,!0)&&(b.y=d+(b.seriesIndex||0),delete b.seriesIndex);a.pos=g});e[g]=a;a.pos=g;a.tickmarkOffset=f+.5;a.collapseStart=l+.5;a.children.forEach(function(a){c(a, l+1,e);l=(a.collapseEnd||0)-.5});a.collapseEnd=l+.5;return e};return c(a["-1"],-1,{})}(g,c);return{categories:d,mapOfIdToNode:l,mapOfPosToGridNode:g,collapsedNodes:e,tree:a}}function n(a){a.target.axes.filter(function(a){return"treegrid"===a.options.type}).forEach(function(b){var c=b.options||{},d=c.labels,e=c.uniqueNames;c=c.max;var l=0;if(!b.treeGrid.mapOfPosToGridNode||b.series.some(function(a){return!a.hasRendered||a.isDirtyData||a.isDirty})){var g=b.series.reduce(function(a,b){b.visible&&((b.options.data|| []).forEach(function(c){b.options.keys&&b.options.keys.length&&(c=b.pointClass.prototype.optionsToObject.call({series:b},c),b.pointClass.setGanttPointAliases(c));v(c,!0)&&(c.seriesIndex=l,a.push(c))}),!0===e&&l++);return a},[]);if(c&&g.length<c)for(var m=g.length;m<=c;m++)g.push({name:m+"\u200b"});c=f(g,e||!1,!0===e?l:1);b.categories=c.categories;b.treeGrid.mapOfPosToGridNode=c.mapOfPosToGridNode;b.hasNames=!0;b.treeGrid.tree=c.tree;b.series.forEach(function(a){var b=(a.options.data||[]).map(function(b){h(b)&& a.options.keys&&a.options.keys.length&&g.forEach(function(a){0<=b.indexOf(a.x)&&0<=b.indexOf(a.x2)&&(b=a)});return v(b,!0)?F(b):b});a.visible&&a.setData(b,!1)});b.treeGrid.mapOptionsToLevel=k({defaults:d,from:1,levels:d&&d.levels,to:b.treeGrid.tree&&b.treeGrid.tree.height});"beforeRender"===a.type&&(b.treeGrid.collapsedNodes=c.collapsedNodes)}})}function x(a,b){var c=this.treeGrid.mapOptionsToLevel||{},d=this.ticks,e=d[b],f;if("treegrid"===this.options.type&&this.treeGrid.mapOfPosToGridNode){var l= this.treeGrid.mapOfPosToGridNode[b];(c=c[l.depth])&&(f={labels:c});!e&&m?d[b]=new m(this,b,void 0,void 0,{category:l.name,tickmarkOffset:l.tickmarkOffset,options:f}):(e.parameters.category=l.name,e.options=f,e.addLabel())}else a.apply(this,Array.prototype.slice.call(arguments,1))}function B(a,b,c){var d=this,e="treegrid"===c.type;d.treeGrid||(d.treeGrid=new H(d));e&&(q(b,"beforeRender",n),q(b,"beforeRedraw",n),q(b,"addSeries",function(a){a.options.data&&(a=f(a.options.data,c.uniqueNames||!1,1),d.treeGrid.collapsedNodes= (d.treeGrid.collapsedNodes||[]).concat(a.collapsedNodes))}),q(d,"foundExtremes",function(){d.treeGrid.collapsedNodes&&d.treeGrid.collapsedNodes.forEach(function(a){var b=d.treeGrid.collapse(a);d.brokenAxis&&(d.brokenAxis.setBreaks(b,!1),d.treeGrid.collapsedNodes&&(d.treeGrid.collapsedNodes=d.treeGrid.collapsedNodes.filter(function(b){return a.collapseStart!==b.collapseStart||a.collapseEnd!==b.collapseEnd})))})}),q(d,"afterBreaks",function(){"yAxis"===d.coll&&!d.staticScale&&d.chart.options.chart.height&& (d.isDirty=!0)}),c=F({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}}));a.apply(d,[b,c]);e&&(d.hasNames=!0,d.options.showLastLabel=!0)}function G(b){var c=this.options;"treegrid"===c.type?(this.min=g(this.userMin,c.min,this.dataMin),this.max=g(this.userMax,c.max,this.dataMax),a(this,"foundExtremes"),this.setAxisTranslation(),this.tickmarkOffset= .5,this.tickInterval=1,this.tickPositions=this.treeGrid.mapOfPosToGridNode?this.treeGrid.getTickPositions():[]):b.apply(this,Array.prototype.slice.call(arguments,1))}var m;c.compose=function(a,b,c,f){-1===a.keepProps.indexOf("treeGrid")&&(a.keepProps.push("treeGrid"),m=f,d(a.prototype,"generateTick",x),d(a.prototype,"init",B),d(a.prototype,"setTickInterval",G),a.prototype.utils={getNode:z.getNode},p.compose(a,b,f),e.compose(a,c),u.compose(f));return a};var H=function(){function a(a){this.axis=a}a.prototype.setCollapsedStatus= function(a){var b=this.axis,c=b.chart;b.series.forEach(function(b){var d=b.options.data;if(a.id&&d){var e=c.get(a.id);b=d[b.data.indexOf(e)];e&&b&&(e.collapsed=a.collapsed,b.collapsed=a.collapsed)}})};a.prototype.collapse=function(a){var c=this.axis,d=c.options.breaks||[],e=b(a,c.max);d.push(e);a.collapsed=!0;c.treeGrid.setCollapsedStatus(a);return d};a.prototype.expand=function(a){var c=this.axis,d=c.options.breaks||[],e=b(a,c.max);a.collapsed=!1;c.treeGrid.setCollapsedStatus(a);return d.reduce(function(a, b){b.to===e.to&&b.from===e.from||a.push(b);return a},[])};a.prototype.getTickPositions=function(){var a=this.axis,b=Math.floor(a.min/a.tickInterval)*a.tickInterval,c=Math.ceil(a.max/a.tickInterval)*a.tickInterval;return Object.keys(a.treeGrid.mapOfPosToGridNode||{}).reduce(function(d,e){e=+e;!(e>=b&&e<=c)||a.brokenAxis&&a.brokenAxis.isInAnyBreak(e)||d.push(e);return d},[])};a.prototype.isCollapsed=function(a){var c=this.axis,d=c.options.breaks||[],e=b(a,c.max);return d.some(function(a){return a.from=== e.from&&a.to===e.to})};a.prototype.toggleCollapse=function(a){return this.isCollapsed(a)?this.expand(a):this.collapse(a)};return a}();c.Additions=H})(f||(f={}));return f});B(e,"masters/modules/treegrid.src.js",[e["Core/Globals.js"],e["Core/Axis/TreeGridAxis.js"]],function(e,p){p.compose(e.Axis,e.Chart,e.Series,e.Tick)})}); //# sourceMappingURL=treegrid.js.map