UNPKG

highcharts

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