corrade-nucleus-nucleons

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 30  →  ?path2? @ 31
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/accessibility.js
@@ -0,0 +1,49 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Accessibility module
 
(c) 2010-2017 Highsoft AS
Author: Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(r){"object"===typeof module&&module.exports?module.exports=r:r(Highcharts)})(function(r){(function(e){function r(a){return a.replace(/&/g,"\x26amp;").replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;").replace(/"/g,"\x26quot;").replace(/'/g,"\x26#x27;").replace(/\//g,"\x26#x2F;")}function A(a){for(var c=a.childNodes.length;c--;)a.appendChild(a.childNodes[c])}function k(a){var c;a&&a.onclick&&l.createEvent&&(c=l.createEvent("Events"),c.initEvent("click",!0,!1),a.onclick(c))}var z=e.win,l=z.document,
g=e.each,B=e.erase,x=e.addEvent,C=e.removeEvent,y=e.fireEvent,D=e.dateFormat,w=e.merge,t={"default":["series","data point","data points"],line:["line","data point","data points"],spline:["line","data point","data points"],area:["line","data point","data points"],areaspline:["line","data point","data points"],pie:["pie","slice","slices"],column:["column series","column","columns"],bar:["bar series","bar","bars"],scatter:["scatter series","data point","data points"],boxplot:["boxplot series","box",
"boxes"],arearange:["arearange series","data point","data points"],areasplinerange:["areasplinerange series","data point","data points"],bubble:["bubble series","bubble","bubbles"],columnrange:["columnrange series","column","columns"],errorbar:["errorbar series","errorbar","errorbars"],funnel:["funnel","data point","data points"],pyramid:["pyramid","data point","data points"],waterfall:["waterfall series","column","columns"],map:["map","area","areas"],mapline:["line","data point","data points"],mappoint:["point series",
"data point","data points"],mapbubble:["bubble series","bubble","bubbles"]},E={boxplot:" Box plot charts are typically used to display groups of statistical data. Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile and maximum. ",arearange:" Arearange charts are line charts displaying a range between a lower and higher value for each point. ",areasplinerange:" These charts are line charts displaying a range between a lower and higher value for each point. ",
bubble:" Bubble charts are scatter charts where each data point also has a size value. ",columnrange:" Columnrange charts are column charts displaying a range between a lower and higher value for each point. ",errorbar:" Errorbar series are used to display the variability of the data. ",funnel:" Funnel charts are used to display reduction of data in stages. ",pyramid:" Pyramid charts consist of a single pyramid with item heights corresponding to each point value. ",waterfall:" A waterfall chart is a column chart where each column contributes towards a total end value. "};
e.Series.prototype.commonKeys="name id category x value y".split(" ");e.Series.prototype.specialKeys="z open high q3 median q1 low close".split(" ");e.seriesTypes.pie&&(e.seriesTypes.pie.prototype.specialKeys=[]);e.setOptions({accessibility:{enabled:!0,pointDescriptionThreshold:30,keyboardNavigation:{enabled:!0,tabThroughPoints:!0}}});e.wrap(e.Series.prototype,"render",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));this.chart.options.accessibility.enabled&&this.setA11yDescription()});
e.Series.prototype.setA11yDescription=function(){var a=this.chart.options.accessibility,c=this.points&&this.points.length&&this.points[0].graphic&&this.points[0].graphic.element,d=c&&c.parentNode||this.graph&&this.graph.element||this.group&&this.group.element;d&&(d.lastChild===c&&A(d),this.points&&(this.points.length<a.pointDescriptionThreshold||!1===a.pointDescriptionThreshold)&&g(this.points,function(b){b.graphic&&(b.graphic.element.setAttribute("role","img"),b.graphic.element.setAttribute("tabindex",
"-1"),b.graphic.element.setAttribute("aria-label",b.series.options.pointDescriptionFormatter&&b.series.options.pointDescriptionFormatter(b)||a.pointDescriptionFormatter&&a.pointDescriptionFormatter(b)||b.buildPointInfoString()))}),1<this.chart.series.length||a.describeSingleSeries)&&(d.setAttribute("role",this.options.exposeElementToA11y?"img":"region"),d.setAttribute("tabindex","-1"),d.setAttribute("aria-label",a.seriesDescriptionFormatter&&a.seriesDescriptionFormatter(this)||this.buildSeriesInfoString()))};
e.Series.prototype.buildSeriesInfoString=function(){var a=t[this.type]||t["default"],c=this.description||this.options.description;return(this.name?this.name+", ":"")+(1===this.chart.types.length?a[0]:"series")+" "+(this.index+1)+" of "+this.chart.series.length+(1===this.chart.types.length?" with ":". "+a[0]+" with ")+(this.points.length+" "+(1===this.points.length?a[1]:a[2]))+(c?". "+c:"")+(1<this.chart.yAxis.length&&this.yAxis?". Y axis, "+this.yAxis.getDescription():"")+(1<this.chart.xAxis.length&&
this.xAxis?". X axis, "+this.xAxis.getDescription():"")};e.Point.prototype.buildPointInfoString=function(){var a=this,c=a.series,d=c.chart.options.accessibility,b="",f=c.xAxis&&c.xAxis.isDatetimeAxis,d=f&&D(d.pointDateFormatter&&d.pointDateFormatter(a)||d.pointDateFormat||e.Tooltip.prototype.getXDateFormat(a,c.chart.options.tooltip,c.xAxis),a.x);e.find(c.specialKeys,function(b){return void 0!==a[b]})?(f&&(b=d),g(c.commonKeys.concat(c.specialKeys),function(c){void 0===a[c]||f&&"x"===c||(b+=(b?". ":
"")+c+", "+a[c])})):b=(this.name||d||this.category||this.id||"x, "+this.x)+", "+(void 0!==this.value?this.value:this.y);return this.index+1+". "+b+"."+(this.description?" "+this.description:"")};e.Axis.prototype.getDescription=function(){return this.userOptions&&this.userOptions.description||this.axisTitle&&this.axisTitle.textStr||this.options.id||this.categories&&"categories"||"values"};e.Axis.prototype.panStep=function(a,c){var d=c||3;c=this.getExtremes();var b=(c.max-c.min)/d*a,d=c.max+b,b=c.min+
b,f=d-b;0>a&&b<c.dataMin?(b=c.dataMin,d=b+f):0<a&&d>c.dataMax&&(d=c.dataMax,b=d-f);this.setExtremes(b,d)};e.wrap(e.Series.prototype,"init",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));var c=this.chart;c.options.accessibility.enabled&&(c.types=c.types||[],0>c.types.indexOf(this.type)&&c.types.push(this.type),x(this,"remove",function(){var a=this,b=!1;g(c.series,function(f){f!==a&&0>c.types.indexOf(a.type)&&(b=!0)});b||B(c.types,a.type)}))});e.Chart.prototype.getTypeDescription=
function(){var a=this.types&&this.types[0],c=this.series[0]&&this.series[0].mapTitle;if(a){if("map"===a)return c?"Map of "+c:"Map of unspecified region.";if(1<this.types.length)return"Combination chart.";if(-1<["spline","area","areaspline"].indexOf(a))return"Line chart."}else return"Empty chart.";return a+" chart."+(E[a]||"")};e.Chart.prototype.getAxesDescription=function(){var a=this.xAxis.length,c=this.yAxis.length,d={},b;if(a)if(d.xAxis="The chart has "+a+(1<a?" X axes":" X axis")+" displaying ",
2>a)d.xAxis+=this.xAxis[0].getDescription()+".";else{for(b=0;b<a-1;++b)d.xAxis+=(b?", ":"")+this.xAxis[b].getDescription();d.xAxis+=" and "+this.xAxis[b].getDescription()+"."}if(c)if(d.yAxis="The chart has "+c+(1<c?" Y axes":" Y axis")+" displaying ",2>c)d.yAxis+=this.yAxis[0].getDescription()+".";else{for(b=0;b<c-1;++b)d.yAxis+=(b?", ":"")+this.yAxis[b].getDescription();d.yAxis+=" and "+this.yAxis[b].getDescription()+"."}return d};e.Chart.prototype.addAccessibleContextMenuAttribs=function(){var a=
this.exportDivElements;a&&(g(a,function(a){"DIV"!==a.tagName||a.children&&a.children.length||(a.setAttribute("role","menuitem"),a.setAttribute("tabindex",-1))}),a[0].parentNode.setAttribute("role","menu"),a[0].parentNode.setAttribute("aria-label","Chart export"))};e.Point.prototype.highlight=function(){var a=this.series.chart;this.graphic&&this.graphic.element.focus&&this.graphic.element.focus();this.isNull?a.tooltip&&a.tooltip.hide(0):(this.onMouseOver(),a.tooltip&&a.tooltip.refresh(a.tooltip.shared?
[this]:this));a.highlightedPoint=this;return this};e.Chart.prototype.highlightAdjacentPoint=function(a){var c=this.series,d=this.highlightedPoint,b=d&&d.index||0,f=d&&d.series.points,m=this.series&&this.series[this.series.length-1],e=m&&m.points&&m.points[m.points.length-1],m=d&&d.series.connectEnds&&b>f.length-3?2:1;if(!c[0]||!c[0].points)return!1;if(d){if(f[b]!==d)for(e=0;e<f.length;++e)if(f[e]===d){b=e;break}c=c[d.series.index+(a?1:-1)];b=f[b+(a?m:-1)]||c&&c.points[a?0:c.points.length-(c.connectEnds?
2:1)];if(void 0===b)return!1}else b=a?c[0].points[0]:e;return b.isNull&&this.options.accessibility.keyboardNavigation.skipNullPoints||b.series.options.skipKeyboardNavigation||!b.series.visible?(this.highlightedPoint=b,this.highlightAdjacentPoint(a)):b.highlight()};e.Chart.prototype.showExportMenu=function(){this.exportSVGElements&&this.exportSVGElements[0]&&(this.exportSVGElements[0].element.onclick(),this.highlightExportItem(0))};e.Chart.prototype.highlightExportItem=function(a){var c=this.exportDivElements&&
this.exportDivElements[a],d=this.exportDivElements&&this.exportDivElements[this.highlightedExportItem];if(c&&"DIV"===c.tagName&&(!c.children||!c.children.length)){c.focus&&c.focus();if(d&&d.onmouseout)d.onmouseout();if(c.onmouseover)c.onmouseover();this.highlightedExportItem=a;return!0}};e.Chart.prototype.highlightRangeSelectorButton=function(a){var c=this.rangeSelector.buttons;c[this.highlightedRangeSelectorItemIx]&&c[this.highlightedRangeSelectorItemIx].setState(this.oldRangeSelectorItemState||
0);this.highlightedRangeSelectorItemIx=a;return c[a]?(c[a].element.focus&&c[a].element.focus(),this.oldRangeSelectorItemState=c[a].state,c[a].setState(2),!0):!1};e.Chart.prototype.highlightLegendItem=function(a){var c=this.legend.allItems;c[this.highlightedLegendItemIx]&&y(c[this.highlightedLegendItemIx].legendGroup.element,"mouseout");this.highlightedLegendItemIx=a;return c[a]?(c[a].legendGroup.element.focus&&c[a].legendGroup.element.focus(),y(c[a].legendGroup.element,"mouseover"),!0):!1};e.Chart.prototype.hideExportMenu=
function(){var a=this.exportDivElements;if(a){g(a,function(a){y(a,"mouseleave")});if(a[this.highlightedExportItem]&&a[this.highlightedExportItem].onmouseout)a[this.highlightedExportItem].onmouseout();this.highlightedExportItem=0;this.renderTo.focus()}};e.Chart.prototype.addKeyboardNavEvents=function(){function a(b){this.id=b.id;this.keyCodeMap=b.keyCodeMap;this.move=b.move;this.validate=b.validate;this.init=b.init;this.terminate=b.terminate;this.transformTabs=!1!==b.transformTabs}function c(c,d,e){return new a(w({keyCodeMap:d,
move:function(a){this.terminate&&this.terminate(a);b.keyboardNavigationModuleIndex+=a;var c=b.keyboardNavigationModules[b.keyboardNavigationModuleIndex];if(c){if(c.validate&&!c.validate())return this.move(a);if(c.init)return c.init(a),!0}b.keyboardNavigationModuleIndex=0;b.slipNextTab=!0;return!1}},{id:c},e))}function d(a){a=a||z.event;var c=b.keyboardNavigationModules[b.keyboardNavigationModuleIndex];9===(a.which||a.keyCode)&&b.slipNextTab?b.slipNextTab=!1:(b.slipNextTab=!1,c&&c.run(a)&&a.preventDefault())}
var b=this;a.prototype={run:function(b){var a=this,c=b.which||b.keyCode,f=!1,c=this.transformTabs&&9===c?b.shiftKey?37:39:c;g(this.keyCodeMap,function(d){-1<d[0].indexOf(c)&&(f=!1===d[1].call(a,c,b)?!1:!0)});return f}};b.keyboardNavigationModules=[c("points",[[[37,39],function(a){if(!b.highlightAdjacentPoint(39===a))return this.move(39===a?1:-1)}],[[38,40],function(a){var c;if(b.highlightedPoint)if((c=b.series[b.highlightedPoint.series.index+(38===a?-1:1)])&&c.points[0])c.points[0].highlight();else return this.move(40===
a?1:-1)}],[[13,32],function(){b.highlightedPoint&&b.highlightedPoint.firePointEvent("click")}]],{init:function(){delete b.highlightedPoint},terminate:function(){b.tooltip&&b.tooltip.hide(0);delete b.highlightedPoint},transformTabs:b.options.accessibility.keyboardNavigation.tabThroughPoints}),c("exporting",[[[37,38],function(){for(var a=b.highlightedExportItem||0,c=!0;a--;)if(b.highlightExportItem(a)){c=!1;break}if(c)return b.hideExportMenu(),this.move(-1)}],[[39,40],function(){for(var a=!0,c=(b.highlightedExportItem||
0)+1;c<b.exportDivElements.length;++c)if(b.highlightExportItem(c)){a=!1;break}if(a)return b.hideExportMenu(),this.move(1)}],[[13,32],function(){k(b.exportDivElements[b.highlightedExportItem])}]],{validate:function(){return b.exportChart&&!(b.options.exporting&&!1===b.options.exporting.enabled)},init:function(a){b.highlightedPoint=null;b.showExportMenu();if(0>a&&b.exportDivElements)for(a=b.exportDivElements.length;-1<a&&!b.highlightExportItem(a);--a);}}),c("mapZoom",[[[38,40,37,39],function(a){b[38===
a||40===a?"yAxis":"xAxis"][0].panStep(39>a?-1:1)}],[[9],function(a,c){b.mapNavButtons[b.focusedMapNavButtonIx].setState(0);if(c.shiftKey&&!b.focusedMapNavButtonIx||!c.shiftKey&&b.focusedMapNavButtonIx)return b.mapZoom(),this.move(c.shiftKey?-1:1);b.focusedMapNavButtonIx+=c.shiftKey?-1:1;a=b.mapNavButtons[b.focusedMapNavButtonIx];a.element.focus&&a.element.focus();a.setState(2)}],[[13,32],function(){k(b.mapNavButtons[b.focusedMapNavButtonIx].element)}]],{validate:function(){return b.mapZoom&&b.mapNavButtons&&
2===b.mapNavButtons.length},transformTabs:!1,init:function(a){var c=b.mapNavButtons[0],d=b.mapNavButtons[1],c=0<a?c:d;g(b.mapNavButtons,function(b,a){b.element.setAttribute("tabindex",-1);b.element.setAttribute("role","button");b.element.setAttribute("aria-label","Zoom "+(a?"out":"")+"chart")});c.element.focus&&c.element.focus();c.setState(2);b.focusedMapNavButtonIx=0<a?0:1}}),c("rangeSelector",[[[37,39,38,40],function(a){a=37===a||38===a?-1:1;if(!b.highlightRangeSelectorButton(b.highlightedRangeSelectorItemIx+
a))return this.move(a)}],[[13,32],function(){3!==b.oldRangeSelectorItemState&&k(b.rangeSelector.buttons[b.highlightedRangeSelectorItemIx].element)}]],{validate:function(){return b.rangeSelector&&b.rangeSelector.buttons&&b.rangeSelector.buttons.length},init:function(a){g(b.rangeSelector.buttons,function(a){a.element.setAttribute("tabindex","-1");a.element.setAttribute("role","button");a.element.setAttribute("aria-label","Select range "+(a.text&&a.text.textStr))});b.highlightRangeSelectorButton(0<a?
0:b.rangeSelector.buttons.length-1)}}),c("rangeSelectorInput",[[[9,38,40],function(a,c){a=9===a&&c.shiftKey||38===a?-1:1;c=b.highlightedInputRangeIx+=a;if(1<c||0>c)return this.move(a);b.rangeSelector[c?"maxInput":"minInput"].focus()}]],{validate:function(){return b.rangeSelector&&b.rangeSelector.inputGroup&&"hidden"!==b.rangeSelector.inputGroup.element.getAttribute("visibility")&&!1!==b.options.rangeSelector.inputEnabled&&b.rangeSelector.minInput&&b.rangeSelector.maxInput},transformTabs:!1,init:function(a){b.highlightedInputRangeIx=
0<a?0:1;b.rangeSelector[b.highlightedInputRangeIx?"maxInput":"minInput"].focus()}}),c("legend",[[[37,39,38,40],function(a){a=37===a||38===a?-1:1;if(!b.highlightLegendItem(b.highlightedLegendItemIx+a))return this.move(a)}],[[13,32],function(){k(b.legend.allItems[b.highlightedLegendItemIx].legendItem.element.parentNode)}]],{validate:function(){return b.legend&&b.legend.allItems&&!(b.colorAxis&&b.colorAxis.length)&&!1!==(b.options.legend&&b.options.legend.keyboardNavigation&&b.options.legend.keyboardNavigation.enabled)},
init:function(a){g(b.legend.allItems,function(a){a.legendGroup.element.setAttribute("tabindex","-1");a.legendGroup.element.setAttribute("role","button");a.legendGroup.element.setAttribute("aria-label","Toggle visibility of series "+a.name)});b.highlightLegendItem(0<a?0:b.legend.allItems.length-1)}})];b.keyboardNavigationModuleIndex=0;b.container.hasAttribute&&!b.container.hasAttribute("tabIndex")&&b.container.setAttribute("tabindex","0");x(b.renderTo,"keydown",d);x(b,"destroy",function(){C(b.renderTo,
"keydown",d)})};e.Chart.prototype.addScreenReaderRegion=function(a,c){var d=this,b=d.series,e=d.options,g=e.accessibility,n=d.screenReaderRegion=l.createElement("div"),k=l.createElement("h4"),p=l.createElement("a"),v=l.createElement("h4"),u={position:"absolute",left:"-9999px",top:"auto",width:"1px",height:"1px",overflow:"hidden"},h=d.types||[],h=(1===h.length&&"pie"===h[0]||"map"===h[0])&&{}||d.getAxesDescription(),q=b[0]&&t[b[0].type]||t["default"];n.setAttribute("id",a);n.setAttribute("role","region");
n.setAttribute("aria-label","Chart screen reader information.");n.innerHTML=g.screenReaderSectionFormatter&&g.screenReaderSectionFormatter(d)||"\x3cdiv\x3eUse regions/landmarks to skip ahead to chart"+(1<b.length?" and navigate between data series":"")+".\x3c/div\x3e\x3ch3\x3e"+(e.title.text?r(e.title.text):"Chart")+(e.subtitle&&e.subtitle.text?". "+r(e.subtitle.text):"")+"\x3c/h3\x3e\x3ch4\x3eLong description.\x3c/h4\x3e\x3cdiv\x3e"+(e.chart.description||"No description available.")+"\x3c/div\x3e\x3ch4\x3eStructure.\x3c/h4\x3e\x3cdiv\x3eChart type: "+
(e.chart.typeDescription||d.getTypeDescription())+"\x3c/div\x3e"+(1===b.length?"\x3cdiv\x3e"+q[0]+" with "+b[0].points.length+" "+(1===b[0].points.length?q[1]:q[2])+".\x3c/div\x3e":"")+(h.xAxis?"\x3cdiv\x3e"+h.xAxis+"\x3c/div\x3e":"")+(h.yAxis?"\x3cdiv\x3e"+h.yAxis+"\x3c/div\x3e":"");d.getCSV&&(p.innerHTML="View as data table.",p.href="#"+c,p.setAttribute("tabindex","-1"),p.onclick=g.onTableAnchorClick||function(){d.viewData();l.getElementById(c).focus()},k.appendChild(p),n.appendChild(k));v.innerHTML=
"Chart graphic.";d.renderTo.insertBefore(v,d.renderTo.firstChild);d.renderTo.insertBefore(n,d.renderTo.firstChild);w(!0,v.style,u);w(!0,n.style,u)};e.Chart.prototype.callbacks.push(function(a){var c=a.options,d=c.accessibility;if(d.enabled){var b=l.createElementNS("http://www.w3.org/2000/svg","title"),f=l.createElementNS("http://www.w3.org/2000/svg","g"),m=a.container.getElementsByTagName("desc")[0],n=a.container.getElementsByTagName("text"),k="highcharts-title-"+a.index,p="highcharts-data-table-"+
a.index,v="highcharts-information-region-"+a.index,u=c.title.text||"Chart",h=c.exporting&&c.exporting.csv&&c.exporting.csv.columnHeaderFormatter,q=[];b.textContent=r(u);b.id=k;m.parentNode.insertBefore(b,m);a.renderTo.setAttribute("role","region");a.renderTo.setAttribute("aria-label","Interactive chart. "+u+". Use up and down arrows to navigate with most screen readers.");if(a.exportSVGElements&&a.exportSVGElements[0]&&a.exportSVGElements[0].element){var t=a.exportSVGElements[0].element.onclick,b=
a.exportSVGElements[0].element.parentNode;a.exportSVGElements[0].element.onclick=function(){t.apply(this,Array.prototype.slice.call(arguments));a.addAccessibleContextMenuAttribs();a.highlightExportItem(0)};a.exportSVGElements[0].element.setAttribute("role","button");a.exportSVGElements[0].element.setAttribute("aria-label","View export menu");f.appendChild(a.exportSVGElements[0].element);f.setAttribute("role","region");f.setAttribute("aria-label","Chart export menu");b.appendChild(f)}a.rangeSelector&&
g(["minInput","maxInput"],function(b,c){a.rangeSelector[b]&&(a.rangeSelector[b].setAttribute("tabindex","-1"),a.rangeSelector[b].setAttribute("role","textbox"),a.rangeSelector[b].setAttribute("aria-label","Select "+(c?"end":"start")+" date."))});g(n,function(a){a.setAttribute("aria-hidden","true")});a.addScreenReaderRegion(v,p);d.keyboardNavigation.enabled&&a.addKeyboardNavEvents();w(!0,c.exporting,{csv:{columnHeaderFormatter:function(a,b,c){if(!a)return"Category";if(a instanceof e.Axis)return a.options.title&&
a.options.title.text||(a.isDatetimeAxis?"DateTime":"Category");var d=q[q.length-1];1<c&&(d&&d.text)!==a.name&&q.push({text:a.name,span:c});return h?h.call(this,a,b,c):1<c?b:a.name}}});e.wrap(a,"getTable",function(a){return a.apply(this,Array.prototype.slice.call(arguments,1)).replace("\x3ctable\x3e",'\x3ctable id\x3d"'+p+'" summary\x3d"Table representation of chart"\x3e\x3ccaption\x3e'+u+"\x3c/caption\x3e")});e.wrap(a,"viewData",function(a){if(!this.dataTableDiv){a.apply(this,Array.prototype.slice.call(arguments,
1));var b=l.getElementById(p),c=b.getElementsByTagName("thead")[0],d=b.getElementsByTagName("tbody")[0],e=c.firstChild.children,f="\x3ctr\x3e\x3ctd\x3e\x3c/td\x3e",h,k;b.setAttribute("tabindex","-1");g(d.children,function(a){h=a.firstChild;k=l.createElement("th");k.setAttribute("scope","row");k.innerHTML=h.innerHTML;h.parentNode.replaceChild(k,h)});g(e,function(a){"TH"===a.tagName&&a.setAttribute("scope","col")});q.length&&(g(q,function(a){f+='\x3cth scope\x3d"col" colspan\x3d"'+a.span+'"\x3e'+a.text+
"\x3c/th\x3e"}),c.insertAdjacentHTML("afterbegin",f))}})}})})(r)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/accessibility.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":49,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","htmlencode","html","replace","reverseChildNodes","node","i","childNodes","length","appendChild","fakeClickEvent","element","fakeEvent","onclick","doc","createEvent","initEvent","win","document","each","erase","addEvent","removeEvent","fireEvent","dateFormat","merge","typeToSeriesMap","typeDescriptionMap","boxplot","arearange","areasplinerange","bubble","columnrange","errorbar","funnel","pyramid","waterfall","Series","prototype","commonKeys","specialKeys","seriesTypes","pie","setOptions","accessibility","enabled","pointDescriptionThreshold","keyboardNavigation","tabThroughPoints","wrap","proceed","apply","Array","slice","call","arguments","chart","options","setA11yDescription","H.Series.prototype.setA11yDescription","a11yOptions","firstPointEl","points","graphic","seriesEl","parentNode","graph","group","lastChild","point","setAttribute","series","pointDescriptionFormatter","buildPointInfoString","describeSingleSeries","exposeElementToA11y","seriesDescriptionFormatter","buildSeriesInfoString","H.Series.prototype.buildSeriesInfoString","typeInfo","type","description","name","types","index","yAxis","getDescription","xAxis","Point","H.Point.prototype.buildPointInfoString","infoString","dateTimePoint","isDatetimeAxis","timeDesc","pointDateFormatter","pointDateFormat","Tooltip","getXDateFormat","tooltip","x","find","hasSpecialKey","key","undefined","concat","category","id","value","y","Axis","H.Axis.prototype.getDescription","userOptions","axisTitle","textStr","categories","panStep","H.Axis.prototype.panStep","direction","granularity","gran","extremes","getExtremes","step","max","min","newMax","newMin","size","dataMin","dataMax","setExtremes","indexOf","push","removedSeries","hasType","s","Chart","getTypeDescription","H.Chart.prototype.getTypeDescription","firstType","mapTitle","getAxesDescription","H.Chart.prototype.getAxesDescription","numXAxes","numYAxes","desc","addAccessibleContextMenuAttribs","H.Chart.prototype.addAccessibleContextMenuAttribs","exportList","exportDivElements","item","tagName","children","highlight","H.Point.prototype.highlight","focus","isNull","hide","onMouseOver","refresh","shared","highlightedPoint","highlightAdjacentPoint","H.Chart.prototype.highlightAdjacentPoint","next","curPoint","curPointIndex","curPoints","lastSeries","lastPoint","forwardSkipAmount","connectEnds","newSeries","newPoint","skipNullPoints","skipKeyboardNavigation","visible","showExportMenu","H.Chart.prototype.showExportMenu","exportSVGElements","highlightExportItem","H.Chart.prototype.highlightExportItem","ix","listItem","curHighlighted","highlightedExportItem","onmouseout","onmouseover","highlightRangeSelectorButton","H.Chart.prototype.highlightRangeSelectorButton","buttons","rangeSelector","highlightedRangeSelectorItemIx","setState","oldRangeSelectorItemState","state","highlightLegendItem","H.Chart.prototype.highlightLegendItem","items","legend","allItems","highlightedLegendItemIx","legendGroup","hideExportMenu","H.Chart.prototype.hideExportMenu","el","renderTo","addKeyboardNavEvents","H.Chart.prototype.addKeyboardNavEvents","KeyboardNavigationModule","keyCodeMap","move","validate","init","terminate","transformTabs","navModuleFactory","keyMap","keyboardNavigationModuleIndex","newModule","keyboardNavigationModules","slipNextTab","keydownHandler","ev","e","event","curNavModule","which","keyCode","run","preventDefault","navModule","handled","shiftKey","codeSet","firePointEvent","reachedEnd","exportChart","exporting","mapNavButtons","focusedMapNavButtonIx","mapZoom","button","zoomIn","zoomOut","initialButton","text","newIx","highlightedInputRangeIx","inputGroup","getAttribute","inputEnabled","minInput","maxInput","legendItem","colorAxis","container","hasAttribute","addScreenReaderRegion","H.Chart.prototype.addScreenReaderRegion","tableId","hiddenSection","screenReaderRegion","createElement","tableShortcut","tableShortcutAnchor","chartHeading","hiddenStyle","position","left","top","width","height","overflow","chartTypes","axesDesc","chartTypeInfo","innerHTML","screenReaderSectionFormatter","title","subtitle","typeDescription","getCSV","href","onTableAnchorClick","viewData","getElementById","insertBefore","firstChild","style","callbacks","titleElement","createElementNS","exportGroupElement","descElement","getElementsByTagName","textElements","titleId","hiddenSectionId","chartTitle","oldColumnHeaderFormatter","csv","columnHeaderFormatter","topLevelColumns","textContent","oldExportCallback","parent","keyLength","prevCol","span","dataTableDiv","table","head","body","firstRow","columnHeaderRow","cell","newCell","replaceChild","col","insertAdjacentHTML"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/accessibility.src.js
@@ -0,0 +1,1346 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Accessibility module
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Accessibility module
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
var win = H.win,
doc = win.document,
each = H.each,
erase = H.erase,
addEvent = H.addEvent,
removeEvent = H.removeEvent,
fireEvent = H.fireEvent,
dateFormat = H.dateFormat,
merge = H.merge,
// Human readable description of series and each point in singular and plural
typeToSeriesMap = {
'default': ['series', 'data point', 'data points'],
'line': ['line', 'data point', 'data points'],
'spline': ['line', 'data point', 'data points'],
'area': ['line', 'data point', 'data points'],
'areaspline': ['line', 'data point', 'data points'],
'pie': ['pie', 'slice', 'slices'],
'column': ['column series', 'column', 'columns'],
'bar': ['bar series', 'bar', 'bars'],
'scatter': ['scatter series', 'data point', 'data points'],
'boxplot': ['boxplot series', 'box', 'boxes'],
'arearange': ['arearange series', 'data point', 'data points'],
'areasplinerange': ['areasplinerange series', 'data point', 'data points'],
'bubble': ['bubble series', 'bubble', 'bubbles'],
'columnrange': ['columnrange series', 'column', 'columns'],
'errorbar': ['errorbar series', 'errorbar', 'errorbars'],
'funnel': ['funnel', 'data point', 'data points'],
'pyramid': ['pyramid', 'data point', 'data points'],
'waterfall': ['waterfall series', 'column', 'columns'],
'map': ['map', 'area', 'areas'],
'mapline': ['line', 'data point', 'data points'],
'mappoint': ['point series', 'data point', 'data points'],
'mapbubble': ['bubble series', 'bubble', 'bubbles']
},
// Descriptions for exotic chart types
typeDescriptionMap = {
boxplot: ' Box plot charts are typically used to display groups of statistical data. ' +
'Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile and maximum. ',
arearange: ' Arearange charts are line charts displaying a range between a lower and higher value for each point. ',
areasplinerange: ' These charts are line charts displaying a range between a lower and higher value for each point. ',
bubble: ' Bubble charts are scatter charts where each data point also has a size value. ',
columnrange: ' Columnrange charts are column charts displaying a range between a lower and higher value for each point. ',
errorbar: ' Errorbar series are used to display the variability of the data. ',
funnel: ' Funnel charts are used to display reduction of data in stages. ',
pyramid: ' Pyramid charts consist of a single pyramid with item heights corresponding to each point value. ',
waterfall: ' A waterfall chart is a column chart where each column contributes towards a total end value. '
};
 
// If a point has one of the special keys defined, we expose all keys to the
// screen reader.
H.Series.prototype.commonKeys = ['name', 'id', 'category', 'x', 'value', 'y'];
H.Series.prototype.specialKeys = [
'z', 'open', 'high', 'q3', 'median', 'q1', 'low', 'close'
];
 
// A pie is always simple. Don't quote me on that.
if (H.seriesTypes.pie) {
H.seriesTypes.pie.prototype.specialKeys = [];
}
 
 
/**
* Accessibility options
* @type {Object}
* @optionparent
*/
H.setOptions({
 
/**
* Options for configuring accessibility for the chart. Requires the
* [accessibility module](//code.highcharts.com/modules/accessibility.
* js) to be loaded. For a description of the module and information
* on its features, see [Highcharts Accessibility](http://www.highcharts.
* com/docs/chart-concepts/accessibility).
*
* @since 5.0.0
* @product highcharts highstock highmaps
*/
accessibility: {
 
/**
* Enable accessibility features for the chart.
*
* @type {Boolean}
* @default true
* @since 5.0.0
* @product highcharts highstock highmaps
*/
enabled: true,
 
/**
* When a series contains more points than this, we no longer expose
* information about individual points to screen readers.
*
* Set to `false` to disable.
*
* @type {Number|Boolean}
* @default 30
* @since 5.0.0
* @product highcharts highstock highmaps
*/
pointDescriptionThreshold: 30, // set to false to disable
 
/**
* Options for keyboard navigation.
*
* @type {Object}
* @since 5.0.0
* @product highcharts highstock highmaps
*/
keyboardNavigation: {
 
/**
* Enable keyboard navigation for the chart.
*
* @type {Boolean}
* @default true
* @since 5.0.0
*/
enabled: true,
 
/**
* Enable tab navigation for points. Without this, only arrow keys
* can be used to navigate between points.
*
* @type {Boolean}
* @default {all} true
* @since next
*/
tabThroughPoints: true
 
/**
* Skip null points when navigating through points with the
* keyboard.
*
* @type {Boolean}
* @default false
* @since 5.0.0
* @apioption accessibility.keyboardNavigation.skipNullPoints
*/
}
 
/**
* Whether or not to add series descriptions to charts with a single
* series.
*
* @type {Boolean}
* @default false
* @since 5.0.0
* @product highcharts highstock highmaps
* @apioption accessibility.describeSingleSeries
*/
 
/**
* Function to run upon clicking the "View as Data Table" link in the
* screen reader region.
*
* By default Highcharts will insert and set focus to a data table
* representation of the chart.
*
* @type {Function}
* @since 5.0.0
* @apioption accessibility.onTableAnchorClick
*/
 
/**
* Date format to use for points on datetime axes when describing them
* to screen reader users.
*
* Defaults to the same format as in tooltip.
*
* For an overview of the replacement codes, see [dateFormat](
* #Highcharts.dateFormat).
*
* @type {String}
* @see [pointDateFormatter](#accessibility.pointDateFormatter)
* @since 5.0.0
* @apioption accessibility.pointDateFormat
*/
 
/**
* Formatter function to determine the date/time format used with points
* on datetime axes when describing them to screen reader users. Receives
* one argument, `point`, referring to the point to describe. Should
* return a date format string compatible with [dateFormat](#Highcharts.
* dateFormat).
*
* @type {Function}
* @see [pointDateFormat](#accessibility.pointDateFormat)
* @since 5.0.0
* @apioption accessibility.pointDateFormatter
*/
 
/**
* Formatter function to use instead of the default for point descriptions.
* Receives one argument, `point`, referring to the point to describe.
* Should return a String with the description of the point for a screen
* reader user.
*
* @type {Function}
* @see [point.description](#series<line>.data.description)
* @since 5.0.0
* @apioption accessibility.pointDescriptionFormatter
*/
 
/**
* A formatter function to create the HTML contents of the hidden screen
* reader information region. Receives one argument, `chart`, referring
* to the chart object. Should return a String with the HTML content
* of the region.
*
* The link to view the chart as a data table will be added automatically
* after the custom HTML content.
*
* @type {Function}
* @default undefined
* @since 5.0.0
* @apioption accessibility.screenReaderSectionFormatter
*/
 
/**
* Formatter function to use instead of the default for series descriptions.
* Receives one argument, `series`, referring to the series to describe.
* Should return a String with the description of the series for a
* screen reader user.
*
* @type {Function}
* @see [series.description](#plotOptions.series.description)
* @since 5.0.0
* @apioption accessibility.seriesDescriptionFormatter
*/
}
});
 
/**
* A text description of the chart.
*
* If the Accessibility module is loaded, this is included by default
* as a long description of the chart and its contents in the hidden
* screen reader information region.
*
* @type {String}
* @see [typeDescription](#chart.typeDescription)
* @default undefined
* @since 5.0.0
* @apioption chart.description
*/
 
/**
* A text description of the chart type.
*
* If the Accessibility module is loaded, this will be included in the
* description of the chart in the screen reader information region.
*
*
* Highcharts will by default attempt to guess the chart type, but for
* more complex charts it is recommended to specify this property for
* clarity.
*
* @type {String}
* @default undefined
* @since 5.0.0
* @apioption chart.typeDescription
*/
 
/**
* HTML encode some characters vulnerable for XSS.
* @param {string} html The input string
* @return {string} The excaped string
*/
function htmlencode(html) {
return html
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#x27;')
.replace(/\//g, '&#x2F;');
}
 
// Utility function. Reverses child nodes of a DOM element
function reverseChildNodes(node) {
var i = node.childNodes.length;
while (i--) {
node.appendChild(node.childNodes[i]);
}
}
 
// Utility function to attempt to fake a click event on an element
function fakeClickEvent(element) {
var fakeEvent;
if (element && element.onclick && doc.createEvent) {
fakeEvent = doc.createEvent('Events');
fakeEvent.initEvent('click', true, false);
element.onclick(fakeEvent);
}
}
 
// Whenever drawing series, put info on DOM elements
H.wrap(H.Series.prototype, 'render', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
if (this.chart.options.accessibility.enabled) {
this.setA11yDescription();
}
});
 
// Put accessible info on series and points of a series
H.Series.prototype.setA11yDescription = function() {
var a11yOptions = this.chart.options.accessibility,
firstPointEl = this.points && this.points.length && this.points[0].graphic && this.points[0].graphic.element,
seriesEl = firstPointEl && firstPointEl.parentNode || this.graph && this.graph.element || this.group && this.group.element; // Could be tracker series depending on series type
 
if (seriesEl) {
// For some series types the order of elements do not match the order of points in series
// In that case we have to reverse them in order for AT to read them out in an understandable order
if (seriesEl.lastChild === firstPointEl) {
reverseChildNodes(seriesEl);
}
// Make individual point elements accessible if possible. Note: If markers are disabled there might not be any elements there to make accessible.
if (this.points && (this.points.length < a11yOptions.pointDescriptionThreshold || a11yOptions.pointDescriptionThreshold === false)) {
each(this.points, function(point) {
if (point.graphic) {
point.graphic.element.setAttribute('role', 'img');
point.graphic.element.setAttribute('tabindex', '-1');
point.graphic.element.setAttribute('aria-label',
point.series.options.pointDescriptionFormatter &&
point.series.options.pointDescriptionFormatter(point) ||
a11yOptions.pointDescriptionFormatter &&
a11yOptions.pointDescriptionFormatter(point) ||
point.buildPointInfoString());
}
});
}
// Make series element accessible
if (this.chart.series.length > 1 || a11yOptions.describeSingleSeries) {
seriesEl.setAttribute(
'role',
this.options.exposeElementToA11y ? 'img' : 'region'
);
seriesEl.setAttribute('tabindex', '-1');
seriesEl.setAttribute('aria-label', a11yOptions.seriesDescriptionFormatter && a11yOptions.seriesDescriptionFormatter(this) ||
this.buildSeriesInfoString());
}
}
};
 
// Return string with information about series
H.Series.prototype.buildSeriesInfoString = function() {
var typeInfo = typeToSeriesMap[this.type] || typeToSeriesMap['default'], // eslint-disable-line dot-notation
description = this.description || this.options.description;
return (this.name ? this.name + ', ' : '') +
(this.chart.types.length === 1 ? typeInfo[0] : 'series') + ' ' + (this.index + 1) + ' of ' + (this.chart.series.length) +
(this.chart.types.length === 1 ? ' with ' : '. ' + typeInfo[0] + ' with ') +
(this.points.length + ' ' + (this.points.length === 1 ? typeInfo[1] : typeInfo[2])) +
(description ? '. ' + description : '') +
(this.chart.yAxis.length > 1 && this.yAxis ? '. Y axis, ' + this.yAxis.getDescription() : '') +
(this.chart.xAxis.length > 1 && this.xAxis ? '. X axis, ' + this.xAxis.getDescription() : '');
};
 
// Return string with information about point
H.Point.prototype.buildPointInfoString = function() {
var point = this,
series = point.series,
a11yOptions = series.chart.options.accessibility,
infoString = '',
dateTimePoint = series.xAxis && series.xAxis.isDatetimeAxis,
timeDesc = dateTimePoint && dateFormat(a11yOptions.pointDateFormatter && a11yOptions.pointDateFormatter(point) || a11yOptions.pointDateFormat ||
H.Tooltip.prototype.getXDateFormat(point, series.chart.options.tooltip, series.xAxis), point.x),
hasSpecialKey = H.find(series.specialKeys, function(key) {
return point[key] !== undefined;
});
 
// If the point has one of the less common properties defined, display all that are defined
if (hasSpecialKey) {
if (dateTimePoint) {
infoString = timeDesc;
}
each(series.commonKeys.concat(series.specialKeys), function(key) {
if (point[key] !== undefined && !(dateTimePoint && key === 'x')) {
infoString += (infoString ? '. ' : '') + key + ', ' + point[key];
}
});
} else {
// Pick and choose properties for a succint label
infoString = (this.name || timeDesc || this.category || this.id || 'x, ' + this.x) + ', ' +
(this.value !== undefined ? this.value : this.y);
}
 
return (this.index + 1) + '. ' + infoString + '.' + (this.description ? ' ' + this.description : '');
};
 
// Get descriptive label for axis
H.Axis.prototype.getDescription = function() {
return this.userOptions && this.userOptions.description || this.axisTitle && this.axisTitle.textStr ||
this.options.id || this.categories && 'categories' || 'values';
};
 
// Pan along axis in a direction (1 or -1), optionally with a defined granularity (number of steps it takes to walk across current view)
H.Axis.prototype.panStep = function(direction, granularity) {
var gran = granularity || 3,
extremes = this.getExtremes(),
step = (extremes.max - extremes.min) / gran * direction,
newMax = extremes.max + step,
newMin = extremes.min + step,
size = newMax - newMin;
if (direction < 0 && newMin < extremes.dataMin) {
newMin = extremes.dataMin;
newMax = newMin + size;
} else if (direction > 0 && newMax > extremes.dataMax) {
newMax = extremes.dataMax;
newMin = newMax - size;
}
this.setExtremes(newMin, newMax);
};
 
// Whenever adding or removing series, keep track of types present in chart
H.wrap(H.Series.prototype, 'init', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
var chart = this.chart;
if (chart.options.accessibility.enabled) {
chart.types = chart.types || [];
 
// Add type to list if does not exist
if (chart.types.indexOf(this.type) < 0) {
chart.types.push(this.type);
}
 
addEvent(this, 'remove', function() {
var removedSeries = this,
hasType = false;
 
// Check if any of the other series have the same type as this one. Otherwise remove it from the list.
each(chart.series, function(s) {
if (s !== removedSeries && chart.types.indexOf(removedSeries.type) < 0) {
hasType = true;
}
});
if (!hasType) {
erase(chart.types, removedSeries.type);
}
});
}
});
 
// Return simplified description of chart type. Some types will not be familiar to most screen reader users, but we try.
H.Chart.prototype.getTypeDescription = function() {
var firstType = this.types && this.types[0],
mapTitle = this.series[0] && this.series[0].mapTitle;
if (!firstType) {
return 'Empty chart.';
} else if (firstType === 'map') {
return mapTitle ? 'Map of ' + mapTitle : 'Map of unspecified region.';
} else if (this.types.length > 1) {
return 'Combination chart.';
} else if (['spline', 'area', 'areaspline'].indexOf(firstType) > -1) {
return 'Line chart.';
}
return firstType + ' chart.' + (typeDescriptionMap[firstType] || '');
};
 
// Return object with text description of each of the chart's axes
H.Chart.prototype.getAxesDescription = function() {
var numXAxes = this.xAxis.length,
numYAxes = this.yAxis.length,
desc = {},
i;
 
if (numXAxes) {
desc.xAxis = 'The chart has ' + numXAxes + (numXAxes > 1 ? ' X axes' : ' X axis') + ' displaying ';
if (numXAxes < 2) {
desc.xAxis += this.xAxis[0].getDescription() + '.';
} else {
for (i = 0; i < numXAxes - 1; ++i) {
desc.xAxis += (i ? ', ' : '') + this.xAxis[i].getDescription();
}
desc.xAxis += ' and ' + this.xAxis[i].getDescription() + '.';
}
}
 
if (numYAxes) {
desc.yAxis = 'The chart has ' + numYAxes + (numYAxes > 1 ? ' Y axes' : ' Y axis') + ' displaying ';
if (numYAxes < 2) {
desc.yAxis += this.yAxis[0].getDescription() + '.';
} else {
for (i = 0; i < numYAxes - 1; ++i) {
desc.yAxis += (i ? ', ' : '') + this.yAxis[i].getDescription();
}
desc.yAxis += ' and ' + this.yAxis[i].getDescription() + '.';
}
}
 
return desc;
};
 
// Set a11y attribs on exporting menu
H.Chart.prototype.addAccessibleContextMenuAttribs = function() {
var exportList = this.exportDivElements;
if (exportList) {
// Set tabindex on the menu items to allow focusing by script
// Set role to give screen readers a chance to pick up the contents
each(exportList, function(item) {
if (item.tagName === 'DIV' &&
!(item.children && item.children.length)) {
item.setAttribute('role', 'menuitem');
item.setAttribute('tabindex', -1);
}
});
// Set accessibility properties on parent div
exportList[0].parentNode.setAttribute('role', 'menu');
exportList[0].parentNode.setAttribute('aria-label', 'Chart export');
}
};
 
// Highlight a point (show tooltip and display hover state). Returns the highlighted point.
H.Point.prototype.highlight = function() {
var chart = this.series.chart;
if (this.graphic && this.graphic.element.focus) {
this.graphic.element.focus();
}
if (!this.isNull) {
this.onMouseOver(); // Show the hover marker
// Show the tooltip
if (chart.tooltip) {
chart.tooltip.refresh(chart.tooltip.shared ? [this] : this);
}
} else {
if (chart.tooltip) {
chart.tooltip.hide(0);
}
// Don't call blur on the element, as it messes up the chart div's focus
}
chart.highlightedPoint = this;
return this;
};
 
// Function to highlight next/previous point in chart
// Returns highlighted point on success, false on failure (no adjacent point to
// highlight in chosen direction)
H.Chart.prototype.highlightAdjacentPoint = function(next) {
var chart = this,
series = chart.series,
curPoint = chart.highlightedPoint,
curPointIndex = curPoint && curPoint.index || 0,
curPoints = curPoint && curPoint.series.points,
lastSeries = chart.series && chart.series[chart.series.length - 1],
lastPoint = lastSeries && lastSeries.points &&
lastSeries.points[lastSeries.points.length - 1],
newSeries,
newPoint,
isSkipPoint = function(point) {
return point.isNull &&
chart.options.accessibility.keyboardNavigation.skipNullPoints ||
point.series.options.skipKeyboardNavigation ||
!point.series.visible;
},
// Handle connecting ends - where the points array has an extra last
// point that is a reference to the first one. We skip this.
forwardSkipAmount = curPoint && curPoint.series.connectEnds &&
curPointIndex > curPoints.length - 3 ? 2 : 1;
 
// If no points, return false
if (!series[0] || !series[0].points) {
return false;
}
 
if (!curPoint) {
// No point is highlighted yet. Try first/last point depending on move
// direction
newPoint = next ? series[0].points[0] : lastPoint;
} else {
// We have a highlighted point.
// Find index of current point in series.points array. Necessary for
// dataGrouping (and maybe zoom?)
if (curPoints[curPointIndex] !== curPoint) {
for (var i = 0; i < curPoints.length; ++i) {
if (curPoints[i] === curPoint) {
curPointIndex = i;
break;
}
}
}
 
// Grab next/prev point & series
newSeries = series[curPoint.series.index + (next ? 1 : -1)];
newPoint = curPoints[curPointIndex + (next ? forwardSkipAmount : -1)] ||
// Done with this series, try next one
newSeries &&
newSeries.points[next ? 0 : newSeries.points.length - (
newSeries.connectEnds ? 2 : 1
)];
 
// If there is no adjacent point, we return false
if (newPoint === undefined) {
return false;
}
}
 
// Recursively skip null points or points in series that should be skipped
if (isSkipPoint(newPoint)) {
chart.highlightedPoint = newPoint;
return chart.highlightAdjacentPoint(next);
}
 
// There is an adjacent point, highlight it
return newPoint.highlight();
};
 
// Show the export menu and focus the first item (if exists)
H.Chart.prototype.showExportMenu = function() {
if (this.exportSVGElements && this.exportSVGElements[0]) {
this.exportSVGElements[0].element.onclick();
this.highlightExportItem(0);
}
};
 
// Highlight export menu item by index
H.Chart.prototype.highlightExportItem = function(ix) {
var listItem = this.exportDivElements && this.exportDivElements[ix],
curHighlighted = this.exportDivElements && this.exportDivElements[this.highlightedExportItem];
 
if (listItem && listItem.tagName === 'DIV' && !(listItem.children && listItem.children.length)) {
if (listItem.focus) {
listItem.focus();
}
if (curHighlighted && curHighlighted.onmouseout) {
curHighlighted.onmouseout();
}
if (listItem.onmouseover) {
listItem.onmouseover();
}
this.highlightedExportItem = ix;
return true;
}
};
 
// Highlight range selector button by index
H.Chart.prototype.highlightRangeSelectorButton = function(ix) {
var buttons = this.rangeSelector.buttons;
// Deselect old
if (buttons[this.highlightedRangeSelectorItemIx]) {
buttons[this.highlightedRangeSelectorItemIx].setState(this.oldRangeSelectorItemState || 0);
}
// Select new
this.highlightedRangeSelectorItemIx = ix;
if (buttons[ix]) {
if (buttons[ix].element.focus) {
buttons[ix].element.focus();
}
this.oldRangeSelectorItemState = buttons[ix].state;
buttons[ix].setState(2);
return true;
}
return false;
};
 
// Highlight legend item by index
H.Chart.prototype.highlightLegendItem = function(ix) {
var items = this.legend.allItems;
if (items[this.highlightedLegendItemIx]) {
fireEvent(items[this.highlightedLegendItemIx].legendGroup.element, 'mouseout');
}
this.highlightedLegendItemIx = ix;
if (items[ix]) {
if (items[ix].legendGroup.element.focus) {
items[ix].legendGroup.element.focus();
}
fireEvent(items[ix].legendGroup.element, 'mouseover');
return true;
}
return false;
};
 
// Hide export menu
H.Chart.prototype.hideExportMenu = function() {
var exportList = this.exportDivElements;
if (exportList) {
each(exportList, function(el) {
fireEvent(el, 'mouseleave');
});
if (exportList[this.highlightedExportItem] && exportList[this.highlightedExportItem].onmouseout) {
exportList[this.highlightedExportItem].onmouseout();
}
this.highlightedExportItem = 0;
this.renderTo.focus();
}
};
 
// Add keyboard navigation handling to chart
H.Chart.prototype.addKeyboardNavEvents = function() {
var chart = this;
 
// Abstraction layer for keyboard navigation. Keep a map of keyCodes to handler functions, and a next/prev move handler for tab order.
// The module's keyCode handlers determine when to move to another module.
// Validate holds a function to determine if there are prerequisites for this module to run that are not met.
// Init holds a function to run once before any keyCodes are interpreted.
// Terminate holds a function to run once before moving to next/prev module.
// transformTabs determines whether to transform tabs to left/right events or not. Defaults to true.
function KeyboardNavigationModule(options) {
this.id = options.id;
this.keyCodeMap = options.keyCodeMap;
this.move = options.move;
this.validate = options.validate;
this.init = options.init;
this.terminate = options.terminate;
this.transformTabs = options.transformTabs !== false;
}
KeyboardNavigationModule.prototype = {
// Find handler function(s) for key code in the keyCodeMap and run it.
run: function(e) {
var navModule = this,
keyCode = e.which || e.keyCode,
handled = false;
keyCode = this.transformTabs && keyCode === 9 ? (e.shiftKey ? 37 : 39) : keyCode; // Transform tabs
each(this.keyCodeMap, function(codeSet) {
if (codeSet[0].indexOf(keyCode) > -1) {
handled = codeSet[1].call(navModule, keyCode, e) === false ? false : true; // If explicitly returning false, we haven't handled it
}
});
return handled;
}
};
// Maintain abstraction between KeyboardNavigationModule and Highcharts
// The chart object keeps track of a list of KeyboardNavigationModules that we move through
function navModuleFactory(id, keyMap, options) {
return new KeyboardNavigationModule(merge({
keyCodeMap: keyMap,
// Move to next/prev valid module, or undefined if none, and init it.
// Returns true on success and false if there is no valid module to move to.
move: function(direction) {
if (this.terminate) {
this.terminate(direction);
}
chart.keyboardNavigationModuleIndex += direction;
var newModule = chart.keyboardNavigationModules[chart.keyboardNavigationModuleIndex];
if (newModule) {
if (newModule.validate && !newModule.validate()) {
return this.move(direction); // Invalid module
}
if (newModule.init) {
newModule.init(direction); // Valid module, init it
return true;
}
}
// No module
chart.keyboardNavigationModuleIndex = 0; // Reset counter
chart.slipNextTab = true; // Allow next tab to slip, as we will have focus on chart now
return false;
}
}, {
id: id
}, options));
}
 
// Route keydown events
function keydownHandler(ev) {
var e = ev || win.event,
keyCode = e.which || e.keyCode,
curNavModule = chart.keyboardNavigationModules[chart.keyboardNavigationModuleIndex];
 
// Handle tabbing
if (keyCode === 9) {
// If we reached end of chart, we need to let this tab slip through to allow users to tab further
if (chart.slipNextTab) {
chart.slipNextTab = false;
return;
}
}
// If key was not tab, don't slip the next tab
chart.slipNextTab = false;
 
// If there is a navigation module for the current index, run it. Otherwise, we are outside of the chart in some direction.
if (curNavModule) {
if (curNavModule.run(e)) {
e.preventDefault(); // If successfully handled, stop the event here.
}
}
}
 
// List of the different keyboard handling modes we use depending on where we are in the chart.
// Each mode has a set of handling functions mapped to key codes.
// Each mode determines when to move to the next/prev mode.
chart.keyboardNavigationModules = [
// Points
navModuleFactory('points', [
// Left/Right
[
[37, 39],
function(keyCode) {
if (!chart.highlightAdjacentPoint(keyCode === 39)) { // Try to highlight adjacent point
return this.move(keyCode === 39 ? 1 : -1); // Failed. Move to next/prev module
}
}
],
// Up/Down
[
[38, 40],
function(keyCode) {
var newSeries;
if (chart.highlightedPoint) {
newSeries = chart.series[chart.highlightedPoint.series.index + (keyCode === 38 ? -1 : 1)]; // Find prev/next series
if (newSeries && newSeries.points[0]) { // If series exists and has data, go for it
newSeries.points[0].highlight();
} else {
return this.move(keyCode === 40 ? 1 : -1); // Otherwise, attempt to move to next/prev module
}
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
if (chart.highlightedPoint) {
chart.highlightedPoint.firePointEvent('click');
}
}
]
], {
// Always start highlighting from scratch when entering this module
init: function() {
delete chart.highlightedPoint;
},
// If leaving points, don't show tooltip anymore
terminate: function() {
if (chart.tooltip) {
chart.tooltip.hide(0);
}
delete chart.highlightedPoint;
},
 
transformTabs: chart.options.accessibility.keyboardNavigation.tabThroughPoints
}),
 
// Exporting
navModuleFactory('exporting', [
// Left/Up
[
[37, 38],
function() {
var i = chart.highlightedExportItem || 0,
reachedEnd = true;
// Try to highlight prev item in list. Highlighting e.g. separators will fail.
while (i--) {
if (chart.highlightExportItem(i)) {
reachedEnd = false;
break;
}
}
if (reachedEnd) {
chart.hideExportMenu();
return this.move(-1);
}
}
],
// Right/Down
[
[39, 40],
function() {
var highlightedExportItem = chart.highlightedExportItem || 0,
reachedEnd = true;
// Try to highlight next item in list. Highlighting e.g. separators will fail.
for (var i = highlightedExportItem + 1; i < chart.exportDivElements.length; ++i) {
if (chart.highlightExportItem(i)) {
reachedEnd = false;
break;
}
}
if (reachedEnd) {
chart.hideExportMenu();
return this.move(1); // Next module
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
fakeClickEvent(chart.exportDivElements[chart.highlightedExportItem]);
}
]
], {
// Only run exporting navigation if exporting support exists and is enabled on chart
validate: function() {
return chart.exportChart && !(chart.options.exporting && chart.options.exporting.enabled === false);
},
// Show export menu
init: function(direction) {
chart.highlightedPoint = null;
chart.showExportMenu();
// If coming back to export menu from other module, try to highlight last item in menu
if (direction < 0 && chart.exportDivElements) {
for (var i = chart.exportDivElements.length; i > -1; --i) {
if (chart.highlightExportItem(i)) {
break;
}
}
}
}
}),
 
// Map zoom
navModuleFactory('mapZoom', [
// Up/down/left/right
[
[38, 40, 37, 39],
function(keyCode) {
chart[keyCode === 38 || keyCode === 40 ? 'yAxis' : 'xAxis'][0].panStep(keyCode < 39 ? -1 : 1);
}
],
 
// Tabs
[
[9],
function(keyCode, e) {
var button;
chart.mapNavButtons[chart.focusedMapNavButtonIx].setState(0); // Deselect old
if (e.shiftKey && !chart.focusedMapNavButtonIx || !e.shiftKey && chart.focusedMapNavButtonIx) { // trying to go somewhere we can't?
chart.mapZoom(); // Reset zoom
return this.move(e.shiftKey ? -1 : 1); // Nowhere to go, go to prev/next module
}
chart.focusedMapNavButtonIx += e.shiftKey ? -1 : 1;
button = chart.mapNavButtons[chart.focusedMapNavButtonIx];
if (button.element.focus) {
button.element.focus();
}
button.setState(2);
}
],
 
// Enter/Spacebar
[
[13, 32],
function() {
fakeClickEvent(chart.mapNavButtons[chart.focusedMapNavButtonIx].element);
}
]
], {
// Only run this module if we have map zoom on the chart
validate: function() {
return chart.mapZoom && chart.mapNavButtons && chart.mapNavButtons.length === 2;
},
 
// Handle tabs separately
transformTabs: false,
 
// Make zoom buttons do their magic
init: function(direction) {
var zoomIn = chart.mapNavButtons[0],
zoomOut = chart.mapNavButtons[1],
initialButton = direction > 0 ? zoomIn : zoomOut;
 
each(chart.mapNavButtons, function(button, i) {
button.element.setAttribute('tabindex', -1);
button.element.setAttribute('role', 'button');
button.element.setAttribute('aria-label', 'Zoom ' + (i ? 'out' : '') + 'chart');
});
 
if (initialButton.element.focus) {
initialButton.element.focus();
}
initialButton.setState(2);
chart.focusedMapNavButtonIx = direction > 0 ? 0 : 1;
}
}),
 
// Highstock range selector (minus input boxes)
navModuleFactory('rangeSelector', [
// Left/Right/Up/Down
[
[37, 39, 38, 40],
function(keyCode) {
var direction = (keyCode === 37 || keyCode === 38) ? -1 : 1;
// Try to highlight next/prev button
if (!chart.highlightRangeSelectorButton(chart.highlightedRangeSelectorItemIx + direction)) {
return this.move(direction);
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
if (chart.oldRangeSelectorItemState !== 3) { // Don't allow click if button used to be disabled
fakeClickEvent(chart.rangeSelector.buttons[chart.highlightedRangeSelectorItemIx].element);
}
}
]
], {
// Only run this module if we have range selector
validate: function() {
return chart.rangeSelector && chart.rangeSelector.buttons && chart.rangeSelector.buttons.length;
},
 
// Make elements focusable and accessible
init: function(direction) {
each(chart.rangeSelector.buttons, function(button) {
button.element.setAttribute('tabindex', '-1');
button.element.setAttribute('role', 'button');
button.element.setAttribute('aria-label', 'Select range ' + (button.text && button.text.textStr));
});
// Focus first/last button
chart.highlightRangeSelectorButton(direction > 0 ? 0 : chart.rangeSelector.buttons.length - 1);
}
}),
 
// Highstock range selector, input boxes
navModuleFactory('rangeSelectorInput', [
// Tab/Up/Down
[
[9, 38, 40],
function(keyCode, e) {
var direction = (keyCode === 9 && e.shiftKey || keyCode === 38) ? -1 : 1,
newIx = chart.highlightedInputRangeIx = chart.highlightedInputRangeIx + direction;
// Try to highlight next/prev item in list.
if (newIx > 1 || newIx < 0) { // Out of range
return this.move(direction);
}
chart.rangeSelector[newIx ? 'maxInput' : 'minInput'].focus(); // Input boxes are HTML, and should have focus support in all browsers
}
]
], {
// Only run if we have range selector with input boxes
validate: function() {
var inputVisible = chart.rangeSelector && chart.rangeSelector.inputGroup && chart.rangeSelector.inputGroup.element.getAttribute('visibility') !== 'hidden';
return inputVisible && chart.options.rangeSelector.inputEnabled !== false && chart.rangeSelector.minInput && chart.rangeSelector.maxInput;
},
 
// Handle tabs different from left/right (because we don't want to catch left/right in a text area)
transformTabs: false,
 
// Highlight first/last input box
init: function(direction) {
chart.highlightedInputRangeIx = direction > 0 ? 0 : 1;
chart.rangeSelector[chart.highlightedInputRangeIx ? 'maxInput' : 'minInput'].focus();
}
}),
 
// Legend navigation
navModuleFactory('legend', [
// Left/Right/Up/Down
[
[37, 39, 38, 40],
function(keyCode) {
var direction = (keyCode === 37 || keyCode === 38) ? -1 : 1;
// Try to highlight next/prev legend item
if (!chart.highlightLegendItem(chart.highlightedLegendItemIx + direction)) {
return this.move(direction);
}
}
],
// Enter/Spacebar
[
[13, 32],
function() {
fakeClickEvent(chart.legend.allItems[chart.highlightedLegendItemIx].legendItem.element.parentNode);
}
]
], {
// Only run this module if we have at least one legend - wait for it - item.
// Don't run if the legend is populated by a colorAxis.
// Don't run if legend navigation is disabled.
validate: function() {
return chart.legend && chart.legend.allItems &&
!(chart.colorAxis && chart.colorAxis.length) &&
(chart.options.legend &&
chart.options.legend.keyboardNavigation &&
chart.options.legend.keyboardNavigation.enabled) !== false;
},
 
// Make elements focusable and accessible
init: function(direction) {
each(chart.legend.allItems, function(item) {
item.legendGroup.element.setAttribute('tabindex', '-1');
item.legendGroup.element.setAttribute('role', 'button');
item.legendGroup.element.setAttribute('aria-label', 'Toggle visibility of series ' + item.name);
});
// Focus first/last item
chart.highlightLegendItem(direction > 0 ? 0 : chart.legend.allItems.length - 1);
}
})
];
 
// Init nav module index. We start at the first module, and as the user navigates through the chart the index will increase to use different handler modules.
chart.keyboardNavigationModuleIndex = 0;
 
// Make chart reachable by tab
if (
chart.container.hasAttribute &&
!chart.container.hasAttribute('tabIndex')
) {
chart.container.setAttribute('tabindex', '0');
}
 
// Handle keyboard events
addEvent(chart.renderTo, 'keydown', keydownHandler);
addEvent(chart, 'destroy', function() {
removeEvent(chart.renderTo, 'keydown', keydownHandler);
});
};
 
// Add screen reader region to chart.
// tableId is the HTML id of the table to focus when clicking the table anchor in the screen reader region.
H.Chart.prototype.addScreenReaderRegion = function(id, tableId) {
var chart = this,
series = chart.series,
options = chart.options,
a11yOptions = options.accessibility,
hiddenSection = chart.screenReaderRegion = doc.createElement('div'),
tableShortcut = doc.createElement('h4'),
tableShortcutAnchor = doc.createElement('a'),
chartHeading = doc.createElement('h4'),
hiddenStyle = { // CSS style to hide element from visual users while still exposing it to screen readers
position: 'absolute',
left: '-9999px',
top: 'auto',
width: '1px',
height: '1px',
overflow: 'hidden'
},
chartTypes = chart.types || [],
// Build axis info - but not for pies and maps. Consider not adding for certain other types as well (funnel, pyramid?)
axesDesc = (chartTypes.length === 1 && chartTypes[0] === 'pie' || chartTypes[0] === 'map') && {} || chart.getAxesDescription(),
chartTypeInfo = series[0] && typeToSeriesMap[series[0].type] || typeToSeriesMap['default']; // eslint-disable-line dot-notation
 
hiddenSection.setAttribute('id', id);
hiddenSection.setAttribute('role', 'region');
hiddenSection.setAttribute('aria-label', 'Chart screen reader information.');
 
hiddenSection.innerHTML = a11yOptions.screenReaderSectionFormatter && a11yOptions.screenReaderSectionFormatter(chart) ||
'<div>Use regions/landmarks to skip ahead to chart' +
(series.length > 1 ? ' and navigate between data series' : '') +
'.</div><h3>' + (options.title.text ? htmlencode(options.title.text) : 'Chart') +
(options.subtitle && options.subtitle.text ? '. ' + htmlencode(options.subtitle.text) : '') +
'</h3><h4>Long description.</h4><div>' + (options.chart.description || 'No description available.') +
'</div><h4>Structure.</h4><div>Chart type: ' + (options.chart.typeDescription || chart.getTypeDescription()) + '</div>' +
(series.length === 1 ? '<div>' + chartTypeInfo[0] + ' with ' + series[0].points.length + ' ' +
(series[0].points.length === 1 ? chartTypeInfo[1] : chartTypeInfo[2]) + '.</div>' : '') +
(axesDesc.xAxis ? ('<div>' + axesDesc.xAxis + '</div>') : '') +
(axesDesc.yAxis ? ('<div>' + axesDesc.yAxis + '</div>') : '');
 
// Add shortcut to data table if export-data is loaded
if (chart.getCSV) {
tableShortcutAnchor.innerHTML = 'View as data table.';
tableShortcutAnchor.href = '#' + tableId;
tableShortcutAnchor.setAttribute('tabindex', '-1'); // Make this unreachable by user tabbing
tableShortcutAnchor.onclick = a11yOptions.onTableAnchorClick || function() {
chart.viewData();
doc.getElementById(tableId).focus();
};
tableShortcut.appendChild(tableShortcutAnchor);
hiddenSection.appendChild(tableShortcut);
}
 
// Note: JAWS seems to refuse to read aria-label on the container, so add an
// h4 element as title for the chart.
chartHeading.innerHTML = 'Chart graphic.';
chart.renderTo.insertBefore(chartHeading, chart.renderTo.firstChild);
chart.renderTo.insertBefore(hiddenSection, chart.renderTo.firstChild);
 
// Hide the section and the chart heading
merge(true, chartHeading.style, hiddenStyle);
merge(true, hiddenSection.style, hiddenStyle);
};
 
 
// Make chart container accessible, and wrap table functionality
H.Chart.prototype.callbacks.push(function(chart) {
var options = chart.options,
a11yOptions = options.accessibility;
 
if (!a11yOptions.enabled) {
return;
}
 
var titleElement = doc.createElementNS('http://www.w3.org/2000/svg', 'title'),
exportGroupElement = doc.createElementNS('http://www.w3.org/2000/svg', 'g'),
descElement = chart.container.getElementsByTagName('desc')[0],
textElements = chart.container.getElementsByTagName('text'),
titleId = 'highcharts-title-' + chart.index,
tableId = 'highcharts-data-table-' + chart.index,
hiddenSectionId = 'highcharts-information-region-' + chart.index,
chartTitle = options.title.text || 'Chart',
oldColumnHeaderFormatter = options.exporting && options.exporting.csv && options.exporting.csv.columnHeaderFormatter,
topLevelColumns = [];
 
// Add SVG title/desc tags
titleElement.textContent = htmlencode(chartTitle);
titleElement.id = titleId;
descElement.parentNode.insertBefore(titleElement, descElement);
chart.renderTo.setAttribute('role', 'region');
//chart.container.setAttribute('aria-details', hiddenSectionId); // JAWS currently doesn't handle this too well
chart.renderTo.setAttribute('aria-label', 'Interactive chart. ' + chartTitle +
'. Use up and down arrows to navigate with most screen readers.');
 
// Set screen reader properties on export menu
if (chart.exportSVGElements && chart.exportSVGElements[0] && chart.exportSVGElements[0].element) {
var oldExportCallback = chart.exportSVGElements[0].element.onclick,
parent = chart.exportSVGElements[0].element.parentNode;
chart.exportSVGElements[0].element.onclick = function() {
oldExportCallback.apply(this, Array.prototype.slice.call(arguments));
chart.addAccessibleContextMenuAttribs();
chart.highlightExportItem(0);
};
chart.exportSVGElements[0].element.setAttribute('role', 'button');
chart.exportSVGElements[0].element.setAttribute('aria-label', 'View export menu');
exportGroupElement.appendChild(chart.exportSVGElements[0].element);
exportGroupElement.setAttribute('role', 'region');
exportGroupElement.setAttribute('aria-label', 'Chart export menu');
parent.appendChild(exportGroupElement);
}
 
// Set screen reader properties on input boxes for range selector. We need to do this regardless of whether or not these are visible, as they are
// by default part of the page's tabindex unless we set them to -1.
if (chart.rangeSelector) {
each(['minInput', 'maxInput'], function(key, i) {
if (chart.rangeSelector[key]) {
chart.rangeSelector[key].setAttribute('tabindex', '-1');
chart.rangeSelector[key].setAttribute('role', 'textbox');
chart.rangeSelector[key].setAttribute('aria-label', 'Select ' + (i ? 'end' : 'start') + ' date.');
}
});
}
 
// Hide text elements from screen readers
each(textElements, function(el) {
el.setAttribute('aria-hidden', 'true');
});
 
// Add top-secret screen reader region
chart.addScreenReaderRegion(hiddenSectionId, tableId);
 
// Enable keyboard navigation
if (a11yOptions.keyboardNavigation.enabled) {
chart.addKeyboardNavEvents();
}
 
/* Wrap table functionality from export-data */
 
// Keep track of columns
merge(true, options.exporting, {
csv: {
columnHeaderFormatter: function(item, key, keyLength) {
if (!item) {
return 'Category';
}
if (item instanceof H.Axis) {
return (item.options.title && item.options.title.text) ||
(item.isDatetimeAxis ? 'DateTime' : 'Category');
}
var prevCol = topLevelColumns[topLevelColumns.length - 1];
if (keyLength > 1) {
// We need multiple levels of column headers
// Populate a list of column headers to add in addition to the ones added by export-data
if ((prevCol && prevCol.text) !== item.name) {
topLevelColumns.push({
text: item.name,
span: keyLength
});
}
}
if (oldColumnHeaderFormatter) {
return oldColumnHeaderFormatter.call(this, item, key, keyLength);
}
return keyLength > 1 ? key : item.name;
}
}
});
 
// Add ID and title/caption to table HTML
H.wrap(chart, 'getTable', function(proceed) {
return proceed.apply(this, Array.prototype.slice.call(arguments, 1))
.replace('<table>', '<table id="' + tableId + '" summary="Table representation of chart"><caption>' + chartTitle + '</caption>');
});
 
// Add accessibility attributes and top level columns
H.wrap(chart, 'viewData', function(proceed) {
if (!this.dataTableDiv) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
var table = doc.getElementById(tableId),
head = table.getElementsByTagName('thead')[0],
body = table.getElementsByTagName('tbody')[0],
firstRow = head.firstChild.children,
columnHeaderRow = '<tr><td></td>',
cell,
newCell;
 
// Make table focusable by script
table.setAttribute('tabindex', '-1');
 
// Create row headers
each(body.children, function(el) {
cell = el.firstChild;
newCell = doc.createElement('th');
newCell.setAttribute('scope', 'row');
newCell.innerHTML = cell.innerHTML;
cell.parentNode.replaceChild(newCell, cell);
});
 
// Set scope for column headers
each(firstRow, function(el) {
if (el.tagName === 'TH') {
el.setAttribute('scope', 'col');
}
});
 
// Add top level columns
if (topLevelColumns.length) {
each(topLevelColumns, function(col) {
columnHeaderRow += '<th scope="col" colspan="' + col.span + '">' + col.text + '</th>';
});
head.insertAdjacentHTML('afterbegin', columnHeaderRow);
}
}
});
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/annotations.js
@@ -0,0 +1,14 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(e){function n(a,c,b,f,e){for(var d=a.length,g=0;g<d;)k(a[g])&&k(a[g+1])?(a[g]=c.toPixels(a[g])-f,a[g+1]=b.toPixels(a[g+1])-e,g+=2):g+=1;return a}var p=e.defined,k=e.isNumber,t=e.inArray,A=e.isArray,B=e.merge,C=e.Chart,u=e.extend,D=e.each,q,E;E=["path","rect","circle"];q={top:0,left:0,center:.5,middle:.5,bottom:1,right:1};var F=function(){this.init.apply(this,arguments)};F.prototype={init:function(a,
c){var b=c.shape&&c.shape.type;this.chart=a;var f;f={xAxis:0,yAxis:0,title:{style:{},text:"",x:0,y:0},shape:{params:{stroke:"#000000",fill:"transparent",strokeWidth:2}}};a={circle:{params:{x:0,y:0}}};a[b]&&(f.shape=B(f.shape,a[b]));this.options=B({},f,c)},render:function(a){var c=this.chart,b=this.chart.renderer,f=this.group,e=this.title,d=this.shape,g=this.options,k=g.title,m=g.shape;f||(f=this.group=b.g());!d&&m&&-1!==t(m.type,E)&&(d=this.shape=b[g.shape.type](m.params),d.add(f));!e&&k&&(e=this.title=
b.label(k),e.add(f));f.add(c.annotations.group);this.linkObjects();!1!==a&&this.redraw()},redraw:function(){var a=this.options,c=this.chart,b=this.group,f=this.title,z=this.shape,d=this.linkedObject,g=c.xAxis[a.xAxis],v=c.yAxis[a.yAxis],c=a.width,m=a.height,w=q[a.anchorY],x=q[a.anchorX],h,y,l,r;d&&(y=d instanceof e.Point?"point":d instanceof e.Series?"series":null,"point"===y?(a.xValue=d.x,a.yValue=d.y,l=d.series):"series"===y&&(l=d),b.visibility!==l.group.visibility&&b.attr({visibility:l.group.visibility}));
d=p(a.xValue)?g.toPixels(a.xValue+g.minPointOffset)-g.minPixelPadding:a.x;l=p(a.yValue)?v.toPixels(a.yValue):a.y;k(d)&&k(l)&&(f&&(f.attr(a.title),f.css(a.title.style)),z&&(h=u({},a.shape.params),"values"===a.units&&(e.objectEach(h,function(a,b){-1<t(b,["width","x"])?h[b]=g.translate(h[b]):-1<t(b,["height","y"])&&(h[b]=v.translate(h[b]))}),h.width&&(h.width-=g.toPixels(0)-g.left),h.x&&(h.x+=g.minPixelPadding),"path"===a.shape.type&&n(h.d,g,v,d,l)),"circle"===a.shape.type&&(h.x+=h.r,h.y+=h.r),z.attr(h)),
b.bBox=null,k(c)||(r=b.getBBox(),c=r.width),k(m)||(r||(r=b.getBBox()),m=r.height),k(x)||(x=q.center),k(w)||(w=q.center),d-=c*x,l-=m*w,p(b.translateX)&&p(b.translateY)?b.animate({translateX:d,translateY:l}):b.translate(d,l))},destroy:function(){var a=this,c=this.chart.annotations.allItems,b=c.indexOf(a);-1<b&&c.splice(b,1);D(["title","shape","group"],function(b){a[b]&&(a[b].destroy(),a[b]=null)});a.group=a.title=a.shape=a.chart=a.options=null},update:function(a,c){u(this.options,a);this.linkObjects();
this.render(c)},linkObjects:function(){var a=this.chart,c=this.linkedObject,b=c&&(c.id||c.options.id),f=this.options.linkedTo;p(f)?p(c)&&f===b||(this.linkedObject=a.get(f)):this.linkedObject=null}};u(C.prototype,{annotations:{add:function(a,c){var b=this.allItems,f=this.chart,e,d;A(a)||(a=[a]);for(d=a.length;d--;)e=new F(f,a[d]),b.push(e),e.render(c)},redraw:function(){D(this.allItems,function(a){a.redraw()})}}});C.prototype.callbacks.push(function(a){var c=a.options.annotations,b;b=a.renderer.g("annotations");
b.attr({zIndex:7});b.add();a.annotations.allItems=[];a.annotations.chart=a;a.annotations.group=b;A(c)&&0<c.length&&a.annotations.add(a.options.annotations);e.addEvent(a,"redraw",function(){a.annotations.redraw()})})})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/annotations.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":14,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","translatePath","d","xAxis","yAxis","xOffset","yOffset","len","length","i","isNumber","toPixels","defined","inArray","isArray","merge","Chart","extend","each","ALIGN_FACTOR","ALLOWED_SHAPES","top","left","center","middle","bottom","right","Annotation","init","apply","arguments","prototype","chart","options","shapeType","shape","type","title","style","text","x","y","params","stroke","fill","strokeWidth","shapeOptions","circle","render","redraw","renderer","annotation","group","titleOptions","g","add","label","annotations","linkObjects","linkedTo","linkedObject","width","height","anchorY","anchorX","shapeParams","linkType","series","bbox","Point","Series","xValue","yValue","visibility","attr","minPointOffset","minPixelPadding","css","units","objectEach","val","param","translate","r","bBox","getBBox","translateX","translateY","animate","destroy","allItems","index","indexOf","splice","element","update","linkedId","id","get","item","push","callbacks","zIndex","addEvent"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/annotations.src.js
@@ -0,0 +1,407 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
var defined = H.defined,
isNumber = H.isNumber,
inArray = H.inArray,
isArray = H.isArray,
merge = H.merge,
Chart = H.Chart,
extend = H.extend,
each = H.each;
 
var ALIGN_FACTOR,
ALLOWED_SHAPES;
 
ALLOWED_SHAPES = ['path', 'rect', 'circle'];
 
ALIGN_FACTOR = {
top: 0,
left: 0,
center: 0.5,
middle: 0.5,
bottom: 1,
right: 1
};
 
function defaultOptions(shapeType) {
var shapeOptions,
options;
 
options = {
xAxis: 0,
yAxis: 0,
title: {
style: {},
text: '',
x: 0,
y: 0
},
shape: {
params: {
stroke: '#000000',
fill: 'transparent',
strokeWidth: 2
}
}
};
 
shapeOptions = {
circle: {
params: {
x: 0,
y: 0
}
}
};
 
if (shapeOptions[shapeType]) {
options.shape = merge(options.shape, shapeOptions[shapeType]);
}
 
return options;
}
 
function translatePath(d, xAxis, yAxis, xOffset, yOffset) {
var len = d.length,
i = 0;
 
while (i < len) {
if (isNumber(d[i]) && isNumber(d[i + 1])) {
d[i] = xAxis.toPixels(d[i]) - xOffset;
d[i + 1] = yAxis.toPixels(d[i + 1]) - yOffset;
i += 2;
} else {
i += 1;
}
}
 
return d;
}
 
 
// Define annotation prototype
var Annotation = function() {
this.init.apply(this, arguments);
};
Annotation.prototype = {
/*
* Initialize the annotation
*/
init: function(chart, options) {
var shapeType = options.shape && options.shape.type;
 
this.chart = chart;
this.options = merge({}, defaultOptions(shapeType), options);
},
 
/*
* Render the annotation
*/
render: function(redraw) {
var annotation = this,
chart = this.chart,
renderer = annotation.chart.renderer,
group = annotation.group,
title = annotation.title,
shape = annotation.shape,
options = annotation.options,
titleOptions = options.title,
shapeOptions = options.shape;
 
if (!group) {
group = annotation.group = renderer.g();
}
 
 
if (!shape && shapeOptions && inArray(shapeOptions.type, ALLOWED_SHAPES) !== -1) {
shape = annotation.shape = renderer[options.shape.type](shapeOptions.params);
shape.add(group);
}
 
if (!title && titleOptions) {
title = annotation.title = renderer.label(titleOptions);
title.add(group);
}
 
group.add(chart.annotations.group);
 
// link annotations to point or series
annotation.linkObjects();
 
if (redraw !== false) {
annotation.redraw();
}
},
 
/*
* Redraw the annotation title or shape after options update
*/
redraw: function() {
var options = this.options,
chart = this.chart,
group = this.group,
title = this.title,
shape = this.shape,
linkedTo = this.linkedObject,
xAxis = chart.xAxis[options.xAxis],
yAxis = chart.yAxis[options.yAxis],
width = options.width,
height = options.height,
anchorY = ALIGN_FACTOR[options.anchorY],
anchorX = ALIGN_FACTOR[options.anchorX],
shapeParams,
linkType,
series,
bbox,
x,
y;
 
if (linkedTo) {
linkType = (linkedTo instanceof H.Point) ? 'point' :
(linkedTo instanceof H.Series) ? 'series' : null;
 
if (linkType === 'point') {
options.xValue = linkedTo.x;
options.yValue = linkedTo.y;
series = linkedTo.series;
} else if (linkType === 'series') {
series = linkedTo;
}
 
if (group.visibility !== series.group.visibility) {
group.attr({
visibility: series.group.visibility
});
}
}
 
 
// Based on given options find annotation pixel position
x = (defined(options.xValue) ? xAxis.toPixels(options.xValue + xAxis.minPointOffset) - xAxis.minPixelPadding : options.x);
y = defined(options.yValue) ? yAxis.toPixels(options.yValue) : options.y;
 
if (!isNumber(x) || !isNumber(y)) {
return;
}
 
 
if (title) {
title.attr(options.title);
title.css(options.title.style);
}
 
if (shape) {
shapeParams = extend({}, options.shape.params);
 
if (options.units === 'values') {
H.objectEach(shapeParams, function(val, param) {
if (inArray(param, ['width', 'x']) > -1) {
shapeParams[param] = xAxis.translate(shapeParams[param]);
} else if (inArray(param, ['height', 'y']) > -1) {
shapeParams[param] = yAxis.translate(shapeParams[param]);
}
});
 
if (shapeParams.width) {
shapeParams.width -= xAxis.toPixels(0) - xAxis.left;
}
 
if (shapeParams.x) {
shapeParams.x += xAxis.minPixelPadding;
}
 
if (options.shape.type === 'path') {
translatePath(shapeParams.d, xAxis, yAxis, x, y);
}
}
 
// move the center of the circle to shape x/y
if (options.shape.type === 'circle') {
shapeParams.x += shapeParams.r;
shapeParams.y += shapeParams.r;
}
 
shape.attr(shapeParams);
}
 
group.bBox = null;
 
// If annotation width or height is not defined in options use bounding box size
if (!isNumber(width)) {
bbox = group.getBBox();
width = bbox.width;
}
 
if (!isNumber(height)) {
// get bbox only if it wasn't set before
if (!bbox) {
bbox = group.getBBox();
}
 
height = bbox.height;
}
 
// Calculate anchor point
if (!isNumber(anchorX)) {
anchorX = ALIGN_FACTOR.center;
}
 
if (!isNumber(anchorY)) {
anchorY = ALIGN_FACTOR.center;
}
 
// Translate group according to its dimension and anchor point
x = x - width * anchorX;
y = y - height * anchorY;
 
if (defined(group.translateX) && defined(group.translateY)) {
group.animate({
translateX: x,
translateY: y
});
} else {
group.translate(x, y);
}
},
 
/*
* Destroy the annotation
*/
destroy: function() {
var annotation = this,
chart = this.chart,
allItems = chart.annotations.allItems,
index = allItems.indexOf(annotation);
 
if (index > -1) {
allItems.splice(index, 1);
}
 
each(['title', 'shape', 'group'], function(element) {
if (annotation[element]) {
annotation[element].destroy();
annotation[element] = null;
}
});
 
annotation.group = annotation.title = annotation.shape = annotation.chart = annotation.options = null;
},
 
/*
* Update the annotation with a given options
*/
update: function(options, redraw) {
extend(this.options, options);
 
// update link to point or series
this.linkObjects();
 
this.render(redraw);
},
 
linkObjects: function() {
var annotation = this,
chart = annotation.chart,
linkedTo = annotation.linkedObject,
linkedId = linkedTo && (linkedTo.id || linkedTo.options.id),
options = annotation.options,
id = options.linkedTo;
 
if (!defined(id)) {
annotation.linkedObject = null;
} else if (!defined(linkedTo) || id !== linkedId) {
annotation.linkedObject = chart.get(id);
}
}
};
 
 
// Add annotations methods to chart prototype
extend(Chart.prototype, {
annotations: {
/*
* Unified method for adding annotations to the chart
*/
add: function(options, redraw) {
var annotations = this.allItems,
chart = this.chart,
item,
len;
 
if (!isArray(options)) {
options = [options];
}
 
len = options.length;
 
while (len--) {
item = new Annotation(chart, options[len]);
annotations.push(item);
item.render(redraw);
}
},
 
/**
* Redraw all annotations, method used in chart events
*/
redraw: function() {
each(this.allItems, function(annotation) {
annotation.redraw();
});
}
}
});
 
 
// Initialize on chart load
Chart.prototype.callbacks.push(function(chart) {
var options = chart.options.annotations,
group;
 
group = chart.renderer.g('annotations');
group.attr({
zIndex: 7
});
group.add();
 
// initialize empty array for annotations
chart.annotations.allItems = [];
 
// link chart object to annotations
chart.annotations.chart = chart;
 
// link annotations group element to the chart
chart.annotations.group = group;
 
if (isArray(options) && options.length > 0) {
chart.annotations.add(chart.options.annotations);
}
 
// update annotations after chart redraw
H.addEvent(chart, 'redraw', function() {
chart.annotations.redraw();
});
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/boost-canvas.js
@@ -0,0 +1,23 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Boost module
 
(c) 2010-2017 Highsoft AS
Author: Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(p){"object"===typeof module&&module.exports?module.exports=p:p(Highcharts)})(function(p){(function(d){function p(a,b,c,g,e){e=e||0;g=g||5E4;for(var d=e+g,f=!0;f&&e<d&&e<a.length;)f=b(a[e],e),e+=1;f&&(e<a.length?setTimeout(function(){p(a,b,c,g,e)}):c&&c())}function x(a){return a.series.length>=((a.options.boost?a.options.boost.seriesThreshold:0)||a.options.chart.seriesBoostThreshold||10)}var A=d.win.document,Z=function(){},aa=d.Color,m=d.Series,k=d.seriesTypes,w=d.each,B=d.extend,y=d.addEvent,
ba=d.fireEvent,r=d.isNumber,ca=d.merge,da=d.pick,n=d.wrap,L;d.initCanvasBoost=function(){d.seriesTypes.heatmap&&d.wrap(d.seriesTypes.heatmap.prototype,"drawPoints",function(){var a=this.getContext();a?(w(this.points,function(b){var c=b.plotY;void 0===c||isNaN(c)||null===b.y||(c=b.shapeArgs,b=b.series.colorAttribs(b),a.fillStyle=b.fill,a.fillRect(c.x,c.y,c.width,c.height))}),this.canvasToSVG()):this.chart.showLoading("Your browser doesn't support HTML5 canvas, \x3cbr\x3eplease use a modern browser")});
d.extend(m.prototype,{directTouch:!1,pointRange:0,allowDG:!1,hasExtremes:function(a){var b=this.options,c=this.xAxis&&this.xAxis.options,g=this.yAxis&&this.yAxis.options;return b.data.length>(b.boostThreshold||Number.MAX_VALUE)&&r(g.min)&&r(g.max)&&(!a||r(c.min)&&r(c.max))},destroyGraphics:function(){var a=this,b=this.points,c,g;if(b)for(g=0;g<b.length;g+=1)(c=b[g])&&c.graphic&&(c.graphic=c.graphic.destroy());w(["graph","area","tracker"],function(c){a[c]&&(a[c]=a[c].destroy())})},getContext:function(){var a=
this.chart,b=a.chartWidth,c=a.chartHeight,g=this.group,e=this,d,f=function(a,c,b,e,g,d,f){a.call(this,b,c,e,g,d,f)};x(a)&&(e=a,g=a.seriesGroup);d=e.ctx;e.canvas||(e.canvas=A.createElement("canvas"),e.image=a.renderer.image("",0,0,b,c).add(g),e.ctx=d=e.canvas.getContext("2d"),a.inverted&&w(["moveTo","lineTo","rect","arc"],function(a){n(d,a,f)}),e.boostClipRect=a.renderer.clipRect(a.plotLeft,a.plotTop,a.plotWidth,a.chartHeight),e.image.clip(e.boostClipRect));e.canvas.width!==b&&(e.canvas.width=b);e.canvas.height!==
c&&(e.canvas.height=c);e.image.attr({x:0,y:0,width:b,height:c,style:"pointer-events: none"});e.boostClipRect.attr({x:0,y:0,width:a.plotWidth,height:a.chartHeight});return d},canvasToSVG:function(){x(this.chart)?this.image&&this.image.attr({href:""}):this.image.attr({href:this.canvas.toDataURL("image/png")})},cvsLineTo:function(a,b,c){a.lineTo(b,c)},renderCanvas:function(){var a=this,b=a.options,c=a.chart,g=this.xAxis,e=this.yAxis,k=(c.options.boost||{}).timeRendering||!1,f,t=0,m=a.processedXData,
w=a.processedYData,n=b.data,l=g.getExtremes(),C=l.min,D=l.max,l=e.getExtremes(),x=l.min,y=l.max,M={},E,A=!!a.sampling,N,F=b.marker&&b.marker.radius,O=this.cvsDrawPoint,G=b.lineWidth?this.cvsLineTo:!1,P=F&&1>=F?this.cvsMarkerSquare:this.cvsMarkerCircle,ea=this.cvsStrokeBatch||1E3,fa=!1!==b.enableMouseTracking,Q,l=b.threshold,u=e.getThreshold(l),R=r(l),S=u,ga=this.fill,T=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),U=!!b.stacking,ha=a.cropStart||0,l=c.options.loading,ia=a.requireSorting,
V,ja=b.connectNulls,W=!m,H,I,v,z,J,q=U?a.data:m||n,ka=a.fillOpacity?(new aa(a.color)).setOpacity(da(b.fillOpacity,.75)).get():a.color,X=function(){ga?(f.fillStyle=ka,f.fill()):(f.strokeStyle=a.color,f.lineWidth=b.lineWidth,f.stroke())},Y=function(b,e,g,d){0===t&&(f.beginPath(),G&&(f.lineJoin="round"));c.scroller&&"highcharts-navigator-series"===a.options.className?(e+=c.scroller.top,g&&(g+=c.scroller.top)):e+=c.plotTop;b+=c.plotLeft;V?f.moveTo(b,e):O?O(f,b,e,g,Q):G?G(f,b,e):P&&P.call(a,f,b,e,F,d);
t+=1;t===ea&&(X(),t=0);Q={clientX:b,plotY:e,yBottom:g}},K=function(a,b,d){J=a+","+b;fa&&!M[J]&&(M[J]=!0,c.inverted&&(a=g.len-a,b=e.len-b),N.push({clientX:a,plotX:a,plotY:b,i:ha+d}))};(this.points||this.graph)&&this.destroyGraphics();a.plotGroup("group","series",a.visible?"visible":"hidden",b.zIndex,c.seriesGroup);a.markerGroup=a.group;N=this.points=[];f=this.getContext();a.buildKDTree=Z;99999<n.length&&(c.options.loading=ca(l,{labelStyle:{backgroundColor:d.color("#ffffff").setOpacity(.75).get(),padding:"1em",
borderRadius:"0.5em"},style:{backgroundColor:"none",opacity:1}}),clearTimeout(L),c.showLoading("Drawing..."),c.options.loading=l);k&&console.time("canvas rendering");p(q,function(b,d){var f,h,k,l=!1,p=!1,m=!1,n=!1,r="undefined"===typeof c.index,t=!0;if(!r){W?(f=b[0],h=b[1],q[d+1]&&(m=q[d+1][0]),q[d-1]&&(n=q[d-1][0])):(f=b,h=w[d],q[d+1]&&(m=q[d+1]),q[d-1]&&(n=q[d-1]));m&&m>=C&&m<=D&&(l=!0);n&&n>=C&&n<=D&&(p=!0);T?(W&&(h=b.slice(1,3)),k=h[0],h=h[1]):U&&(f=b.x,h=b.stackY,k=h-b.y);b=null===h;ia||(t=h>=
x&&h<=y);if(!b&&(f>=C&&f<=D&&t||l||p))if(f=Math.round(g.toPixels(f,!0)),A){if(void 0===v||f===E){T||(k=h);if(void 0===z||h>I)I=h,z=d;if(void 0===v||k<H)H=k,v=d}f!==E&&(void 0!==v&&(h=e.toPixels(I,!0),u=e.toPixels(H,!0),Y(f,R?Math.min(h,S):h,R?Math.max(u,S):u,d),K(f,h,z),u!==h&&K(f,u,v)),v=z=void 0,E=f)}else h=Math.round(e.toPixels(h,!0)),Y(f,h,u,d),K(f,h,d);V=b&&!ja;0===d%5E4&&a.canvasToSVG()}return!r},function(){var b=c.loadingDiv,e=c.loadingShown;X();a.canvasToSVG();k&&console.timeEnd("canvas rendering");
ba(a,"renderedCanvas");e&&(B(b.style,{transition:"opacity 250ms",opacity:0}),c.loadingShown=!1,L=setTimeout(function(){b.parentNode&&b.parentNode.removeChild(b);c.loadingDiv=c.loadingSpan=null},250));a.directTouch=!1;a.options.stickyTracking=!0;delete a.buildKDTree;a.buildKDTree()},c.renderer.forExport?Number.MAX_VALUE:void 0)}});n(m.prototype,"setData",function(a){this.hasExtremes&&this.hasExtremes(!0)&&"heatmap"!==this.type||a.apply(this,Array.prototype.slice.call(arguments,1))});n(m.prototype,
"processData",function(a){this.hasExtremes&&this.hasExtremes(!0)&&"heatmap"!==this.type||a.apply(this,Array.prototype.slice.call(arguments,1))});k.scatter.prototype.cvsMarkerCircle=function(a,b,c,d){a.moveTo(b,c);a.arc(b,c,d,0,2*Math.PI,!1)};k.scatter.prototype.cvsMarkerSquare=function(a,b,c,d){a.rect(b-d,c-d,2*d,2*d)};k.scatter.prototype.fill=!0;k.bubble&&(k.bubble.prototype.cvsMarkerCircle=function(a,b,c,d,e){a.moveTo(b,c);a.arc(b,c,this.radii&&this.radii[e],0,2*Math.PI,!1)},k.bubble.prototype.cvsStrokeBatch=
1);B(k.area.prototype,{cvsDrawPoint:function(a,b,c,d,e){e&&b!==e.clientX&&(a.moveTo(e.clientX,e.yBottom),a.lineTo(e.clientX,e.plotY),a.lineTo(b,c),a.lineTo(b,d))},fill:!0,fillOpacity:!0,sampling:!0});B(k.column.prototype,{cvsDrawPoint:function(a,b,c,d){a.rect(b-1,c,1,d-c)},fill:!0,sampling:!0});d.Chart.prototype.callbacks.push(function(a){y(a,"predraw",function(){a.image&&a.image.attr({href:""});a.canvas&&a.canvas.getContext("2d").clearRect(0,0,a.canvas.width,a.canvas.height)});y(a,"render",function(){a.image&&
a.canvas&&a.image.attr({href:a.canvas.toDataURL("image/png")})})})}})(p)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/boost-canvas.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":23,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","eachAsync","arr","fn","finalFunc","chunkSize","i","CHUNK_SIZE","threshold","proceed","length","setTimeout","isChartSeriesBoosting","chart","series","options","boost","seriesThreshold","seriesBoostThreshold","doc","win","document","noop","Color","Series","seriesTypes","each","extend","addEvent","fireEvent","isNumber","merge","pick","wrap","destroyLoadingDiv","initCanvasBoost","H.initCanvasBoost","heatmap","prototype","ctx","getContext","points","point","plotY","undefined","isNaN","y","shapeArgs","pointAttr","colorAttribs","fillStyle","fill","fillRect","x","width","height","canvasToSVG","showLoading","directTouch","pointRange","allowDG","hasExtremes","checkX","xAxis","yAxis","data","boostThreshold","Number","MAX_VALUE","min","max","destroyGraphics","graphic","destroy","prop","chartWidth","chartHeight","targetGroup","group","target","swapXY","a","b","c","d","call","seriesGroup","canvas","createElement","image","renderer","add","inverted","boostClipRect","clipRect","plotLeft","plotTop","plotWidth","clip","attr","style","href","toDataURL","cvsLineTo","clientX","lineTo","renderCanvas","timeRendering","xData","processedXData","yData","processedYData","rawData","xExtremes","getExtremes","xMin","xMax","yExtremes","yMin","yMax","pointTaken","lastClientX","sampling","r","marker","radius","cvsDrawPoint","lineWidth","cvsMarker","cvsMarkerSquare","cvsMarkerCircle","strokeBatch","cvsStrokeBatch","enableMouseTracking","lastPoint","yBottom","getThreshold","hasThreshold","translatedThreshold","doFill","isRange","pointArrayMap","join","isStacked","stacking","cropStart","loadingOptions","loading","requireSorting","wasNull","connectNulls","useRaw","minVal","maxVal","minI","maxI","kdIndex","sdata","fillColor","fillOpacity","setOpacity","color","get","stroke","strokeStyle","drawPoint","beginPath","lineJoin","scroller","className","top","moveTo","addKDPoint","len","push","plotX","graph","plotGroup","visible","zIndex","markerGroup","buildKDTree","labelStyle","backgroundColor","padding","borderRadius","opacity","clearTimeout","console","time","low","isNextInside","isPrevInside","nx","px","chartDestroyed","index","isYInside","slice","stackY","isNull","Math","round","toPixels","loadingDiv","loadingShown","timeEnd","transition","parentNode","removeChild","loadingSpan","stickyTracking","forExport","type","apply","Array","arguments","scatter","seriesTypes.scatter.prototype.cvsMarkerCircle","arc","PI","seriesTypes.scatter.prototype.cvsMarkerSquare","rect","bubble","seriesTypes.bubble.prototype.cvsMarkerCircle","radii","area","column","Chart","callbacks","clear","clearRect"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/boost-canvas.src.js
@@ -0,0 +1,773 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Boost module
*
* (c) 2010-2017 Highsoft AS
* Author: Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* License: www.highcharts.com/license
* Author: Torstein Honsi, Christer Vasseng
*
* This is an experimental Highcharts module that draws long data series on a canvas
* in order to increase performance of the initial load time and tooltip responsiveness.
*
* Compatible with HTML5 canvas compatible browsers (not IE < 9).
*
*
*
* Development plan
* - Column range.
* - Heatmap. Modify the heatmap-canvas demo so that it uses this module.
* - Treemap.
* - Check how it works with Highstock and data grouping. Currently it only works when navigator.adaptToUpdatedData
* is false. It is also recommended to set scrollbar.liveRedraw to false.
* - Check inverted charts.
* - Check reversed axes.
* - Chart callback should be async after last series is drawn. (But not necessarily, we don't do
that with initial series animation).
* - Cache full-size image so we don't have to redraw on hide/show and zoom up. But k-d-tree still
* needs to be built.
* - Test IE9 and IE10.
* - Stacking is not perhaps not correct since it doesn't use the translation given in
* the translate method. If this gets to complicated, a possible way out would be to
* have a simplified renderCanvas method that simply draws the areaPath on a canvas.
*
* If this module is taken in as part of the core
* - All the loading logic should be merged with core. Update styles in the core.
* - Most of the method wraps should probably be added directly in parent methods.
*
* Notes for boost mode
* - Area lines are not drawn
* - Point markers are not drawn on line-type series
* - Lines are not drawn on scatter charts
* - Zones and negativeColor don't work
* - Initial point colors aren't rendered
* - Columns are always one pixel wide. Don't set the threshold too low.
*
* Optimizing tips for users
* - For scatter plots, use a marker.radius of 1 or less. It results in a rectangle being drawn, which is
* considerably faster than a circle.
* - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes.
* - Set enableMouseTracking to false on the series to improve total rendering time.
* - The default threshold is set based on one series. If you have multiple, dense series, the combined
* number of points drawn gets higher, and you may want to set the threshold lower in order to
* use optimizations.
*/
 
 
var win = H.win,
doc = win.document,
noop = function() {},
Color = H.Color,
Series = H.Series,
seriesTypes = H.seriesTypes,
each = H.each,
extend = H.extend,
addEvent = H.addEvent,
fireEvent = H.fireEvent,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
wrap = H.wrap,
CHUNK_SIZE = 50000,
destroyLoadingDiv;
 
function eachAsync(arr, fn, finalFunc, chunkSize, i) {
i = i || 0;
chunkSize = chunkSize || CHUNK_SIZE;
 
var threshold = i + chunkSize,
proceed = true;
 
while (proceed && i < threshold && i < arr.length) {
proceed = fn(arr[i], i);
i = i + 1;
}
if (proceed) {
if (i < arr.length) {
setTimeout(function() {
eachAsync(arr, fn, finalFunc, chunkSize, i);
});
} else if (finalFunc) {
finalFunc();
}
}
}
 
/*
* Returns true if the chart is in series boost mode
* @param chart {Highchart.Chart} - the chart to check
* @returns {Boolean} - true if the chart is in series boost mode
*/
function isChartSeriesBoosting(chart) {
var threshold = (chart.options.boost ? chart.options.boost.seriesThreshold : 0) ||
chart.options.chart.seriesBoostThreshold ||
10;
 
return chart.series.length >= threshold;
}
 
H.initCanvasBoost = function() {
 
if (H.seriesTypes.heatmap) {
H.wrap(H.seriesTypes.heatmap.prototype, 'drawPoints', function() {
var ctx = this.getContext();
if (ctx) {
 
// draw the columns
each(this.points, function(point) {
var plotY = point.plotY,
shapeArgs,
pointAttr;
 
if (plotY !== undefined && !isNaN(plotY) && point.y !== null) {
shapeArgs = point.shapeArgs;
 
 
pointAttr = point.series.colorAttribs(point);
 
 
ctx.fillStyle = pointAttr.fill;
ctx.fillRect(shapeArgs.x, shapeArgs.y, shapeArgs.width, shapeArgs.height);
}
});
 
this.canvasToSVG();
 
} else {
this.chart.showLoading('Your browser doesn\'t support HTML5 canvas, <br>please use a modern browser');
 
// Uncomment this to provide low-level (slow) support in oldIE. It will cause script errors on
// charts with more than a few thousand points.
// arguments[0].call(this);
}
});
}
 
 
/**
* Override a bunch of methods the same way. If the number of points is below the threshold,
* run the original method. If not, check for a canvas version or do nothing.
*/
// each(['translate', 'generatePoints', 'drawTracker', 'drawPoints', 'render'], function (method) {
// function branch(proceed) {
// var letItPass = this.options.stacking && (method === 'translate' || method === 'generatePoints');
// if (((this.processedXData || this.options.data).length < (this.options.boostThreshold || Number.MAX_VALUE) ||
// letItPass) || !isChartSeriesBoosting(this.chart)) {
 
// // Clear image
// if (method === 'render' && this.image) {
// this.image.attr({ href: '' });
// this.animate = null; // We're zooming in, don't run animation
// }
 
// proceed.call(this);
 
// // If a canvas version of the method exists, like renderCanvas(), run
// } else if (this[method + 'Canvas']) {
 
// this[method + 'Canvas']();
// }
// }
// wrap(Series.prototype, method, branch);
 
// // A special case for some types - its translate method is already wrapped
// if (method === 'translate') {
// each(['arearange', 'bubble', 'column'], function (type) {
// if (seriesTypes[type]) {
// wrap(seriesTypes[type].prototype, method, branch);
// }
// });
// }
// });
 
H.extend(Series.prototype, {
directTouch: false,
pointRange: 0,
allowDG: false, // No data grouping, let boost handle large data
hasExtremes: function(checkX) {
var options = this.options,
data = options.data,
xAxis = this.xAxis && this.xAxis.options,
yAxis = this.yAxis && this.yAxis.options;
return data.length > (options.boostThreshold || Number.MAX_VALUE) && isNumber(yAxis.min) && isNumber(yAxis.max) &&
(!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
},
 
/**
* If implemented in the core, parts of this can probably be shared with other similar
* methods in Highcharts.
*/
destroyGraphics: function() {
var series = this,
points = this.points,
point,
i;
 
if (points) {
for (i = 0; i < points.length; i = i + 1) {
point = points[i];
if (point && point.graphic) {
point.graphic = point.graphic.destroy();
}
}
}
 
each(['graph', 'area', 'tracker'], function(prop) {
if (series[prop]) {
series[prop] = series[prop].destroy();
}
});
},
 
/**
* Create a hidden canvas to draw the graph on. The contents is later copied over
* to an SVG image element.
*/
getContext: function() {
var chart = this.chart,
width = chart.chartWidth,
height = chart.chartHeight,
targetGroup = this.group,
target = this,
ctx,
swapXY = function(proceed, x, y, a, b, c, d) {
proceed.call(this, y, x, a, b, c, d);
};
 
if (isChartSeriesBoosting(chart)) {
target = chart;
targetGroup = chart.seriesGroup;
}
 
ctx = target.ctx;
 
if (!target.canvas) {
target.canvas = doc.createElement('canvas');
 
target.image = chart.renderer.image(
'',
0,
0,
width,
height
).add(targetGroup);
 
target.ctx = ctx = target.canvas.getContext('2d');
 
if (chart.inverted) {
each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) {
wrap(ctx, fn, swapXY);
});
}
 
target.boostClipRect = chart.renderer.clipRect(
chart.plotLeft,
chart.plotTop,
chart.plotWidth,
chart.chartHeight
);
 
target.image.clip(target.boostClipRect);
 
} else if (!(target instanceof H.Chart)) {
//ctx.clearRect(0, 0, width, height);
}
 
if (target.canvas.width !== width) {
target.canvas.width = width;
}
 
if (target.canvas.height !== height) {
target.canvas.height = height;
}
 
target.image.attr({
x: 0,
y: 0,
width: width,
height: height,
style: 'pointer-events: none'
});
 
target.boostClipRect.attr({
x: 0,
y: 0,
width: chart.plotWidth,
height: chart.chartHeight
});
 
return ctx;
},
 
/**
* Draw the canvas image inside an SVG image
*/
canvasToSVG: function() {
if (!isChartSeriesBoosting(this.chart)) {
this.image.attr({
href: this.canvas.toDataURL('image/png')
});
} else if (this.image) {
this.image.attr({
href: ''
});
}
},
 
cvsLineTo: function(ctx, clientX, plotY) {
ctx.lineTo(clientX, plotY);
},
 
renderCanvas: function() {
var series = this,
options = series.options,
chart = series.chart,
xAxis = this.xAxis,
yAxis = this.yAxis,
activeBoostSettings = chart.options.boost || {},
boostSettings = {
timeRendering: activeBoostSettings.timeRendering || false,
timeSeriesProcessing: activeBoostSettings.timeSeriesProcessing || false,
timeSetup: activeBoostSettings.timeSetup || false
},
ctx,
c = 0,
xData = series.processedXData,
yData = series.processedYData,
rawData = options.data,
xExtremes = xAxis.getExtremes(),
xMin = xExtremes.min,
xMax = xExtremes.max,
yExtremes = yAxis.getExtremes(),
yMin = yExtremes.min,
yMax = yExtremes.max,
pointTaken = {},
lastClientX,
sampling = !!series.sampling,
points,
r = options.marker && options.marker.radius,
cvsDrawPoint = this.cvsDrawPoint,
cvsLineTo = options.lineWidth ? this.cvsLineTo : false,
cvsMarker = r && r <= 1 ?
this.cvsMarkerSquare :
this.cvsMarkerCircle,
strokeBatch = this.cvsStrokeBatch || 1000,
enableMouseTracking = options.enableMouseTracking !== false,
lastPoint,
threshold = options.threshold,
yBottom = yAxis.getThreshold(threshold),
hasThreshold = isNumber(threshold),
translatedThreshold = yBottom,
doFill = this.fill,
isRange = series.pointArrayMap && series.pointArrayMap.join(',') === 'low,high',
isStacked = !!options.stacking,
cropStart = series.cropStart || 0,
loadingOptions = chart.options.loading,
requireSorting = series.requireSorting,
wasNull,
connectNulls = options.connectNulls,
useRaw = !xData,
minVal,
maxVal,
minI,
maxI,
kdIndex,
sdata = isStacked ? series.data : (xData || rawData),
fillColor = series.fillOpacity ?
new Color(series.color).setOpacity(pick(options.fillOpacity, 0.75)).get() :
series.color,
 
stroke = function() {
if (doFill) {
ctx.fillStyle = fillColor;
ctx.fill();
} else {
ctx.strokeStyle = series.color;
ctx.lineWidth = options.lineWidth;
ctx.stroke();
}
},
 
drawPoint = function(clientX, plotY, yBottom, i) {
if (c === 0) {
ctx.beginPath();
 
if (cvsLineTo) {
ctx.lineJoin = 'round';
}
}
 
if (chart.scroller && series.options.className === 'highcharts-navigator-series') {
plotY += chart.scroller.top;
if (yBottom) {
yBottom += chart.scroller.top;
}
} else {
plotY += chart.plotTop;
}
 
clientX += chart.plotLeft;
 
if (wasNull) {
ctx.moveTo(clientX, plotY);
} else {
if (cvsDrawPoint) {
cvsDrawPoint(ctx, clientX, plotY, yBottom, lastPoint);
} else if (cvsLineTo) {
cvsLineTo(ctx, clientX, plotY);
} else if (cvsMarker) {
cvsMarker.call(series, ctx, clientX, plotY, r, i);
}
}
 
// We need to stroke the line for every 1000 pixels. It will crash the browser
// memory use if we stroke too infrequently.
c = c + 1;
if (c === strokeBatch) {
stroke();
c = 0;
}
 
// Area charts need to keep track of the last point
lastPoint = {
clientX: clientX,
plotY: plotY,
yBottom: yBottom
};
},
 
addKDPoint = function(clientX, plotY, i) {
// Avoid more string concatination than required
kdIndex = clientX + ',' + plotY;
 
// The k-d tree requires series points. Reduce the amount of points, since the time to build the
// tree increases exponentially.
if (enableMouseTracking && !pointTaken[kdIndex]) {
pointTaken[kdIndex] = true;
 
if (chart.inverted) {
clientX = xAxis.len - clientX;
plotY = yAxis.len - plotY;
}
 
points.push({
clientX: clientX,
plotX: clientX,
plotY: plotY,
i: cropStart + i
});
}
};
 
// If we are zooming out from SVG mode, destroy the graphics
if (this.points || this.graph) {
this.destroyGraphics();
}
 
// The group
series.plotGroup(
'group',
'series',
series.visible ? 'visible' : 'hidden',
options.zIndex,
chart.seriesGroup
);
 
series.markerGroup = series.group;
// addEvent(series, 'destroy', function () {
// series.markerGroup = null;
// });
 
points = this.points = [];
ctx = this.getContext();
series.buildKDTree = noop; // Do not start building while drawing
 
// Display a loading indicator
if (rawData.length > 99999) {
chart.options.loading = merge(loadingOptions, {
labelStyle: {
backgroundColor: H.color('#ffffff').setOpacity(0.75).get(),
padding: '1em',
borderRadius: '0.5em'
},
style: {
backgroundColor: 'none',
opacity: 1
}
});
clearTimeout(destroyLoadingDiv);
chart.showLoading('Drawing...');
chart.options.loading = loadingOptions; // reset
}
 
if (boostSettings.timeRendering) {
console.time('canvas rendering'); // eslint-disable-line no-console
}
 
// Loop over the points
eachAsync(sdata, function(d, i) {
var x,
y,
clientX,
plotY,
isNull,
low,
isNextInside = false,
isPrevInside = false,
nx = false,
px = false,
chartDestroyed = typeof chart.index === 'undefined',
isYInside = true;
 
if (!chartDestroyed) {
if (useRaw) {
x = d[0];
y = d[1];
 
if (sdata[i + 1]) {
nx = sdata[i + 1][0];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1][0];
}
} else {
x = d;
y = yData[i];
 
if (sdata[i + 1]) {
nx = sdata[i + 1];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1];
}
}
 
if (nx && nx >= xMin && nx <= xMax) {
isNextInside = true;
}
 
if (px && px >= xMin && px <= xMax) {
isPrevInside = true;
}
 
// Resolve low and high for range series
if (isRange) {
if (useRaw) {
y = d.slice(1, 3);
}
low = y[0];
y = y[1];
} else if (isStacked) {
x = d.x;
y = d.stackY;
low = y - d.y;
}
 
isNull = y === null;
 
// Optimize for scatter zooming
if (!requireSorting) {
isYInside = y >= yMin && y <= yMax;
}
 
if (!isNull &&
(
(x >= xMin && x <= xMax && isYInside) ||
(isNextInside || isPrevInside)
)) {
 
 
clientX = Math.round(xAxis.toPixels(x, true));
 
if (sampling) {
if (minI === undefined || clientX === lastClientX) {
if (!isRange) {
low = y;
}
if (maxI === undefined || y > maxVal) {
maxVal = y;
maxI = i;
}
if (minI === undefined || low < minVal) {
minVal = low;
minI = i;
}
 
}
if (clientX !== lastClientX) { // Add points and reset
if (minI !== undefined) { // then maxI is also a number
plotY = yAxis.toPixels(maxVal, true);
yBottom = yAxis.toPixels(minVal, true);
drawPoint(
clientX,
hasThreshold ? Math.min(plotY, translatedThreshold) : plotY,
hasThreshold ? Math.max(yBottom, translatedThreshold) : yBottom,
i
);
addKDPoint(clientX, plotY, maxI);
if (yBottom !== plotY) {
addKDPoint(clientX, yBottom, minI);
}
}
 
minI = maxI = undefined;
lastClientX = clientX;
}
} else {
plotY = Math.round(yAxis.toPixels(y, true));
drawPoint(clientX, plotY, yBottom, i);
addKDPoint(clientX, plotY, i);
}
}
wasNull = isNull && !connectNulls;
 
if (i % CHUNK_SIZE === 0) {
series.canvasToSVG();
}
}
 
return !chartDestroyed;
}, function() {
var loadingDiv = chart.loadingDiv,
loadingShown = chart.loadingShown;
stroke();
series.canvasToSVG();
 
if (boostSettings.timeRendering) {
console.timeEnd('canvas rendering'); // eslint-disable-line no-console
}
 
fireEvent(series, 'renderedCanvas');
 
// Do not use chart.hideLoading, as it runs JS animation and will be blocked by buildKDTree.
// CSS animation looks good, but then it must be deleted in timeout. If we add the module to core,
// change hideLoading so we can skip this block.
if (loadingShown) {
extend(loadingDiv.style, {
transition: 'opacity 250ms',
opacity: 0
});
chart.loadingShown = false;
destroyLoadingDiv = setTimeout(function() {
if (loadingDiv.parentNode) { // In exporting it is falsy
loadingDiv.parentNode.removeChild(loadingDiv);
}
chart.loadingDiv = chart.loadingSpan = null;
}, 250);
}
 
// Pass tests in Pointer.
// Replace this with a single property, and replace when zooming in
// below boostThreshold.
series.directTouch = false;
series.options.stickyTracking = true;
 
delete series.buildKDTree; // Go back to prototype, ready to build
series.buildKDTree();
 
// Don't do async on export, the exportChart, getSVGForExport and getSVG methods are not chained for it.
}, chart.renderer.forExport ? Number.MAX_VALUE : undefined);
}
});
 
wrap(Series.prototype, 'setData', function(proceed) {
if (!this.hasExtremes || !this.hasExtremes(true) || this.type === 'heatmap') {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
wrap(Series.prototype, 'processData', function(proceed) {
if (!this.hasExtremes || !this.hasExtremes(true) || this.type === 'heatmap') {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
seriesTypes.scatter.prototype.cvsMarkerCircle = function(ctx, clientX, plotY, r) {
ctx.moveTo(clientX, plotY);
ctx.arc(clientX, plotY, r, 0, 2 * Math.PI, false);
};
 
// Rect is twice as fast as arc, should be used for small markers
seriesTypes.scatter.prototype.cvsMarkerSquare = function(ctx, clientX, plotY, r) {
ctx.rect(clientX - r, plotY - r, r * 2, r * 2);
};
seriesTypes.scatter.prototype.fill = true;
 
if (seriesTypes.bubble) {
seriesTypes.bubble.prototype.cvsMarkerCircle = function(ctx, clientX, plotY, r, i) {
ctx.moveTo(clientX, plotY);
ctx.arc(clientX, plotY, this.radii && this.radii[i], 0, 2 * Math.PI, false);
};
seriesTypes.bubble.prototype.cvsStrokeBatch = 1;
}
 
extend(seriesTypes.area.prototype, {
cvsDrawPoint: function(ctx, clientX, plotY, yBottom, lastPoint) {
if (lastPoint && clientX !== lastPoint.clientX) {
ctx.moveTo(lastPoint.clientX, lastPoint.yBottom);
ctx.lineTo(lastPoint.clientX, lastPoint.plotY);
ctx.lineTo(clientX, plotY);
ctx.lineTo(clientX, yBottom);
}
},
fill: true,
fillOpacity: true,
sampling: true
});
 
extend(seriesTypes.column.prototype, {
cvsDrawPoint: function(ctx, clientX, plotY, yBottom) {
ctx.rect(clientX - 1, plotY, 1, yBottom - plotY);
},
fill: true,
sampling: true
});
 
H.Chart.prototype.callbacks.push(function(chart) {
function canvasToSVG() {
if (chart.image && chart.canvas) {
chart.image.attr({
href: chart.canvas.toDataURL('image/png')
});
}
}
 
function clear() {
if (chart.image) {
chart.image.attr({
href: ''
});
}
 
if (chart.canvas) {
chart.canvas.getContext('2d').clearRect(
0,
0,
chart.canvas.width,
chart.canvas.height
);
}
}
 
addEvent(chart, 'predraw', clear);
addEvent(chart, 'render', canvasToSVG);
});
};
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/boost.js
@@ -0,0 +1,52 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Boost module
 
(c) 2010-2017 Highsoft AS
Author: Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(r){"object"===typeof module&&module.exports?module.exports=r:r(Highcharts)})(function(r){(function(h){function r(){var a=Array.prototype.slice.call(arguments),c=-Number.MAX_VALUE;B(a,function(a){if("undefined"!==typeof a&&"undefined"!==typeof a.length&&0<a.length)return c=a.length,!0});return c}function z(a){var c=0,d;if(1<a.series.length)for(var f=0;f<a.series.length;f++)d=a.series[f],r(d.processedXData,d.options.data,d.points)>=(d.options.boostThreshold||Number.MAX_VALUE)&&c++;return 5<
c||a.series.length>=E(a.options.boost&&a.options.boost.seriesThreshold,50)}function A(a){return z(a.chart)||r(a.processedXData,a.options.data,a.points)>=(a.options.boostThreshold||Number.MAX_VALUE)}function da(a){function c(b,c){c=a.createShader("vertex"===c?a.VERTEX_SHADER:a.FRAGMENT_SHADER);a.shaderSource(c,b);a.compileShader(c);return a.getShaderParameter(c,a.COMPILE_STATUS)?c:!1}function d(){function d(b){return a.getUniformLocation(l,b)}var e=c("#version 100\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value \x3d aVertexPosition.w;\nfloat zMax \x3d bubbleZMax;\nfloat zMin \x3d bubbleZMin;\nfloat radius \x3d 0.0;\nfloat pos \x3d 0.0;\nfloat zRange \x3d zMax - zMin;\nif (bubbleSizeAbs){\nvalue \x3d value - bubbleZThreshold;\nzMax \x3d max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin \x3d 0.0;\n}\nif (value \x3c zMin){\nradius \x3d bubbleZMin / 2.0 - 1.0;\n} else {\npos \x3d zRange \x3e 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea \x26\x26 pos \x3e 0.0){\npos \x3d sqrt(pos);\n}\nradius \x3d ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord\n){\nfloat sign \x3d 1.0;\nfloat cvsOffset \x3d 0.0;\nif (cvsCoord) {\nsign *\x3d -1.0;\ncvsOffset \x3d len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value){\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold){\nfloat v;\nif (skipTranslation){\nv \x3d value;// + yAxisPos;\n} else {\nv \x3d translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord);// + yAxisPos;\n}\nif (checkTreshold \x3e 0.0 \x26\x26 hasThreshold) {\nv \x3d min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize \x3d bubbleRadius();\n} else {\ngl_PointSize \x3d pSize;\n}\nvColor \x3d aColor;\nif (isInverted) {\ngl_Position \x3d uPMatrix * vec4(xToPixels(aVertexPosition.y) + yAxisPos, yToPixels(aVertexPosition.x, aVertexPosition.z) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position \x3d uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}",
"vertex"),f=c("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col \x3d fillColor;\nif (hasColor) {\ncol \x3d vColor;\n}\nif (isCircle) {\ngl_FragColor \x3d col * texture2D(uSampler, gl_PointCoord.st);\n} else {\ngl_FragColor \x3d col;\n}\n}","fragment");if(!e||!f)return l=!1;l=a.createProgram();a.attachShader(l,e);a.attachShader(l,f);a.linkProgram(l);
a.useProgram(l);a.bindAttribLocation(l,0,"aVertexPosition");h=d("uPMatrix");g=d("pSize");n=d("fillColor");Q=d("isBubble");k=d("bubbleSizeAbs");v=d("bubbleSizeByArea");C=d("uSampler");b=d("skipTranslation");p=d("isCircle");H=d("isInverted");return!0}function f(b,c){b=e[b]=e[b]||a.getUniformLocation(l,b);a.uniform1f(b,c)}var e={},l,h,g,n,Q,k,v,b,p,H,C;a&&d();return{psUniform:function(){return g},pUniform:function(){return h},fillColorUniform:function(){return n},setBubbleUniforms:function(b,c,d){var e=
b.options,l=Number.MAX_VALUE,h=-Number.MAX_VALUE;"bubble"===b.type&&(l=E(e.zMin,Math.min(l,Math.max(c,!1===e.displayNegative?e.zThreshold:-Number.MAX_VALUE))),h=E(e.zMax,Math.max(h,d)),a.uniform1i(Q,1),a.uniform1i(p,1),a.uniform1i(v,"width"!==b.options.sizeBy),a.uniform1i(k,b.options.sizeByAbsoluteValue),f("bubbleZMin",l),f("bubbleZMax",h),f("bubbleZThreshold",b.options.zThreshold),f("bubbleMinSize",b.minPxSize),f("bubbleMaxSize",b.maxPxSize))},bind:function(){a.useProgram(l)},program:function(){return l},
create:d,setUniform:f,setPMatrix:function(b){a.uniformMatrix4fv(h,!1,b)},setColor:function(b){a.uniform4f(n,b[0]/255,b[1]/255,b[2]/255,b[3])},setPointSize:function(b){a.uniform1f(g,b)},setSkipTranslation:function(c){a.uniform1i(b,!0===c?1:0)},setTexture:function(){a.uniform1i(C,0)},setDrawAsCircle:function(b){a.uniform1i(p,b?1:0)},reset:function(){a.uniform1i(Q,0);a.uniform1i(p,0)},setInverted:function(b){a.uniform1i(H,b)},destroy:function(){a&&l&&a.deleteProgram(l)}}}function U(a,c,d){var f=!1,e=
!1,l=d||2,h=!1,g=0,n;return{destroy:function(){f&&a.deleteBuffer(f)},bind:function(){if(!f)return!1;a.vertexAttribPointer(e,l,a.FLOAT,!1,0,0)},data:n,build:function(d,k,g){n=d||[];if(!(n&&0!==n.length||h))return f=!1;l=g||l;f&&a.deleteBuffer(f);f=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,f);a.bufferData(a.ARRAY_BUFFER,h||new Float32Array(n),a.STATIC_DRAW);e=a.getAttribLocation(c.program(),k);a.enableVertexAttribArray(e);return!0},render:function(c,d,e){var b=h?h.length:n.length;if(!f||!b)return!1;
if(!c||c>b||0>c)c=0;if(!d||d>b)d=b;a.drawArrays(a[(e||"points").toUpperCase()],c/l,(d-c)/l);return!0},allocate:function(a){g=-1;h=new Float32Array(4*a)},push:function(a,c,d,b){h&&(h[++g]=a,h[++g]=c,h[++g]=d,h[++g]=b)}}}function ea(a){function c(a){var b,c;return A(a)?(b=!!a.options.stacking,c=a.xData||a.options.xData||a.processedXData,b=(b?a.data:c||a.options.data).length,"treemap"===a.type?b*=12:"heatmap"===a.type?b*=6:V[a.type]&&(b*=2),b):0}function d(){b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT)}
function f(a,b){function c(a){a&&(b.colorData.push(a[0]),b.colorData.push(a[1]),b.colorData.push(a[2]),b.colorData.push(a[3]))}function d(a,b,d,e,f){c(f);q.usePreallocated?v.push(a,b,d?1:0,e||1):(C.push(a),C.push(b),C.push(d?1:0),C.push(e||1))}function e(a,b,e,f,w){c(w);d(a+e,b);c(w);d(a,b);c(w);d(a,b+f);c(w);d(a,b+f);c(w);d(a+e,b+f);c(w);d(a+e,b)}function f(a){q.useGPUTranslations||(b.skipTranslation=!0,a.x=D.toPixels(a.x,!0),a.y=x.toPixels(a.y,!0));d(a.x,a.y,0,2)}var w=a.pointArrayMap&&"low,high"===
a.pointArrayMap.join(","),k=a.chart,m=a.options,l=!!m.stacking,g=m.data,n=a.xAxis.getExtremes(),p=n.min,t=n.max,n=a.yAxis.getExtremes(),u=n.min,z=n.max,n=a.xData||m.xData||a.processedXData,H=a.yData||m.yData||a.processedYData,r=a.zData||m.zData||a.processedZData,x=a.yAxis,D=a.xAxis,A=!n||0===n.length,y=a.points||!1,F=!1,G,L,M,J=l?a.data:n||g,I={x:Number.MIN_VALUE,y:0},E={x:Number.MIN_VALUE,y:0};m.boostData&&0<m.boostData.length||(a.closestPointRangePx=Number.MAX_VALUE,y&&0<y.length?(b.skipTranslation=
!0,b.drawMode="triangles",y[0].node&&y[0].node.levelDynamic&&y.sort(function(a,b){if(a.node){if(a.node.levelDynamic>b.node.levelDynamic)return 1;if(a.node.levelDynamic<b.node.levelDynamic)return-1}return 0}),B(y,function(b){var c=b.plotY,d;"undefined"===typeof c||isNaN(c)||null===b.y||(c=b.shapeArgs,d=b.series.colorAttribs(b),b=d["stroke-width"]||0,L=h.color(d.fill).rgba,L[0]/=255,L[1]/=255,L[2]/=255,"treemap"===a.type&&(b=b||1,M=h.color(d.stroke).rgba,M[0]/=255,M[1]/=255,M[2]/=255,e(c.x,c.y,c.width,
c.height,M),b/=2),"heatmap"===a.type&&k.inverted&&(c.x=D.len-c.x,c.y=x.len-c.y,c.width=-c.width,c.height=-c.height),e(c.x+b,c.y+b,c.width-2*b,c.height-2*b,L))})):(B(J,function(c,e){var f,m,h,g=!1,N=!1,W=!1,n=!1,fa=V[a.type],v=!1,y=!0;if("undefined"===typeof k.index)return!1;A?(f=c[0],m=c[1],J[e+1]&&(N=J[e+1][0]),J[e-1]&&(g=J[e-1][0]),3<=c.length&&(h=c[2],c[2]>b.zMax&&(b.zMax=c[2]),c[2]<b.zMin&&(b.zMin=c[2]))):(f=c,m=H[e],J[e+1]&&(N=J[e+1]),J[e-1]&&(g=J[e-1]),r&&r.length&&(h=r[e],r[e]>b.zMax&&(b.zMax=
r[e]),r[e]<b.zMin&&(b.zMin=r[e])));N&&N>=p&&N<=t&&(W=!0);g&&g>=p&&g<=t&&(n=!0);w?(A&&(m=c.slice(1,3)),m=m[1]):l&&(f=c.x,m=c.stackY);a.requireSorting||(y=m>=u&&m<=z);f>t&&E.x<t&&(E.x=f,E.y=m);f<p&&I.x<p&&(I.x=f,I.y=m);if(0===m||m&&y)if(f>=p&&f<=t&&(v=!0),v||W||n)q.useGPUTranslations||(b.skipTranslation=!0,f=D.toPixels(f,!0),m=x.toPixels(m,!0)),fa&&(G=0,0>m&&(G=m,m=0),q.useGPUTranslations||(G=x.toPixels(G,!0)),d(f,G,0,0,!1)),b.hasMarkers&&!1!==F&&(a.closestPointRangePx=Math.min(a.closestPointRangePx,
Math.abs(f-F))),d(f,m,0,"bubble"===a.type?h||1:2,!1),F=f}),F||(f(I),f(E))))}function e(){t=[];F.data=C=[];x=[]}function l(a){k&&(k.setUniform("xAxisTrans",a.transA),k.setUniform("xAxisMin",a.min),k.setUniform("xAxisMinPad",a.minPixelPadding),k.setUniform("xAxisPointRange",a.pointRange),k.setUniform("xAxisLen",a.len),k.setUniform("xAxisPos",a.pos),k.setUniform("xAxisCVSCoord",!a.horiz))}function g(a){k&&(k.setUniform("yAxisTrans",a.transA),k.setUniform("yAxisMin",a.min),k.setUniform("yAxisMinPad",
a.minPixelPadding),k.setUniform("yAxisPointRange",a.pointRange),k.setUniform("yAxisLen",a.len),k.setUniform("yAxisPos",a.pos),k.setUniform("yAxisCVSCoord",!a.horiz))}function u(a,b){k.setUniform("hasThreshold",a);k.setUniform("translatedThreshold",b)}function n(c){if(c)p=c.chartWidth||800,H=c.chartHeight||400;else return!1;if(!b||!p||!H)return!1;q.timeRendering&&console.time("gl rendering");k.bind();b.viewport(0,0,p,H);k.setPMatrix([2/p,0,0,0,0,-(2/H),0,0,0,0,-2,0,-1,1,-1,1]);1<q.lineWidth&&!h.isMS&&
b.lineWidth(q.lineWidth);v.build(F.data,"aVertexPosition",4);v.bind();r&&(b.bindTexture(b.TEXTURE_2D,D),k.setTexture(D));k.setInverted(c.options.chart?c.options.chart.inverted:!1);B(t,function(a,c){var d=a.series.options,e=d.threshold,f=K(e),e=a.series.yAxis.getThreshold(e),m=E(d.marker?d.marker.enabled:null,a.series.xAxis.isRadial?!0:null,a.series.closestPointRangePx>2*((d.marker?d.marker.radius:10)||10)),w=a.series.fillOpacity?(new X(a.series.color)).setOpacity(E(d.fillOpacity,.85)).get():a.series.color;
v.bind();d.colorByPoint&&(w=a.series.chart.options.colors[c]);w=h.color(w).rgba;q.useAlpha||(w[3]=1);"add"===d.boostBlending?(b.blendFunc(b.SRC_ALPHA,b.ONE),b.blendEquation(b.FUNC_ADD)):"mult"===d.boostBlending?b.blendFunc(b.DST_COLOR,b.ZERO):"darken"===d.boostBlending?(b.blendFunc(b.ONE,b.ONE),b.blendEquation(b.FUNC_MIN)):b.blendFuncSeparate(b.SRC_ALPHA,b.ONE_MINUS_SRC_ALPHA,b.ONE,b.ONE_MINUS_SRC_ALPHA);k.reset();0<a.colorData.length&&(k.setUniform("hasColor",1),c=U(b,k),c.build(a.colorData,"aColor",
4),c.bind());k.setColor(w);l(a.series.xAxis);g(a.series.yAxis);u(f,e);"points"===a.drawMode&&(d.marker&&d.marker.radius?k.setPointSize(2*d.marker.radius):k.setPointSize(1));k.setSkipTranslation(a.skipTranslation);"bubble"===a.series.type&&k.setBubbleUniforms(a.series,a.zMin,a.zMax);k.setDrawAsCircle(ga[a.series.type]&&r||!1);v.render(a.from,a.to,a.drawMode);a.hasMarkers&&m&&(d.marker&&d.marker.radius?k.setPointSize(2*d.marker.radius):k.setPointSize(10),k.setDrawAsCircle(!0),v.render(a.from,a.to,"POINTS"))});
v.destroy();q.timeRendering&&console.timeEnd("gl rendering");e();a&&a()}function z(a){d();if(a.renderer.forExport)return n(a);y?n(a):setTimeout(function(){z(a)},1)}var k=!1,v=!1,b=!1,p=0,H=0,C=!1,x=!1,r=!1,F={},y=!1,t=[],G=R.createElement("canvas"),I=G.getContext("2d"),D,V={column:!0,area:!0},ga={scatter:!0,bubble:!0},q={pointSize:1,lineWidth:3,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1};return F={allocateBufferForSingleSeries:function(a){var b=
0;q.usePreallocated&&(A(a)&&(b=c(a)),v.allocate(b))},pushSeries:function(a){0<t.length&&(t[t.length-1].to=C.length,t[t.length-1].hasMarkers&&(t[t.length-1].markerTo=x.length));q.timeSeriesProcessing&&console.time("building "+a.type+" series");t.push({from:C.length,markerFrom:x.length,colorData:[],series:a,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:a.options.marker?!1!==a.options.marker.enabled:!1,showMarksers:!0,drawMode:{area:"lines",arearange:"lines",areaspline:"line_strip",column:"lines",
line:"line_strip",scatter:"points",heatmap:"triangles",treemap:"triangles",bubble:"points"}[a.type]||"line_strip"});f(a,t[t.length-1]);q.timeSeriesProcessing&&console.timeEnd("building "+a.type+" series")},setSize:function(a,b){if(p!==a||b!==b)p=a,H=b,k.bind(),k.setPMatrix([2/p,0,0,0,0,-(2/H),0,0,0,0,-2,0,-1,1,-1,1])},inited:function(){return y},setThreshold:u,init:function(a,c){var d=0,f=["webgl","experimental-webgl","moz-webgl","webkit-3d"];y=!1;if(!a)return!1;for(q.timeSetup&&console.time("gl setup");d<
f.length&&!(b=a.getContext(f[d]));d++);if(b)c||e();else return!1;b.enable(b.BLEND);b.blendFunc(b.SRC_ALPHA,b.ONE_MINUS_SRC_ALPHA);b.disable(b.DEPTH_TEST);b.depthMask(b.FALSE);k=da(b);v=U(b,k);r=!1;D=b.createTexture();G.width=512;G.height=512;I.fillStyle="#FFF";I.beginPath();I.arc(256,256,256,0,2*Math.PI);I.fill();try{b.bindTexture(b.TEXTURE_2D,D),b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,G),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE),b.texParameteri(b.TEXTURE_2D,
b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR_MIPMAP_LINEAR),b.generateMipmap(b.TEXTURE_2D),b.bindTexture(b.TEXTURE_2D,null),r=!0}catch(ma){}y=!0;q.timeSetup&&console.timeEnd("gl setup");return!0},render:z,settings:q,valid:function(){return!1!==b},clear:d,flush:e,setXAxis:l,setYAxis:g,data:C,gl:function(){return b},allocateBuffer:function(a){var b=0;q.usePreallocated&&(B(a.series,function(a){A(a)&&
(b+=c(a))}),v.allocate(b))},destroy:function(){v.destroy();k.destroy();b&&(D&&b.deleteTexture(D),b.canvas.width=1,b.canvas.height=1)},setOptions:function(a){ha(!0,q,a)}}}function Y(a,c){var d=a.chartWidth,f=a.chartHeight,e=a,l=a.seriesGroup||c.group,e=z(a)?a:c;e.image||(e.canvas=R.createElement("canvas"),e.image=a.renderer.image("",0,0,d,f).add(l),e.boostClipRect=a.renderer.clipRect(a.plotLeft,a.plotTop,a.plotWidth,a.chartHeight),e.image.clip(e.boostClipRect),e instanceof h.Chart&&(e.markerGroup=
e.renderer.g().add(l),e.markerGroup.translate(c.xAxis.pos,c.yAxis.pos)));e.canvas.width=d;e.canvas.height=f;e.image.attr({x:0,y:0,width:d,height:f,style:"pointer-events: none"});e.boostClipRect.attr({x:a.plotLeft,y:a.plotTop,width:a.plotWidth,height:a.chartHeight});e.ogl||(e.ogl=ea(function(){e.image.attr({href:e.canvas.toDataURL("image/png")});e.ogl.destroy();e.ogl=!1}),e.ogl.init(e.canvas),e.ogl.setOptions(a.options.boost||{}),e instanceof h.Chart&&e.ogl.allocateBuffer(a));e.ogl.setSize(d,f);return e.ogl}
function Z(a,c,d){a&&c.image&&c.canvas&&!z(d||c.chart)&&a.render(d||c.chart)}function aa(a,c){a&&c.image&&c.canvas&&!z(c.chart)&&a.allocateBufferForSingleSeries(c)}function O(a,c,d,f,e,h){e=e||0;f=f||5E4;for(var g=e+f,l=!0;l&&e<g&&e<a.length;)l=c(a[e],e),++e;l&&(e<a.length?h?O(a,c,d,f,e,h):P.requestAnimationFrame?P.requestAnimationFrame(function(){O(a,c,d,f,e)}):setTimeout(function(){O(a,c,d,f,e)}):d&&d())}function ia(a){if(!A(this))return a.call(this);if(a=Y(this.chart,this))aa(a,this),a.pushSeries(this);
Z(a,this)}var P=h.win,R=P.document,ja=function(){},X=h.Color,x=h.Series,g=h.seriesTypes,B=h.each,ba=h.extend,ca=h.addEvent,ka=h.fireEvent,la=h.grep,K=h.isNumber,ha=h.merge,E=h.pick,u=h.wrap,S=h.getOptions().plotOptions,T;X.prototype.names={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",
chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",
deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",
lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",
mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",
powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",
yellow:"#ffff00",yellowgreen:"#9acd32"};x.prototype.getPoint=function(a){var c=a,d=this.xData||this.options.xData||this.processedXData||!1;!a||a instanceof this.pointClass||(c=(new this.pointClass).init(this,this.options.data[a.i],d?d[a.i]:void 0),c.category=c.x,c.dist=a.dist,c.distX=a.distX,c.plotX=a.plotX,c.plotY=a.plotY,c.index=a.i);return c};u(x.prototype,"searchPoint",function(a){return this.getPoint(a.apply(this,[].slice.call(arguments,1)))});u(x.prototype,"destroy",function(a){var c=this,d=
c.chart;d.markerGroup===c.markerGroup&&(c.markerGroup=null);d.hoverPoints&&(d.hoverPoints=la(d.hoverPoints,function(a){return a.series===c}));d.hoverPoint&&d.hoverPoint.series===c&&(d.hoverPoint=null);a.call(this)});u(x.prototype,"getExtremes",function(a){if(!A(this)||!this.hasExtremes||!this.hasExtremes())return a.apply(this,Array.prototype.slice.call(arguments,1))});B("area arearange column line scatter heatmap bubble treemap heatmap".split(" "),function(a){S[a]&&(S[a].boostThreshold=5E3,S[a].boostData=
[])});B(["translate","generatePoints","drawTracker","drawPoints","render"],function(a){function c(c){var d=this.options.stacking&&("translate"===a||"generatePoints"===a);if(!A(this)||d||"heatmap"===this.type||"treemap"===this.type)"render"===a&&this.image&&!z(this.chart)&&(this.image.attr({href:""}),this.animate=null),c.call(this);else if(this[a+"Canvas"])this[a+"Canvas"]()}u(x.prototype,a,c);"translate"===a&&(g.column&&u(g.column.prototype,a,c),g.arearange&&u(g.arearange.prototype,a,c),g.treemap&&
u(g.treemap.prototype,a,c),g.heatmap&&u(g.heatmap.prototype,a,c))});(function(){var a=0,c,d=["webgl","experimental-webgl","moz-webgl","webkit-3d"],f=!1;if("undefined"!==typeof P.WebGLRenderingContext)for(c=R.createElement("canvas");a<d.length;a++)try{if(f=c.getContext(d[a]),"undefined"!==typeof f&&null!==f)return!0}catch(e){}return!1})()?(u(x.prototype,"processData",function(a){A(this)&&"heatmap"!==this.type&&"treemap"!==this.type||a.apply(this,Array.prototype.slice.call(arguments,1));this.hasExtremes&&
this.hasExtremes(!0)||a.apply(this,Array.prototype.slice.call(arguments,1))}),h.extend(x.prototype,{pointRange:0,directTouch:!1,allowDG:!1,hasExtremes:function(a){var c=this.options,d=this.xAxis&&this.xAxis.options,f=this.yAxis&&this.yAxis.options;return c.data.length>(c.boostThreshold||Number.MAX_VALUE)&&K(f.min)&&K(f.max)&&(!a||K(d.min)&&K(d.max))},destroyGraphics:function(){var a=this,c=this.points,d,f;if(c)for(f=0;f<c.length;f+=1)(d=c[f])&&d.graphic&&(d.graphic=d.graphic.destroy());B(["graph",
"area","tracker"],function(c){a[c]&&(a[c]=a[c].destroy())})},renderCanvas:function(){var a=this,c=a.options||{},d=!1,f=a.chart,e=this.xAxis,h=this.yAxis,g=c.xData||a.processedXData,r=c.yData||a.processedYData,n=c.data,d=e.getExtremes(),x=d.min,k=d.max,d=h.getExtremes(),v=d.min,b=d.max,p={},u,C=!!a.sampling,A,E=!1!==c.enableMouseTracking,F=h.getThreshold(c.threshold),y=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),t=!!c.stacking,G=a.cropStart||0,I=a.requireSorting,D=!g,B,K,q,w,m=function(a,
b,c){T=a+","+b;E&&!p[T]&&(p[T]=!0,f.inverted&&(a=e.len-a,b=h.len-b),A.push({clientX:a,plotX:a,plotY:b,i:G+c}))},d=Y(f,a);this.visible?((this.points||this.graph)&&this.destroyGraphics(),z(f)?this.markerGroup=f.markerGroup:this.markerGroup=a.plotGroup("markerGroup","markers",!0,1,f.seriesGroup),A=this.points=[],a.buildKDTree=ja,d&&(aa(d,this),d.pushSeries(a),Z(d,this,f)),O(t?a.data:g||n,function(a,c){var d,g,l,n="undefined"===typeof f.index,p=!0;if(!n&&(D?(d=a[0],g=a[1]):(d=a,g=r[c]),y?(D&&(g=a.slice(1,
3)),l=g[0],g=g[1]):t&&(d=a.x,g=a.stackY,l=g-a.y),I||(p=g>=v&&g<=b),null!==g&&d>=x&&d<=k&&p))if(a=Math.ceil(e.toPixels(d,!0)),C){if(void 0===q||a===u){y||(l=g);if(void 0===w||g>K)K=g,w=c;if(void 0===q||l<B)B=l,q=c}a!==u&&(void 0!==q&&(g=h.toPixels(K,!0),F=h.toPixels(B,!0),m(a,g,w),F!==g&&m(a,F,q)),q=w=void 0,u=a)}else g=Math.ceil(h.toPixels(g,!0)),m(a,g,c);return!n},function(){ka(a,"renderedCanvas");a.directTouch=!1;a.options.stickyTracking=!0;delete a.buildKDTree;a.buildKDTree()},f.renderer.forExport?
Number.MAX_VALUE:void 0)):!z(f)&&d&&(d.clear(),this.image.attr({href:""}))}}),B(["heatmap","treemap"],function(a){g[a]&&(u(g[a].prototype,"drawPoints",ia),g[a].prototype.directTouch=!1)}),g.bubble&&(delete g.bubble.prototype.buildKDTree,g.bubble.prototype.directTouch=!1,u(g.bubble.prototype,"markerAttribs",function(a){return A(this)?!1:a.apply(this,[].slice.call(arguments,1))})),g.scatter.prototype.fill=!0,ba(g.area.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),ba(g.column.prototype,{fill:!0,sampling:!0}),
u(x.prototype,"setVisible",function(a,c){a.call(this,c,!1);!1===this.visible&&this.ogl&&this.canvas&&this.image?(this.ogl.clear(),this.image.attr({href:""})):this.chart.redraw()}),h.Chart.prototype.callbacks.push(function(a){ca(a,"predraw",function(){!z(a)&&a.didBoost&&(a.didBoost=!1,a.image&&a.image.attr({href:""}));a.canvas&&a.ogl&&z(a)&&(a.didBoost=!0,a.ogl.allocateBuffer(a));a.markerGroup&&a.xAxis&&0<a.xAxis.length&&a.yAxis&&0<a.yAxis.length&&a.markerGroup.translate(a.xAxis[0].pos,a.yAxis[0].pos)});
ca(a,"render",function(){a.ogl&&z(a)&&a.ogl.render(a)})})):"undefined"!==typeof h.initCanvasBoost?h.initCanvasBoost():h.error(26)})(r)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/boost.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":52,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","patientMax","args","Array","prototype","slice","call","arguments","r","Number","MAX_VALUE","each","t","length","isChartSeriesBoosting","chart","sboostCount","series","i","processedXData","options","data","points","boostThreshold","pick","boost","seriesThreshold","isSeriesBoosting","GLShader","gl","stringToProgram","str","type","shader","createShader","VERTEX_SHADER","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","uloc","n","getUniformLocation","shaderProgram","v","vertShade","f","fragShade","createProgram","attachShader","linkProgram","useProgram","bindAttribLocation","pUniform","psUniform","fillColorUniform","isBubbleUniform","bubbleSizeAbsUniform","bubbleSizeAreaUniform","uSamplerUniform","skipTranslationUniform","isCircleUniform","isInverted","setUniform","name","val","u","uLocations","uniform1f","setBubbleUniforms","zCalcMin","zCalcMax","seriesOptions","zMin","zMax","Math","min","max","displayNegative","zThreshold","uniform1i","sizeBy","sizeByAbsoluteValue","minPxSize","maxPxSize","bind","program","getProgram","create","setPMatrix","m","uniformMatrix4fv","setColor","color","uniform4f","setPointSize","p","setSkipTranslation","flag","setTexture","setDrawAsCircle","reset","setInverted","destroy","deleteProgram","GLVertexBuffer","dataComponents","buffer","vertAttribute","components","preAllocated","iterator","deleteBuffer","vertexAttribPointer","FLOAT","build","dataIn","attrib","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","getAttribLocation","enableVertexAttribArray","render","from","to","drawMode","drawArrays","toUpperCase","allocate","size","push","x","y","a","b","GLRenderer","postRenderCallback","seriesPointCount","isStacked","xData","s","stacking","asBar","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","pushSeriesData","inst","pushColor","colorData","vertice","checkTreshold","pointSize","settings","usePreallocated","vbuffer","pushRect","w","h","pushSupplementPoint","point","useGPUTranslations","skipTranslation","xAxis","toPixels","yAxis","isRange","pointArrayMap","join","rawData","xExtremes","getExtremes","xMin","xMax","yExtremes","yMin","yMax","yData","processedYData","zData","processedZData","useRaw","lastX","minVal","scolor","sdata","closestLeft","MIN_VALUE","closestRight","boostData","closestPointRangePx","node","levelDynamic","sort","plotY","pointAttr","isNaN","shapeArgs","colorAttribs","swidth","fill","rgba","stroke","width","height","inverted","len","d","z","px","nx","nextInside","prevInside","drawAsBar","isXInside","isYInside","index","stackY","requireSorting","pcolor","hasMarkers","abs","flush","markerData","setXAxis","axis","transA","minPixelPadding","pointRange","pos","horiz","setYAxis","setThreshold","has","translation","chartWidth","chartHeight","timeRendering","console","time","viewport","lineWidth","isMS","textureIsReady","bindTexture","TEXTURE_2D","circleTextureHandle","si","threshold","hasThreshold","isNumber","translatedThreshold","getThreshold","yBottom","showMarkers","marker","enabled","isRadial","radius","fillColor","fillOpacity","setOpacity","Color","get","colorByPoint","colors","useAlpha","boostBlending","blendFunc","SRC_ALPHA","ONE","blendEquation","FUNC_ADD","DST_COLOR","ZERO","FUNC_MIN","blendFuncSeparate","ONE_MINUS_SRC_ALPHA","cbuffer","asCircle","timeEnd","renderWhenReady","renderer","forExport","isInited","setTimeout","circleTexture","doc","createElement","circleCtx","getContext","timeSeriesProcessing","timeSetup","allocateBufferForSingleSeries","pushSeries","markerTo","markerFrom","showMarksers","setSize","inited","init","canvas","noFlush","contexts","enable","BLEND","disable","DEPTH_TEST","depthMask","FALSE","createTexture","fillStyle","beginPath","arc","PI","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_LINEAR","generateMipmap","e","valid","getGL","allocateBuffer","deleteTexture","setOptions","merge","createAndAttachRenderer","target","targetGroup","seriesGroup","group","image","add","boostClipRect","clipRect","plotLeft","plotTop","plotWidth","clip","Chart","markerGroup","g","translate","attr","style","ogl","href","toDataURL","renderIfNotSeriesBoosting","allocateIfNotSeriesBoosting","eachAsync","arr","fn","finalFunc","chunkSize","noTimeout","CHUNK_SIZE","proceed","win","requestAnimationFrame","pointDrawHandler","document","noop","Series","seriesTypes","extend","addEvent","fireEvent","grep","wrap","plotOptions","getOptions","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","getPoint","Series.prototype.getPoint","boostPoint","pointClass","undefined","category","dist","distX","plotX","apply","hoverPoints","hoverPoint","hasExtremes","method","branch","letItPass","animate","column","arearange","treemap","heatmap","hasWebGLSupport","context","WebGLRenderingContext","directTouch","allowDG","checkX","destroyGraphics","graphic","prop","renderCanvas","pointTaken","lastClientX","sampling","enableMouseTracking","cropStart","maxVal","minI","maxI","addKDPoint","clientX","visible","graph","plotGroup","buildKDTree","processPoint","low","chartDestroyed","ceil","doneProcessing","stickyTracking","bubble","scatter","area","vis","redraw","callbacks","preRender","didBoost","canvasToSVG","initCanvasBoost","error"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/boost.src.js
@@ -0,0 +1,2735 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Boost module
*
* (c) 2010-2017 Highsoft AS
* Author: Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* License: www.highcharts.com/license
* Author: Christer Vasseng, Torstein Honsi
*
* This is an experimental Highcharts module that draws long data series on a canvas
* in order to increase performance of the initial load time and tooltip responsiveness.
*
* Compatible with WebGL compatible browsers (not IE < 11).
*
* Development plan
* - Column range.
* - Check how it works with Highstock and data grouping. Currently it only works when navigator.adaptToUpdatedData
* is false. It is also recommended to set scrollbar.liveRedraw to false.
* - Check inverted charts.
* - Chart callback should be async after last series is drawn. (But not necessarily, we don't do
that with initial series animation).
*
* If this module is taken in as part of the core
* - All the loading logic should be merged with core. Update styles in the core.
* - Most of the method wraps should probably be added directly in parent methods.
*
* Notes for boost mode
* - Area lines are not drawn
* - Lines are not drawn on scatter charts
* - Zones and negativeColor don't work
* - Dash styles are not rendered on lines.
* - Columns are always one pixel wide. Don't set the threshold too low.
* - Disable animations
* - Marker shapes are not supported: markers will always be circles
*
* Optimizing tips for users
* - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes.
* - Set enableMouseTracking to false on the series to improve total rendering time.
* - The default threshold is set based on one series. If you have multiple, dense series, the combined
* number of points drawn gets higher, and you may want to set the threshold lower in order to
* use optimizations.
* - If drawing large scatter charts, it's beneficial to set the marker radius to a value
* less than 1. This is to add additional spacing to make the chart more readable.
* - If the value increments on both the X and Y axis aren't small, consider setting
* useGPUTranslations to true on the boost settings object. If you do this and
* the increments are small (e.g. datetime axis with small time increments)
* it may cause rendering issues due to floating point rounding errors,
* so your millage may vary.
*
* Settings
* There are two ways of setting the boost threshold:
* - Per. series: boost based on number of points in individual series
* - Per. chart: boost based on the number of series
*
* To set the series boost threshold, set seriesBoostThreshold on the chart object.
* To set the series-specific threshold, set boostThreshold on the series object.
*
* In addition, the following can be set in the boost object:
* {
* //Wether or not to use alpha blending
* useAlpha: boolean - default: true
* //Set to true to perform translations on the GPU.
* //Much faster, but may cause rendering issues
* //when using values far from 0 due to floating point
* //rounding issues
* useGPUTranslations: boolean - default: false
* //Use pre-allocated buffers, much faster,
* //but may cause rendering issues with some data sets
* usePreallocated: boolean - default: false
* //Output rendering time in console
* timeRendering: boolean - default: false
* //Output processing time in console
* timeSeriesProcessing: boolean - default: false
* //Output setup time in console
* timeSetup: boolean - default: false
* }
*/
 
/**
* Set the series threshold for when the boost should kick in globally.
*
* Setting to e.g. 20 will cause the whole chart to enter boost mode
* if there are 20 or more series active. When the chart is in boost mode,
* every series in it will be rendered to a common canvas. This offers
* a significant speed improvment in charts with a very high
* amount of series.
*
* Note: only available when including the boost module.
*
* @default null
* @apioption boost.seriesThreshold
*/
 
/**
* Set the point threshold for when a series should enter boost mode.
*
* Setting it to e.g. 2000 will cause the series to enter boost mode
* when there are 2000 or more points in the series.
*
* Note: only available when including the boost module.
*
* @default 5000
* @apioption series.boostThreshold
*/
 
/* global Float32Array */
 
 
var win = H.win,
doc = win.document,
noop = function() {},
Color = H.Color,
Series = H.Series,
seriesTypes = H.seriesTypes,
each = H.each,
extend = H.extend,
addEvent = H.addEvent,
fireEvent = H.fireEvent,
grep = H.grep,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
wrap = H.wrap,
plotOptions = H.getOptions().plotOptions,
CHUNK_SIZE = 50000,
index;
 
// Register color names since GL can't render those directly.
Color.prototype.names = {
aliceblue: '#f0f8ff',
antiquewhite: '#faebd7',
aqua: '#00ffff',
aquamarine: '#7fffd4',
azure: '#f0ffff',
beige: '#f5f5dc',
bisque: '#ffe4c4',
black: '#000000',
blanchedalmond: '#ffebcd',
blue: '#0000ff',
blueviolet: '#8a2be2',
brown: '#a52a2a',
burlywood: '#deb887',
cadetblue: '#5f9ea0',
chartreuse: '#7fff00',
chocolate: '#d2691e',
coral: '#ff7f50',
cornflowerblue: '#6495ed',
cornsilk: '#fff8dc',
crimson: '#dc143c',
cyan: '#00ffff',
darkblue: '#00008b',
darkcyan: '#008b8b',
darkgoldenrod: '#b8860b',
darkgray: '#a9a9a9',
darkgreen: '#006400',
darkkhaki: '#bdb76b',
darkmagenta: '#8b008b',
darkolivegreen: '#556b2f',
darkorange: '#ff8c00',
darkorchid: '#9932cc',
darkred: '#8b0000',
darksalmon: '#e9967a',
darkseagreen: '#8fbc8f',
darkslateblue: '#483d8b',
darkslategray: '#2f4f4f',
darkturquoise: '#00ced1',
darkviolet: '#9400d3',
deeppink: '#ff1493',
deepskyblue: '#00bfff',
dimgray: '#696969',
dodgerblue: '#1e90ff',
feldspar: '#d19275',
firebrick: '#b22222',
floralwhite: '#fffaf0',
forestgreen: '#228b22',
fuchsia: '#ff00ff',
gainsboro: '#dcdcdc',
ghostwhite: '#f8f8ff',
gold: '#ffd700',
goldenrod: '#daa520',
gray: '#808080',
green: '#008000',
greenyellow: '#adff2f',
honeydew: '#f0fff0',
hotpink: '#ff69b4',
indianred: '#cd5c5c',
indigo: '#4b0082',
ivory: '#fffff0',
khaki: '#f0e68c',
lavender: '#e6e6fa',
lavenderblush: '#fff0f5',
lawngreen: '#7cfc00',
lemonchiffon: '#fffacd',
lightblue: '#add8e6',
lightcoral: '#f08080',
lightcyan: '#e0ffff',
lightgoldenrodyellow: '#fafad2',
lightgrey: '#d3d3d3',
lightgreen: '#90ee90',
lightpink: '#ffb6c1',
lightsalmon: '#ffa07a',
lightseagreen: '#20b2aa',
lightskyblue: '#87cefa',
lightslateblue: '#8470ff',
lightslategray: '#778899',
lightsteelblue: '#b0c4de',
lightyellow: '#ffffe0',
lime: '#00ff00',
limegreen: '#32cd32',
linen: '#faf0e6',
magenta: '#ff00ff',
maroon: '#800000',
mediumaquamarine: '#66cdaa',
mediumblue: '#0000cd',
mediumorchid: '#ba55d3',
mediumpurple: '#9370d8',
mediumseagreen: '#3cb371',
mediumslateblue: '#7b68ee',
mediumspringgreen: '#00fa9a',
mediumturquoise: '#48d1cc',
mediumvioletred: '#c71585',
midnightblue: '#191970',
mintcream: '#f5fffa',
mistyrose: '#ffe4e1',
moccasin: '#ffe4b5',
navajowhite: '#ffdead',
navy: '#000080',
oldlace: '#fdf5e6',
olive: '#808000',
olivedrab: '#6b8e23',
orange: '#ffa500',
orangered: '#ff4500',
orchid: '#da70d6',
palegoldenrod: '#eee8aa',
palegreen: '#98fb98',
paleturquoise: '#afeeee',
palevioletred: '#d87093',
papayawhip: '#ffefd5',
peachpuff: '#ffdab9',
peru: '#cd853f',
pink: '#ffc0cb',
plum: '#dda0dd',
powderblue: '#b0e0e6',
purple: '#800080',
red: '#ff0000',
rosybrown: '#bc8f8f',
royalblue: '#4169e1',
saddlebrown: '#8b4513',
salmon: '#fa8072',
sandybrown: '#f4a460',
seagreen: '#2e8b57',
seashell: '#fff5ee',
sienna: '#a0522d',
silver: '#c0c0c0',
skyblue: '#87ceeb',
slateblue: '#6a5acd',
slategray: '#708090',
snow: '#fffafa',
springgreen: '#00ff7f',
steelblue: '#4682b4',
tan: '#d2b48c',
teal: '#008080',
thistle: '#d8bfd8',
tomato: '#ff6347',
turquoise: '#40e0d0',
violet: '#ee82ee',
violetred: '#d02090',
wheat: '#f5deb3',
white: '#ffffff',
whitesmoke: '#f5f5f5',
yellow: '#ffff00',
yellowgreen: '#9acd32'
};
 
/**
* Tolerant max() funciton
* @return {number} max value
*/
function patientMax() {
var args = Array.prototype.slice.call(arguments),
r = -Number.MAX_VALUE;
 
each(args, function(t) {
if (typeof t !== 'undefined' && typeof t.length !== 'undefined') {
//r = r < t.length ? t.length : r;
if (t.length > 0) {
r = t.length;
return true;
}
}
});
 
return r;
}
 
/*
* Returns true if we should force chart series boosting
*/
function shouldForceChartSeriesBoosting(chart) {
// If there are more than five series currently boosting,
// we should boost the whole chart to avoid running out of webgl contexts.
var sboostCount = 0,
series;
 
if (chart.series.length > 1) {
for (var i = 0; i < chart.series.length; i++) {
series = chart.series[i];
if (patientMax(
series.processedXData,
series.options.data,
series.points
) >= (series.options.boostThreshold || Number.MAX_VALUE)) {
sboostCount++;
}
}
}
 
return sboostCount > 5;
}
 
/*
* Returns true if the chart is in series boost mode
* @param chart {Highchart.Chart} - the chart to check
* @returns {Boolean} - true if the chart is in series boost mode
*/
function isChartSeriesBoosting(chart) {
return shouldForceChartSeriesBoosting(chart) || chart.series.length >= pick(
chart.options.boost && chart.options.boost.seriesThreshold,
50
);
}
 
/*
* Returns true if the series is in boost mode
* @param series {Highchart.Series} - the series to check
* @returns {boolean} - true if the series is in boost mode
*/
function isSeriesBoosting(series) {
return isChartSeriesBoosting(series.chart) ||
patientMax(
series.processedXData,
series.options.data,
series.points
) >= (series.options.boostThreshold || Number.MAX_VALUE);
}
 
////////////////////////////////////////////////////////////////////////////////
// START OF WEBGL ABSTRACTIONS
 
/*
* A static shader mimicing axis translation functions found in parts/Axis
* @param gl {WebGLContext} - the context in which the shader is active
*/
function GLShader(gl) {
var vertShade = [
/* eslint-disable */
'#version 100',
'precision highp float;',
 
'attribute vec4 aVertexPosition;',
'attribute vec4 aColor;',
 
'varying highp vec2 position;',
'varying highp vec4 vColor;',
 
'uniform mat4 uPMatrix;',
'uniform float pSize;',
 
'uniform float translatedThreshold;',
'uniform bool hasThreshold;',
 
'uniform bool skipTranslation;',
 
'uniform float xAxisTrans;',
'uniform float xAxisMin;',
'uniform float xAxisMinPad;',
'uniform float xAxisPointRange;',
'uniform float xAxisLen;',
'uniform bool xAxisPostTranslate;',
'uniform float xAxisOrdinalSlope;',
'uniform float xAxisOrdinalOffset;',
'uniform float xAxisPos;',
'uniform bool xAxisCVSCoord;',
 
'uniform float yAxisTrans;',
'uniform float yAxisMin;',
'uniform float yAxisMinPad;',
'uniform float yAxisPointRange;',
'uniform float yAxisLen;',
'uniform bool yAxisPostTranslate;',
'uniform float yAxisOrdinalSlope;',
'uniform float yAxisOrdinalOffset;',
'uniform float yAxisPos;',
'uniform bool yAxisCVSCoord;',
 
'uniform bool isBubble;',
'uniform bool bubbleSizeByArea;',
'uniform float bubbleZMin;',
'uniform float bubbleZMax;',
'uniform float bubbleZThreshold;',
'uniform float bubbleMinSize;',
'uniform float bubbleMaxSize;',
'uniform bool bubbleSizeAbs;',
'uniform bool isInverted;',
 
'float bubbleRadius(){',
'float value = aVertexPosition.w;',
'float zMax = bubbleZMax;',
'float zMin = bubbleZMin;',
'float radius = 0.0;',
'float pos = 0.0;',
'float zRange = zMax - zMin;',
 
'if (bubbleSizeAbs){',
'value = value - bubbleZThreshold;',
'zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);',
'zMin = 0.0;',
'}',
 
'if (value < zMin){',
'radius = bubbleZMin / 2.0 - 1.0;',
'} else {',
'pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;',
'if (bubbleSizeByArea && pos > 0.0){',
'pos = sqrt(pos);',
'}',
'radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;',
'}',
 
'return radius * 2.0;',
'}',
 
'float translate(float val,',
'float pointPlacement,',
'float localA,',
'float localMin,',
'float minPixelPadding,',
'float pointRange,',
'float len,',
'bool cvsCoord',
'){',
 
'float sign = 1.0;',
'float cvsOffset = 0.0;',
 
'if (cvsCoord) {',
'sign *= -1.0;',
'cvsOffset = len;',
'}',
 
'return sign * (val - localMin) * localA + cvsOffset + ',
'(sign * minPixelPadding);', //' + localA * pointPlacement * pointRange;',
'}',
 
'float xToPixels(float value){',
'if (skipTranslation){',
'return value;// + xAxisPos;',
'}',
 
'return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord);// + xAxisPos;',
'}',
 
'float yToPixels(float value, float checkTreshold){',
'float v;',
'if (skipTranslation){',
'v = value;// + yAxisPos;',
'} else {',
'v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord);// + yAxisPos;',
'}',
'if (checkTreshold > 0.0 && hasThreshold) {',
'v = min(v, translatedThreshold);',
'}',
'return v;',
'}',
 
'void main(void) {',
'if (isBubble){',
'gl_PointSize = bubbleRadius();',
'} else {',
'gl_PointSize = pSize;',
'}',
//'gl_PointSize = 10.0;',
'vColor = aColor;',
 
'if (isInverted) {',
'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.y) + yAxisPos, yToPixels(aVertexPosition.x, aVertexPosition.z) + xAxisPos, 0.0, 1.0);',
'} else {',
'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);',
'}',
//'gl_Position = uPMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 0.0, 1.0);',
'}'
/* eslint-enable */
].join('\n'),
//Fragment shader source
fragShade = [
/* eslint-disable */
'precision highp float;',
'uniform vec4 fillColor;',
'varying highp vec2 position;',
'varying highp vec4 vColor;',
'uniform sampler2D uSampler;',
'uniform bool isCircle;',
'uniform bool hasColor;',
 
// 'vec4 toColor(float value, vec2 point) {',
// 'return vec4(0.0, 0.0, 0.0, 0.0);',
// '}',
 
'void main(void) {',
'vec4 col = fillColor;',
 
'if (hasColor) {',
'col = vColor;',
'}',
 
'if (isCircle) {',
'gl_FragColor = col * texture2D(uSampler, gl_PointCoord.st);',
'} else {',
'gl_FragColor = col;',
'}',
'}'
/* eslint-enable */
].join('\n'),
uLocations = {},
//The shader program
shaderProgram,
//Uniform handle to the perspective matrix
pUniform,
//Uniform for point size
psUniform,
//Uniform for fill color
fillColorUniform,
//Uniform for isBubble
isBubbleUniform,
//Uniform for bubble abs sizing
bubbleSizeAbsUniform,
bubbleSizeAreaUniform,
//Skip translation uniform
skipTranslationUniform,
//Set to 1 if circle
isCircleUniform,
//Uniform for invertion
isInverted,
//Texture uniform
uSamplerUniform;
 
/* String to shader program
* @param {string} str - the program source
* @param {string} type - the program type: either `vertex` or `fragment`
* @returns {bool|shader}
*/
function stringToProgram(str, type) {
var t = type === 'vertex' ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER,
shader = gl.createShader(t);
 
gl.shaderSource(shader, str);
gl.compileShader(shader);
 
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
//console.error('shader error:', gl.getShaderInfoLog(shader));
return false;
}
return shader;
}
 
/*
* Create the shader.
* Loads the shader program statically defined above
*/
function createShader() {
var v = stringToProgram(vertShade, 'vertex'),
f = stringToProgram(fragShade, 'fragment');
 
if (!v || !f) {
shaderProgram = false;
//console.error('error creating shader program');
return false;
}
 
function uloc(n) {
return gl.getUniformLocation(shaderProgram, n);
}
 
shaderProgram = gl.createProgram();
 
gl.attachShader(shaderProgram, v);
gl.attachShader(shaderProgram, f);
gl.linkProgram(shaderProgram);
 
gl.useProgram(shaderProgram);
 
gl.bindAttribLocation(shaderProgram, 0, 'aVertexPosition');
 
pUniform = uloc('uPMatrix');
psUniform = uloc('pSize');
fillColorUniform = uloc('fillColor');
isBubbleUniform = uloc('isBubble');
bubbleSizeAbsUniform = uloc('bubbleSizeAbs');
bubbleSizeAreaUniform = uloc('bubbleSizeByArea');
uSamplerUniform = uloc('uSampler');
skipTranslationUniform = uloc('skipTranslation');
isCircleUniform = uloc('isCircle');
isInverted = uloc('isInverted');
 
return true;
}
 
/*
* Destroy the shader
*/
function destroy() {
if (gl && shaderProgram) {
gl.deleteProgram(shaderProgram);
}
}
 
/*
* Bind the shader.
* This makes the shader the active one until another one is bound,
* or until 0 is bound.
*/
function bind() {
gl.useProgram(shaderProgram);
}
 
/*
* Set a uniform value.
* This uses a hash map to cache uniform locations.
* @param name {string} - the name of the uniform to set
* @param val {float} - the value to set
*/
function setUniform(name, val) {
var u = uLocations[name] = uLocations[name] ||
gl.getUniformLocation(shaderProgram, name);
gl.uniform1f(u, val);
}
 
/*
* Set the active texture
* @param texture - the texture
*/
function setTexture() {
gl.uniform1i(uSamplerUniform, 0);
}
 
/*
* Set if inversion state
* @flag is the state
*/
function setInverted(flag) {
gl.uniform1i(isInverted, flag);
}
 
////////////////////////////////////////////////////////////////////////////
 
/*
* Enable/disable circle drawing
*/
function setDrawAsCircle(flag) {
gl.uniform1i(isCircleUniform, flag ? 1 : 0);
}
 
/*
* Flush
*/
function reset() {
gl.uniform1i(isBubbleUniform, 0);
gl.uniform1i(isCircleUniform, 0);
}
 
/*
* Set bubble uniforms
* @param series {Highcharts.Series} - the series to use
*/
function setBubbleUniforms(series, zCalcMin, zCalcMax) {
var seriesOptions = series.options,
zMin = Number.MAX_VALUE,
zMax = -Number.MAX_VALUE;
 
if (series.type === 'bubble') {
zMin = pick(seriesOptions.zMin, Math.min(
zMin,
Math.max(
zCalcMin,
seriesOptions.displayNegative === false ?
seriesOptions.zThreshold : -Number.MAX_VALUE
)
));
 
zMax = pick(seriesOptions.zMax, Math.max(zMax, zCalcMax));
 
gl.uniform1i(isBubbleUniform, 1);
gl.uniform1i(isCircleUniform, 1);
gl.uniform1i(bubbleSizeAreaUniform, series.options.sizeBy !== 'width');
gl.uniform1i(bubbleSizeAbsUniform, series.options.sizeByAbsoluteValue);
 
setUniform('bubbleZMin', zMin);
setUniform('bubbleZMax', zMax);
setUniform('bubbleZThreshold', series.options.zThreshold);
setUniform('bubbleMinSize', series.minPxSize);
setUniform('bubbleMaxSize', series.maxPxSize);
}
}
 
/*
* Set the Color uniform.
* @param color {Array<float>} - an array with RGBA values
*/
function setColor(color) {
gl.uniform4f(
fillColorUniform,
color[0] / 255.0,
color[1] / 255.0,
color[2] / 255.0,
color[3]
);
}
 
/*
* Set skip translation
*/
function setSkipTranslation(flag) {
gl.uniform1i(skipTranslationUniform, flag === true ? 1 : 0);
}
 
/*
* Set the perspective matrix
* @param m {Matrix4x4} - the matrix
*/
function setPMatrix(m) {
gl.uniformMatrix4fv(pUniform, false, m);
}
 
/*
* Set the point size.
* @param p {float} - point size
*/
function setPointSize(p) {
gl.uniform1f(psUniform, p);
}
 
/*
* Get the shader program handle
* @returns {GLInt} - the handle for the program
*/
function getProgram() {
return shaderProgram;
}
 
if (gl) {
createShader();
}
 
return {
psUniform: function() {
return psUniform;
},
pUniform: function() {
return pUniform;
},
fillColorUniform: function() {
return fillColorUniform;
},
setBubbleUniforms: setBubbleUniforms,
bind: bind,
program: getProgram,
create: createShader,
setUniform: setUniform,
setPMatrix: setPMatrix,
setColor: setColor,
setPointSize: setPointSize,
setSkipTranslation: setSkipTranslation,
setTexture: setTexture,
setDrawAsCircle: setDrawAsCircle,
reset: reset,
setInverted: setInverted,
destroy: destroy
};
}
 
/*
* Vertex Buffer abstraction
* A vertex buffer is a set of vertices which are passed to the GPU
* in a single call.
* @param gl {WebGLContext} - the context in which to create the buffer
* @param shader {GLShader} - the shader to use
*/
function GLVertexBuffer(gl, shader, dataComponents /*, type */ ) {
var buffer = false,
vertAttribute = false,
components = dataComponents || 2,
preAllocated = false,
iterator = 0,
data;
 
// type = type || 'float';
 
function destroy() {
if (buffer) {
gl.deleteBuffer(buffer);
}
}
 
/*
* Build the buffer
* @param dataIn {Array<float>} - a 0 padded array of indices
* @param attrib {String} - the name of the Attribute to bind the buffer to
* @param dataComponents {Integer} - the number of components per. indice
*/
function build(dataIn, attrib, dataComponents) {
 
data = dataIn || [];
 
if ((!data || data.length === 0) && !preAllocated) {
//console.error('trying to render empty vbuffer');
buffer = false;
return false;
}
 
components = dataComponents || components;
 
if (buffer) {
gl.deleteBuffer(buffer);
}
 
buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(
gl.ARRAY_BUFFER,
preAllocated || new Float32Array(data),
gl.STATIC_DRAW
);
 
// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
vertAttribute = gl.getAttribLocation(shader.program(), attrib);
gl.enableVertexAttribArray(vertAttribute);
 
return true;
}
 
/*
* Bind the buffer
*/
function bind() {
if (!buffer) {
return false;
}
 
// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
//gl.enableVertexAttribArray(vertAttribute);
//gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.vertexAttribPointer(vertAttribute, components, gl.FLOAT, false, 0, 0);
//gl.enableVertexAttribArray(vertAttribute);
}
 
/*
* Render the buffer
* @param from {Integer} - the start indice
* @param to {Integer} - the end indice
* @param drawMode {String} - the draw mode
*/
function render(from, to, drawMode) {
var length = preAllocated ? preAllocated.length : data.length;
 
if (!buffer) {
return false;
}
 
if (!length) {
return false;
}
 
if (!from || from > length || from < 0) {
from = 0;
}
 
if (!to || to > length) {
to = length;
}
 
drawMode = drawMode || 'points';
 
gl.drawArrays(
gl[drawMode.toUpperCase()],
from / components,
(to - from) / components
);
 
return true;
}
 
function push(x, y, a, b) {
if (preAllocated) { // && iterator <= preAllocated.length - 4) {
preAllocated[++iterator] = x;
preAllocated[++iterator] = y;
preAllocated[++iterator] = a;
preAllocated[++iterator] = b;
}
}
 
/*
* Note about pre-allocated buffers:
* - This is slower for charts with many series
*/
function allocate(size) {
size *= 4;
iterator = -1;
 
//if (!preAllocated || (preAllocated && preAllocated.length !== size)) {
preAllocated = new Float32Array(size);
//}
}
 
////////////////////////////////////////////////////////////////////////////
return {
destroy: destroy,
bind: bind,
data: data,
build: build,
render: render,
allocate: allocate,
push: push
};
}
 
/* Main renderer. Used to render series.
* Notes to self:
* - May be able to build a point map by rendering to a separate canvas
* and encoding values in the color data.
* - Need to figure out a way to transform the data quicker
*/
function GLRenderer(postRenderCallback) {
var // Shader
shader = false,
// Vertex buffers - keyed on shader attribute name
vbuffer = false,
// Opengl context
gl = false,
// Width of our viewport in pixels
width = 0,
// Height of our viewport in pixels
height = 0,
// The data to render - array of coordinates
data = false,
// The marker data
markerData = false,
// Is the texture ready?
textureIsReady = false,
// Exports
exports = {},
// Is it inited?
isInited = false,
// The series stack
series = [],
// Texture for circles
circleTexture = doc.createElement('canvas'),
// Context for circle texture
circleCtx = circleTexture.getContext('2d'),
// Handle for the circle texture
circleTextureHandle,
// Things to draw as "rectangles" (i.e lines)
asBar = {
'column': true,
'area': true
},
asCircle = {
'scatter': true,
'bubble': true
},
//Render settings
settings = {
pointSize: 1,
lineWidth: 3,
fillColor: '#AA00AA',
useAlpha: true,
usePreallocated: false,
useGPUTranslations: false,
timeRendering: false,
timeSeriesProcessing: false,
timeSetup: false
};
 
////////////////////////////////////////////////////////////////////////////
 
function setOptions(options) {
merge(true, settings, options);
}
 
function seriesPointCount(series) {
var isStacked,
xData,
s;
 
if (isSeriesBoosting(series)) {
isStacked = !!series.options.stacking;
xData = series.xData || series.options.xData || series.processedXData;
s = (isStacked ? series.data : (xData || series.options.data)).length;
 
if (series.type === 'treemap') {
s *= 12;
} else if (series.type === 'heatmap') {
s *= 6;
} else if (asBar[series.type]) {
s *= 2;
}
 
return s;
}
 
return 0;
}
 
/* Allocate a float buffer to fit all series */
function allocateBuffer(chart) {
var s = 0;
 
if (!settings.usePreallocated) {
return;
}
 
each(chart.series, function(series) {
if (isSeriesBoosting(series)) {
s += seriesPointCount(series);
}
});
 
vbuffer.allocate(s);
}
 
function allocateBufferForSingleSeries(series) {
var s = 0;
 
if (!settings.usePreallocated) {
return;
}
 
if (isSeriesBoosting(series)) {
s = seriesPointCount(series);
}
 
vbuffer.allocate(s);
}
 
/*
* Returns an orthographic perspective matrix
* @param {number} width - the width of the viewport in pixels
* @param {number} height - the height of the viewport in pixels
*/
function orthoMatrix(width, height) {
var near = 0,
far = 1;
 
return [
2 / width, 0, 0, 0,
0, -(2 / height), 0, 0,
0, 0, -2 / (far - near), 0, -1, 1, -(far + near) / (far - near), 1
];
}
 
/*
* Clear the depth and color buffer
*/
function clear() {
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
}
 
/*
* Get the WebGL context
* @returns {WebGLContext} - the context
*/
function getGL() {
return gl;
}
 
/*
* Push data for a single series
* This calculates additional vertices and transforms the data to be
* aligned correctly in memory
*/
function pushSeriesData(series, inst) {
var isRange = series.pointArrayMap &&
series.pointArrayMap.join(',') === 'low,high',
chart = series.chart,
options = series.options,
isStacked = !!options.stacking,
rawData = options.data,
xExtremes = series.xAxis.getExtremes(),
xMin = xExtremes.min,
xMax = xExtremes.max,
yExtremes = series.yAxis.getExtremes(),
yMin = yExtremes.min,
yMax = yExtremes.max,
xData = series.xData || options.xData || series.processedXData,
yData = series.yData || options.yData || series.processedYData,
zData = series.zData || options.zData || series.processedZData,
yAxis = series.yAxis,
xAxis = series.xAxis,
useRaw = !xData || xData.length === 0,
// threshold = options.threshold,
// yBottom = chart.yAxis[0].getThreshold(threshold),
// hasThreshold = isNumber(threshold),
// colorByPoint = series.options.colorByPoint,
// This is required for color by point, so make sure this is
// uncommented if enabling that
// colorIndex = 0,
// Required for color axis support
// caxis,
// connectNulls = options.connectNulls,
// For some reason eslint doesn't pick up that this is actually used
maxVal, //eslint-disable-line no-unused-vars
points = series.points || false,
lastX = false,
minVal,
color,
scolor,
sdata = isStacked ? series.data : (xData || rawData),
closestLeft = {
x: Number.MIN_VALUE,
y: 0
},
closestRight = {
x: Number.MIN_VALUE,
y: 0
};
 
if (options.boostData && options.boostData.length > 0) {
return;
}
 
series.closestPointRangePx = Number.MAX_VALUE;
 
// Push color to color buffer - need to do this per. vertex
function pushColor(color) {
if (color) {
inst.colorData.push(color[0]);
inst.colorData.push(color[1]);
inst.colorData.push(color[2]);
inst.colorData.push(color[3]);
}
}
 
//Push a vertice to the data buffer
function vertice(x, y, checkTreshold, pointSize, color) {
pushColor(color);
if (settings.usePreallocated) {
vbuffer.push(x, y, checkTreshold ? 1 : 0, pointSize || 1);
} else {
data.push(x);
data.push(y);
data.push(checkTreshold ? 1 : 0);
data.push(pointSize || 1);
}
}
 
// Push a rectangle to the data buffer
function pushRect(x, y, w, h, color) {
pushColor(color);
vertice(x + w, y);
pushColor(color);
vertice(x, y);
pushColor(color);
vertice(x, y + h);
 
pushColor(color);
vertice(x, y + h);
pushColor(color);
vertice(x + w, y + h);
pushColor(color);
vertice(x + w, y);
}
 
// Special case for point shapes
if (points && points.length > 0) {
 
// If we're doing points, we assume that the points are already
// translated, so we skip the shader translation.
inst.skipTranslation = true;
// Force triangle draw mode
inst.drawMode = 'triangles';
 
// We don't have a z component in the shader, so we need to sort.
if (points[0].node && points[0].node.levelDynamic) {
points.sort(function(a, b) {
if (a.node) {
if (a.node.levelDynamic > b.node.levelDynamic) {
return 1;
} else if (a.node.levelDynamic < b.node.levelDynamic) {
return -1;
}
}
return 0;
});
}
 
each(points, function(point) {
var plotY = point.plotY,
shapeArgs,
swidth,
pointAttr;
 
if (typeof plotY !== 'undefined' && !isNaN(plotY) && point.y !== null) {
shapeArgs = point.shapeArgs;
 
 
pointAttr = point.series.colorAttribs(point);
 
swidth = pointAttr['stroke-width'] || 0;
 
// Handle point colors
color = H.color(pointAttr.fill).rgba;
color[0] /= 255.0;
color[1] /= 255.0;
color[2] /= 255.0;
 
// So there are two ways of doing this. Either we can
// create a rectangle of two triangles, or we can do a
// point and use point size. Latter is faster, but
// only supports squares. So we're doing triangles.
// We could also use one color per. vertice to get
// better color interpolation.
 
// If there's stroking, we do an additional rect
//if (pointAttr.stroke !== 'none' && swidth && swidth > 0) {
if (series.type === 'treemap') {
swidth = swidth || 1;
scolor = H.color(pointAttr.stroke).rgba;
 
scolor[0] /= 255.0;
scolor[1] /= 255.0;
scolor[2] /= 255.0;
 
pushRect(
shapeArgs.x,
shapeArgs.y,
shapeArgs.width,
shapeArgs.height,
scolor
);
 
swidth /= 2;
}
// } else {
// swidth = 0;
// }
 
// Fixes issues with inverted heatmaps (see #6981)
// The root cause is that the coordinate system is flipped.
// In other words, instead of [0,0] being top-left, it's bottom-right.
// This causes a vertical and horizontal flip in the resulting image,
// making it rotated 180 degrees.
if (series.type === 'heatmap' && chart.inverted) {
shapeArgs.x = xAxis.len - shapeArgs.x;
shapeArgs.y = yAxis.len - shapeArgs.y;
shapeArgs.width = -shapeArgs.width;
shapeArgs.height = -shapeArgs.height;
}
 
pushRect(
shapeArgs.x + swidth,
shapeArgs.y + swidth,
shapeArgs.width - (swidth * 2),
shapeArgs.height - (swidth * 2),
color
);
}
});
 
return;
}
 
// Extract color axis
// each(chart.axes || [], function (a) {
// if (H.ColorAxis && a instanceof H.ColorAxis) {
// caxis = a;
// }
// });
 
each(sdata, function(d, i) {
var x,
y,
z,
px = false,
nx = false,
// This is in fact used.
low, //eslint-disable-line no-unused-vars
chartDestroyed = typeof chart.index === 'undefined',
nextInside = false,
prevInside = false,
pcolor = false,
drawAsBar = asBar[series.type],
isXInside = false,
isYInside = true;
 
if (chartDestroyed) {
return false;
}
 
// Uncomment this to enable color by point.
// This currently left disabled as the charts look really ugly
// when enabled and there's a lot of points.
// Leaving in for the future (tm).
// if (colorByPoint) {
// colorIndex = ++colorIndex % series.chart.options.colors.length;
// pcolor = toRGBAFast(series.chart.options.colors[colorIndex]);
// pcolor[0] /= 255.0;
// pcolor[1] /= 255.0;
// pcolor[2] /= 255.0;
// }
 
if (useRaw) {
x = d[0];
y = d[1];
 
if (sdata[i + 1]) {
nx = sdata[i + 1][0];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1][0];
}
 
if (d.length >= 3) {
z = d[2];
 
if (d[2] > inst.zMax) {
inst.zMax = d[2];
}
 
if (d[2] < inst.zMin) {
inst.zMin = d[2];
}
}
 
} else {
x = d;
y = yData[i];
 
if (sdata[i + 1]) {
nx = sdata[i + 1];
}
 
if (sdata[i - 1]) {
px = sdata[i - 1];
}
 
if (zData && zData.length) {
z = zData[i];
 
if (zData[i] > inst.zMax) {
inst.zMax = zData[i];
}
 
if (zData[i] < inst.zMin) {
inst.zMin = zData[i];
}
}
}
 
if (nx && nx >= xMin && nx <= xMax) {
nextInside = true;
}
 
if (px && px >= xMin && px <= xMax) {
prevInside = true;
}
 
if (isRange) {
if (useRaw) {
y = d.slice(1, 3);
}
 
low = y[0];
y = y[1];
 
} else if (isStacked) {
x = d.x;
y = d.stackY;
low = y - d.y;
}
 
if (!series.requireSorting) {
isYInside = y >= yMin && y <= yMax;
}
 
if (x > xMax && closestRight.x < xMax) {
closestRight.x = x;
closestRight.y = y;
}
 
if (x < xMin && closestLeft.x < xMin) {
closestLeft.x = x;
closestLeft.y = y;
}
 
if (y !== 0 && (!y || !isYInside)) {
return;
}
 
if (x >= xMin && x <= xMax) {
isXInside = true;
}
 
if (!isXInside && !nextInside && !prevInside) {
return;
}
 
// Skip translations - temporary floating point fix
if (!settings.useGPUTranslations) {
inst.skipTranslation = true;
x = xAxis.toPixels(x, true);
y = yAxis.toPixels(y, true);
}
 
if (drawAsBar) {
 
maxVal = y;
minVal = 0;
 
if (y < 0) {
minVal = y;
y = 0;
}
 
if (!settings.useGPUTranslations) {
minVal = yAxis.toPixels(minVal, true);
}
 
// Need to add an extra point here
vertice(x, minVal, 0, 0, pcolor);
}
 
// No markers on out of bounds things.
// Out of bound things are shown if and only if the next
// or previous point is inside the rect.
if (inst.hasMarkers) { // && isXInside) {
// x = H.correctFloat(
// Math.min(Math.max(-1e5, xAxis.translate(
// x,
// 0,
// 0,
// 0,
// 1,
// 0.5,
// false
// )), 1e5)
// );
 
if (lastX !== false) {
series.closestPointRangePx = Math.min(
series.closestPointRangePx,
Math.abs(x - lastX)
);
}
}
 
vertice(
x,
y,
0,
series.type === 'bubble' ? (z || 1) : 2,
pcolor
);
 
// Uncomment this to support color axis.
// if (caxis) {
// color = H.color(caxis.toColor(y)).rgba;
 
// inst.colorData.push(color[0] / 255.0);
// inst.colorData.push(color[1] / 255.0);
// inst.colorData.push(color[2] / 255.0);
// inst.colorData.push(color[3]);
// }
 
lastX = x;
 
//return true;
});
 
function pushSupplementPoint(point) {
if (!settings.useGPUTranslations) {
inst.skipTranslation = true;
point.x = xAxis.toPixels(point.x, true);
point.y = yAxis.toPixels(point.y, true);
}
 
// We should only do this for lines, and we should ignore markers
// since there's no point here that would have a marker.
 
vertice(
point.x,
point.y,
0,
2
);
}
 
if (!lastX) {
// There are no points within the selected range
pushSupplementPoint(closestLeft);
pushSupplementPoint(closestRight);
}
}
 
/*
* Push a series to the renderer
* If we render the series immediatly, we don't have to loop later
* @param s {Highchart.Series} - the series to push
*/
function pushSeries(s) {
if (series.length > 0) {
series[series.length - 1].to = data.length;
if (series[series.length - 1].hasMarkers) {
series[series.length - 1].markerTo = markerData.length;
}
}
 
if (settings.timeSeriesProcessing) {
console.time('building ' + s.type + ' series'); //eslint-disable-line no-console
}
 
series.push({
from: data.length,
markerFrom: markerData.length,
// Push RGBA values to this array to use per. point coloring.
// It should be 0-padded, so each component should be pushed in
// succession.
colorData: [],
series: s,
zMin: Number.MAX_VALUE,
zMax: -Number.MAX_VALUE,
hasMarkers: s.options.marker ? s.options.marker.enabled !== false : false,
showMarksers: true,
drawMode: ({
'area': 'lines',
'arearange': 'lines',
'areaspline': 'line_strip',
'column': 'lines',
'line': 'line_strip',
'scatter': 'points',
'heatmap': 'triangles',
'treemap': 'triangles',
'bubble': 'points'
})[s.type] || 'line_strip'
});
 
// Add the series data to our buffer(s)
pushSeriesData(s, series[series.length - 1]);
 
if (settings.timeSeriesProcessing) {
console.timeEnd('building ' + s.type + ' series'); //eslint-disable-line no-console
}
}
 
/*
* Flush the renderer.
* This removes pushed series and vertices.
* Should be called after clearing and before rendering
*/
function flush() {
series = [];
exports.data = data = [];
markerData = [];
}
 
/*
* Pass x-axis to shader
* @param axis {Highcharts.Axis} - the x-axis
*/
function setXAxis(axis) {
if (!shader) {
return;
}
 
shader.setUniform('xAxisTrans', axis.transA);
shader.setUniform('xAxisMin', axis.min);
shader.setUniform('xAxisMinPad', axis.minPixelPadding);
shader.setUniform('xAxisPointRange', axis.pointRange);
shader.setUniform('xAxisLen', axis.len);
shader.setUniform('xAxisPos', axis.pos);
shader.setUniform('xAxisCVSCoord', !axis.horiz);
}
 
/*
* Pass y-axis to shader
* @param axis {Highcharts.Axis} - the y-axis
*/
function setYAxis(axis) {
if (!shader) {
return;
}
 
shader.setUniform('yAxisTrans', axis.transA);
shader.setUniform('yAxisMin', axis.min);
shader.setUniform('yAxisMinPad', axis.minPixelPadding);
shader.setUniform('yAxisPointRange', axis.pointRange);
shader.setUniform('yAxisLen', axis.len);
shader.setUniform('yAxisPos', axis.pos);
shader.setUniform('yAxisCVSCoord', !axis.horiz);
}
 
/*
* Set the translation threshold
* @param has {boolean} - has threshold flag
* @param translation {Float} - the threshold
*/
function setThreshold(has, translation) {
shader.setUniform('hasThreshold', has);
shader.setUniform('translatedThreshold', translation);
}
 
/*
* Render the data
* This renders all pushed series.
*/
function render(chart) {
 
if (chart) {
if (!chart.chartHeight || !chart.chartWidth) {
//chart.setChartSize();
}
 
width = chart.chartWidth || 800;
height = chart.chartHeight || 400;
} else {
return false;
}
 
if (!gl || !width || !height) {
return false;
}
 
if (settings.timeRendering) {
console.time('gl rendering'); //eslint-disable-line no-console
}
 
shader.bind();
 
gl.viewport(0, 0, width, height);
shader.setPMatrix(orthoMatrix(width, height));
 
if (settings.lineWidth > 1 && !H.isMS) {
gl.lineWidth(settings.lineWidth);
}
 
vbuffer.build(exports.data, 'aVertexPosition', 4);
vbuffer.bind();
 
if (textureIsReady) {
gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle);
shader.setTexture(circleTextureHandle);
}
 
shader.setInverted(chart.options.chart ? chart.options.chart.inverted : false);
 
// Render the series
each(series, function(s, si) {
var options = s.series.options,
threshold = options.threshold,
hasThreshold = isNumber(threshold),
yBottom = s.series.yAxis.getThreshold(threshold),
translatedThreshold = yBottom,
cbuffer,
showMarkers = pick(
options.marker ? options.marker.enabled : null,
s.series.xAxis.isRadial ? true : null,
s.series.closestPointRangePx >
2 * ((
options.marker ?
options.marker.radius :
10
) || 10)
),
fillColor = s.series.fillOpacity ?
new Color(s.series.color).setOpacity(
pick(options.fillOpacity, 0.85)
).get() :
s.series.color,
color;
 
vbuffer.bind();
 
if (options.colorByPoint) {
fillColor = s.series.chart.options.colors[si];
}
 
color = H.color(fillColor).rgba;
 
if (!settings.useAlpha) {
color[3] = 1.0;
}
 
//Blending
if (options.boostBlending === 'add') {
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
gl.blendEquation(gl.FUNC_ADD);
 
} else if (options.boostBlending === 'mult') {
gl.blendFunc(gl.DST_COLOR, gl.ZERO);
 
} else if (options.boostBlending === 'darken') {
gl.blendFunc(gl.ONE, gl.ONE);
gl.blendEquation(gl.FUNC_MIN);
 
} else {
//gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);//, gl.ONE, gl.ZERO);
//gl.blendEquation(gl.FUNC_ADD);
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
}
 
shader.reset();
 
// If there are entries in the colorData buffer, build and bind it.
if (s.colorData.length > 0) {
shader.setUniform('hasColor', 1.0);
cbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
cbuffer.build(s.colorData, 'aColor', 4);
cbuffer.bind();
}
 
// Set series specific uniforms
shader.setColor(color);
setXAxis(s.series.xAxis);
setYAxis(s.series.yAxis);
setThreshold(hasThreshold, translatedThreshold);
 
if (s.drawMode === 'points') {
if (options.marker && options.marker.radius) {
shader.setPointSize(options.marker.radius * 2.0);
} else {
shader.setPointSize(1);
}
}
 
// If set to true, the toPixels translations in the shader
// is skipped, i.e it's assumed that the value is a pixel coord.
shader.setSkipTranslation(s.skipTranslation);
 
if (s.series.type === 'bubble') {
shader.setBubbleUniforms(s.series, s.zMin, s.zMax);
}
 
shader.setDrawAsCircle((asCircle[s.series.type] && textureIsReady) || false);
 
// Do the actual rendering
vbuffer.render(s.from, s.to, s.drawMode);
 
if (s.hasMarkers && showMarkers) {
if (options.marker && options.marker.radius) {
shader.setPointSize(options.marker.radius * 2.0);
} else {
shader.setPointSize(10);
}
shader.setDrawAsCircle(true);
vbuffer.render(s.from, s.to, 'POINTS');
}
});
 
vbuffer.destroy();
 
if (settings.timeRendering) {
console.timeEnd('gl rendering'); //eslint-disable-line no-console
}
 
flush();
 
if (postRenderCallback) {
postRenderCallback();
}
}
 
/*
* Render the data when ready
*/
function renderWhenReady(chart) {
clear();
 
if (chart.renderer.forExport) {
return render(chart);
}
 
if (isInited) {
render(chart);
} else {
setTimeout(function() {
renderWhenReady(chart);
}, 1);
}
}
 
/*
* Set the viewport size in pixels
* Creates an orthographic perspective matrix and applies it.
* @param w {Integer} - the width of the viewport
* @param h {Integer} - the height of the viewport
*/
function setSize(w, h) {
// Skip if there's no change
if (width === w && h === h) {
return;
}
 
width = w;
height = h;
 
shader.bind();
shader.setPMatrix(orthoMatrix(width, height));
}
 
/*
* Init OpenGL
* @param canvas {HTMLCanvas} - the canvas to render to
*/
function init(canvas, noFlush) {
var i = 0,
contexts = [
'webgl',
'experimental-webgl',
'moz-webgl',
'webkit-3d'
];
 
isInited = false;
 
if (!canvas) {
return false;
}
 
if (settings.timeSetup) {
console.time('gl setup'); //eslint-disable-line no-console
}
 
for (; i < contexts.length; i++) {
gl = canvas.getContext(contexts[i]);
if (gl) {
break;
}
}
 
if (gl) {
if (!noFlush) {
flush();
}
} else {
return false;
}
 
gl.enable(gl.BLEND);
// gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
gl.disable(gl.DEPTH_TEST);
gl.depthMask(gl.FALSE);
 
shader = GLShader(gl); //eslint-disable-line new-cap
vbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
 
textureIsReady = false;
 
// Set up the circle texture used for bubbles
circleTextureHandle = gl.createTexture();
 
// Draw the circle
circleTexture.width = 512;
circleTexture.height = 512;
 
circleCtx.fillStyle = '#FFF';
circleCtx.beginPath();
circleCtx.arc(256, 256, 256, 0, 2 * Math.PI);
circleCtx.fill();
 
try {
 
gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle);
 
gl.texImage2D(
gl.TEXTURE_2D,
0,
gl.RGBA,
gl.RGBA,
gl.UNSIGNED_BYTE,
circleTexture
);
 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
 
gl.generateMipmap(gl.TEXTURE_2D);
 
gl.bindTexture(gl.TEXTURE_2D, null);
 
textureIsReady = true;
} catch (e) {}
 
isInited = true;
 
if (settings.timeSetup) {
console.timeEnd('gl setup'); //eslint-disable-line no-console
}
 
return true;
}
 
/*
* Check if we have a valid OGL context
* @returns {Boolean} - true if the context is valid
*/
function valid() {
return gl !== false;
}
 
/*
* Check if the renderer has been initialized
* @returns {Boolean} - true if it has, false if not
*/
function inited() {
return isInited;
}
 
function destroy() {
vbuffer.destroy();
shader.destroy();
if (gl) {
if (circleTextureHandle) {
gl.deleteTexture(circleTextureHandle);
}
gl.canvas.width = 1;
gl.canvas.height = 1;
}
}
 
////////////////////////////////////////////////////////////////////////////
exports = {
allocateBufferForSingleSeries: allocateBufferForSingleSeries,
pushSeries: pushSeries,
setSize: setSize,
inited: inited,
setThreshold: setThreshold,
init: init,
render: renderWhenReady,
settings: settings,
valid: valid,
clear: clear,
flush: flush,
setXAxis: setXAxis,
setYAxis: setYAxis,
data: data,
gl: getGL,
allocateBuffer: allocateBuffer,
destroy: destroy,
setOptions: setOptions
};
 
return exports;
}
 
// END OF WEBGL ABSTRACTIONS
////////////////////////////////////////////////////////////////////////////////
 
/*
* Create a canvas + context and attach it to the target
* @param target {Highcharts.Chart|Highcharts.Series} - the canvas target
* @param chart {Highcharts.Chart} - the chart
*/
function createAndAttachRenderer(chart, series) {
var width = chart.chartWidth,
height = chart.chartHeight,
target = chart,
targetGroup = chart.seriesGroup || series.group;
 
if (isChartSeriesBoosting(chart)) {
target = chart;
} else {
target = series;
}
 
if (target.ogl) {
//target.ogl.destroy();
}
 
if (!target.image) {
target.canvas = doc.createElement('canvas');
 
target.image = chart.renderer.image(
'',
0,
0,
width,
height
).add(targetGroup);
 
target.boostClipRect = chart.renderer.clipRect(
chart.plotLeft,
chart.plotTop,
chart.plotWidth,
chart.chartHeight
);
 
target.image.clip(target.boostClipRect);
 
if (target instanceof H.Chart) {
target.markerGroup = target.renderer.g().add(targetGroup);
 
target.markerGroup.translate(series.xAxis.pos, series.yAxis.pos);
}
}
 
target.canvas.width = width;
target.canvas.height = height;
 
target.image.attr({
x: 0,
y: 0,
width: width,
height: height,
style: 'pointer-events: none'
});
 
target.boostClipRect.attr({
x: chart.plotLeft,
y: chart.plotTop,
width: chart.plotWidth,
height: chart.chartHeight
});
 
if (!target.ogl) {
 
 
target.ogl = GLRenderer(function() { // eslint-disable-line new-cap
target.image.attr({
href: target.canvas.toDataURL('image/png')
});
 
// Destroy gl context when we're done with it
target.ogl.destroy();
target.ogl = false;
}); //eslint-disable-line new-cap
 
target.ogl.init(target.canvas);
// target.ogl.clear();
target.ogl.setOptions(chart.options.boost || {});
 
if (target instanceof H.Chart) {
target.ogl.allocateBuffer(chart);
}
}
 
target.ogl.setSize(width, height);
 
return target.ogl;
}
 
/*
* Performs the actual render if the renderer is
* attached to the series.
* @param renderer {OGLRenderer} - the renderer
* @param series {Highcharts.Series} - the series
*/
function renderIfNotSeriesBoosting(renderer, series, chart) {
if (renderer &&
series.image &&
series.canvas &&
!isChartSeriesBoosting(chart || series.chart)
) {
renderer.render(chart || series.chart);
}
}
 
function allocateIfNotSeriesBoosting(renderer, series) {
if (renderer &&
series.image &&
series.canvas &&
!isChartSeriesBoosting(series.chart)
) {
renderer.allocateBufferForSingleSeries(series);
}
}
 
/*
* An "async" foreach loop.
* Uses a setTimeout to keep the loop from blocking the UI thread
* @param arr {Array} - the array to loop through
* @param fn {Function} - the callback to call for each item
* @param finalFunc {Function} - the callback to call when done
* @param chunkSize {Number} - the number of iterations per. timeout
* @param i {Number} - the current index
* @param noTimeout {Boolean} - set to true to skip timeouts
*/
function eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) {
i = i || 0;
chunkSize = chunkSize || CHUNK_SIZE;
 
var threshold = i + chunkSize,
proceed = true;
 
while (proceed && i < threshold && i < arr.length) {
proceed = fn(arr[i], i);
++i;
}
if (proceed) {
if (i < arr.length) {
 
if (noTimeout) {
eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
} else if (win.requestAnimationFrame) {
//If available, do requestAnimationFrame - shaves off a few ms
win.requestAnimationFrame(function() {
eachAsync(arr, fn, finalFunc, chunkSize, i);
});
} else {
setTimeout(function() {
eachAsync(arr, fn, finalFunc, chunkSize, i);
});
}
 
} else if (finalFunc) {
finalFunc();
}
}
}
 
////////////////////////////////////////////////////////////////////////////////
// Following is the parts of the boost that's common between OGL/Legacy
 
/**
* Return a full Point object based on the index.
* The boost module uses stripped point objects for performance reasons.
* @param {Number} boostPoint A stripped-down point object
* @returns {Object} A Point object as per http://api.highcharts.com/highcharts#Point
*/
Series.prototype.getPoint = function(boostPoint) {
var point = boostPoint,
xData = this.xData || this.options.xData || this.processedXData || false;
 
if (boostPoint && !(boostPoint instanceof this.pointClass)) {
point = (new this.pointClass()).init( // eslint-disable-line new-cap
this,
this.options.data[boostPoint.i],
xData ? xData[boostPoint.i] : undefined
);
 
point.category = point.x;
 
point.dist = boostPoint.dist;
point.distX = boostPoint.distX;
point.plotX = boostPoint.plotX;
point.plotY = boostPoint.plotY;
point.index = boostPoint.i;
}
 
return point;
};
 
/**
* Return a point instance from the k-d-tree
*/
wrap(Series.prototype, 'searchPoint', function(proceed) {
return this.getPoint(
proceed.apply(this, [].slice.call(arguments, 1))
);
});
 
/**
* Extend series.destroy to also remove the fake k-d-tree points (#5137).
* Normally this is handled by Series.destroy that calls Point.destroy,
* but the fake search points are not registered like that.
*/
wrap(Series.prototype, 'destroy', function(proceed) {
var series = this,
chart = series.chart;
 
if (chart.markerGroup === series.markerGroup) {
series.markerGroup = null;
}
 
if (chart.hoverPoints) {
chart.hoverPoints = grep(chart.hoverPoints, function(point) {
return point.series === series;
});
}
 
if (chart.hoverPoint && chart.hoverPoint.series === series) {
chart.hoverPoint = null;
}
 
proceed.call(this);
});
 
/**
* Do not compute extremes when min and max are set.
* If we use this in the core, we can add the hook
* to hasExtremes to the methods directly.
*/
wrap(Series.prototype, 'getExtremes', function(proceed) {
if (!isSeriesBoosting(this) || (!this.hasExtremes || !this.hasExtremes())) {
return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
// Set default options
each([
'area',
'arearange',
'column',
'line',
'scatter',
'heatmap',
'bubble',
'treemap',
'heatmap'
],
function(type) {
if (plotOptions[type]) {
plotOptions[type].boostThreshold = 5000;
plotOptions[type].boostData = [];
}
}
);
 
/**
* Override a bunch of methods the same way. If the number of points is
* below the threshold, run the original method. If not, check for a
* canvas version or do nothing.
*
* Note that we're not overriding any of these for heatmaps.
*/
each([
'translate',
'generatePoints',
'drawTracker',
'drawPoints',
'render'
], function(method) {
function branch(proceed) {
var letItPass = this.options.stacking &&
(method === 'translate' || method === 'generatePoints');
 
if (!isSeriesBoosting(this) ||
letItPass ||
this.type === 'heatmap' ||
this.type === 'treemap'
) {
 
// Clear image
if (method === 'render' && this.image && !isChartSeriesBoosting(this.chart)) {
this.image.attr({
href: ''
});
this.animate = null; // We're zooming in, don't run animation
}
 
proceed.call(this);
 
// If a canvas version of the method exists, like renderCanvas(), run
} else if (this[method + 'Canvas']) {
this[method + 'Canvas']();
}
}
 
wrap(Series.prototype, method, branch);
 
// A special case for some types - their translate method is already wrapped
if (method === 'translate') {
if (seriesTypes.column) {
wrap(seriesTypes.column.prototype, method, branch);
}
 
if (seriesTypes.arearange) {
wrap(seriesTypes.arearange.prototype, method, branch);
}
 
if (seriesTypes.treemap) {
wrap(seriesTypes.treemap.prototype, method, branch);
}
 
if (seriesTypes.heatmap) {
wrap(seriesTypes.heatmap.prototype, method, branch);
}
}
});
 
/*
* Returns true if the current browser supports webgl
*/
function hasWebGLSupport() {
var i = 0,
canvas,
contexts = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'],
context = false;
 
if (typeof win.WebGLRenderingContext !== 'undefined') {
canvas = doc.createElement('canvas');
 
for (; i < contexts.length; i++) {
try {
context = canvas.getContext(contexts[i]);
if (typeof context !== 'undefined' && context !== null) {
return true;
}
} catch (e) {
 
}
}
}
 
return false;
}
 
/* Used for treemap|heatmap.drawPoints */
function pointDrawHandler(proceed) {
if (!isSeriesBoosting(this)) {
return proceed.call(this);
}
 
//Make sure we have a valid OGL context
var renderer = createAndAttachRenderer(this.chart, this);
 
if (renderer) {
allocateIfNotSeriesBoosting(renderer, this);
renderer.pushSeries(this);
}
 
renderIfNotSeriesBoosting(renderer, this);
}
 
////////////////////////////////////////////////////////////////////////////////
// We're wrapped in a closure, so just return if there's no webgl support
 
if (!hasWebGLSupport()) {
if (typeof H.initCanvasBoost !== 'undefined') {
// Fallback to canvas boost
H.initCanvasBoost();
} else {
H.error(26);
}
} else {
 
////////////////////////////////////////////////////////////////////////////
// GL-SPECIFIC WRAPPINGS FOLLOWS
 
/** If the series is a heatmap or treemap, or if the series is not boosting
* do the default behaviour. Otherwise, process if the series has no
* extremes.
*/
wrap(Series.prototype, 'processData', function(proceed) {
// If this is a heatmap, do default behaviour
if (!isSeriesBoosting(this) ||
this.type === 'heatmap' ||
this.type === 'treemap') {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
 
if (!this.hasExtremes || !this.hasExtremes(true)) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
H.extend(Series.prototype, {
pointRange: 0,
directTouch: false,
allowDG: false, // No data grouping, let boost handle large data
hasExtremes: function(checkX) {
var options = this.options,
data = options.data,
xAxis = this.xAxis && this.xAxis.options,
yAxis = this.yAxis && this.yAxis.options;
 
return data.length > (options.boostThreshold || Number.MAX_VALUE) &&
isNumber(yAxis.min) && isNumber(yAxis.max) &&
(!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
},
 
/**
* If implemented in the core, parts of this can probably be
* shared with other similar methods in Highcharts.
*/
destroyGraphics: function() {
var series = this,
points = this.points,
point,
i;
 
if (points) {
for (i = 0; i < points.length; i = i + 1) {
point = points[i];
if (point && point.graphic) {
point.graphic = point.graphic.destroy();
}
}
}
 
each(['graph', 'area', 'tracker'], function(prop) {
if (series[prop]) {
series[prop] = series[prop].destroy();
}
});
},
 
renderCanvas: function() {
var series = this,
options = series.options || {},
renderer = false,
chart = series.chart,
xAxis = this.xAxis,
yAxis = this.yAxis,
//ctx,
//c = 0,
xData = options.xData || series.processedXData,
yData = options.yData || series.processedYData,
 
rawData = options.data,
xExtremes = xAxis.getExtremes(),
xMin = xExtremes.min,
xMax = xExtremes.max,
yExtremes = yAxis.getExtremes(),
yMin = yExtremes.min,
yMax = yExtremes.max,
pointTaken = {},
lastClientX,
sampling = !!series.sampling,
points,
enableMouseTracking = options.enableMouseTracking !== false,
threshold = options.threshold,
yBottom = yAxis.getThreshold(threshold),
isRange = series.pointArrayMap &&
series.pointArrayMap.join(',') === 'low,high',
isStacked = !!options.stacking,
cropStart = series.cropStart || 0,
requireSorting = series.requireSorting,
useRaw = !xData,
minVal,
maxVal,
minI,
maxI,
 
addKDPoint = function(clientX, plotY, i) {
//Shaves off about 60ms compared to repeated concatination
index = clientX + ',' + plotY;
 
// The k-d tree requires series points.
// Reduce the amount of points, since the time to build the
// tree increases exponentially.
if (enableMouseTracking && !pointTaken[index]) {
pointTaken[index] = true;
 
if (chart.inverted) {
clientX = xAxis.len - clientX;
plotY = yAxis.len - plotY;
}
 
points.push({
clientX: clientX,
plotX: clientX,
plotY: plotY,
i: cropStart + i
});
}
};
 
// Get or create the renderer
renderer = createAndAttachRenderer(chart, series);
 
if (!this.visible) {
if (!isChartSeriesBoosting(chart) && renderer) {
renderer.clear();
this.image.attr({
href: ''
});
}
return;
}
 
// If we are zooming out from SVG mode, destroy the graphics
if (this.points || this.graph) {
this.destroyGraphics();
}
 
// If we're rendering per. series we should create the marker groups
// as usual.
if (!isChartSeriesBoosting(chart)) {
this.markerGroup = series.plotGroup(
'markerGroup',
'markers',
true,
1,
chart.seriesGroup
);
} else {
//Use a single group for the markers
this.markerGroup = chart.markerGroup;
}
 
points = this.points = [];
 
// Do not start building while drawing
series.buildKDTree = noop;
 
if (renderer) {
allocateIfNotSeriesBoosting(renderer, this);
renderer.pushSeries(series);
// Perform the actual renderer if we're on series level
renderIfNotSeriesBoosting(renderer, this, chart);
//console.log(series, chart);
}
 
/* This builds the KD-tree */
function processPoint(d, i) {
var x,
y,
clientX,
plotY,
isNull,
low,
chartDestroyed = typeof chart.index === 'undefined',
isYInside = true;
 
if (!chartDestroyed) {
if (useRaw) {
x = d[0];
y = d[1];
} else {
x = d;
y = yData[i];
}
 
// Resolve low and high for range series
if (isRange) {
if (useRaw) {
y = d.slice(1, 3);
}
low = y[0];
y = y[1];
} else if (isStacked) {
x = d.x;
y = d.stackY;
low = y - d.y;
}
 
isNull = y === null;
 
// Optimize for scatter zooming
if (!requireSorting) {
isYInside = y >= yMin && y <= yMax;
}
 
if (!isNull && x >= xMin && x <= xMax && isYInside) {
 
// We use ceil to allow the KD tree to work with sub
// pixels, which can be used in boost to space pixels
clientX = Math.ceil(xAxis.toPixels(x, true));
 
if (sampling) {
if (minI === undefined || clientX === lastClientX) {
if (!isRange) {
low = y;
}
if (maxI === undefined || y > maxVal) {
maxVal = y;
maxI = i;
}
if (minI === undefined || low < minVal) {
minVal = low;
minI = i;
}
 
}
if (clientX !== lastClientX) { // Add points and reset
if (minI !== undefined) { // then maxI is also a number
plotY = yAxis.toPixels(maxVal, true);
yBottom = yAxis.toPixels(minVal, true);
 
addKDPoint(clientX, plotY, maxI);
if (yBottom !== plotY) {
addKDPoint(clientX, yBottom, minI);
}
}
 
minI = maxI = undefined;
lastClientX = clientX;
}
} else {
plotY = Math.ceil(yAxis.toPixels(y, true));
addKDPoint(clientX, plotY, i);
}
}
}
 
return !chartDestroyed;
}
 
function doneProcessing() {
fireEvent(series, 'renderedCanvas');
// Pass tests in Pointer.
// Replace this with a single property, and replace when zooming
// in below boostThreshold.
series.directTouch = false;
series.options.stickyTracking = true;
 
// Go back to prototype, ready to build
delete series.buildKDTree;
series.buildKDTree();
}
 
// Loop over the points to build the k-d tree
eachAsync(
isStacked ? series.data : (xData || rawData),
processPoint,
doneProcessing,
chart.renderer.forExport ? Number.MAX_VALUE : undefined
);
}
});
 
/*
* We need to handle heatmaps separatly, since we can't perform the
* size/color calculations in the shader easily.
*
* This likely needs future optimization.
*
*/
each(['heatmap', 'treemap'],
function(t) {
if (seriesTypes[t]) {
wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler);
seriesTypes[t].prototype.directTouch = false; // Use k-d-tree
}
}
);
 
if (seriesTypes.bubble) {
// By default, the bubble series does not use the KD-tree, so force it
// to.
delete seriesTypes.bubble.prototype.buildKDTree;
seriesTypes.bubble.prototype.directTouch = false;
 
// Needed for markers to work correctly
wrap(
seriesTypes.bubble.prototype,
'markerAttribs',
function(proceed) {
if (isSeriesBoosting(this)) {
return false;
}
return proceed.apply(this, [].slice.call(arguments, 1));
}
);
}
 
seriesTypes.scatter.prototype.fill = true;
 
extend(seriesTypes.area.prototype, {
fill: true,
fillOpacity: true,
sampling: true
});
 
extend(seriesTypes.column.prototype, {
fill: true,
sampling: true
});
 
wrap(Series.prototype, 'setVisible', function(proceed, vis) {
proceed.call(this, vis, false);
if (this.visible === false && this.ogl && this.canvas && this.image) {
this.ogl.clear();
this.image.attr({
href: ''
});
} else {
this.chart.redraw();
}
});
 
/**
* Take care of the canvas blitting
*/
H.Chart.prototype.callbacks.push(function(chart) {
 
/* Convert chart-level canvas to image */
function canvasToSVG() {
if (chart.ogl && isChartSeriesBoosting(chart)) {
chart.ogl.render(chart);
}
}
 
/* Clear chart-level canvas */
function preRender() {
 
if (!isChartSeriesBoosting(chart) && chart.didBoost) {
chart.didBoost = false;
// Clear the canvas
if (chart.image) {
chart.image.attr({
href: ''
});
}
}
 
if (chart.canvas && chart.ogl && isChartSeriesBoosting(chart)) {
chart.didBoost = true;
 
// Allocate
chart.ogl.allocateBuffer(chart);
}
 
//see #6518 + #6739
if (chart.markerGroup && chart.xAxis && chart.xAxis.length > 0 && chart.yAxis && chart.yAxis.length > 0) {
chart.markerGroup.translate(
chart.xAxis[0].pos,
chart.yAxis[0].pos
);
}
 
}
 
addEvent(chart, 'predraw', preRender);
addEvent(chart, 'render', canvasToSVG);
});
} // if hasCanvasSupport
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/broken-axis.js
@@ -0,0 +1,15 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(h){"object"===typeof module&&module.exports?module.exports=h:h(Highcharts)})(function(h){(function(f){function h(){return Array.prototype.slice.call(arguments,1)}function u(c){c.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,r(this.pointArrayMap,["y"]))}var r=f.pick,g=f.wrap,q=f.each,y=f.extend,z=f.isArray,v=f.fireEvent,t=f.Axis,A=f.Series;y(t.prototype,{isInBreak:function(c,e){var b=c.repeat||Infinity,a=c.from,d=c.to-c.from;e=e>=a?(e-a)%b:b-(a-e)%b;return c.inclusive?
e<=d:e<d&&0!==e},isInAnyBreak:function(c,e){var b=this.options.breaks,a=b&&b.length,d,n,w;if(a){for(;a--;)this.isInBreak(b[a],c)&&(d=!0,n||(n=r(b[a].showPoints,this.isXAxis?!1:!0)));w=d&&e?d&&!n:d}return w}});g(t.prototype,"setTickPositions",function(c){c.apply(this,Array.prototype.slice.call(arguments,1));if(this.options.breaks){var e=this.tickPositions,b=this.tickPositions.info,a=[],d;for(d=0;d<e.length;d++)this.isInAnyBreak(e[d])||a.push(e[d]);this.tickPositions=a;this.tickPositions.info=b}});
g(t.prototype,"init",function(c,e,b){var a=this;b.breaks&&b.breaks.length&&(b.ordinal=!1);c.call(this,e,b);c=this.options.breaks;a.isBroken=z(c)&&!!c.length;a.isBroken&&(a.val2lin=function(d){var n=d,b,c;for(c=0;c<a.breakArray.length;c++)if(b=a.breakArray[c],b.to<=d)n-=b.len;else if(b.from>=d)break;else if(a.isInBreak(b,d)){n-=d-b.from;break}return n},a.lin2val=function(d){var b,c;for(c=0;c<a.breakArray.length&&!(b=a.breakArray[c],b.from>=d);c++)b.to<d?d+=b.len:a.isInBreak(b,d)&&(d+=b.len);return d},
a.setExtremes=function(a,b,c,e,f){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(b);)b-=this.closestPointRange;t.prototype.setExtremes.call(this,a,b,c,e,f)},a.setAxisTranslation=function(b){t.prototype.setAxisTranslation.call(this,b);b=a.options.breaks;var c=[],d=[],e=0,f,l,m=a.userMin||a.min,p=a.userMax||a.max,h=r(a.pointRangePadding,0),k,g;q(b,function(b){l=b.repeat||Infinity;a.isInBreak(b,m)&&(m+=b.to%l-m%l);a.isInBreak(b,p)&&(p-=p%l-b.from%l)});q(b,function(a){k=a.from;
for(l=a.repeat||Infinity;k-l>m;)k-=l;for(;k<m;)k+=l;for(g=k;g<p;g+=l)c.push({value:g,move:"in"}),c.push({value:g+(a.to-a.from),move:"out",size:a.breakSize})});c.sort(function(a,b){return a.value===b.value?("in"===a.move?0:1)-("in"===b.move?0:1):a.value-b.value});f=0;k=m;q(c,function(a){f+="in"===a.move?1:-1;1===f&&"in"===a.move&&(k=a.value);0===f&&(d.push({from:k,to:a.value,len:a.value-k-(a.size||0)}),e+=a.value-k-(a.size||0))});a.breakArray=d;a.unitLength=p-m-e+h;v(a,"afterBreaks");a.options.staticScale?
a.transA=a.options.staticScale:a.unitLength&&(a.transA*=(p-a.min+h)/a.unitLength);h&&(a.minPixelPadding=a.transA*a.minPointOffset);a.min=m;a.max=p})});g(A.prototype,"generatePoints",function(c){c.apply(this,h(arguments));var e=this.xAxis,b=this.yAxis,a=this.points,d,f=a.length,g=this.options.connectNulls,x;if(e&&b&&(e.options.breaks||b.options.breaks))for(;f--;)d=a[f],x=null===d.y&&!1===g,x||!e.isInAnyBreak(d.x,!0)&&!b.isInAnyBreak(d.y,!0)||(a.splice(f,1),this.data[f]&&this.data[f].destroyElements())});
f.Series.prototype.drawBreaks=function(c,e){var b=this,a=b.points,d,f,g,h;c&&q(e,function(e){d=c.breakArray||[];f=c.isXAxis?c.min:r(b.options.threshold,c.min);q(a,function(a){h=r(a["stack"+e.toUpperCase()],a[e]);q(d,function(b){g=!1;if(f<b.from&&h>b.to||f>b.from&&h<b.from)g="pointBreak";else if(f<b.from&&h>b.from&&h<b.to||f>b.from&&h>b.to&&h<b.from)g="pointInBreak";g&&v(c,g,{point:a,brk:b})})})})};f.Series.prototype.gappedPath=function(){var c=this.options.gapSize,e=this.points.slice(),b=e.length-
1,a=this.yAxis,d;if(c&&0<b)for("value"!==this.options.gapUnit&&(c*=this.closestPointRange);b--;)e[b+1].x-e[b].x>c&&(d=(e[b].x+e[b+1].x)/2,e.splice(b+1,0,{isNull:!0,x:d}),this.options.stacking&&(d=a.stacks[this.stackKey][d]=new f.StackItem(a,a.options.stackLabels,!1,d,this.stack),d.total=0));return this.getGraphPath(e)};g(f.seriesTypes.column.prototype,"drawPoints",u);g(f.Series.prototype,"drawPoints",u)})(h)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/broken-axis.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":15,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","stripArguments","Array","prototype","slice","call","arguments","drawPointsWrapped","proceed","apply","drawBreaks","xAxis","yAxis","pick","pointArrayMap","wrap","each","extend","isArray","fireEvent","Axis","Series","isInBreak","brk","val","repeat","Infinity","from","length","to","test","inclusive","ret","isInAnyBreak","testKeep","breaks","options","i","inbrk","keep","showPoints","isXAxis","tickPositions","info","newPositions","axis","push","chart","userOptions","ordinal","isBroken","val2lin","axis.val2lin","nval","breakArray","len","lin2val","axis.lin2val","setExtremes","axis.setExtremes","newMin","newMax","redraw","animation","eventArguments","closestPointRange","setAxisTranslation","axis.setAxisTranslation","saveOld","breakArrayT","inBrk","min","userMin","max","userMax","pointRangePadding","start","value","move","size","breakSize","sort","a","b","unitLength","staticScale","transA","minPixelPadding","minPointOffset","series","points","point","connectNulls","nullGap","y","x","splice","data","destroyElements","H.Series.prototype.drawBreaks","keys","threshold","eventName","key","toUpperCase","gappedPath","H.Series.prototype.gappedPath","gapSize","xRange","gapUnit","isNull","stacking","stack","stacks","stackKey","StackItem","stackLabels","total","getGraphPath","seriesTypes","column"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/broken-axis.src.js
@@ -0,0 +1,436 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
var pick = H.pick,
wrap = H.wrap,
each = H.each,
extend = H.extend,
isArray = H.isArray,
fireEvent = H.fireEvent,
Axis = H.Axis,
Series = H.Series;
 
function stripArguments() {
return Array.prototype.slice.call(arguments, 1);
}
 
extend(Axis.prototype, {
isInBreak: function(brk, val) {
var ret,
repeat = brk.repeat || Infinity,
from = brk.from,
length = brk.to - brk.from,
test = (val >= from ? (val - from) % repeat : repeat - ((from - val) % repeat));
 
if (!brk.inclusive) {
ret = test < length && test !== 0;
} else {
ret = test <= length;
}
return ret;
},
 
isInAnyBreak: function(val, testKeep) {
 
var breaks = this.options.breaks,
i = breaks && breaks.length,
inbrk,
keep,
ret;
 
 
if (i) {
 
while (i--) {
if (this.isInBreak(breaks[i], val)) {
inbrk = true;
if (!keep) {
keep = pick(breaks[i].showPoints, this.isXAxis ? false : true);
}
}
}
 
if (inbrk && testKeep) {
ret = inbrk && !keep;
} else {
ret = inbrk;
}
}
return ret;
}
});
 
wrap(Axis.prototype, 'setTickPositions', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
if (this.options.breaks) {
var axis = this,
tickPositions = this.tickPositions,
info = this.tickPositions.info,
newPositions = [],
i;
 
for (i = 0; i < tickPositions.length; i++) {
if (!axis.isInAnyBreak(tickPositions[i])) {
newPositions.push(tickPositions[i]);
}
}
 
this.tickPositions = newPositions;
this.tickPositions.info = info;
}
});
 
wrap(Axis.prototype, 'init', function(proceed, chart, userOptions) {
var axis = this,
breaks;
// Force Axis to be not-ordinal when breaks are defined
if (userOptions.breaks && userOptions.breaks.length) {
userOptions.ordinal = false;
}
proceed.call(this, chart, userOptions);
breaks = this.options.breaks;
axis.isBroken = (isArray(breaks) && !!breaks.length);
if (axis.isBroken) {
axis.val2lin = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.to <= val) {
nval -= brk.len;
} else if (brk.from >= val) {
break;
} else if (axis.isInBreak(brk, val)) {
nval -= (val - brk.from);
break;
}
}
 
return nval;
};
 
axis.lin2val = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.from >= nval) {
break;
} else if (brk.to < nval) {
nval += brk.len;
} else if (axis.isInBreak(brk, nval)) {
nval += brk.len;
}
}
return nval;
};
 
axis.setExtremes = function(newMin, newMax, redraw, animation, eventArguments) {
// If trying to set extremes inside a break, extend it to before and after the break ( #3857 )
while (this.isInAnyBreak(newMin)) {
newMin -= this.closestPointRange;
}
while (this.isInAnyBreak(newMax)) {
newMax -= this.closestPointRange;
}
Axis.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);
};
 
axis.setAxisTranslation = function(saveOld) {
Axis.prototype.setAxisTranslation.call(this, saveOld);
 
var breaks = axis.options.breaks,
breakArrayT = [], // Temporary one
breakArray = [],
length = 0,
inBrk,
repeat,
min = axis.userMin || axis.min,
max = axis.userMax || axis.max,
pointRangePadding = pick(axis.pointRangePadding, 0),
start,
i;
 
// Min & max check (#4247)
each(breaks, function(brk) {
repeat = brk.repeat || Infinity;
if (axis.isInBreak(brk, min)) {
min += (brk.to % repeat) - (min % repeat);
}
if (axis.isInBreak(brk, max)) {
max -= (max % repeat) - (brk.from % repeat);
}
});
 
// Construct an array holding all breaks in the axis
each(breaks, function(brk) {
start = brk.from;
repeat = brk.repeat || Infinity;
 
while (start - repeat > min) {
start -= repeat;
}
while (start < min) {
start += repeat;
}
 
for (i = start; i < max; i += repeat) {
breakArrayT.push({
value: i,
move: 'in'
});
breakArrayT.push({
value: i + (brk.to - brk.from),
move: 'out',
size: brk.breakSize
});
}
});
 
breakArrayT.sort(function(a, b) {
var ret;
if (a.value === b.value) {
ret = (a.move === 'in' ? 0 : 1) - (b.move === 'in' ? 0 : 1);
} else {
ret = a.value - b.value;
}
return ret;
});
 
// Simplify the breaks
inBrk = 0;
start = min;
 
each(breakArrayT, function(brk) {
inBrk += (brk.move === 'in' ? 1 : -1);
 
if (inBrk === 1 && brk.move === 'in') {
start = brk.value;
}
if (inBrk === 0) {
breakArray.push({
from: start,
to: brk.value,
len: brk.value - start - (brk.size || 0)
});
length += brk.value - start - (brk.size || 0);
}
});
 
axis.breakArray = breakArray;
 
// Used with staticScale, and below, the actual axis length when
// breaks are substracted.
axis.unitLength = max - min - length + pointRangePadding;
 
fireEvent(axis, 'afterBreaks');
 
if (axis.options.staticScale) {
axis.transA = axis.options.staticScale;
} else if (axis.unitLength) {
axis.transA *= (max - axis.min + pointRangePadding) /
axis.unitLength;
}
 
if (pointRangePadding) {
axis.minPixelPadding = axis.transA * axis.minPointOffset;
}
 
axis.min = min;
axis.max = max;
};
}
});
 
wrap(Series.prototype, 'generatePoints', function(proceed) {
 
proceed.apply(this, stripArguments(arguments));
 
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
points = series.points,
point,
i = points.length,
connectNulls = series.options.connectNulls,
nullGap;
 
 
if (xAxis && yAxis && (xAxis.options.breaks || yAxis.options.breaks)) {
while (i--) {
point = points[i];
 
nullGap = point.y === null && connectNulls === false; // respect nulls inside the break (#4275)
if (!nullGap && (xAxis.isInAnyBreak(point.x, true) || yAxis.isInAnyBreak(point.y, true))) {
points.splice(i, 1);
if (this.data[i]) {
this.data[i].destroyElements(); // removes the graphics for this point if they exist
}
}
}
}
 
});
 
function drawPointsWrapped(proceed) {
proceed.apply(this);
this.drawBreaks(this.xAxis, ['x']);
this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
}
 
H.Series.prototype.drawBreaks = function(axis, keys) {
var series = this,
points = series.points,
breaks,
threshold,
eventName,
y;
 
if (!axis) {
return; // #5950
}
 
each(keys, function(key) {
breaks = axis.breakArray || [];
threshold = axis.isXAxis ? axis.min : pick(series.options.threshold, axis.min);
each(points, function(point) {
y = pick(point['stack' + key.toUpperCase()], point[key]);
each(breaks, function(brk) {
eventName = false;
 
if ((threshold < brk.from && y > brk.to) || (threshold > brk.from && y < brk.from)) {
eventName = 'pointBreak';
} else if ((threshold < brk.from && y > brk.from && y < brk.to) || (threshold > brk.from && y > brk.to && y < brk.from)) { // point falls inside the break
eventName = 'pointInBreak';
}
if (eventName) {
fireEvent(axis, eventName, {
point: point,
brk: brk
});
}
});
});
});
};
 
 
/**
* Extend getGraphPath by identifying gaps in the data so that we can draw a gap
* in the line or area. This was moved from ordinal axis module to broken axis
* module as of #5045.
*/
H.Series.prototype.gappedPath = function() {
var gapSize = this.options.gapSize,
points = this.points.slice(),
i = points.length - 1,
yAxis = this.yAxis,
xRange,
stack;
 
/**
* Defines when to display a gap in the graph, together with the `gapUnit`
* option.
*
* When the `gapUnit` is `relative` (default), a gap size of 5 means
* that if the distance between two points is greater than five times
* that of the two closest points, the graph will be broken.
*
* When the `gapUnit` is `value`, the gap is based on absolute axis values,
* which on a datetime axis is milliseconds.
*
* In practice, this option is most often used to visualize gaps in
* time series. In a stock chart, intraday data is available for daytime
* hours, while gaps will appear in nights and weekends.
*
* @type {Number}
* @see [xAxis.breaks](#xAxis.breaks)
* @sample {highstock} stock/plotoptions/series-gapsize/
* Setting the gap size to 2 introduces gaps for weekends in daily
* datasets.
* @default 0
* @product highstock
* @apioption plotOptions.series.gapSize
*/
 
/**
* Together with `gapSize`, this option defines where to draw gaps in the
* graph.
*
* @type {String}
* @see [gapSize](plotOptions.series.gapSize)
* @default relative
* @validvalues ["relative", "value"]
* @since 5.0.13
* @product highstock
* @apioption plotOptions.series.gapUnit
*/
 
if (gapSize && i > 0) { // #5008
 
// Gap unit is relative
if (this.options.gapUnit !== 'value') {
gapSize *= this.closestPointRange;
}
 
// extension for ordinal breaks
while (i--) {
if (points[i + 1].x - points[i].x > gapSize) {
xRange = (points[i].x + points[i + 1].x) / 2;
 
points.splice( // insert after this one
i + 1,
0, {
isNull: true,
x: xRange
}
);
 
// For stacked chart generate empty stack items, #6546
if (this.options.stacking) {
stack = yAxis.stacks[this.stackKey][xRange] = new H.StackItem(
yAxis,
yAxis.options.stackLabels,
false,
xRange,
this.stack
);
stack.total = 0;
}
}
}
}
 
// Call base method
return this.getGraphPath(points);
};
 
wrap(H.seriesTypes.column.prototype, 'drawPoints', drawPointsWrapped);
wrap(H.Series.prototype, 'drawPoints', drawPointsWrapped);
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/canvasrenderer.experimental.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","extend","SVGElement","prototype","init","renderer","nodeName","element","attributes","childNodes","setAttribute","key","value","removeAttribute","appendChild","push","parentNode","insertBefore","newItem","existingItem","splice","indexOf","removeChild","getElementsByTagName","cloneNode","style","dSetter","this.dSetter","join","getBBox","ctx","font","fillStyle","x","y","width","measureText","bBox","innerHTML","height","draw","path","elem","attr","segments","d","forEach","item","length","parseFloat","beginPath","segment","apply","slice","rect","text","fillText","SVGRenderer","container","boxWrapper","createElement","version","canvas","win","doc","getContext","isSVG","box","alignedObjects","defs","add","gradients","cache","setSize","drawElement","Array","call","lineWidth","strokeStyle","stroke","fill","buildText","wrapper","textStr"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/data.js
@@ -0,0 +1,26 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Data module
 
(c) 2012-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(p){"object"===typeof module&&module.exports?module.exports=p:p(Highcharts)})(function(p){(function(g){var p=g.win.document,m=g.each,z=g.objectEach,A=g.pick,w=g.inArray,x=g.isNumber,B=g.splat,n,u=function(b,a){this.init(b,a)};g.extend(u.prototype,{init:function(b,a){this.options=b;this.chartOptions=a;this.columns=b.columns||this.rowsToColumns(b.rows)||[];this.firstRowAsNames=A(b.firstRowAsNames,!0);this.decimalRegex=b.decimalPoint&&new RegExp("^(-?[0-9]+)"+b.decimalPoint+"([0-9]+)$");this.rawColumns=
[];this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){var b=this.chartOptions,a=this.options,d=[],f=function(b){return(g.seriesTypes[b||"line"].prototype.pointArrayMap||[0]).length},e=b&&b.chart&&b.chart.type,c=[],k=[],t=0,h;m(b&&b.series||[],function(b){c.push(f(b.type||e))});m(a&&a.seriesMapping||[],function(b){d.push(b.x||0)});0===d.length&&d.push(0);m(a&&a.seriesMapping||[],function(a){var d=new n,C=c[t]||f(e),
q=g.seriesTypes[((b&&b.series||[])[t]||{}).type||e||"line"].prototype.pointArrayMap||["y"];d.addColumnReader(a.x,"x");z(a,function(b,a){"x"!==a&&d.addColumnReader(b,a)});for(h=0;h<C;h++)d.hasReader(q[h])||d.addColumnReader(void 0,q[h]);k.push(d);t++});a=g.seriesTypes[e||"line"].prototype.pointArrayMap;void 0===a&&(a=["y"]);this.valueCount={global:f(e),xColumns:d,individual:c,seriesBuilders:k,globalPointArrayMap:a}},dataFound:function(){this.options.switchRowsAndColumns&&(this.columns=this.rowsToColumns(this.columns));
this.getColumnDistribution();this.parseTypes();!1!==this.parsed()&&this.complete()},parseCSV:function(){var b=this,a=this.options,d=a.csv,f=this.columns,e=a.startRow||0,c=a.endRow||Number.MAX_VALUE,k=a.startColumn||0,t=a.endColumn||Number.MAX_VALUE,h,g,y=0;d&&(g=d.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(a.lineDelimiter||"\n"),h=a.itemDelimiter||(-1!==d.indexOf("\t")?"\t":","),m(g,function(a,d){var g=b.trim(a),q=0===g.indexOf("#");d>=e&&d<=c&&!q&&""!==g&&(a=a.split(h),m(a,function(b,a){a>=
k&&a<=t&&(f[a-k]||(f[a-k]=[]),f[a-k][y]=b)}),y+=1)}),this.dataFound())},parseTable:function(){var b=this.options,a=b.table,d=this.columns,f=b.startRow||0,e=b.endRow||Number.MAX_VALUE,c=b.startColumn||0,k=b.endColumn||Number.MAX_VALUE;a&&("string"===typeof a&&(a=p.getElementById(a)),m(a.getElementsByTagName("tr"),function(b,a){a>=f&&a<=e&&m(b.children,function(b,e){("TD"===b.tagName||"TH"===b.tagName)&&e>=c&&e<=k&&(d[e-c]||(d[e-c]=[]),d[e-c][a-f]=b.innerHTML)})}),this.dataFound())},parseGoogleSpreadsheet:function(){var b=
this,a=this.options,d=a.googleSpreadsheetKey,f=this.columns,e=a.startRow||0,c=a.endRow||Number.MAX_VALUE,k=a.startColumn||0,g=a.endColumn||Number.MAX_VALUE,h,q;d&&jQuery.ajax({dataType:"json",url:"https://spreadsheets.google.com/feeds/cells/"+d+"/"+(a.googleSpreadsheetWorksheet||"od6")+"/public/values?alt\x3djson-in-script\x26callback\x3d?",error:a.error,success:function(a){a=a.feed.entry;var d,t=a.length,r=0,n=0,l;for(l=0;l<t;l++)d=a[l],r=Math.max(r,d.gs$cell.col),n=Math.max(n,d.gs$cell.row);for(l=
0;l<r;l++)l>=k&&l<=g&&(f[l-k]=[],f[l-k].length=Math.min(n,c-e));for(l=0;l<t;l++)d=a[l],h=d.gs$cell.row-1,q=d.gs$cell.col-1,q>=k&&q<=g&&h>=e&&h<=c&&(f[q-k][h-e]=d.content.$t);m(f,function(a){for(l=0;l<a.length;l++)void 0===a[l]&&(a[l]=null)});b.dataFound()}})},trim:function(b,a){"string"===typeof b&&(b=b.replace(/^\s+|\s+$/g,""),a&&/^[0-9\s]+$/.test(b)&&(b=b.replace(/\s/g,"")),this.decimalRegex&&(b=b.replace(this.decimalRegex,"$1.$2")));return b},parseTypes:function(){for(var b=this.columns,a=b.length;a--;)this.parseColumn(b[a],
a)},parseColumn:function(b,a){var d=this.rawColumns,f=this.columns,e=b.length,c,k,g,h,n=this.firstRowAsNames,m=-1!==w(a,this.valueCount.xColumns),p=[],v=this.chartOptions,r,u=(this.options.columnTypes||[])[a],v=m&&(v&&v.xAxis&&"category"===B(v.xAxis)[0].type||"string"===u);for(d[a]||(d[a]=[]);e--;)c=p[e]||b[e],g=this.trim(c),h=this.trim(c,!0),k=parseFloat(h),void 0===d[a][e]&&(d[a][e]=g),v||0===e&&n?b[e]=g:+h===k?(b[e]=k,31536E6<k&&"float"!==u?b.isDatetime=!0:b.isNumeric=!0,void 0!==b[e+1]&&(r=k>
b[e+1])):(k=this.parseDate(c),m&&x(k)&&"float"!==u?(p[e]=c,b[e]=k,b.isDatetime=!0,void 0!==b[e+1]&&(c=k>b[e+1],c!==r&&void 0!==r&&(this.alternativeFormat?(this.dateFormat=this.alternativeFormat,e=b.length,this.alternativeFormat=this.dateFormats[this.dateFormat].alternative):b.unsorted=!0),r=c)):(b[e]=""===g?null:g,0!==e&&(b.isDatetime||b.isNumeric)&&(b.mixed=!0)));m&&b.mixed&&(f[a]=d[a]);if(m&&r&&this.options.sort)for(a=0;a<f.length;a++)f[a].reverse(),n&&f[a].unshift(f[a].pop())},dateFormats:{"YYYY-mm-dd":{regex:/^([0-9]{4})[\-\/\.]([0-9]{2})[\-\/\.]([0-9]{2})$/,
parser:function(b){return Date.UTC(+b[1],b[2]-1,+b[3])}},"dd/mm/YYYY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,parser:function(b){return Date.UTC(+b[3],b[2]-1,+b[1])},alternative:"mm/dd/YYYY"},"mm/dd/YYYY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,parser:function(b){return Date.UTC(+b[3],b[1]-1,+b[2])}},"dd/mm/YY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,parser:function(b){return Date.UTC(+b[3]+2E3,b[2]-1,+b[1])},alternative:"mm/dd/YY"},
"mm/dd/YY":{regex:/^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,parser:function(b){return Date.UTC(+b[3]+2E3,b[1]-1,+b[2])}}},parseDate:function(b){var a=this.options.parseDate,d,f,e=this.options.dateFormat||this.dateFormat,c;if(a)d=a(b);else if("string"===typeof b){if(e)a=this.dateFormats[e],(c=b.match(a.regex))&&(d=a.parser(c));else for(f in this.dateFormats)if(a=this.dateFormats[f],c=b.match(a.regex)){this.dateFormat=f;this.alternativeFormat=a.alternative;d=a.parser(c);break}c||(c=Date.parse(b),
"object"===typeof c&&null!==c&&c.getTime?d=c.getTime()-6E4*c.getTimezoneOffset():x(c)&&(d=c-6E4*(new Date(c)).getTimezoneOffset()))}return d},rowsToColumns:function(b){var a,d,f,e,c;if(b)for(c=[],d=b.length,a=0;a<d;a++)for(e=b[a].length,f=0;f<e;f++)c[f]||(c[f]=[]),c[f][a]=b[a][f];return c},parsed:function(){if(this.options.parsed)return this.options.parsed.call(this,this.columns)},getFreeIndexes:function(b,a){var d,f=[],e=[],c;for(d=0;d<b;d+=1)f.push(!0);for(b=0;b<a.length;b+=1)for(c=a[b].getReferencedColumnIndexes(),
d=0;d<c.length;d+=1)f[c[d]]=!1;for(d=0;d<f.length;d+=1)f[d]&&e.push(d);return e},complete:function(){var b=this.columns,a,d=this.options,f,e,c,k,g=[],h;if(d.complete||d.afterComplete){for(c=0;c<b.length;c++)this.firstRowAsNames&&(b[c].name=b[c].shift());f=[];e=this.getFreeIndexes(b.length,this.valueCount.seriesBuilders);for(c=0;c<this.valueCount.seriesBuilders.length;c++)h=this.valueCount.seriesBuilders[c],h.populateColumns(e)&&g.push(h);for(;0<e.length;){h=new n;h.addColumnReader(0,"x");c=w(0,e);
-1!==c&&e.splice(c,1);for(c=0;c<this.valueCount.global;c++)h.addColumnReader(void 0,this.valueCount.globalPointArrayMap[c]);h.populateColumns(e)&&g.push(h)}0<g.length&&0<g[0].readers.length&&(h=b[g[0].readers[0].columnIndex],void 0!==h&&(h.isDatetime?a="datetime":h.isNumeric||(a="category")));if("category"===a)for(c=0;c<g.length;c++)for(h=g[c],e=0;e<h.readers.length;e++)"x"===h.readers[e].configName&&(h.readers[e].configName="name");for(c=0;c<g.length;c++){h=g[c];e=[];for(k=0;k<b[0].length;k++)e[k]=
h.read(b,k);f[c]={data:e};h.name&&(f[c].name=h.name);"category"===a&&(f[c].turboThreshold=0)}b={series:f};a&&(b.xAxis={type:a},"category"===a&&(b.xAxis.uniqueNames=!1));d.complete&&d.complete(b);d.afterComplete&&d.afterComplete(b)}}});g.Data=u;g.data=function(b,a){return new u(b,a)};g.wrap(g.Chart.prototype,"init",function(b,a,d){var f=this;a&&a.data?g.data(g.extend(a.data,{afterComplete:function(e){var c,k;if(a.hasOwnProperty("series"))if("object"===typeof a.series)for(c=Math.max(a.series.length,
e.series.length);c--;)k=a.series[c]||{},a.series[c]=g.merge(k,e.series[c]);else delete a.series;a=g.merge(e,a);b.call(f,a,d)}}),a):b.call(f,a,d)});n=function(){this.readers=[];this.pointIsArray=!0};n.prototype.populateColumns=function(b){var a=!0;m(this.readers,function(a){void 0===a.columnIndex&&(a.columnIndex=b.shift())});m(this.readers,function(b){void 0===b.columnIndex&&(a=!1)});return a};n.prototype.read=function(b,a){var d=this.pointIsArray,f=d?[]:{},e;m(this.readers,function(c){var e=b[c.columnIndex][a];
d?f.push(e):f[c.configName]=e});void 0===this.name&&2<=this.readers.length&&(e=this.getReferencedColumnIndexes(),2<=e.length&&(e.shift(),e.sort(),this.name=b[e.shift()].name));return f};n.prototype.addColumnReader=function(b,a){this.readers.push({columnIndex:b,configName:a});"x"!==a&&"y"!==a&&void 0!==a&&(this.pointIsArray=!1)};n.prototype.getReferencedColumnIndexes=function(){var b,a=[],d;for(b=0;b<this.readers.length;b+=1)d=this.readers[b],void 0!==d.columnIndex&&a.push(d.columnIndex);return a};
n.prototype.hasReader=function(b){var a,d;for(a=0;a<this.readers.length;a+=1)if(d=this.readers[a],d.configName===b)return!0}})(p)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/data.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":26,
"mappings":"A;;;;;;;;AASC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACA,CAAD,CAAa,CAAA,IAadC,EADMD,CAAAE,IACAC,SAbQ,CAcdC,EAAOJ,CAAAI,KAdO,CAedC,EAAaL,CAAAK,WAfC,CAgBdC,EAAON,CAAAM,KAhBO,CAiBdC,EAAUP,CAAAO,QAjBI,CAkBdC,EAAWR,CAAAQ,SAlBG,CAmBdC,EAAQT,CAAAS,MAnBM,CAoBdC,CApBc,CAwBdC,EAAOA,QAAQ,CAACC,CAAD,CAAcC,CAAd,CAA4B,CAC3C,IAAAC,KAAA,CAAUF,CAAV,CAAuBC,CAAvB,CAD2C,CAK/Cb,EAAAe,OAAA,CAAkBJ,CAAAK,UAAlB,CAAkC,CAK9BF,KAAMA,QAAQ,CAACG,CAAD,CAAUJ,CAAV,CAAwB,CAClC,IAAAI,QAAA,CAAeA,CACf,KAAAJ,aAAA,CAAoBA,CACpB,KAAAK,QAAA,CAAeD,CAAAC,QAAf,EAAkC,IAAAC,cAAA,CAAmBF,CAAAG,KAAnB,CAAlC,EAAsE,EACtE,KAAAC,gBAAA,CAAuBf,CAAA,CAAKW,CAAAI,gBAAL,CAA8B,CAAA,CAA9B,CACvB,KAAAC,aAAA,CAAoBL,CAAAM,aAApB,EAA4C,IAAIC,MAAJ,CAAW,aAAX,CAA2BP,CAAAM,aAA3B,CAAkD,WAAlD,CAM5C,KAAAE,WAAA;AAAkB,EAGd,KAAAP,QAAAQ,OAAJ,CACI,IAAAC,UAAA,EADJ,EAOI,IAAAC,SAAA,EAMA,CAHA,IAAAC,WAAA,EAGA,CAAA,IAAAC,uBAAA,EAbJ,CAdkC,CALR,CA0C9BC,sBAAuBA,QAAQ,EAAG,CAAA,IAC1BlB,EAAe,IAAAA,aADW,CAE1BI,EAAU,IAAAA,QAFgB,CAG1Be,EAAW,EAHe,CAI1BC,EAAgBA,QAAQ,CAACC,CAAD,CAAO,CAC3B,MAAOR,CAAC1B,CAAAmC,YAAA,CAAuBD,CAAvB,EAA+B,MAA/B,CAAAlB,UAAAoB,cAADV,EAAmE,CAAC,CAAD,CAAnEA,QADoB,CAJL,CAU1BW,EAAaxB,CAAbwB,EAA6BxB,CAAAyB,MAA7BD,EAAmDxB,CAAAyB,MAAAJ,KAVzB,CAW1BK,EAAmB,EAXO,CAY1BC,EAAiB,EAZS,CAa1BC,EAAc,CAbY,CAc1BC,CAEJtC,EAAA,CAAMS,CAAN,EAAsBA,CAAA8B,OAAtB,EAA8C,EAA9C,CAAkD,QAAQ,CAACA,CAAD,CAAS,CAC/DJ,CAAAK,KAAA,CAAsBX,CAAA,CAAcU,CAAAT,KAAd,EAA6BG,CAA7B,CAAtB,CAD+D,CAAnE,CAKAjC,EAAA,CAAMa,CAAN,EAAiBA,CAAA4B,cAAjB,EAA2C,EAA3C,CAA+C,QAAQ,CAACC,CAAD,CAAU,CAC7Dd,CAAAY,KAAA,CAAcE,CAAAC,EAAd,EAA2B,CAA3B,CAD6D,CAAjE,CAKwB,EAAxB,GAAIf,CAAAN,OAAJ,EACIM,CAAAY,KAAA,CAAc,CAAd,CAKJxC,EAAA,CAAMa,CAAN,EAAiBA,CAAA4B,cAAjB,EAA2C,EAA3C,CAA+C,QAAQ,CAACC,CAAD,CAAU,CAAA,IACzDE,EAAU,IAAItC,CAD2C,CAEzDuC,EAA6BV,CAAA,CAAiBE,CAAjB,CAA7BQ,EAA8DhB,CAAA,CAAcI,CAAd,CAFL;AAKzDD,EA7BOpC,CAAAmC,YAAA,CA6B0BD,CADxB,CADIrB,CACJ,EADoBA,CAAA8B,OACpB,EAD4C,EAC5C,EAAUF,CAAV,CACwBP,EADE,EACFA,MA7B1B,EA6ByCG,CA7BzC,EAA+B,MAA/B,CAAArB,UAAAoB,cA6BPA,EAA+D,CAAC,GAAD,CAInEY,EAAAE,gBAAA,CAAwBJ,CAAAC,EAAxB,CAAmC,GAAnC,CAGA1C,EAAA,CAAWyC,CAAX,CAAoB,QAAQ,CAACK,CAAD,CAAMC,CAAN,CAAY,CACvB,GAAb,GAAIA,CAAJ,EACIJ,CAAAE,gBAAA,CAAwBC,CAAxB,CAA6BC,CAA7B,CAFgC,CAAxC,CAOA,KAAKV,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBO,CAAhB,CAA4CP,CAAA,EAA5C,CACSM,CAAAK,UAAA,CAAkBjB,CAAA,CAAcM,CAAd,CAAlB,CAAL,EAGIM,CAAAE,gBAAA,CAAwBI,IAAAA,EAAxB,CAAmClB,CAAA,CAAcM,CAAd,CAAnC,CAIRF,EAAAI,KAAA,CAAoBI,CAApB,CACAP,EAAA,EA5B6D,CAAjE,CA+BIc,EAAAA,CAvDWvD,CAAAmC,YAAA,CAuD4BE,CAvD5B,EAA+B,MAA/B,CAAArB,UAAAoB,cAwDakB,KAAAA,EAA5B,GAAIC,CAAJ,GACIA,CADJ,CAC0B,CAAC,GAAD,CAD1B,CAIA,KAAAC,WAAA,CAAkB,CACdC,OAAQxB,CAAA,CAAcI,CAAd,CADM,CAEdL,SAAUA,CAFI,CAGd0B,WAAYnB,CAHE,CAIdC,eAAgBA,CAJF,CAKde,oBAAqBA,CALP,CApEY,CA1CJ,CA2H9B5B,UAAWA,QAAQ,EAAG,CAEd,IAAAV,QAAA0C,qBAAJ,GACI,IAAAzC,QADJ,CACmB,IAAAC,cAAA,CAAmB,IAAAD,QAAnB,CADnB,CAKA;IAAAa,sBAAA,EAGA,KAAA6B,WAAA,EAGsB,EAAA,CAAtB,GAAI,IAAAC,OAAA,EAAJ,EAGI,IAAAC,SAAA,EAhBc,CA3HQ,CAmJ9BlC,SAAUA,QAAQ,EAAG,CAAA,IACbmC,EAAO,IADM,CAEb9C,EAAU,IAAAA,QAFG,CAGb+C,EAAM/C,CAAA+C,IAHO,CAIb9C,EAAU,IAAAA,QAJG,CAKb+C,EAAWhD,CAAAgD,SAAXA,EAA+B,CALlB,CAMbC,EAASjD,CAAAiD,OAATA,EAA2BC,MAAAC,UANd,CAObC,EAAcpD,CAAAoD,YAAdA,EAAqC,CAPxB,CAQbC,EAAYrD,CAAAqD,UAAZA,EAAiCH,MAAAC,UARpB,CASbG,CATa,CAUbC,CAVa,CAWbC,EAAc,CAEdT,EAAJ,GAEIQ,CA4BA,CA5BQR,CAAAU,QAAA,CACK,OADL,CACc,IADd,CAAAA,QAAA,CAEK,KAFL,CAEY,IAFZ,CAAAC,MAAA,CAGG1D,CAAA2D,cAHH,EAG4B,IAH5B,CA4BR,CAvBAL,CAuBA,CAvBgBtD,CAAAsD,cAuBhB,GAvBiE,EAAvB,GAAAP,CAAAa,QAAA,CAAY,IAAZ,CAAA,CAA2B,IAA3B,CAAkC,GAuB5E,EArBAzE,CAAA,CAAKoE,CAAL,CAAY,QAAQ,CAACM,CAAD,CAAOC,CAAP,CAAc,CAAA,IAC1BC,EAAUjB,CAAAkB,KAAA,CAAUH,CAAV,CADgB,CAE1BI,EAAqC,CAArCA,GAAYF,CAAAH,QAAA,CAAgB,GAAhB,CAIZE,EAAJ,EAAad,CAAb,EAAyBc,CAAzB,EAAkCb,CAAlC,EAA6CgB,CAAAA,CAA7C,EAH0B,EAG1B,GAHcF,CAGd,GACIG,CAUA,CAVQL,CAAAH,MAAA,CAAWJ,CAAX,CAUR,CATAnE,CAAA,CAAK+E,CAAL,CAAY,QAAQ,CAACC,CAAD,CAAOC,CAAP,CAAc,CAC1BA,CAAJ;AAAahB,CAAb,EAA4BgB,CAA5B,EAAqCf,CAArC,GACSpD,CAAA,CAAQmE,CAAR,CAAgBhB,CAAhB,CAIL,GAHInD,CAAA,CAAQmE,CAAR,CAAgBhB,CAAhB,CAGJ,CAHmC,EAGnC,EAAAnD,CAAA,CAAQmE,CAAR,CAAgBhB,CAAhB,CAAA,CAA6BI,CAA7B,CAAA,CAA4CW,CALhD,CAD8B,CAAlC,CASA,CAAAX,CAAA,EAAe,CAXnB,CAN8B,CAAlC,CAqBA,CAAA,IAAA9C,UAAA,EA9BJ,CAbiB,CAnJS,CAqM9BE,WAAYA,QAAQ,EAAG,CAAA,IACfZ,EAAU,IAAAA,QADK,CAEfqE,EAAQrE,CAAAqE,MAFO,CAGfpE,EAAU,IAAAA,QAHK,CAIf+C,EAAWhD,CAAAgD,SAAXA,EAA+B,CAJhB,CAKfC,EAASjD,CAAAiD,OAATA,EAA2BC,MAAAC,UALZ,CAMfC,EAAcpD,CAAAoD,YAAdA,EAAqC,CANtB,CAOfC,EAAYrD,CAAAqD,UAAZA,EAAiCH,MAAAC,UAEjCkB,EAAJ,GAEyB,QAkBrB,GAlBI,MAAOA,EAkBX,GAjBIA,CAiBJ,CAjBYrF,CAAAsF,eAAA,CAAmBD,CAAnB,CAiBZ,EAdAlF,CAAA,CAAKkF,CAAAE,qBAAA,CAA2B,IAA3B,CAAL,CAAuC,QAAQ,CAACC,CAAD,CAAKV,CAAL,CAAY,CACnDA,CAAJ,EAAad,CAAb,EAAyBc,CAAzB,EAAkCb,CAAlC,EACI9D,CAAA,CAAKqF,CAAAC,SAAL,CAAkB,QAAQ,CAACN,CAAD,CAAOC,CAAP,CAAc,CACpC,CAAsB,IAAtB,GAAKD,CAAAO,QAAL,EAA+C,IAA/C,GAA8BP,CAAAO,QAA9B,GAAwDN,CAAxD,EAAiEhB,CAAjE,EAAgFgB,CAAhF,EAAyFf,CAAzF,GACSpD,CAAA,CAAQmE,CAAR,CAAgBhB,CAAhB,CAIL,GAHInD,CAAA,CAAQmE,CAAR,CAAgBhB,CAAhB,CAGJ,CAHmC,EAGnC,EAAAnD,CAAA,CAAQmE,CAAR,CAAgBhB,CAAhB,CAAA,CAA6BU,CAA7B,CAAqCd,CAArC,CAAA,CAAiDmB,CAAAQ,UALrD,CADoC,CAAxC,CAFmD,CAA3D,CAcA,CAAA,IAAAjE,UAAA,EApBJ,CATmB,CArMO,CAwO9BG,uBAAwBA,QAAQ,EAAG,CAAA,IAC3BiC;AAAO,IADoB,CAE3B9C,EAAU,IAAAA,QAFiB,CAG3B4E,EAAuB5E,CAAA4E,qBAHI,CAI3B3E,EAAU,IAAAA,QAJiB,CAK3B+C,EAAWhD,CAAAgD,SAAXA,EAA+B,CALJ,CAM3BC,EAASjD,CAAAiD,OAATA,EAA2BC,MAAAC,UANA,CAO3BC,EAAcpD,CAAAoD,YAAdA,EAAqC,CAPV,CAQ3BC,EAAYrD,CAAAqD,UAAZA,EAAiCH,MAAAC,UARN,CAS3B0B,CAT2B,CAU3BC,CAEAF,EAAJ,EACIG,MAAAC,KAAA,CAAY,CACRC,SAAU,MADF,CAERC,IAAK,8CAALA,CACIN,CADJM,CAC2B,GAD3BA,EACkClF,CAAAmF,2BADlCD,EACwE,KADxEA,EAEI,uDAJI,CAKRE,MAAOpF,CAAAoF,MALC,CAMRC,QAASA,QAAQ,CAACC,CAAD,CAAO,CAEhBC,CAAAA,CAAQD,CAAAE,KAAAC,MAFQ,KAGhBC,CAHgB,CAIhBC,EAAYJ,CAAA9E,OAJI,CAKhBmF,EAAW,CALK,CAMhBC,EAAW,CANK,CAOhBpE,CAIJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBkE,CAAhB,CAA2BlE,CAAA,EAA3B,CACIiE,CAEA,CAFOH,CAAA,CAAM9D,CAAN,CAEP,CADAmE,CACA,CADWE,IAAAC,IAAA,CAASH,CAAT,CAAmBF,CAAAM,QAAAC,IAAnB,CACX,CAAAJ,CAAA,CAAWC,IAAAC,IAAA,CAASF,CAAT,CAAmBH,CAAAM,QAAAE,IAAnB,CAIf,KAAKzE,CAAL;AAAS,CAAT,CAAYA,CAAZ,CAAgBmE,CAAhB,CAA0BnE,CAAA,EAA1B,CACQA,CAAJ,EAAS2B,CAAT,EAAwB3B,CAAxB,EAA6B4B,CAA7B,GAEIpD,CAAA,CAAQwB,CAAR,CAAY2B,CAAZ,CAGA,CAH2B,EAG3B,CAAAnD,CAAA,CAAQwB,CAAR,CAAY2B,CAAZ,CAAA3C,OAAA,CAAkCqF,IAAAK,IAAA,CAASN,CAAT,CAAmB5C,CAAnB,CAA4BD,CAA5B,CALtC,CAWJ,KAAKvB,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBkE,CAAhB,CAA2BlE,CAAA,EAA3B,CACIiE,CAMA,CANOH,CAAA,CAAM9D,CAAN,CAMP,CALAoD,CAKA,CALKa,CAAAM,QAAAE,IAKL,CALwB,CAKxB,CAJApB,CAIA,CAJKY,CAAAM,QAAAC,IAIL,CAJwB,CAIxB,CAAInB,CAAJ,EAAU1B,CAAV,EAAyB0B,CAAzB,EAA+BzB,CAA/B,EACIwB,CADJ,EACU7B,CADV,EACsB6B,CADtB,EAC4B5B,CAD5B,GAEIhD,CAAA,CAAQ6E,CAAR,CAAa1B,CAAb,CAAA,CAA0ByB,CAA1B,CAA+B7B,CAA/B,CAFJ,CAE+C0C,CAAAU,QAAAC,GAF/C,CAOJlH,EAAA,CAAKc,CAAL,CAAc,QAAQ,CAACqG,CAAD,CAAS,CAC3B,IAAK7E,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB6E,CAAA7F,OAAhB,CAA+BgB,CAAA,EAA/B,CACsBY,IAAAA,EAAlB,GAAIiE,CAAA,CAAO7E,CAAP,CAAJ,GACI6E,CAAA,CAAO7E,CAAP,CADJ,CACgB,IADhB,CAFuB,CAA/B,CAQAqB,EAAApC,UAAA,EApDoB,CANhB,CAAZ,CAb2B,CAxOL,CAwT9BsD,KAAMA,QAAQ,CAACuC,CAAD,CAAMC,CAAN,CAAc,CACL,QAAnB,GAAI,MAAOD,EAAX,GACIA,CAOA,CAPMA,CAAA9C,QAAA,CAAY,YAAZ,CAA0B,EAA1B,CAON,CAJI+C,CAIJ,EAJc,YAAAC,KAAA,CAAkBF,CAAlB,CAId,GAHIA,CAGJ,CAHUA,CAAA9C,QAAA,CAAY,KAAZ,CAAmB,EAAnB,CAGV,EAAI,IAAApD,aAAJ,GACIkG,CADJ,CACUA,CAAA9C,QAAA,CAAY,IAAApD,aAAZ,CAA+B,OAA/B,CADV,CARJ,CAYA,OAAOkG,EAbiB,CAxTE,CA2U9B5D,WAAYA,QAAQ,EAAG,CAInB,IAJmB,IACf1C,EAAU,IAAAA,QADK,CAEfgG,EAAMhG,CAAAQ,OAEV,CAAOwF,CAAA,EAAP,CAAA,CACI,IAAAS,YAAA,CAAiBzG,CAAA,CAAQgG,CAAR,CAAjB;AAA+BA,CAA/B,CALe,CA3UO,CAwV9BS,YAAaA,QAAQ,CAACJ,CAAD,CAASL,CAAT,CAAc,CAAA,IAC3BzF,EAAa,IAAAA,WADc,CAE3BP,EAAU,IAAAA,QAFiB,CAG3BiG,EAAMI,CAAA7F,OAHqB,CAI3ByB,CAJ2B,CAK3ByE,CAL2B,CAM3BC,CAN2B,CAO3BC,CAP2B,CAQ3BzG,EAAkB,IAAAA,gBARS,CAS3B0G,EAAwD,EAAxDA,GAAYxH,CAAA,CAAQ2G,CAAR,CAAa,IAAA1D,WAAAxB,SAAb,CATe,CAW3BgG,EAAS,EAXkB,CAa3BnH,EAAe,IAAAA,aAbY,CAc3BoH,CAd2B,CAgB3BC,EAAa,CADC,IAAAjH,QAAAkH,YACD,EAD6B,EAC7B,EAAYjB,CAAZ,CAhBc,CAiB3BkB,EAAgBL,CAAhBK,GAA+BvH,CAA/BuH,EAA+CvH,CAAAwH,MAA/CD,EAA2G,UAA3GA,GAAqE3H,CAAA,CAAMI,CAAAwH,MAAN,CAAA,CAA0B,CAA1B,CAAAnG,KAArEkG,EAAyI,QAAzIA,GAA0HF,CAA1HE,CAKJ,KAHK3G,CAAA,CAAWyF,CAAX,CAGL,GAFIzF,CAAA,CAAWyF,CAAX,CAEJ,CAFsB,EAEtB,EAAOC,CAAA,EAAP,CAAA,CACIhE,CAYA,CAZM6E,CAAA,CAAOb,CAAP,CAYN,EAZqBI,CAAA,CAAOJ,CAAP,CAYrB,CAVAU,CAUA,CAVU,IAAA5C,KAAA,CAAU9B,CAAV,CAUV,CATA2E,CASA,CATgB,IAAA7C,KAAA,CAAU9B,CAAV,CAAe,CAAA,CAAf,CAShB,CARAyE,CAQA,CARWU,UAAA,CAAWR,CAAX,CAQX,CAL6BxE,IAAAA,EAK7B,GALI7B,CAAA,CAAWyF,CAAX,CAAA,CAAgBC,CAAhB,CAKJ,GAJI1F,CAAA,CAAWyF,CAAX,CAAA,CAAgBC,CAAhB,CAIJ,CAJ2BU,CAI3B,EAAIO,CAAJ,EAA8B,CAA9B,GAAsBjB,CAAtB,EAAmC9F,CAAnC,CACIkG,CAAA,CAAOJ,CAAP,CADJ,CACkBU,CADlB,CAGW,CAACC,CAAL,GAAuBF,CAAvB,EAEHL,CAAA,CAAOJ,CAAP,CASA,CATcS,CASd,CANe,OAAf,CAAIA,CAAJ,EAAwD,OAAxD,GAAyCM,CAAzC,CACIX,CAAAgB,WADJ,CACwB,CAAA,CADxB,CAGIhB,CAAAiB,UAHJ,CAGuB,CAAA,CAGvB,CAAwBlF,IAAAA,EAAxB,GAAIiE,CAAA,CAAOJ,CAAP,CAAa,CAAb,CAAJ,GACIc,CADJ,CACiBL,CADjB;AAC4BL,CAAA,CAAOJ,CAAP,CAAa,CAAb,CAD5B,CAXG,GAiBHsB,CAEA,CAFU,IAAAC,UAAA,CAAevF,CAAf,CAEV,CAAI4E,CAAJ,EAAiBvH,CAAA,CAASiI,CAAT,CAAjB,EAAqD,OAArD,GAAsCP,CAAtC,EACIF,CAAA,CAAOb,CAAP,CAOA,CAPchE,CAOd,CANAoE,CAAA,CAAOJ,CAAP,CAMA,CANcsB,CAMd,CALAlB,CAAAgB,WAKA,CALoB,CAAA,CAKpB,CAAwBjF,IAAAA,EAAxB,GAAIiE,CAAA,CAAOJ,CAAP,CAAa,CAAb,CAAJ,GACIwB,CAUA,CAVOF,CAUP,CAViBlB,CAAA,CAAOJ,CAAP,CAAa,CAAb,CAUjB,CATIwB,CASJ,GATaV,CASb,EAT0C3E,IAAAA,EAS1C,GAT2B2E,CAS3B,GARQ,IAAAW,kBAAJ,EACI,IAAAC,WAEA,CAFkB,IAAAD,kBAElB,CADAzB,CACA,CADMI,CAAA7F,OACN,CAAA,IAAAkH,kBAAA,CAAyB,IAAAE,YAAA,CAAiB,IAAAD,WAAjB,CAAAE,YAH7B,EAKIxB,CAAAyB,SALJ,CAKsB,CAAA,CAG1B,EAAAf,CAAA,CAAaU,CAXjB,CARJ,GAuBIpB,CAAA,CAAOJ,CAAP,CACA,CAD0B,EAAZ,GAAAU,CAAA,CAAiB,IAAjB,CAAwBA,CACtC,CAAY,CAAZ,GAAIV,CAAJ,GAAkBI,CAAAgB,WAAlB,EAAuChB,CAAAiB,UAAvC,IACIjB,CAAA0B,MADJ,CACmB,CAAA,CADnB,CAxBJ,CAnBG,CAsDPlB,EAAJ,EAAiBR,CAAA0B,MAAjB,GACI/H,CAAA,CAAQgG,CAAR,CADJ,CACmBzF,CAAA,CAAWyF,CAAX,CADnB,CAKA,IAAIa,CAAJ,EAAiBE,CAAjB,EAA+B,IAAAhH,QAAAiI,KAA/B,CACI,IAAKhC,CAAL,CAAW,CAAX,CAAcA,CAAd,CAAoBhG,CAAAQ,OAApB,CAAoCwF,CAAA,EAApC,CACIhG,CAAA,CAAQgG,CAAR,CAAAiC,QAAA,EACA,CAAI9H,CAAJ,EACIH,CAAA,CAAQgG,CAAR,CAAAkC,QAAA,CAAqBlI,CAAA,CAAQgG,CAAR,CAAAmC,IAAA,EAArB,CArGmB,CAxVL,CAuc9BP,YAAa,CACT,aAAc,CACVQ,MAAO,kDADG;AAEVC,OAAQA,QAAQ,CAACC,CAAD,CAAQ,CACpB,MAAOC,KAAAC,IAAA,CAAS,CAACF,CAAA,CAAM,CAAN,CAAV,CAAoBA,CAAA,CAAM,CAAN,CAApB,CAA+B,CAA/B,CAAkC,CAACA,CAAA,CAAM,CAAN,CAAnC,CADa,CAFd,CADL,CAOT,aAAc,CACVF,MAAO,sDADG,CAEVC,OAAQA,QAAQ,CAACC,CAAD,CAAQ,CACpB,MAAOC,KAAAC,IAAA,CAAS,CAACF,CAAA,CAAM,CAAN,CAAV,CAAoBA,CAAA,CAAM,CAAN,CAApB,CAA+B,CAA/B,CAAkC,CAACA,CAAA,CAAM,CAAN,CAAnC,CADa,CAFd,CAKVT,YAAa,YALH,CAPL,CAcT,aAAc,CACVO,MAAO,sDADG,CAEVC,OAAQA,QAAQ,CAACC,CAAD,CAAQ,CACpB,MAAOC,KAAAC,IAAA,CAAS,CAACF,CAAA,CAAM,CAAN,CAAV,CAAoBA,CAAA,CAAM,CAAN,CAApB,CAA+B,CAA/B,CAAkC,CAACA,CAAA,CAAM,CAAN,CAAnC,CADa,CAFd,CAdL,CAoBT,WAAY,CACRF,MAAO,sDADC,CAERC,OAAQA,QAAQ,CAACC,CAAD,CAAQ,CACpB,MAAOC,KAAAC,IAAA,CAAS,CAACF,CAAA,CAAM,CAAN,CAAV,CAAqB,GAArB,CAA2BA,CAAA,CAAM,CAAN,CAA3B,CAAsC,CAAtC,CAAyC,CAACA,CAAA,CAAM,CAAN,CAA1C,CADa,CAFhB,CAKRT,YAAa,UALL,CApBH;AA2BT,WAAY,CACRO,MAAO,sDADC,CAERC,OAAQA,QAAQ,CAACC,CAAD,CAAQ,CACpB,MAAOC,KAAAC,IAAA,CAAS,CAACF,CAAA,CAAM,CAAN,CAAV,CAAqB,GAArB,CAA2BA,CAAA,CAAM,CAAN,CAA3B,CAAsC,CAAtC,CAAyC,CAACA,CAAA,CAAM,CAAN,CAA1C,CADa,CAFhB,CA3BH,CAvciB,CA6e9Bd,UAAWA,QAAQ,CAACvF,CAAD,CAAM,CAAA,IACjBuF,EAAY,IAAAzH,QAAAyH,UADK,CAEjBiB,CAFiB,CAGjBC,CAHiB,CAKjBf,EAAa,IAAA5H,QAAA4H,WAAbA,EAAwC,IAAAA,WALvB,CAMjBW,CAEJ,IAAId,CAAJ,CACIiB,CAAA,CAAMjB,CAAA,CAAUvF,CAAV,CADV,KAGO,IAAmB,QAAnB,GAAI,MAAOA,EAAX,CAA6B,CAEhC,GAAK0F,CAAL,CAaIgB,CAEA,CAFS,IAAAf,YAAA,CAAiBD,CAAjB,CAET,EADAW,CACA,CADQrG,CAAAqG,MAAA,CAAUK,CAAAP,MAAV,CACR,IACIK,CADJ,CACUE,CAAAN,OAAA,CAAcC,CAAd,CADV,CAfJ,KACI,KAAKI,CAAL,GAAY,KAAAd,YAAZ,CAGI,GAFAe,CACAL,CADS,IAAAV,YAAA,CAAiBc,CAAjB,CACTJ,CAAAA,CAAAA,CAAQrG,CAAAqG,MAAA,CAAUK,CAAAP,MAAV,CACR,CAAW,CACP,IAAAT,WAAA,CAA+Be,CAC/B,KAAAhB,kBAAA,CAAyBiB,CAAAd,YACzBY,EAAA,CAAME,CAAAN,OAAA,CAAcC,CAAd,CACN,MAJO,CAgBdA,CAAL,GACIA,CAGA,CAHQC,IAAAK,MAAA,CAAW3G,CAAX,CAGR;AAAqB,QAArB,GAAI,MAAOqG,EAAX,EAA2C,IAA3C,GAAiCA,CAAjC,EAAmDA,CAAAO,QAAnD,CACIJ,CADJ,CACUH,CAAAO,QAAA,EADV,CACwD,GADxD,CAC4BP,CAAAQ,kBAAA,EAD5B,CAIWxJ,CAAA,CAASgJ,CAAT,CAJX,GAKIG,CALJ,CAKUH,CALV,CAK0D,GAL1D,CAKkBQ,CAAC,IAAIP,IAAJ,CAASD,CAAT,CAADQ,mBAAA,EALlB,CAJJ,CAtBgC,CAmCpC,MAAOL,EA9Cc,CA7eK,CAiiB9BxI,cAAeA,QAAQ,CAACC,CAAD,CAAO,CAAA,IACtB+F,CADsB,CAEtB8C,CAFsB,CAGtB/C,CAHsB,CAItBgD,CAJsB,CAKtBhJ,CAEJ,IAAIE,CAAJ,CAGI,IAFAF,CAEK,CAFK,EAEL,CADL+I,CACK,CADQ7I,CAAAM,OACR,CAAAyF,CAAA,CAAM,CAAX,CAAcA,CAAd,CAAoB8C,CAApB,CAAgC9C,CAAA,EAAhC,CAEI,IADA+C,CACK,CADQ9I,CAAA,CAAK+F,CAAL,CAAAzF,OACR,CAAAwF,CAAA,CAAM,CAAX,CAAcA,CAAd,CAAoBgD,CAApB,CAAgChD,CAAA,EAAhC,CACShG,CAAA,CAAQgG,CAAR,CAGL,GAFIhG,CAAA,CAAQgG,CAAR,CAEJ,CAFmB,EAEnB,EAAAhG,CAAA,CAAQgG,CAAR,CAAA,CAAaC,CAAb,CAAA,CAAoB/F,CAAA,CAAK+F,CAAL,CAAA,CAAUD,CAAV,CAIhC,OAAOhG,EApBmB,CAjiBA,CA2jB9B2C,OAAQA,QAAQ,EAAG,CACf,GAAI,IAAA5C,QAAA4C,OAAJ,CACI,MAAO,KAAA5C,QAAA4C,OAAAsG,KAAA,CAAyB,IAAzB,CAA+B,IAAAjJ,QAA/B,CAFI,CA3jBW,CAikB9BkJ,eAAgBA,QAAQ,CAACC,CAAD,CAAkB7H,CAAlB,CAAkC,CAAA,IAElDE,CAFkD,CAGlD4H,EAAc,EAHoC,CAIlDC,EAAkB,EAJgC,CAKlDC,CAGJ,KAAK9H,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB2H,CAAhB,CAAqC3H,CAArC,EAAyC,CAAzC,CACI4H,CAAA1H,KAAA,CAAiB,CAAA,CAAjB,CAIJ,KAAK6H,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBjI,CAAAd,OAAhB,CAA2C+I,CAA3C,EAA+C,CAA/C,CAGI,IAFAD,CAEK,CAFehI,CAAA,CAAeiI,CAAf,CAAAC,2BAAA,EAEf;AAAAhI,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgB8H,CAAA9I,OAAhB,CAA8CgB,CAA9C,EAAkD,CAAlD,CACI4H,CAAA,CAAYE,CAAA,CAAkB9H,CAAlB,CAAZ,CAAA,CAAoC,CAAA,CAK5C,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB4H,CAAA5I,OAAhB,CAAwCgB,CAAxC,EAA4C,CAA5C,CACQ4H,CAAA,CAAY5H,CAAZ,CAAJ,EACI6H,CAAA3H,KAAA,CAAqBF,CAArB,CAIR,OAAO6H,EA5B+C,CAjkB5B,CAomB9BzG,SAAUA,QAAQ,EAAG,CAAA,IAEb5C,EAAU,IAAAA,QAFG,CAIbgB,CAJa,CAKbjB,EAAU,IAAAA,QALG,CAMb0B,CANa,CAObgI,CAPa,CAQbjI,CARa,CASbkI,CATa,CAabC,EAAoB,EAbP,CAcb7H,CAMJ,IAAI/B,CAAA6C,SAAJ,EAAwB7C,CAAA6J,cAAxB,CAA+C,CAG3C,IAAKpI,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBxB,CAAAQ,OAAhB,CAAgCgB,CAAA,EAAhC,CACQ,IAAArB,gBAAJ,GACIH,CAAA,CAAQwB,CAAR,CAAAU,KADJ,CACsBlC,CAAA,CAAQwB,CAAR,CAAAqI,MAAA,EADtB,CAMJpI,EAAA,CAAS,EACT2H,EAAA,CAAc,IAAAF,eAAA,CAAoBlJ,CAAAQ,OAApB,CAAoC,IAAA8B,WAAAhB,eAApC,CAGd,KAAKC,CAAL,CAAmB,CAAnB,CAAsBA,CAAtB,CAAoC,IAAAe,WAAAhB,eAAAd,OAApC,CAA2Ee,CAAA,EAA3E,CACIO,CAGA,CAHU,IAAAQ,WAAAhB,eAAA,CAA+BC,CAA/B,CAGV,CAAIO,CAAAgI,gBAAA,CAAwBV,CAAxB,CAAJ,EACIO,CAAAjI,KAAA,CAAuBI,CAAvB,CAKR,KAAA,CAA4B,CAA5B,CAAOsH,CAAA5I,OAAP,CAAA,CAA+B,CAC3BsB,CAAA,CAAU,IAAItC,CACdsC,EAAAE,gBAAA,CAAwB,CAAxB,CAA2B,GAA3B,CAGA+H,EAAA,CAAQ1K,CAAA,CAAQ,CAAR,CAAW+J,CAAX,CACO;EAAf,GAAIW,CAAJ,EACIX,CAAAY,OAAA,CAAmBD,CAAnB,CAA0B,CAA1B,CAGJ,KAAKvI,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAc,WAAAC,OAAhB,CAAwCf,CAAA,EAAxC,CAEIM,CAAAE,gBAAA,CAAwBI,IAAAA,EAAxB,CAAmC,IAAAE,WAAAD,oBAAA,CAAoCb,CAApC,CAAnC,CAIAM,EAAAgI,gBAAA,CAAwBV,CAAxB,CAAJ,EACIO,CAAAjI,KAAA,CAAuBI,CAAvB,CAjBuB,CAsBA,CAA/B,CAAI6H,CAAAnJ,OAAJ,EAA0E,CAA1E,CAAoCmJ,CAAA,CAAkB,CAAlB,CAAAM,QAAAzJ,OAApC,GACI0J,CACA,CADUlK,CAAA,CAAQ2J,CAAA,CAAkB,CAAlB,CAAAM,QAAA,CAA6B,CAA7B,CAAAE,YAAR,CACV,CAAgB/H,IAAAA,EAAhB,GAAI8H,CAAJ,GACQA,CAAA7C,WAAJ,CACIrG,CADJ,CACW,UADX,CAEYkJ,CAAA5C,UAFZ,GAGItG,CAHJ,CAGW,UAHX,CADJ,CAFJ,CAWA,IAAa,UAAb,GAAIA,CAAJ,CACI,IAAKO,CAAL,CAAmB,CAAnB,CAAsBA,CAAtB,CAAoCoI,CAAAnJ,OAApC,CAA8De,CAAA,EAA9D,CAEI,IADAO,CACK,CADK6H,CAAA,CAAkBpI,CAAlB,CACL,CAAA6I,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgBtI,CAAAmI,QAAAzJ,OAAhB,CAAwC4J,CAAA,EAAxC,CAC0C,GAAtC,GAAItI,CAAAmI,QAAA,CAAgBG,CAAhB,CAAAC,WAAJ,GACIvI,CAAAmI,QAAA,CAAgBG,CAAhB,CAAAC,WADJ,CACoC,MADpC,CAQZ,KAAK9I,CAAL,CAAmB,CAAnB,CAAsBA,CAAtB,CAAoCoI,CAAAnJ,OAApC,CAA8De,CAAA,EAA9D,CAA6E,CACzEO,CAAA,CAAU6H,CAAA,CAAkBpI,CAAlB,CAGVkI,EAAA,CAAO,EACP,KAAKC,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB1J,CAAA,CAAQ,CAAR,CAAAQ,OAAhB,CAAmCkJ,CAAA,EAAnC,CACID,CAAA,CAAKC,CAAL,CAAA;AAAU5H,CAAAwI,KAAA,CAAatK,CAAb,CAAsB0J,CAAtB,CAIdjI,EAAA,CAAOF,CAAP,CAAA,CAAsB,CAClBkI,KAAMA,CADY,CAGlB3H,EAAAI,KAAJ,GACIT,CAAA,CAAOF,CAAP,CAAAW,KADJ,CAC+BJ,CAAAI,KAD/B,CAGa,WAAb,GAAIlB,CAAJ,GACIS,CAAA,CAAOF,CAAP,CAAAgJ,eADJ,CACyC,CADzC,CAhByE,CAwB7E5K,CAAA,CAAe,CACX8B,OAAQA,CADG,CAGXT,EAAJ,GACIrB,CAAAwH,MAGA,CAHqB,CACjBnG,KAAMA,CADW,CAGrB,CAAa,UAAb,GAAIA,CAAJ,GACIrB,CAAAwH,MAAAqD,YADJ,CACqC,CAAA,CADrC,CAJJ,CASIzK,EAAA6C,SAAJ,EACI7C,CAAA6C,SAAA,CAAiBjD,CAAjB,CAKAI,EAAA6J,cAAJ,EACI7J,CAAA6J,cAAA,CAAsBjK,CAAtB,CAhHuC,CApB9B,CApmBS,CAAlC,CA+uBAb,EAAAW,KAAA,CAAkBA,CAClBX,EAAA2K,KAAA,CAAkBgB,QAAQ,CAAC1K,CAAD,CAAUJ,CAAV,CAAwB,CAC9C,MAAO,KAAIF,CAAJ,CAASM,CAAT,CAAkBJ,CAAlB,CADuC,CAMlDb,EAAA4L,KAAA,CAAgB5L,CAAA6L,MAAA7K,UAAhB,CAA4C,MAA5C,CAAoD,QAAQ,CAAC8K,CAAD,CAAUC,CAAV,CAAuBC,CAAvB,CAAiC,CACzF,IAAI1J,EAAQ,IAERyJ,EAAJ,EAAmBA,CAAApB,KAAnB,CACI3K,CAAA2K,KAAA,CAAgB3K,CAAAe,OAAA,CAAkBgL,CAAApB,KAAlB,CAAoC,CAEhDG,cAAeA,QAAQ,CAAClK,CAAD,CAAc,CAAA,IAC7B8B,CAD6B,CAC1BC,CAGP,IAAIoJ,CAAAE,eAAA,CAA2B,QAA3B,CAAJ,CACI,GAAkC,QAAlC,GAAI,MAAOF,EAAApJ,OAAX,CAEI,IADAD,CACA,CADIqE,IAAAC,IAAA,CAAS+E,CAAApJ,OAAAjB,OAAT;AAAoCd,CAAA+B,OAAAjB,OAApC,CACJ,CAAOgB,CAAA,EAAP,CAAA,CACIC,CACA,CADSoJ,CAAApJ,OAAA,CAAmBD,CAAnB,CACT,EADkC,EAClC,CAAAqJ,CAAApJ,OAAA,CAAmBD,CAAnB,CAAA,CAAwB1C,CAAAkM,MAAA,CAAiBvJ,CAAjB,CAAyB/B,CAAA+B,OAAA,CAAmBD,CAAnB,CAAzB,CAJhC,KAOI,QAAOqJ,CAAApJ,OAKfoJ,EAAA,CAAc/L,CAAAkM,MAAA,CAAiBtL,CAAjB,CAA8BmL,CAA9B,CAEdD,EAAA3B,KAAA,CAAa7H,CAAb,CAAoByJ,CAApB,CAAiCC,CAAjC,CAnBiC,CAFW,CAApC,CAAhB,CAuBID,CAvBJ,CADJ,CA0BID,CAAA3B,KAAA,CAAa7H,CAAb,CAAoByJ,CAApB,CAAiCC,CAAjC,CA7BqF,CAA7F,CA4CAtL,EAAA,CAAgBA,QAAQ,EAAG,CACvB,IAAAyK,QAAA,CAAe,EACf,KAAAgB,aAAA,CAAoB,CAAA,CAFG,CAW3BzL,EAAAM,UAAAgK,gBAAA,CAA0CoB,QAAQ,CAAC9B,CAAD,CAAc,CAC5D,IACI+B,EAAgB,CAAA,CAKpBjM,EAAA,CANc4C,IAMTmI,QAAL,CAAsB,QAAQ,CAACmB,CAAD,CAAS,CACRhJ,IAAAA,EAA3B,GAAIgJ,CAAAjB,YAAJ,GACIiB,CAAAjB,YADJ,CACyBf,CAAAS,MAAA,EADzB,CADmC,CAAvC,CASA3K,EAAA,CAfc4C,IAeTmI,QAAL,CAAsB,QAAQ,CAACmB,CAAD,CAAS,CACRhJ,IAAAA,EAA3B,GAAIgJ,CAAAjB,YAAJ,GACIgB,CADJ,CACoB,CAAA,CADpB,CADmC,CAAvC,CAMA,OAAOA,EAtBqD,CAgChE3L,EAAAM,UAAAwK,KAAA,CAA+Be,QAAQ,CAACrL,CAAD,CAAUsL,CAAV,CAAoB,CAAA,IAEnDL,EADUnJ,IACKmJ,aAFoC,CAGnDM,EAAQN,CAAA,CAAe,EAAf,CAAoB,EAHuB,CAInDO,CAIJtM,EAAA,CAPc4C,IAOTmI,QAAL,CAAsB,QAAQ,CAACmB,CAAD,CAAS,CACnC,IAAIK,EAAQzL,CAAA,CAAQoL,CAAAjB,YAAR,CAAA,CAA4BmB,CAA5B,CACRL;CAAJ,CACIM,CAAA7J,KAAA,CAAW+J,CAAX,CADJ,CAGIF,CAAA,CAAMH,CAAAf,WAAN,CAHJ,CAG+BoB,CALI,CAAvC,CAUkBrJ,KAAAA,EAAlB,GAAI,IAAAF,KAAJ,EAAyD,CAAzD,EAjBcJ,IAiBiBmI,QAAAzJ,OAA/B,GACIgL,CACA,CAnBU1J,IAkBM0H,2BAAA,EAChB,CAA4B,CAA5B,EAAIgC,CAAAhL,OAAJ,GAEIgL,CAAA3B,MAAA,EAMA,CAHA2B,CAAAxD,KAAA,EAGA,CAAA,IAAA9F,KAAA,CAAYlC,CAAA,CAAQwL,CAAA3B,MAAA,EAAR,CAAA3H,KARhB,CAFJ,CAcA,OAAOqJ,EAhCgD,CA0C3D/L,EAAAM,UAAAkC,gBAAA,CAA0C0J,QAAQ,CAACvB,CAAD,CAAcE,CAAd,CAA0B,CACxE,IAAAJ,QAAAvI,KAAA,CAAkB,CACdyI,YAAaA,CADC,CAEdE,WAAYA,CAFE,CAAlB,CAKqB,IAArB,GAAMA,CAAN,EAA2C,GAA3C,GAA4BA,CAA5B,EAAiEjI,IAAAA,EAAjE,GAAkDiI,CAAlD,GACI,IAAAY,aADJ,CACwB,CAAA,CADxB,CANwE,CAgB5EzL,EAAAM,UAAA0J,2BAAA,CAAqDmC,QAAQ,EAAG,CAAA,IACxDnK,CADwD,CAExDoK,EAA0B,EAF8B,CAGxDC,CAEJ,KAAKrK,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAyI,QAAAzJ,OAAhB,CAAyCgB,CAAzC,EAA6C,CAA7C,CACIqK,CACA,CADe,IAAA5B,QAAA,CAAazI,CAAb,CACf,CAAiCY,IAAAA,EAAjC,GAAIyJ,CAAA1B,YAAJ,EACIyB,CAAAlK,KAAA,CAA6BmK,CAAA1B,YAA7B,CAIR,OAAOyB,EAZqD,CAoBhEpM;CAAAM,UAAAqC,UAAA,CAAoC2J,QAAQ,CAACzB,CAAD,CAAa,CAAA,IACjD7I,CADiD,CAC9CqK,CACP,KAAKrK,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB,IAAAyI,QAAAzJ,OAAhB,CAAyCgB,CAAzC,EAA6C,CAA7C,CAEI,GADAqK,CACI,CADW,IAAA5B,QAAA,CAAazI,CAAb,CACX,CAAAqK,CAAAxB,WAAA,GAA4BA,CAAhC,CACI,MAAO,CAAA,CALsC,CAx7BvC,CAArB,CAAA,CAm8BCvL,CAn8BD,CADkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","doc","win","document","each","objectEach","pick","inArray","isNumber","splat","SeriesBuilder","Data","dataOptions","chartOptions","init","extend","prototype","options","columns","rowsToColumns","rows","firstRowAsNames","decimalRegex","decimalPoint","RegExp","rawColumns","length","dataFound","parseCSV","parseTable","parseGoogleSpreadsheet","getColumnDistribution","xColumns","getValueCount","type","seriesTypes","pointArrayMap","globalType","chart","individualCounts","seriesBuilders","seriesIndex","i","series","push","seriesMapping","mapping","x","builder","numberOfValueColumnsNeeded","addColumnReader","val","name","hasReader","undefined","globalPointArrayMap","valueCount","global","individual","switchRowsAndColumns","parseTypes","parsed","complete","self","csv","startRow","endRow","Number","MAX_VALUE","startColumn","endColumn","itemDelimiter","lines","activeRowNo","replace","split","lineDelimiter","indexOf","line","rowNo","trimmed","trim","isComment","items","item","colNo","table","getElementById","getElementsByTagName","tr","children","tagName","innerHTML","googleSpreadsheetKey","gr","gc","jQuery","ajax","dataType","url","googleSpreadsheetWorksheet","error","success","json","cells","feed","entry","cell","cellCount","colCount","rowCount","Math","max","gs$cell","col","row","min","content","$t","column","str","inside","test","parseColumn","floatVal","trimVal","trimInsideVal","isXColumn","backup","descending","columnType","columnTypes","forceCategory","xAxis","parseFloat","isDatetime","isNumeric","dateVal","parseDate","diff","alternativeFormat","dateFormat","dateFormats","alternative","unsorted","mixed","sort","reverse","unshift","pop","regex","parser","match","Date","UTC","ret","key","format","parse","getTime","getTimezoneOffset","rowsLength","colsLength","call","getFreeIndexes","numberOfColumns","freeIndexes","freeIndexValues","referencedIndexes","s","getReferencedColumnIndexes","data","j","allSeriesBuilders","afterComplete","shift","populateColumns","index","splice","readers","typeCol","columnIndex","r","configName","read","turboThreshold","uniqueNames","Highcharts.data","wrap","Chart","proceed","userOptions","callback","hasOwnProperty","merge","pointIsArray","SeriesBuilder.prototype.populateColumns","enoughColumns","reader","SeriesBuilder.prototype.read","rowIndex","point","columnIndexes","value","SeriesBuilder.prototype.addColumnReader","SeriesBuilder.prototype.getReferencedColumnIndexes","referencedColumnIndexes","columnReader","SeriesBuilder.prototype.hasReader"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/data.src.js
@@ -0,0 +1,981 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Data module
*
* (c) 2012-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Data module
*
* (c) 2012-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
/* global jQuery */
 
// Utilities
var win = Highcharts.win,
doc = win.document,
each = Highcharts.each,
objectEach = Highcharts.objectEach,
pick = Highcharts.pick,
inArray = Highcharts.inArray,
isNumber = Highcharts.isNumber,
splat = Highcharts.splat,
SeriesBuilder;
 
 
// The Data constructor
var Data = function(dataOptions, chartOptions) {
this.init(dataOptions, chartOptions);
};
 
// Set the prototype properties
Highcharts.extend(Data.prototype, {
 
/**
* Initialize the Data object with the given options
*/
init: function(options, chartOptions) {
this.options = options;
this.chartOptions = chartOptions;
this.columns = options.columns || this.rowsToColumns(options.rows) || [];
this.firstRowAsNames = pick(options.firstRowAsNames, true);
this.decimalRegex = options.decimalPoint && new RegExp('^(-?[0-9]+)' + options.decimalPoint + '([0-9]+)$');
 
// This is a two-dimensional array holding the raw, trimmed string values
// with the same organisation as the columns array. It makes it possible
// for example to revert from interpreted timestamps to string-based
// categories.
this.rawColumns = [];
 
// No need to parse or interpret anything
if (this.columns.length) {
this.dataFound();
 
// Parse and interpret
} else {
 
// Parse a CSV string if options.csv is given
this.parseCSV();
 
// Parse a HTML table if options.table is given
this.parseTable();
 
// Parse a Google Spreadsheet
this.parseGoogleSpreadsheet();
}
 
},
 
/**
* Get the column distribution. For example, a line series takes a single column for
* Y values. A range series takes two columns for low and high values respectively,
* and an OHLC series takes four columns.
*/
getColumnDistribution: function() {
var chartOptions = this.chartOptions,
options = this.options,
xColumns = [],
getValueCount = function(type) {
return (Highcharts.seriesTypes[type || 'line'].prototype.pointArrayMap || [0]).length;
},
getPointArrayMap = function(type) {
return Highcharts.seriesTypes[type || 'line'].prototype.pointArrayMap;
},
globalType = chartOptions && chartOptions.chart && chartOptions.chart.type,
individualCounts = [],
seriesBuilders = [],
seriesIndex = 0,
i;
 
each((chartOptions && chartOptions.series) || [], function(series) {
individualCounts.push(getValueCount(series.type || globalType));
});
 
// Collect the x-column indexes from seriesMapping
each((options && options.seriesMapping) || [], function(mapping) {
xColumns.push(mapping.x || 0);
});
 
// If there are no defined series with x-columns, use the first column as x column
if (xColumns.length === 0) {
xColumns.push(0);
}
 
// Loop all seriesMappings and constructs SeriesBuilders from
// the mapping options.
each((options && options.seriesMapping) || [], function(mapping) {
var builder = new SeriesBuilder(),
numberOfValueColumnsNeeded = individualCounts[seriesIndex] || getValueCount(globalType),
seriesArr = (chartOptions && chartOptions.series) || [],
series = seriesArr[seriesIndex] || {},
pointArrayMap = getPointArrayMap(series.type || globalType) || ['y'];
 
// Add an x reader from the x property or from an undefined column
// if the property is not set. It will then be auto populated later.
builder.addColumnReader(mapping.x, 'x');
 
// Add all column mappings
objectEach(mapping, function(val, name) {
if (name !== 'x') {
builder.addColumnReader(val, name);
}
});
 
// Add missing columns
for (i = 0; i < numberOfValueColumnsNeeded; i++) {
if (!builder.hasReader(pointArrayMap[i])) {
//builder.addNextColumnReader(pointArrayMap[i]);
// Create and add a column reader for the next free column index
builder.addColumnReader(undefined, pointArrayMap[i]);
}
}
 
seriesBuilders.push(builder);
seriesIndex++;
});
 
var globalPointArrayMap = getPointArrayMap(globalType);
if (globalPointArrayMap === undefined) {
globalPointArrayMap = ['y'];
}
 
this.valueCount = {
global: getValueCount(globalType),
xColumns: xColumns,
individual: individualCounts,
seriesBuilders: seriesBuilders,
globalPointArrayMap: globalPointArrayMap
};
},
 
/**
* When the data is parsed into columns, either by CSV, table, GS or direct input,
* continue with other operations.
*/
dataFound: function() {
 
if (this.options.switchRowsAndColumns) {
this.columns = this.rowsToColumns(this.columns);
}
 
// Interpret the info about series and columns
this.getColumnDistribution();
 
// Interpret the values into right types
this.parseTypes();
 
// Handle columns if a handleColumns callback is given
if (this.parsed() !== false) {
 
// Complete if a complete callback is given
this.complete();
}
 
},
 
/**
* Parse a CSV input string
*/
parseCSV: function() {
var self = this,
options = this.options,
csv = options.csv,
columns = this.columns,
startRow = options.startRow || 0,
endRow = options.endRow || Number.MAX_VALUE,
startColumn = options.startColumn || 0,
endColumn = options.endColumn || Number.MAX_VALUE,
itemDelimiter,
lines,
activeRowNo = 0;
 
if (csv) {
 
lines = csv
.replace(/\r\n/g, '\n') // Unix
.replace(/\r/g, '\n') // Mac
.split(options.lineDelimiter || '\n');
 
itemDelimiter = options.itemDelimiter || (csv.indexOf('\t') !== -1 ? '\t' : ',');
 
each(lines, function(line, rowNo) {
var trimmed = self.trim(line),
isComment = trimmed.indexOf('#') === 0,
isBlank = trimmed === '',
items;
 
if (rowNo >= startRow && rowNo <= endRow && !isComment && !isBlank) {
items = line.split(itemDelimiter);
each(items, function(item, colNo) {
if (colNo >= startColumn && colNo <= endColumn) {
if (!columns[colNo - startColumn]) {
columns[colNo - startColumn] = [];
}
 
columns[colNo - startColumn][activeRowNo] = item;
}
});
activeRowNo += 1;
}
});
 
this.dataFound();
}
},
 
/**
* Parse a HTML table
*/
parseTable: function() {
var options = this.options,
table = options.table,
columns = this.columns,
startRow = options.startRow || 0,
endRow = options.endRow || Number.MAX_VALUE,
startColumn = options.startColumn || 0,
endColumn = options.endColumn || Number.MAX_VALUE;
 
if (table) {
 
if (typeof table === 'string') {
table = doc.getElementById(table);
}
 
each(table.getElementsByTagName('tr'), function(tr, rowNo) {
if (rowNo >= startRow && rowNo <= endRow) {
each(tr.children, function(item, colNo) {
if ((item.tagName === 'TD' || item.tagName === 'TH') && colNo >= startColumn && colNo <= endColumn) {
if (!columns[colNo - startColumn]) {
columns[colNo - startColumn] = [];
}
 
columns[colNo - startColumn][rowNo - startRow] = item.innerHTML;
}
});
}
});
 
this.dataFound(); // continue
}
},
 
/**
*/
parseGoogleSpreadsheet: function() {
var self = this,
options = this.options,
googleSpreadsheetKey = options.googleSpreadsheetKey,
columns = this.columns,
startRow = options.startRow || 0,
endRow = options.endRow || Number.MAX_VALUE,
startColumn = options.startColumn || 0,
endColumn = options.endColumn || Number.MAX_VALUE,
gr, // google row
gc; // google column
 
if (googleSpreadsheetKey) {
jQuery.ajax({
dataType: 'json',
url: 'https://spreadsheets.google.com/feeds/cells/' +
googleSpreadsheetKey + '/' + (options.googleSpreadsheetWorksheet || 'od6') +
'/public/values?alt=json-in-script&callback=?',
error: options.error,
success: function(json) {
// Prepare the data from the spreadsheat
var cells = json.feed.entry,
cell,
cellCount = cells.length,
colCount = 0,
rowCount = 0,
i;
 
// First, find the total number of columns and rows that
// are actually filled with data
for (i = 0; i < cellCount; i++) {
cell = cells[i];
colCount = Math.max(colCount, cell.gs$cell.col);
rowCount = Math.max(rowCount, cell.gs$cell.row);
}
 
// Set up arrays containing the column data
for (i = 0; i < colCount; i++) {
if (i >= startColumn && i <= endColumn) {
// Create new columns with the length of either end-start or rowCount
columns[i - startColumn] = [];
 
// Setting the length to avoid jslint warning
columns[i - startColumn].length = Math.min(rowCount, endRow - startRow);
}
}
 
// Loop over the cells and assign the value to the right
// place in the column arrays
for (i = 0; i < cellCount; i++) {
cell = cells[i];
gr = cell.gs$cell.row - 1; // rows start at 1
gc = cell.gs$cell.col - 1; // columns start at 1
 
// If both row and col falls inside start and end
// set the transposed cell value in the newly created columns
if (gc >= startColumn && gc <= endColumn &&
gr >= startRow && gr <= endRow) {
columns[gc - startColumn][gr - startRow] = cell.content.$t;
}
}
 
// Insert null for empty spreadsheet cells (#5298)
each(columns, function(column) {
for (i = 0; i < column.length; i++) {
if (column[i] === undefined) {
column[i] = null;
}
}
});
 
self.dataFound();
}
});
}
},
 
/**
* Trim a string from whitespace
*/
trim: function(str, inside) {
if (typeof str === 'string') {
str = str.replace(/^\s+|\s+$/g, '');
 
// Clear white space insdie the string, like thousands separators
if (inside && /^[0-9\s]+$/.test(str)) {
str = str.replace(/\s/g, '');
}
 
if (this.decimalRegex) {
str = str.replace(this.decimalRegex, '$1.$2');
}
}
return str;
},
 
/**
* Parse numeric cells in to number types and date types in to true dates.
*/
parseTypes: function() {
var columns = this.columns,
col = columns.length;
 
while (col--) {
this.parseColumn(columns[col], col);
}
 
},
 
/**
* Parse a single column. Set properties like .isDatetime and .isNumeric.
*/
parseColumn: function(column, col) {
var rawColumns = this.rawColumns,
columns = this.columns,
row = column.length,
val,
floatVal,
trimVal,
trimInsideVal,
firstRowAsNames = this.firstRowAsNames,
isXColumn = inArray(col, this.valueCount.xColumns) !== -1,
dateVal,
backup = [],
diff,
chartOptions = this.chartOptions,
descending,
columnTypes = this.options.columnTypes || [],
columnType = columnTypes[col],
forceCategory = isXColumn && ((chartOptions && chartOptions.xAxis && splat(chartOptions.xAxis)[0].type === 'category') || columnType === 'string');
 
if (!rawColumns[col]) {
rawColumns[col] = [];
}
while (row--) {
val = backup[row] || column[row];
 
trimVal = this.trim(val);
trimInsideVal = this.trim(val, true);
floatVal = parseFloat(trimInsideVal);
 
// Set it the first time
if (rawColumns[col][row] === undefined) {
rawColumns[col][row] = trimVal;
}
 
// Disable number or date parsing by setting the X axis type to category
if (forceCategory || (row === 0 && firstRowAsNames)) {
column[row] = trimVal;
 
} else if (+trimInsideVal === floatVal) { // is numeric
 
column[row] = floatVal;
 
// If the number is greater than milliseconds in a year, assume datetime
if (floatVal > 365 * 24 * 3600 * 1000 && columnType !== 'float') {
column.isDatetime = true;
} else {
column.isNumeric = true;
}
 
if (column[row + 1] !== undefined) {
descending = floatVal > column[row + 1];
}
 
// String, continue to determine if it is a date string or really a string
} else {
dateVal = this.parseDate(val);
// Only allow parsing of dates if this column is an x-column
if (isXColumn && isNumber(dateVal) && columnType !== 'float') { // is date
backup[row] = val;
column[row] = dateVal;
column.isDatetime = true;
 
// Check if the dates are uniformly descending or ascending. If they
// are not, chances are that they are a different time format, so check
// for alternative.
if (column[row + 1] !== undefined) {
diff = dateVal > column[row + 1];
if (diff !== descending && descending !== undefined) {
if (this.alternativeFormat) {
this.dateFormat = this.alternativeFormat;
row = column.length;
this.alternativeFormat = this.dateFormats[this.dateFormat].alternative;
} else {
column.unsorted = true;
}
}
descending = diff;
}
 
} else { // string
column[row] = trimVal === '' ? null : trimVal;
if (row !== 0 && (column.isDatetime || column.isNumeric)) {
column.mixed = true;
}
}
}
}
 
// If strings are intermixed with numbers or dates in a parsed column, it is an indication
// that parsing went wrong or the data was not intended to display as numbers or dates and
// parsing is too aggressive. Fall back to categories. Demonstrated in the
// highcharts/demo/column-drilldown sample.
if (isXColumn && column.mixed) {
columns[col] = rawColumns[col];
}
 
// If the 0 column is date or number and descending, reverse all columns.
if (isXColumn && descending && this.options.sort) {
for (col = 0; col < columns.length; col++) {
columns[col].reverse();
if (firstRowAsNames) {
columns[col].unshift(columns[col].pop());
}
}
}
},
 
/**
* A collection of available date formats, extendable from the outside to support
* custom date formats.
*/
dateFormats: {
'YYYY-mm-dd': {
regex: /^([0-9]{4})[\-\/\.]([0-9]{2})[\-\/\.]([0-9]{2})$/,
parser: function(match) {
return Date.UTC(+match[1], match[2] - 1, +match[3]);
}
},
'dd/mm/YYYY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
parser: function(match) {
return Date.UTC(+match[3], match[2] - 1, +match[1]);
},
alternative: 'mm/dd/YYYY' // different format with the same regex
},
'mm/dd/YYYY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{4})$/,
parser: function(match) {
return Date.UTC(+match[3], match[1] - 1, +match[2]);
}
},
'dd/mm/YY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
parser: function(match) {
return Date.UTC(+match[3] + 2000, match[2] - 1, +match[1]);
},
alternative: 'mm/dd/YY' // different format with the same regex
},
'mm/dd/YY': {
regex: /^([0-9]{1,2})[\-\/\.]([0-9]{1,2})[\-\/\.]([0-9]{2})$/,
parser: function(match) {
return Date.UTC(+match[3] + 2000, match[1] - 1, +match[2]);
}
}
},
 
/**
* Parse a date and return it as a number. Overridable through options.parseDate.
*/
parseDate: function(val) {
var parseDate = this.options.parseDate,
ret,
key,
format,
dateFormat = this.options.dateFormat || this.dateFormat,
match;
 
if (parseDate) {
ret = parseDate(val);
 
} else if (typeof val === 'string') {
// Auto-detect the date format the first time
if (!dateFormat) {
for (key in this.dateFormats) {
format = this.dateFormats[key];
match = val.match(format.regex);
if (match) {
this.dateFormat = dateFormat = key;
this.alternativeFormat = format.alternative;
ret = format.parser(match);
break;
}
}
// Next time, use the one previously found
} else {
format = this.dateFormats[dateFormat];
match = val.match(format.regex);
if (match) {
ret = format.parser(match);
}
}
// Fall back to Date.parse
if (!match) {
match = Date.parse(val);
// External tools like Date.js and MooTools extend Date object and
// returns a date.
if (typeof match === 'object' && match !== null && match.getTime) {
ret = match.getTime() - match.getTimezoneOffset() * 60000;
 
// Timestamp
} else if (isNumber(match)) {
ret = match - (new Date(match)).getTimezoneOffset() * 60000;
}
}
}
return ret;
},
 
/**
* Reorganize rows into columns
*/
rowsToColumns: function(rows) {
var row,
rowsLength,
col,
colsLength,
columns;
 
if (rows) {
columns = [];
rowsLength = rows.length;
for (row = 0; row < rowsLength; row++) {
colsLength = rows[row].length;
for (col = 0; col < colsLength; col++) {
if (!columns[col]) {
columns[col] = [];
}
columns[col][row] = rows[row][col];
}
}
}
return columns;
},
 
/**
* A hook for working directly on the parsed columns
*/
parsed: function() {
if (this.options.parsed) {
return this.options.parsed.call(this, this.columns);
}
},
 
getFreeIndexes: function(numberOfColumns, seriesBuilders) {
var s,
i,
freeIndexes = [],
freeIndexValues = [],
referencedIndexes;
 
// Add all columns as free
for (i = 0; i < numberOfColumns; i = i + 1) {
freeIndexes.push(true);
}
 
// Loop all defined builders and remove their referenced columns
for (s = 0; s < seriesBuilders.length; s = s + 1) {
referencedIndexes = seriesBuilders[s].getReferencedColumnIndexes();
 
for (i = 0; i < referencedIndexes.length; i = i + 1) {
freeIndexes[referencedIndexes[i]] = false;
}
}
 
// Collect the values for the free indexes
for (i = 0; i < freeIndexes.length; i = i + 1) {
if (freeIndexes[i]) {
freeIndexValues.push(i);
}
}
 
return freeIndexValues;
},
 
/**
* If a complete callback function is provided in the options, interpret the
* columns into a Highcharts options object.
*/
complete: function() {
 
var columns = this.columns,
xColumns = [],
type,
options = this.options,
series,
data,
i,
j,
r,
seriesIndex,
chartOptions,
allSeriesBuilders = [],
builder,
freeIndexes,
typeCol,
index;
 
xColumns.length = columns.length;
if (options.complete || options.afterComplete) {
 
// Get the names and shift the top row
for (i = 0; i < columns.length; i++) {
if (this.firstRowAsNames) {
columns[i].name = columns[i].shift();
}
}
 
// Use the next columns for series
series = [];
freeIndexes = this.getFreeIndexes(columns.length, this.valueCount.seriesBuilders);
 
// Populate defined series
for (seriesIndex = 0; seriesIndex < this.valueCount.seriesBuilders.length; seriesIndex++) {
builder = this.valueCount.seriesBuilders[seriesIndex];
 
// If the builder can be populated with remaining columns, then add it to allBuilders
if (builder.populateColumns(freeIndexes)) {
allSeriesBuilders.push(builder);
}
}
 
// Populate dynamic series
while (freeIndexes.length > 0) {
builder = new SeriesBuilder();
builder.addColumnReader(0, 'x');
 
// Mark index as used (not free)
index = inArray(0, freeIndexes);
if (index !== -1) {
freeIndexes.splice(index, 1);
}
 
for (i = 0; i < this.valueCount.global; i++) {
// Create and add a column reader for the next free column index
builder.addColumnReader(undefined, this.valueCount.globalPointArrayMap[i]);
}
 
// If the builder can be populated with remaining columns, then add it to allBuilders
if (builder.populateColumns(freeIndexes)) {
allSeriesBuilders.push(builder);
}
}
 
// Get the data-type from the first series x column
if (allSeriesBuilders.length > 0 && allSeriesBuilders[0].readers.length > 0) {
typeCol = columns[allSeriesBuilders[0].readers[0].columnIndex];
if (typeCol !== undefined) {
if (typeCol.isDatetime) {
type = 'datetime';
} else if (!typeCol.isNumeric) {
type = 'category';
}
}
}
// Axis type is category, then the "x" column should be called "name"
if (type === 'category') {
for (seriesIndex = 0; seriesIndex < allSeriesBuilders.length; seriesIndex++) {
builder = allSeriesBuilders[seriesIndex];
for (r = 0; r < builder.readers.length; r++) {
if (builder.readers[r].configName === 'x') {
builder.readers[r].configName = 'name';
}
}
}
}
 
// Read data for all builders
for (seriesIndex = 0; seriesIndex < allSeriesBuilders.length; seriesIndex++) {
builder = allSeriesBuilders[seriesIndex];
 
// Iterate down the cells of each column and add data to the series
data = [];
for (j = 0; j < columns[0].length; j++) {
data[j] = builder.read(columns, j);
}
 
// Add the series
series[seriesIndex] = {
data: data
};
if (builder.name) {
series[seriesIndex].name = builder.name;
}
if (type === 'category') {
series[seriesIndex].turboThreshold = 0;
}
}
 
 
 
// Do the callback
chartOptions = {
series: series
};
if (type) {
chartOptions.xAxis = {
type: type
};
if (type === 'category') {
chartOptions.xAxis.uniqueNames = false;
}
}
 
if (options.complete) {
options.complete(chartOptions);
}
 
// The afterComplete hook is used internally to avoid conflict with the externally
// available complete option.
if (options.afterComplete) {
options.afterComplete(chartOptions);
}
}
}
});
 
// Register the Data prototype and data function on Highcharts
Highcharts.Data = Data;
Highcharts.data = function(options, chartOptions) {
return new Data(options, chartOptions);
};
 
// Extend Chart.init so that the Chart constructor accepts a new configuration
// option group, data.
Highcharts.wrap(Highcharts.Chart.prototype, 'init', function(proceed, userOptions, callback) {
var chart = this;
 
if (userOptions && userOptions.data) {
Highcharts.data(Highcharts.extend(userOptions.data, {
 
afterComplete: function(dataOptions) {
var i, series;
 
// Merge series configs
if (userOptions.hasOwnProperty('series')) {
if (typeof userOptions.series === 'object') {
i = Math.max(userOptions.series.length, dataOptions.series.length);
while (i--) {
series = userOptions.series[i] || {};
userOptions.series[i] = Highcharts.merge(series, dataOptions.series[i]);
}
} else { // Allow merging in dataOptions.series (#2856)
delete userOptions.series;
}
}
 
// Do the merge
userOptions = Highcharts.merge(dataOptions, userOptions);
 
proceed.call(chart, userOptions, callback);
}
}), userOptions);
} else {
proceed.call(chart, userOptions, callback);
}
});
 
/**
* Creates a new SeriesBuilder. A SeriesBuilder consists of a number
* of ColumnReaders that reads columns and give them a name.
* Ex: A series builder can be constructed to read column 3 as 'x' and
* column 7 and 8 as 'y1' and 'y2'.
* The output would then be points/rows of the form {x: 11, y1: 22, y2: 33}
*
* The name of the builder is taken from the second column. In the above
* example it would be the column with index 7.
* @constructor
*/
SeriesBuilder = function() {
this.readers = [];
this.pointIsArray = true;
};
 
/**
* Populates readers with column indexes. A reader can be added without
* a specific index and for those readers the index is taken sequentially
* from the free columns (this is handled by the ColumnCursor instance).
* @returns {boolean}
*/
SeriesBuilder.prototype.populateColumns = function(freeIndexes) {
var builder = this,
enoughColumns = true;
 
// Loop each reader and give it an index if its missing.
// The freeIndexes.shift() will return undefined if there
// are no more columns.
each(builder.readers, function(reader) {
if (reader.columnIndex === undefined) {
reader.columnIndex = freeIndexes.shift();
}
});
 
// Now, all readers should have columns mapped. If not
// then return false to signal that this series should
// not be added.
each(builder.readers, function(reader) {
if (reader.columnIndex === undefined) {
enoughColumns = false;
}
});
 
return enoughColumns;
};
 
/**
* Reads a row from the dataset and returns a point or array depending
* on the names of the readers.
* @param columns
* @param rowIndex
* @returns {Array | Object}
*/
SeriesBuilder.prototype.read = function(columns, rowIndex) {
var builder = this,
pointIsArray = builder.pointIsArray,
point = pointIsArray ? [] : {},
columnIndexes;
 
// Loop each reader and ask it to read its value.
// Then, build an array or point based on the readers names.
each(builder.readers, function(reader) {
var value = columns[reader.columnIndex][rowIndex];
if (pointIsArray) {
point.push(value);
} else {
point[reader.configName] = value;
}
});
 
// The name comes from the first column (excluding the x column)
if (this.name === undefined && builder.readers.length >= 2) {
columnIndexes = builder.getReferencedColumnIndexes();
if (columnIndexes.length >= 2) {
// remove the first one (x col)
columnIndexes.shift();
 
// Sort the remaining
columnIndexes.sort();
 
// Now use the lowest index as name column
this.name = columns[columnIndexes.shift()].name;
}
}
 
return point;
};
 
/**
* Creates and adds ColumnReader from the given columnIndex and configName.
* ColumnIndex can be undefined and in that case the reader will be given
* an index when columns are populated.
* @param columnIndex {Number | undefined}
* @param configName
*/
SeriesBuilder.prototype.addColumnReader = function(columnIndex, configName) {
this.readers.push({
columnIndex: columnIndex,
configName: configName
});
 
if (!(configName === 'x' || configName === 'y' || configName === undefined)) {
this.pointIsArray = false;
}
};
 
/**
* Returns an array of column indexes that the builder will use when
* reading data.
* @returns {Array}
*/
SeriesBuilder.prototype.getReferencedColumnIndexes = function() {
var i,
referencedColumnIndexes = [],
columnReader;
 
for (i = 0; i < this.readers.length; i = i + 1) {
columnReader = this.readers[i];
if (columnReader.columnIndex !== undefined) {
referencedColumnIndexes.push(columnReader.columnIndex);
}
}
 
return referencedColumnIndexes;
};
 
/**
* Returns true if the builder has a reader for the given configName.
* @param configName
* @returns {boolean}
*/
SeriesBuilder.prototype.hasReader = function(configName) {
var i, columnReader;
for (i = 0; i < this.readers.length; i = i + 1) {
columnReader = this.readers[i];
if (columnReader.configName === configName) {
return true;
}
}
// Else return undefined
};
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/drilldown.js
@@ -0,0 +1,25 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Highcharts Drilldown module
 
Author: Torstein Honsi
License: www.highcharts.com/license
 
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(f){var n=f.noop,A=f.color,B=f.defaultOptions,h=f.each,p=f.extend,H=f.format,C=f.objectEach,v=f.pick,r=f.wrap,q=f.Chart,w=f.seriesTypes,D=w.pie,t=w.column,E=f.Tick,x=f.fireEvent,F=f.inArray,G=1;p(B.lang,{drillUpText:"\u25c1 Back to {series.name}"});B.drilldown={animation:{duration:500},drillUpButton:{position:{align:"right",x:-10,y:10}}};f.SVGRenderer.prototype.Element.prototype.fadeIn=function(a){this.attr({opacity:.1,
visibility:"inherit"}).animate({opacity:v(this.newOpacity,1)},a||{duration:250})};q.prototype.addSeriesAsDrilldown=function(a,b){this.addSingleSeriesAsDrilldown(a,b);this.applyDrilldown()};q.prototype.addSingleSeriesAsDrilldown=function(a,b){var d=a.series,c=d.xAxis,e=d.yAxis,g,k=[],l=[],u,m,y;y={colorIndex:v(a.colorIndex,d.colorIndex)};this.drilldownLevels||(this.drilldownLevels=[]);u=d.options._levelNumber||0;(m=this.drilldownLevels[this.drilldownLevels.length-1])&&m.levelNumber!==u&&(m=void 0);
b=p(p({_ddSeriesId:G++},y),b);g=F(a,d.points);h(d.chart.series,function(a){a.xAxis!==c||a.isDrilling||(a.options._ddSeriesId=a.options._ddSeriesId||G++,a.options._colorIndex=a.userOptions._colorIndex,a.options._levelNumber=a.options._levelNumber||u,m?(k=m.levelSeries,l=m.levelSeriesOptions):(k.push(a),l.push(a.options)))});a=p({levelNumber:u,seriesOptions:d.options,levelSeriesOptions:l,levelSeries:k,shapeArgs:a.shapeArgs,bBox:a.graphic?a.graphic.getBBox():{},color:a.isNull?(new f.Color(A)).setOpacity(0).get():
A,lowerSeriesOptions:b,pointOptions:d.options.data[g],pointIndex:g,oldExtremes:{xMin:c&&c.userMin,xMax:c&&c.userMax,yMin:e&&e.userMin,yMax:e&&e.userMax}},y);this.drilldownLevels.push(a);c&&c.names&&(c.names.length=0);b=a.lowerSeries=this.addSeries(b,!1);b.options._levelNumber=u+1;c&&(c.oldPos=c.pos,c.userMin=c.userMax=null,e.userMin=e.userMax=null);d.type===b.type&&(b.animate=b.animateDrilldown||n,b.options.animation=!0)};q.prototype.applyDrilldown=function(){var a=this.drilldownLevels,b;a&&0<a.length&&
(b=a[a.length-1].levelNumber,h(this.drilldownLevels,function(a){a.levelNumber===b&&h(a.levelSeries,function(a){a.options&&a.options._levelNumber===b&&a.remove(!1)})}));this.redraw();this.showDrillUpButton()};q.prototype.getDrilldownBackText=function(){var a=this.drilldownLevels;if(a&&0<a.length)return a=a[a.length-1],a.series=a.seriesOptions,H(this.options.lang.drillUpText,a)};q.prototype.showDrillUpButton=function(){var a=this,b=this.getDrilldownBackText(),d=a.options.drilldown.drillUpButton,c,e;
this.drillUpButton?this.drillUpButton.attr({text:b}).align():(e=(c=d.theme)&&c.states,this.drillUpButton=this.renderer.button(b,null,null,function(){a.drillUp()},c,e&&e.hover,e&&e.select).addClass("highcharts-drillup-button").attr({align:d.position.align,zIndex:7}).add().align(d.position,!1,d.relativeTo||"plotBox"))};q.prototype.drillUp=function(){for(var a=this,b=a.drilldownLevels,d=b[b.length-1].levelNumber,c=b.length,e=a.series,g,k,l,f,m=function(c){var b;h(e,function(a){a.options._ddSeriesId===
c._ddSeriesId&&(b=a)});b=b||a.addSeries(c,!1);b.type===l.type&&b.animateDrillupTo&&(b.animate=b.animateDrillupTo);c===k.seriesOptions&&(f=b)};c--;)if(k=b[c],k.levelNumber===d){b.pop();l=k.lowerSeries;if(!l.chart)for(g=e.length;g--;)if(e[g].options.id===k.lowerSeriesOptions.id&&e[g].options._levelNumber===d+1){l=e[g];break}l.xData=[];h(k.levelSeriesOptions,m);x(a,"drillup",{seriesOptions:k.seriesOptions});f.type===l.type&&(f.drilldownLevel=k,f.options.animation=a.options.drilldown.animation,l.animateDrillupFrom&&
l.chart&&l.animateDrillupFrom(k));f.options._levelNumber=d;l.remove(!1);f.xAxis&&(g=k.oldExtremes,f.xAxis.setExtremes(g.xMin,g.xMax,!1),f.yAxis.setExtremes(g.yMin,g.yMax,!1))}x(a,"drillupall");this.redraw();0===this.drilldownLevels.length?this.drillUpButton=this.drillUpButton.destroy():this.drillUpButton.attr({text:this.getDrilldownBackText()}).align();this.ddDupes.length=[]};t.prototype.animateDrillupTo=function(a){if(!a){var b=this,d=b.drilldownLevel;h(this.points,function(a){var b=a.dataLabel;
a.graphic&&a.graphic.hide();b&&(b.hidden="hidden"===b.attr("visibility"),b.hidden||(b.hide(),a.connector&&a.connector.hide()))});setTimeout(function(){b.points&&h(b.points,function(a,b){b=b===(d&&d.pointIndex)?"show":"fadeIn";var c="show"===b?!0:void 0,e=a.dataLabel;if(a.graphic)a.graphic[b](c);if(e&&!e.hidden&&(e[b](c),a.connector))a.connector[b](c)})},Math.max(this.chart.options.drilldown.animation.duration-50,0));this.animate=n}};t.prototype.animateDrilldown=function(a){var b=this,d=this.chart.drilldownLevels,
c,e=this.chart.options.drilldown.animation,g=this.xAxis;a||(h(d,function(a){b.options._ddSeriesId===a.lowerSeriesOptions._ddSeriesId&&(c=a.shapeArgs)}),c.x+=v(g.oldPos,g.pos)-g.pos,h(this.points,function(a){a.graphic&&a.graphic.attr(c).animate(p(a.shapeArgs,{fill:a.color||b.color}),e);a.dataLabel&&a.dataLabel.fadeIn(e)}),this.animate=null)};t.prototype.animateDrillupFrom=function(a){var b=this.chart.options.drilldown.animation,d=this.group,c=d!==this.chart.seriesGroup,e=this;h(e.trackerGroups,function(a){if(e[a])e[a].on("mouseover")});
c&&delete this.group;h(this.points,function(e){var g=e.graphic,l=a.shapeArgs,h=function(){g.destroy();d&&c&&(d=d.destroy())};g&&(delete e.graphic,b?g.animate(l,f.merge(b,{complete:h})):(g.attr(l),h()))})};D&&p(D.prototype,{animateDrillupTo:t.prototype.animateDrillupTo,animateDrillupFrom:t.prototype.animateDrillupFrom,animateDrilldown:function(a){var b=this.chart.options.drilldown.animation,d=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1].shapeArgs,c=d.start,e=(d.end-c)/this.points.length;
a||(h(this.points,function(a,k){var g=a.shapeArgs;if(a.graphic)a.graphic.attr(f.merge(d,{start:c+k*e,end:c+(k+1)*e}))[b?"animate":"attr"](g,b)}),this.animate=null)}});f.Point.prototype.doDrilldown=function(a,b,d){var c=this.series.chart,e=c.options.drilldown,g=(e.series||[]).length,f;c.ddDupes||(c.ddDupes=[]);for(;g--&&!f;)e.series[g].id===this.drilldown&&-1===F(this.drilldown,c.ddDupes)&&(f=e.series[g],c.ddDupes.push(this.drilldown));x(c,"drilldown",{point:this,seriesOptions:f,category:b,originalEvent:d,
points:void 0!==b&&this.series.xAxis.getDDPoints(b).slice(0)},function(b){var c=b.point.series&&b.point.series.chart,d=b.seriesOptions;c&&d&&(a?c.addSingleSeriesAsDrilldown(b.point,d):c.addSeriesAsDrilldown(b.point,d))})};f.Axis.prototype.drilldownCategory=function(a,b){C(this.getDDPoints(a),function(d){d&&d.series&&d.series.visible&&d.doDrilldown&&d.doDrilldown(!0,a,b)});this.chart.applyDrilldown()};f.Axis.prototype.getDDPoints=function(a){var b=[];h(this.series,function(d){var c,e=d.xData,g=d.points;
for(c=0;c<e.length;c++)if(e[c]===a&&d.options.data[c]&&d.options.data[c].drilldown){b.push(g?g[c]:!0);break}});return b};E.prototype.drillable=function(){var a=this.pos,b=this.label,d=this.axis,c="xAxis"===d.coll&&d.getDDPoints,e=c&&d.getDDPoints(a);c&&(b&&e.length?(b.drillable=!0,b.addClass("highcharts-drilldown-axis-label").on("click",function(b){d.drilldownCategory(a,b)})):b&&b.drillable&&(b.on("click",null),b.removeClass("highcharts-drilldown-axis-label")))};r(E.prototype,"addLabel",function(a){a.call(this);
this.drillable()});r(f.Point.prototype,"init",function(a,b,d,c){var e=a.call(this,b,d,c);c=(a=b.xAxis)&&a.ticks[c];e.drilldown&&f.addEvent(e,"click",function(a){b.xAxis&&!1===b.chart.options.drilldown.allowPointDrilldown?b.xAxis.drilldownCategory(e.x,a):e.doDrilldown(void 0,void 0,a)});c&&c.drillable();return e});r(f.Series.prototype,"drawDataLabels",function(a){var b=this.chart.options.drilldown.activeDataLabelStyle,d=this.chart.renderer;a.call(this);h(this.points,function(a){var c=a.options.dataLabels,
f=v(a.dlOptions,c&&c.style,{});a.drilldown&&a.dataLabel&&("contrast"===b.color&&(f.color=d.getContrast(a.color||this.color)),c&&c.color&&(f.color=c.color),a.dataLabel.addClass("highcharts-drilldown-data-label"))},this)});var z=function(a,b,d){a[d?"addClass":"removeClass"]("highcharts-drilldown-point")},I=function(a){a.call(this);h(this.points,function(a){a.drilldown&&a.graphic&&z(a.graphic,"pointer",!0)})},J=function(a,b){var d=a.apply(this,Array.prototype.slice.call(arguments,1));this.drilldown&&
this.series.halo&&"hover"===b?z(this.series.halo,"pointer",!0):this.series.halo&&z(this.series.halo,"auto",!1);return d};C(w,function(a){r(a.prototype,"drawTracker",I);r(a.prototype.pointClass.prototype,"setState",J)})})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/drilldown.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":25,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","noop","color","defaultOptions","each","extend","format","objectEach","pick","wrap","Chart","seriesTypes","PieSeries","pie","ColumnSeries","column","Tick","fireEvent","inArray","ddSeriesId","lang","drillUpText","drilldown","animation","duration","drillUpButton","position","align","x","y","SVGRenderer","prototype","Element","fadeIn","H.SVGRenderer.prototype.Element.prototype.fadeIn","attr","opacity","visibility","animate","newOpacity","addSeriesAsDrilldown","Chart.prototype.addSeriesAsDrilldown","point","options","addSingleSeriesAsDrilldown","applyDrilldown","Chart.prototype.addSingleSeriesAsDrilldown","ddOptions","oldSeries","series","xAxis","yAxis","pointIndex","levelSeries","levelSeriesOptions","levelNumber","last","colorProp","colorIndex","drilldownLevels","_levelNumber","length","undefined","_ddSeriesId","points","chart","isDrilling","_colorIndex","userOptions","push","level","seriesOptions","shapeArgs","bBox","graphic","getBBox","isNull","setOpacity","Color","get","lowerSeriesOptions","pointOptions","data","oldExtremes","xMin","userMin","xMax","userMax","yMin","yMax","names","newSeries","lowerSeries","addSeries","oldPos","pos","type","animateDrilldown","Chart.prototype.applyDrilldown","levelToRemove","remove","redraw","showDrillUpButton","getDrilldownBackText","Chart.prototype.getDrilldownBackText","lastLevel","Chart.prototype.showDrillUpButton","backText","buttonOptions","states","text","theme","renderer","button","drillUp","hover","select","addClass","zIndex","add","relativeTo","Chart.prototype.drillUp","i","chartSeries","seriesI","addedSeries","animateDrillupTo","pop","id","xData","drilldownLevel","animateDrillupFrom","setExtremes","destroy","ddDupes","ColumnSeries.prototype.animateDrillupTo","init","dataLabel","hide","hidden","connector","setTimeout","verb","inherit","Math","max","ColumnSeries.prototype.animateDrilldown","animateFrom","animationOptions","fill","ColumnSeries.prototype.animateDrillupFrom","group","removeGroup","seriesGroup","trackerGroups","key","on","animateTo","complete","merge","start","startAngle","end","Point","doDrilldown","H.Point.prototype.doDrilldown","_holdRedraw","category","originalEvent","getDDPoints","slice","e","Axis","drilldownCategory","H.Axis.prototype.drilldownCategory","visible","H.Axis.prototype.getDDPoints","ret","drillable","Tick.prototype.drillable","label","axis","isDrillable","coll","ddPointsX","removeClass","proceed","call","tick","ticks","addEvent","allowPointDrilldown","Series","css","activeDataLabelStyle","dataLabelsOptions","dataLabels","pointCSS","dlOptions","style","getContrast","applyCursorCSS","element","cursor","drawTrackerWrapper","setPointStateWrapper","state","apply","Array","arguments","halo","seriesType","pointClass"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/drilldown.src.js
@@ -0,0 +1,923 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Highcharts Drilldown module
*
* Author: Torstein Honsi
* License: www.highcharts.com/license
*
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Highcharts Drilldown module
*
* Author: Torstein Honsi
* License: www.highcharts.com/license
*
*/
 
 
var noop = H.noop,
color = H.color,
defaultOptions = H.defaultOptions,
each = H.each,
extend = H.extend,
format = H.format,
objectEach = H.objectEach,
pick = H.pick,
wrap = H.wrap,
Chart = H.Chart,
seriesTypes = H.seriesTypes,
PieSeries = seriesTypes.pie,
ColumnSeries = seriesTypes.column,
Tick = H.Tick,
fireEvent = H.fireEvent,
inArray = H.inArray,
ddSeriesId = 1;
 
// Add language
extend(defaultOptions.lang, {
drillUpText: '◁ Back to {series.name}'
});
 
/**
* Options for drill down, the concept of inspecting increasingly high
* resolution data through clicking on chart items like columns or pie slices.
*
* The drilldown feature requires the drilldown.js file to be loaded,
* found in the modules directory of the download package, or online at
* (code.highcharts.com/modules/drilldown.js)[code.highcharts.com/modules/drilldown.js].
*
* @type {Object}
* @optionparent drilldown
*/
defaultOptions.drilldown = {
 
 
/**
* Set the animation for all drilldown animations. Animation of a drilldown
* occurs when drilling between a column point and a column series,
* or a pie slice and a full pie series. Drilldown can still be used
* between series and points of different types, but animation will
* not occur.
*
* The animation can either be set as a boolean or a configuration
* object. If `true`, it will use the 'swing' jQuery easing and a duration
* of 500 ms. If used as a configuration object, the following properties
* are supported:
*
* <dl>
*
* <dt>duration</dt>
*
* <dd>The duration of the animation in milliseconds.</dd>
*
* <dt>easing</dt>
*
* <dd>A string reference to an easing function set on the `Math` object.
* See [the easing demo](http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-
* animation-easing/).</dd>
*
* </dl>
*
* @type {Boolean|Object}
* @since 3.0.8
* @product highcharts highmaps
*/
animation: {
 
/**
*/
duration: 500
},
 
/**
* Options for the drill up button that appears when drilling down
* on a series. The text for the button is defined in [lang.drillUpText](#lang.
* drillUpText).
*
* @type {Object}
* @sample {highcharts} highcharts/drilldown/drillupbutton/ Drill up button
* @sample {highmaps} highcharts/drilldown/drillupbutton/ Drill up button
* @since 3.0.8
* @product highcharts highmaps
*/
drillUpButton: {
 
/**
* Positioning options for the button within the `relativeTo` box.
* Available properties are `x`, `y`, `align` and `verticalAlign`.
*
* @type {Object}
* @since 3.0.8
* @product highcharts highmaps
*/
position: {
 
/**
*/
align: 'right',
 
/**
*/
x: -10,
 
/**
*/
y: 10
}
// relativeTo: 'plotBox'
// theme
}
};
 
 
 
/**
* Fires when a drilldown point is clicked, before the new series is
* added. This event is also utilized for async drilldown, where the
* seriesOptions are not added by option, but rather loaded async. Note
* that when clicking a category label to trigger multiple series drilldown,
* one `drilldown` event is triggered per point in the category.
*
* Event arguments:
*
* <dl>
*
* <dt>`category`</dt>
*
* <dd>If a category label was clicked, which index.</dd>
*
* <dt>`point`</dt>
*
* <dd>The originating point.</dd>
*
* <dt>`originalEvent`</dt>
*
* <dd>The original browser event (usually click) that triggered the
* drilldown.</dd>
*
* <dt>`points`</dt>
*
* <dd>If a category label was clicked, this array holds all points
* corresponing to the category.</dd>
*
* <dt>`seriesOptions`</dt>
*
* <dd>Options for the new series</dd>
*
* </dl>
*
* @type {Function}
* @context Chart
* @sample {highcharts} highcharts/drilldown/async/ Async drilldown
* @since 3.0.8
* @product highcharts highmaps
* @apioption chart.events.drilldown
*/
 
/**
* Fires when drilling up from a drilldown series.
*
* @type {Function}
* @context Chart
* @since 3.0.8
* @product highcharts highmaps
* @apioption chart.events.drillup
*/
 
/**
* In a chart with multiple drilldown series, this event fires after
* all the series have been drilled up.
*
* @type {Function}
* @context Chart
* @since 4.2.4
* @product highcharts highmaps
* @apioption chart.events.drillupall
*/
 
/**
* A general fadeIn method
*/
H.SVGRenderer.prototype.Element.prototype.fadeIn = function(animation) {
this
.attr({
opacity: 0.1,
visibility: 'inherit'
})
.animate({
opacity: pick(this.newOpacity, 1) // newOpacity used in maps
}, animation || {
duration: 250
});
};
 
/**
* Add a series to the chart as drilldown from a specific point in the parent
* series. This method is used for async drilldown, when clicking a point in a
* series should result in loading and displaying a more high-resolution series.
* When not async, the setup is simpler using the {@link
* https://api.highcharts.com/highcharts/drilldown.series|drilldown.series}
* options structure.
*
* @memberOf Highcharts.Chart
* @function #addSeriesAsDrilldown
*
* @param {Highcharts.Point} point
* The point from which the drilldown will start.
* @param {SeriesOptions} options
* The series options for the new, detailed series.
*
* @sample highcharts/drilldown/async/ Async drilldown
*/
Chart.prototype.addSeriesAsDrilldown = function(point, options) {
this.addSingleSeriesAsDrilldown(point, options);
this.applyDrilldown();
};
Chart.prototype.addSingleSeriesAsDrilldown = function(point, ddOptions) {
var oldSeries = point.series,
xAxis = oldSeries.xAxis,
yAxis = oldSeries.yAxis,
newSeries,
pointIndex,
levelSeries = [],
levelSeriesOptions = [],
level,
levelNumber,
last,
colorProp;
 
 
 
colorProp = {
colorIndex: pick(point.colorIndex, oldSeries.colorIndex)
};
 
 
if (!this.drilldownLevels) {
this.drilldownLevels = [];
}
 
levelNumber = oldSeries.options._levelNumber || 0;
 
// See if we can reuse the registered series from last run
last = this.drilldownLevels[this.drilldownLevels.length - 1];
if (last && last.levelNumber !== levelNumber) {
last = undefined;
}
 
ddOptions = extend(extend({
_ddSeriesId: ddSeriesId++
}, colorProp), ddOptions);
pointIndex = inArray(point, oldSeries.points);
 
// Record options for all current series
each(oldSeries.chart.series, function(series) {
if (series.xAxis === xAxis && !series.isDrilling) {
series.options._ddSeriesId = series.options._ddSeriesId || ddSeriesId++;
series.options._colorIndex = series.userOptions._colorIndex;
series.options._levelNumber = series.options._levelNumber || levelNumber; // #3182
 
if (last) {
levelSeries = last.levelSeries;
levelSeriesOptions = last.levelSeriesOptions;
} else {
levelSeries.push(series);
levelSeriesOptions.push(series.options);
}
}
});
 
// Add a record of properties for each drilldown level
level = extend({
levelNumber: levelNumber,
seriesOptions: oldSeries.options,
levelSeriesOptions: levelSeriesOptions,
levelSeries: levelSeries,
shapeArgs: point.shapeArgs,
bBox: point.graphic ? point.graphic.getBBox() : {}, // no graphic in line series with markers disabled
color: point.isNull ? new H.Color(color).setOpacity(0).get() : color,
lowerSeriesOptions: ddOptions,
pointOptions: oldSeries.options.data[pointIndex],
pointIndex: pointIndex,
oldExtremes: {
xMin: xAxis && xAxis.userMin,
xMax: xAxis && xAxis.userMax,
yMin: yAxis && yAxis.userMin,
yMax: yAxis && yAxis.userMax
}
}, colorProp);
 
// Push it to the lookup array
this.drilldownLevels.push(level);
 
// Reset names to prevent extending (#6704)
if (xAxis && xAxis.names) {
xAxis.names.length = 0;
}
 
newSeries = level.lowerSeries = this.addSeries(ddOptions, false);
newSeries.options._levelNumber = levelNumber + 1;
if (xAxis) {
xAxis.oldPos = xAxis.pos;
xAxis.userMin = xAxis.userMax = null;
yAxis.userMin = yAxis.userMax = null;
}
 
// Run fancy cross-animation on supported and equal types
if (oldSeries.type === newSeries.type) {
newSeries.animate = newSeries.animateDrilldown || noop;
newSeries.options.animation = true;
}
};
 
Chart.prototype.applyDrilldown = function() {
var drilldownLevels = this.drilldownLevels,
levelToRemove;
 
if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
levelToRemove = drilldownLevels[drilldownLevels.length - 1].levelNumber;
each(this.drilldownLevels, function(level) {
if (level.levelNumber === levelToRemove) {
each(level.levelSeries, function(series) {
if (series.options && series.options._levelNumber === levelToRemove) { // Not removed, not added as part of a multi-series drilldown
series.remove(false);
}
});
}
});
}
 
this.redraw();
this.showDrillUpButton();
};
 
Chart.prototype.getDrilldownBackText = function() {
var drilldownLevels = this.drilldownLevels,
lastLevel;
if (drilldownLevels && drilldownLevels.length > 0) { // #3352, async loading
lastLevel = drilldownLevels[drilldownLevels.length - 1];
lastLevel.series = lastLevel.seriesOptions;
return format(this.options.lang.drillUpText, lastLevel);
}
 
};
 
Chart.prototype.showDrillUpButton = function() {
var chart = this,
backText = this.getDrilldownBackText(),
buttonOptions = chart.options.drilldown.drillUpButton,
attr,
states;
 
 
if (!this.drillUpButton) {
attr = buttonOptions.theme;
states = attr && attr.states;
 
this.drillUpButton = this.renderer.button(
backText,
null,
null,
function() {
chart.drillUp();
},
attr,
states && states.hover,
states && states.select
)
.addClass('highcharts-drillup-button')
.attr({
align: buttonOptions.position.align,
zIndex: 7
})
.add()
.align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox');
} else {
this.drillUpButton.attr({
text: backText
})
.align();
}
};
 
/**
* When the chart is drilled down to a child series, calling `chart.drillUp()`
* will drill up to the parent series. Requires the drilldown module.
*
* @function drillUp
* @memberOf Highcharts.Chart
*/
Chart.prototype.drillUp = function() {
var chart = this,
drilldownLevels = chart.drilldownLevels,
levelNumber = drilldownLevels[drilldownLevels.length - 1].levelNumber,
i = drilldownLevels.length,
chartSeries = chart.series,
seriesI,
level,
oldSeries,
newSeries,
oldExtremes,
addSeries = function(seriesOptions) {
var addedSeries;
each(chartSeries, function(series) {
if (series.options._ddSeriesId === seriesOptions._ddSeriesId) {
addedSeries = series;
}
});
 
addedSeries = addedSeries || chart.addSeries(seriesOptions, false);
if (addedSeries.type === oldSeries.type && addedSeries.animateDrillupTo) {
addedSeries.animate = addedSeries.animateDrillupTo;
}
if (seriesOptions === level.seriesOptions) {
newSeries = addedSeries;
}
};
 
while (i--) {
 
level = drilldownLevels[i];
if (level.levelNumber === levelNumber) {
drilldownLevels.pop();
 
// Get the lower series by reference or id
oldSeries = level.lowerSeries;
if (!oldSeries.chart) { // #2786
seriesI = chartSeries.length; // #2919
while (seriesI--) {
if (chartSeries[seriesI].options.id === level.lowerSeriesOptions.id &&
chartSeries[seriesI].options._levelNumber === levelNumber + 1) { // #3867
oldSeries = chartSeries[seriesI];
break;
}
}
}
oldSeries.xData = []; // Overcome problems with minRange (#2898)
 
each(level.levelSeriesOptions, addSeries);
 
fireEvent(chart, 'drillup', {
seriesOptions: level.seriesOptions
});
 
if (newSeries.type === oldSeries.type) {
newSeries.drilldownLevel = level;
newSeries.options.animation = chart.options.drilldown.animation;
 
if (oldSeries.animateDrillupFrom && oldSeries.chart) { // #2919
oldSeries.animateDrillupFrom(level);
}
}
newSeries.options._levelNumber = levelNumber;
 
oldSeries.remove(false);
 
// Reset the zoom level of the upper series
if (newSeries.xAxis) {
oldExtremes = level.oldExtremes;
newSeries.xAxis.setExtremes(oldExtremes.xMin, oldExtremes.xMax, false);
newSeries.yAxis.setExtremes(oldExtremes.yMin, oldExtremes.yMax, false);
}
}
}
 
// Fire a once-off event after all series have been drilled up (#5158)
fireEvent(chart, 'drillupall');
 
this.redraw();
 
if (this.drilldownLevels.length === 0) {
this.drillUpButton = this.drillUpButton.destroy();
} else {
this.drillUpButton.attr({
text: this.getDrilldownBackText()
})
.align();
}
 
this.ddDupes.length = []; // #3315
};
 
 
/**
* When drilling up, keep the upper series invisible until the lower series has
* moved into place
*/
ColumnSeries.prototype.animateDrillupTo = function(init) {
if (!init) {
var newSeries = this,
level = newSeries.drilldownLevel;
 
// First hide all items before animating in again
each(this.points, function(point) {
var dataLabel = point.dataLabel;
 
if (point.graphic) { // #3407
point.graphic.hide();
}
 
if (dataLabel) {
// The data label is initially hidden, make sure it is not faded
// in (#6127)
dataLabel.hidden = dataLabel.attr('visibility') === 'hidden';
 
if (!dataLabel.hidden) {
dataLabel.hide();
if (point.connector) {
point.connector.hide();
}
}
}
});
 
 
// Do dummy animation on first point to get to complete
setTimeout(function() {
if (newSeries.points) { // May be destroyed in the meantime, #3389
each(newSeries.points, function(point, i) {
// Fade in other points
var verb =
i === (level && level.pointIndex) ? 'show' : 'fadeIn',
inherit = verb === 'show' ? true : undefined,
dataLabel = point.dataLabel;
 
 
if (point.graphic) { // #3407
point.graphic[verb](inherit);
}
 
if (dataLabel && !dataLabel.hidden) { // #6127
dataLabel[verb](inherit);
if (point.connector) {
point.connector[verb](inherit);
}
}
});
}
}, Math.max(this.chart.options.drilldown.animation.duration - 50, 0));
 
// Reset
this.animate = noop;
}
 
};
 
ColumnSeries.prototype.animateDrilldown = function(init) {
var series = this,
drilldownLevels = this.chart.drilldownLevels,
animateFrom,
animationOptions = this.chart.options.drilldown.animation,
xAxis = this.xAxis;
 
if (!init) {
each(drilldownLevels, function(level) {
if (series.options._ddSeriesId === level.lowerSeriesOptions._ddSeriesId) {
animateFrom = level.shapeArgs;
 
}
});
 
animateFrom.x += (pick(xAxis.oldPos, xAxis.pos) - xAxis.pos);
 
each(this.points, function(point) {
var animateTo = point.shapeArgs;
 
 
 
if (point.graphic) {
point.graphic
.attr(animateFrom)
.animate(
extend(point.shapeArgs, {
fill: point.color || series.color
}),
animationOptions
);
}
if (point.dataLabel) {
point.dataLabel.fadeIn(animationOptions);
}
});
this.animate = null;
}
 
};
 
/**
* When drilling up, pull out the individual point graphics from the lower series
* and animate them into the origin point in the upper series.
*/
ColumnSeries.prototype.animateDrillupFrom = function(level) {
var animationOptions = this.chart.options.drilldown.animation,
group = this.group,
// For 3d column series all columns are added to one group
// so we should not delete the whole group. #5297
removeGroup = group !== this.chart.seriesGroup,
series = this;
 
// Cancel mouse events on the series group (#2787)
each(series.trackerGroups, function(key) {
if (series[key]) { // we don't always have dataLabelsGroup
series[key].on('mouseover');
}
});
 
if (removeGroup) {
delete this.group;
}
 
each(this.points, function(point) {
var graphic = point.graphic,
animateTo = level.shapeArgs,
complete = function() {
graphic.destroy();
if (group && removeGroup) {
group = group.destroy();
}
};
 
if (graphic) {
 
delete point.graphic;
 
 
 
if (animationOptions) {
graphic.animate(
animateTo,
H.merge(animationOptions, {
complete: complete
})
);
} else {
graphic.attr(animateTo);
complete();
}
}
});
};
 
if (PieSeries) {
extend(PieSeries.prototype, {
animateDrillupTo: ColumnSeries.prototype.animateDrillupTo,
animateDrillupFrom: ColumnSeries.prototype.animateDrillupFrom,
 
animateDrilldown: function(init) {
var level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1],
animationOptions = this.chart.options.drilldown.animation,
animateFrom = level.shapeArgs,
start = animateFrom.start,
angle = animateFrom.end - start,
startAngle = angle / this.points.length;
 
if (!init) {
each(this.points, function(point, i) {
var animateTo = point.shapeArgs;
 
 
 
if (point.graphic) {
point.graphic
.attr(H.merge(animateFrom, {
start: start + i * startAngle,
end: start + (i + 1) * startAngle
}))[animationOptions ? 'animate' : 'attr'](
animateTo,
animationOptions
);
}
});
this.animate = null;
}
}
});
}
 
H.Point.prototype.doDrilldown = function(_holdRedraw, category, originalEvent) {
var series = this.series,
chart = series.chart,
drilldown = chart.options.drilldown,
i = (drilldown.series || []).length,
seriesOptions;
 
if (!chart.ddDupes) {
chart.ddDupes = [];
}
 
while (i-- && !seriesOptions) {
if (drilldown.series[i].id === this.drilldown && inArray(this.drilldown, chart.ddDupes) === -1) {
seriesOptions = drilldown.series[i];
chart.ddDupes.push(this.drilldown);
}
}
 
// Fire the event. If seriesOptions is undefined, the implementer can check for
// seriesOptions, and call addSeriesAsDrilldown async if necessary.
fireEvent(chart, 'drilldown', {
point: this,
seriesOptions: seriesOptions,
category: category,
originalEvent: originalEvent,
points: category !== undefined && this.series.xAxis.getDDPoints(category).slice(0)
}, function(e) {
var chart = e.point.series && e.point.series.chart,
seriesOptions = e.seriesOptions;
if (chart && seriesOptions) {
if (_holdRedraw) {
chart.addSingleSeriesAsDrilldown(e.point, seriesOptions);
} else {
chart.addSeriesAsDrilldown(e.point, seriesOptions);
}
}
});
 
 
};
 
/**
* Drill down to a given category. This is the same as clicking on an axis label.
*/
H.Axis.prototype.drilldownCategory = function(x, e) {
objectEach(this.getDDPoints(x), function(point) {
if (point && point.series && point.series.visible && point.doDrilldown) { // #3197
point.doDrilldown(true, x, e);
}
});
this.chart.applyDrilldown();
};
 
/**
* Return drillable points for this specific X value
*/
H.Axis.prototype.getDDPoints = function(x) {
var ret = [];
each(this.series, function(series) {
var i,
xData = series.xData,
points = series.points;
 
for (i = 0; i < xData.length; i++) {
if (xData[i] === x && series.options.data[i] && series.options.data[i].drilldown) {
ret.push(points ? points[i] : true);
break;
}
}
});
return ret;
};
 
 
/**
* Make a tick label drillable, or remove drilling on update
*/
Tick.prototype.drillable = function() {
var pos = this.pos,
label = this.label,
axis = this.axis,
isDrillable = axis.coll === 'xAxis' && axis.getDDPoints,
ddPointsX = isDrillable && axis.getDDPoints(pos);
 
if (isDrillable) {
if (label && ddPointsX.length) {
label.drillable = true;
 
 
 
label
.addClass('highcharts-drilldown-axis-label')
 
.on('click', function(e) {
axis.drilldownCategory(pos, e);
});
 
} else if (label && label.drillable) {
 
 
 
label.on('click', null); // #3806
label.removeClass('highcharts-drilldown-axis-label');
}
}
};
 
/**
* Always keep the drillability updated (#3951)
*/
wrap(Tick.prototype, 'addLabel', function(proceed) {
proceed.call(this);
this.drillable();
});
 
 
/**
* On initialization of each point, identify its label and make it clickable. Also, provide a
* list of points associated to that label.
*/
wrap(H.Point.prototype, 'init', function(proceed, series, options, x) {
var point = proceed.call(this, series, options, x),
xAxis = series.xAxis,
tick = xAxis && xAxis.ticks[x];
 
if (point.drilldown) {
 
// Add the click event to the point
H.addEvent(point, 'click', function(e) {
if (series.xAxis && series.chart.options.drilldown.allowPointDrilldown === false) {
series.xAxis.drilldownCategory(point.x, e); // #5822, x changed
} else {
point.doDrilldown(undefined, undefined, e);
}
});
/*wrap(point, 'importEvents', function (proceed) { // wrapping importEvents makes point.click event work
if (!this.hasImportedEvents) {
proceed.call(this);
H.addEvent(this, 'click', function () {
this.doDrilldown();
});
}
});*/
 
}
 
// Add or remove click handler and style on the tick label
if (tick) {
tick.drillable();
}
 
return point;
});
 
wrap(H.Series.prototype, 'drawDataLabels', function(proceed) {
var css = this.chart.options.drilldown.activeDataLabelStyle,
renderer = this.chart.renderer;
 
proceed.call(this);
 
each(this.points, function(point) {
var dataLabelsOptions = point.options.dataLabels,
pointCSS = pick(
point.dlOptions,
dataLabelsOptions && dataLabelsOptions.style, {}
);
 
if (point.drilldown && point.dataLabel) {
if (css.color === 'contrast') {
pointCSS.color = renderer.getContrast(point.color || this.color);
}
if (dataLabelsOptions && dataLabelsOptions.color) {
pointCSS.color = dataLabelsOptions.color;
}
point.dataLabel
.addClass('highcharts-drilldown-data-label');
 
 
}
}, this);
});
 
 
var applyCursorCSS = function(element, cursor, addClass) {
element[addClass ? 'addClass' : 'removeClass']('highcharts-drilldown-point');
 
 
};
 
// Mark the trackers with a pointer
var drawTrackerWrapper = function(proceed) {
proceed.call(this);
each(this.points, function(point) {
if (point.drilldown && point.graphic) {
applyCursorCSS(point.graphic, 'pointer', true);
}
});
};
 
var setPointStateWrapper = function(proceed, state) {
var ret = proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
if (this.drilldown && this.series.halo && state === 'hover') {
applyCursorCSS(this.series.halo, 'pointer', true);
} else if (this.series.halo) {
applyCursorCSS(this.series.halo, 'auto', false);
}
return ret;
};
 
 
objectEach(seriesTypes, function(seriesType) {
wrap(seriesType.prototype, 'drawTracker', drawTrackerWrapper);
wrap(seriesType.prototype.pointClass.prototype, 'setState', setPointStateWrapper);
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/export-data.js
@@ -0,0 +1,17 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Exporting module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(d){var q=d.each,n=d.pick,k=d.win,p=k.document,a=d.seriesTypes,w=void 0!==p.createElement("a").download;d.setOptions({lang:{downloadCSV:"Download CSV",downloadXLS:"Download XLS",viewData:"View data table"}});d.Chart.prototype.getDataRows=function(){var h=(this.options.exporting||{}).csv||{},b,c=this.xAxis,g={},r=[],m=[],f,l,u=h.dateFormat||"%Y-%m-%d %H:%M:%S",k=h.columnHeaderFormatter||function(e,
f,b){return e instanceof d.Axis?e.options.title&&e.options.title.text||(e.isDatetimeAxis?"DateTime":"Category"):e?e.name+(1<b?" ("+f+")":""):"Category"},t=[];f=0;q(this.series,function(e){var b=e.options.keys||e.pointArrayMap||["y"],h=b.length,r=e.requireSorting,u={},l=d.inArray(e.xAxis,c),a;q(b,function(b){u[b]=e[b+"Axis"]&&e[b+"Axis"].categories||[]});if(!1!==e.options.includeInCSVExport&&!1!==e.visible){d.find(t,function(b){return b[0]===l})||t.push([l,f]);for(a=0;a<h;)m.push(k(e,b[a],b.length)),
a++;q(e.points,function(d,c){c=r?d.x:d.x+"|"+c;var m,k;a=0;g[c]||(g[c]=[],g[c].xValues=[]);g[c].x=d.x;g[c].xValues[l]=d.x;e.xAxis&&"name"!==e.exportKey||(g[c].name=d.name);for(;a<h;)m=b[a],k=d[m],g[c][f+a]=n(u[m][k],k),a++});f+=a}});for(l in g)g.hasOwnProperty(l)&&r.push(g[l]);var a,p,h=[m];for(f=t.length;f--;)a=t[f][0],p=t[f][1],b=c[a],r.sort(function(b,d){return b.xValues[a]-d.xValues[a]}),l=k(b),h[0].splice(p,0,l),q(r,function(e){var c=e.name;c||(b.isDatetimeAxis?(e.x instanceof Date&&(e.x=e.x.getTime()),
c=d.dateFormat(u,e.x)):c=b.categories?n(b.names[e.x],b.categories[e.x],e.x):e.x);e.splice(p,0,c)});return h=h.concat(r)};d.Chart.prototype.getCSV=function(d){var b="",c=this.getDataRows(),a=(this.options.exporting||{}).csv||{},h=a.itemDelimiter||",",m=a.lineDelimiter||"\n";q(c,function(a,l){for(var f,g=a.length,k=d?(1.1).toLocaleString()[1]:".";g--;)f=a[g],"string"===typeof f&&(f='"'+f+'"'),"number"===typeof f&&","===k&&(f=f.toString().replace(".",",")),a[g]=f;b+=a.join(h);l<c.length-1&&(b+=m)});
return b};d.Chart.prototype.getTable=function(d){var b="\x3ctable\x3e\x3cthead\x3e",c=this.getDataRows();q(c,function(c,a){var h=a?"td":"th",f,g,k=d?(1.1).toLocaleString()[1]:".";b+="\x3ctr\x3e";for(g=0;g<c.length;g+=1)f=c[g],"number"===typeof f?(f=f.toString(),","===k&&(f=f.replace(".",k)),b+="\x3c"+h+' class\x3d"number"\x3e'+f+"\x3c/"+h+"\x3e"):b+="\x3c"+h+' class\x3d"text"\x3e'+(void 0===f?"":f)+"\x3c/"+h+"\x3e";b+="\x3c/tr\x3e";a||(b+="\x3c/thead\x3e\x3ctbody\x3e")});return b+="\x3c/tbody\x3e\x3c/table\x3e"};
d.Chart.prototype.fileDownload=function(a,b,c,g){var h,m=((this.options.exporting||{}).csv||{}).url||"http://www.highcharts.com/studies/csv-export/download.php";h=this.options.exporting.filename?this.options.exporting.filename:this.title?this.title.textStr.replace(/ /g,"-").toLowerCase():"chart";k.Blob&&k.navigator.msSaveOrOpenBlob?(a=new k.Blob([c]),k.navigator.msSaveOrOpenBlob(a,h+"."+b)):w?(c=p.createElement("a"),c.href=a,c.download=h+"."+b,this.container.append(c),c.click(),c.remove()):d.post(m,
{data:c,type:g,extension:b})};d.Chart.prototype.downloadCSV=function(){var a=this.getCSV(!0);this.fileDownload("data:text/csv,\ufeff"+encodeURIComponent(a),"csv",a,"text/csv")};d.Chart.prototype.downloadXLS=function(){var a='\x3chtml xmlns:o\x3d"urn:schemas-microsoft-com:office:office" xmlns:x\x3d"urn:schemas-microsoft-com:office:excel" xmlns\x3d"http://www.w3.org/TR/REC-html40"\x3e\x3chead\x3e\x3c!--[if gte mso 9]\x3e\x3cxml\x3e\x3cx:ExcelWorkbook\x3e\x3cx:ExcelWorksheets\x3e\x3cx:ExcelWorksheet\x3e\x3cx:Name\x3eArk1\x3c/x:Name\x3e\x3cx:WorksheetOptions\x3e\x3cx:DisplayGridlines/\x3e\x3c/x:WorksheetOptions\x3e\x3c/x:ExcelWorksheet\x3e\x3c/x:ExcelWorksheets\x3e\x3c/x:ExcelWorkbook\x3e\x3c/xml\x3e\x3c![endif]--\x3e\x3cstyle\x3etd{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:"0.00";} .text{ mso-number-format:"@";}\x3c/style\x3e\x3cmeta name\x3dProgId content\x3dExcel.Sheet\x3e\x3cmeta charset\x3dUTF-8\x3e\x3c/head\x3e\x3cbody\x3e'+
this.getTable(!0)+"\x3c/body\x3e\x3c/html\x3e";this.fileDownload("data:application/vnd.ms-excel;base64,"+k.btoa(unescape(encodeURIComponent(a))),"xls",a,"application/vnd.ms-excel")};d.Chart.prototype.viewData=function(){this.dataTableDiv||(this.dataTableDiv=p.createElement("div"),this.dataTableDiv.className="highcharts-data-table",this.renderTo.parentNode.insertBefore(this.dataTableDiv,this.renderTo.nextSibling));this.dataTableDiv.innerHTML=this.getTable()};var v=d.getOptions().exporting;v&&(d.extend(v.menuItemDefinitions,
{downloadCSV:{textKey:"downloadCSV",onclick:function(){this.downloadCSV()}},downloadXLS:{textKey:"downloadXLS",onclick:function(){this.downloadXLS()}},viewData:{textKey:"viewData",onclick:function(){this.viewData()}}}),v.buttons.contextButton.menuItems.push("separator","downloadCSV","downloadXLS","viewData"));a.map&&(a.map.prototype.exportKey="name");a.mapbubble&&(a.mapbubble.prototype.exportKey="name");a.treemap&&(a.treemap.prototype.exportKey="name")})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/export-data.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":17,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","each","pick","win","doc","document","seriesTypes","downloadAttrSupported","undefined","createElement","download","setOptions","lang","downloadCSV","downloadXLS","viewData","Chart","prototype","getDataRows","Highcharts.Chart.prototype.getDataRows","options","csv","exporting","xAxis","xAxes","rows","rowArr","names","i","x","dateFormat","columnHeaderFormatter","item","key","keyLength","Axis","title","text","isDatetimeAxis","name","xAxisIndices","series","pointArrayMap","keys","valueCount","length","requireSorting","categoryMap","xAxisIndex","inArray","j","prop","categories","includeInCSVExport","visible","find","index","push","points","point","pIdx","val","xValues","exportKey","hasOwnProperty","column","dataRows","sort","a","b","xTitle","splice","row","category","Date","getTime","concat","getCSV","Highcharts.Chart.prototype.getCSV","useLocalDecimalPoint","itemDelimiter","lineDelimiter","n","toLocaleString","toString","replace","join","getTable","Highcharts.Chart.prototype.getTable","html","tag","fileDownload","Highcharts.Chart.prototype.fileDownload","href","extension","content","MIME","url","filename","textStr","toLowerCase","Blob","navigator","msSaveOrOpenBlob","blobObject","container","append","click","remove","post","data","type","Highcharts.Chart.prototype.downloadCSV","encodeURIComponent","Highcharts.Chart.prototype.downloadXLS","template","uri","btoa","unescape","Highcharts.Chart.prototype.viewData","dataTableDiv","className","renderTo","parentNode","insertBefore","nextSibling","innerHTML","exportingOptions","getOptions","extend","menuItemDefinitions","textKey","onclick","buttons","contextButton","menuItems","map","mapbubble","treemap"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/export-data.src.js
@@ -0,0 +1,430 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Exporting module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Expoerimental data export module for Highcharts
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
// docs
// - After experimental release:
// - Move info in repo readme to docs/API.
// - Deprecate repo and plugins page
// - Update demos (esp accessibility) to use new URL
// - Before official release, set up systematic tests for all series types
 
/* eslint indent:0 */
 
var each = Highcharts.each,
pick = Highcharts.pick,
win = Highcharts.win,
doc = win.document,
seriesTypes = Highcharts.seriesTypes,
downloadAttrSupported = doc.createElement('a').download !== undefined;
 
Highcharts.setOptions({
lang: {
downloadCSV: 'Download CSV',
downloadXLS: 'Download XLS',
viewData: 'View data table'
}
});
 
/**
* Get the data rows as a two dimensional array
*/
Highcharts.Chart.prototype.getDataRows = function() {
var options = (this.options.exporting || {}).csv || {},
xAxis,
xAxes = this.xAxis,
rows = {},
rowArr = [],
dataRows,
names = [],
i,
x,
xTitle,
// Options
dateFormat = options.dateFormat || '%Y-%m-%d %H:%M:%S',
columnHeaderFormatter = options.columnHeaderFormatter || function(item, key, keyLength) {
if (item instanceof Highcharts.Axis) {
return (item.options.title && item.options.title.text) ||
(item.isDatetimeAxis ? 'DateTime' : 'Category');
}
return item ?
item.name + (keyLength > 1 ? ' (' + key + ')' : '') :
'Category';
},
xAxisIndices = [];
 
// Loop the series and index values
i = 0;
each(this.series, function(series) {
var keys = series.options.keys,
pointArrayMap = keys || series.pointArrayMap || ['y'],
valueCount = pointArrayMap.length,
requireSorting = series.requireSorting,
categoryMap = {},
xAxisIndex = Highcharts.inArray(series.xAxis, xAxes),
j;
 
// Map the categories for value axes
each(pointArrayMap, function(prop) {
categoryMap[prop] = (series[prop + 'Axis'] && series[prop + 'Axis'].categories) || [];
});
 
if (series.options.includeInCSVExport !== false && series.visible !== false) { // #55
 
// Build a lookup for X axis index and the position of the first
// series that belongs to that X axis. Includes -1 for non-axis
// series types like pies.
if (!Highcharts.find(xAxisIndices, function(index) {
return index[0] === xAxisIndex;
})) {
xAxisIndices.push([xAxisIndex, i]);
}
 
// Add the column headers, usually the same as series names
j = 0;
while (j < valueCount) {
names.push(columnHeaderFormatter(series, pointArrayMap[j], pointArrayMap.length));
j++;
}
 
each(series.points, function(point, pIdx) {
var key = requireSorting ? point.x : point.x + '|' + pIdx,
prop,
val;
 
j = 0;
 
if (!rows[key]) {
// Generate the row
rows[key] = [];
// Contain the X values from one or more X axes
rows[key].xValues = [];
}
rows[key].x = point.x;
rows[key].xValues[xAxisIndex] = point.x;
 
// Pies, funnels, geo maps etc. use point name in X row
if (!series.xAxis || series.exportKey === 'name') {
rows[key].name = point.name;
}
 
while (j < valueCount) {
prop = pointArrayMap[j]; // y, z etc
val = point[prop];
// Pick a Y axis category if present
rows[key][i + j] = pick(categoryMap[prop][val], val);
j++;
}
 
});
i = i + j;
}
});
 
// Make a sortable array
for (x in rows) {
if (rows.hasOwnProperty(x)) {
rowArr.push(rows[x]);
}
}
 
var xAxisIndex, column;
dataRows = [names];
 
i = xAxisIndices.length;
while (i--) { // Start from end to splice in
xAxisIndex = xAxisIndices[i][0];
column = xAxisIndices[i][1];
xAxis = xAxes[xAxisIndex];
 
// Sort it by X values
rowArr.sort(function(a, b) { // eslint-disable-line no-loop-func
return a.xValues[xAxisIndex] - b.xValues[xAxisIndex];
});
 
// Add header row
xTitle = columnHeaderFormatter(xAxis);
//dataRows = [[xTitle].concat(names)];
dataRows[0].splice(column, 0, xTitle);
 
// Add the category column
each(rowArr, function(row) { // eslint-disable-line no-loop-func
var category = row.name;
if (!category) {
if (xAxis.isDatetimeAxis) {
if (row.x instanceof Date) {
row.x = row.x.getTime();
}
category = Highcharts.dateFormat(dateFormat, row.x);
} else if (xAxis.categories) {
category = pick(
xAxis.names[row.x],
xAxis.categories[row.x],
row.x
);
} else {
category = row.x;
}
}
 
// Add the X/date/category
row.splice(column, 0, category);
});
}
dataRows = dataRows.concat(rowArr);
 
return dataRows;
};
 
/**
* Get a CSV string
*/
Highcharts.Chart.prototype.getCSV = function(useLocalDecimalPoint) {
var csv = '',
rows = this.getDataRows(),
options = (this.options.exporting || {}).csv || {},
itemDelimiter = options.itemDelimiter || ',', // use ';' for direct to Excel
lineDelimiter = options.lineDelimiter || '\n'; // '\n' isn't working with the js csv data extraction
 
// Transform the rows to CSV
each(rows, function(row, i) {
var val = '',
j = row.length,
n = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.';
while (j--) {
val = row[j];
if (typeof val === 'string') {
val = '"' + val + '"';
}
if (typeof val === 'number') {
if (n === ',') {
val = val.toString().replace('.', ',');
}
}
row[j] = val;
}
// Add the values
csv += row.join(itemDelimiter);
 
// Add the line delimiter
if (i < rows.length - 1) {
csv += lineDelimiter;
}
});
return csv;
};
 
/**
* Build a HTML table with the data
*/
Highcharts.Chart.prototype.getTable = function(useLocalDecimalPoint) {
var html = '<table><thead>',
rows = this.getDataRows();
 
// Transform the rows to HTML
each(rows, function(row, i) {
var tag = i ? 'td' : 'th',
val,
j,
n = useLocalDecimalPoint ? (1.1).toLocaleString()[1] : '.';
 
html += '<tr>';
for (j = 0; j < row.length; j = j + 1) {
val = row[j];
// Add the cell
if (typeof val === 'number') {
val = val.toString();
if (n === ',') {
val = val.replace('.', n);
}
html += '<' + tag + ' class="number">' + val + '</' + tag + '>';
 
} else {
html += '<' + tag + ' class="text">' + (val === undefined ? '' : val) + '</' + tag + '>';
}
}
 
html += '</tr>';
 
// After the first row, end head and start body
if (!i) {
html += '</thead><tbody>';
}
 
});
html += '</tbody></table>';
 
return html;
};
 
/**
* Use download attribute if supported, else run a simple PHP script that
* returns a file. The source code for the PHP script can be viewed at
* https://raw.github.com/highcharts/highcharts/master/studies/csv-export/csv.php
*/
Highcharts.Chart.prototype.fileDownload = function(href, extension, content, MIME) {
var a,
blobObject,
name,
options = (this.options.exporting || {}).csv || {},
url = options.url || 'http://www.highcharts.com/studies/csv-export/download.php';
 
if (this.options.exporting.filename) {
name = this.options.exporting.filename;
} else if (this.title) {
name = this.title.textStr.replace(/ /g, '-').toLowerCase();
} else {
name = 'chart';
}
 
// MS specific. Check this first because of bug with Edge (#76)
if (win.Blob && win.navigator.msSaveOrOpenBlob) {
// Falls to msSaveOrOpenBlob if download attribute is not supported
blobObject = new win.Blob([content]);
win.navigator.msSaveOrOpenBlob(blobObject, name + '.' + extension);
 
// Download attribute supported
} else if (downloadAttrSupported) {
a = doc.createElement('a');
a.href = href;
a.download = name + '.' + extension;
this.container.append(a); // #111
a.click();
a.remove();
 
} else {
// Fall back to server side handling
Highcharts.post(url, {
data: content,
type: MIME,
extension: extension
});
}
};
 
/**
* Call this on click of 'Download CSV' button
*/
Highcharts.Chart.prototype.downloadCSV = function() {
var csv = this.getCSV(true);
this.fileDownload(
'data:text/csv,\uFEFF' + encodeURIComponent(csv),
'csv',
csv,
'text/csv'
);
};
 
/**
* Call this on click of 'Download XLS' button
*/
Highcharts.Chart.prototype.downloadXLS = function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">' +
'<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>' +
'<x:Name>Ark1</x:Name>' +
'<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->' +
'<style>td{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:"0.00";} .text{ mso-number-format:"\@";}</style>' +
'<meta name=ProgId content=Excel.Sheet>' +
'<meta charset=UTF-8>' +
'</head><body>' +
this.getTable(true) +
'</body></html>',
base64 = function(s) {
return win.btoa(unescape(encodeURIComponent(s))); // #50
};
this.fileDownload(
uri + base64(template),
'xls',
template,
'application/vnd.ms-excel'
);
};
 
/**
* View the data in a table below the chart
*/
Highcharts.Chart.prototype.viewData = function() {
if (!this.dataTableDiv) {
this.dataTableDiv = doc.createElement('div');
this.dataTableDiv.className = 'highcharts-data-table';
 
// Insert after the chart container
this.renderTo.parentNode.insertBefore(
this.dataTableDiv,
this.renderTo.nextSibling
);
}
 
this.dataTableDiv.innerHTML = this.getTable();
};
 
 
// Add "Download CSV" to the exporting menu.
var exportingOptions = Highcharts.getOptions().exporting;
if (exportingOptions) {
 
Highcharts.extend(exportingOptions.menuItemDefinitions, {
downloadCSV: {
textKey: 'downloadCSV',
onclick: function() {
this.downloadCSV();
}
},
downloadXLS: {
textKey: 'downloadXLS',
onclick: function() {
this.downloadXLS();
}
},
viewData: {
textKey: 'viewData',
onclick: function() {
this.viewData();
}
}
});
 
exportingOptions.buttons.contextButton.menuItems.push(
'separator',
'downloadCSV',
'downloadXLS',
'viewData'
);
}
 
// Series specific
if (seriesTypes.map) {
seriesTypes.map.prototype.exportKey = 'name';
}
if (seriesTypes.mapbubble) {
seriesTypes.mapbubble.prototype.exportKey = 'name';
}
if (seriesTypes.treemap) {
seriesTypes.treemap.prototype.exportKey = 'name';
}
 
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/exporting.js
@@ -0,0 +1,28 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Exporting module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(p){"object"===typeof module&&module.exports?module.exports=p:p(Highcharts)})(function(p){(function(f){var p=f.defaultOptions,t=f.doc,C=f.Chart,u=f.addEvent,L=f.removeEvent,I=f.fireEvent,n=f.createElement,E=f.discardElement,J=f.css,x=f.merge,F=f.pick,m=f.each,G=f.objectEach,y=f.extend,z=f.win,K=z.navigator.userAgent,H=f.SVGRenderer,M=f.Renderer.prototype.symbols,N=/Edge\/|Trident\/|MSIE /.test(K),O=/firefox/i.test(K);y(p.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",
downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});p.navigation={buttonOptions:{theme:{},symbolSize:14,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,verticalAlign:"top",width:24}};p.exporting={type:"image/png",url:"https://export.highcharts.com/",printMaxWidth:780,scale:2,buttons:{contextButton:{className:"highcharts-contextbutton",menuClassName:"highcharts-contextmenu",symbol:"menu",_titleKey:"contextButtonTitle",
menuItems:"printChart separator downloadPNG downloadJPEG downloadPDF downloadSVG".split(" ")}},menuItemDefinitions:{printChart:{textKey:"printChart",onclick:function(){this.print()}},separator:{separator:!0},downloadPNG:{textKey:"downloadPNG",onclick:function(){this.exportChart()}},downloadJPEG:{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},downloadPDF:{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},downloadSVG:{textKey:"downloadSVG",
onclick:function(){this.exportChart({type:"image/svg+xml"})}}}};f.post=function(a,b,d){var c=n("form",x({method:"post",action:a,enctype:"multipart/form-data"},d),{display:"none"},t.body);G(b,function(a,b){n("input",{type:"hidden",name:b,value:a},null,c)});c.submit();E(c)};y(C.prototype,{sanitizeSVG:function(a,b){if(b&&b.exporting&&b.exporting.allowHTML){var d=a.match(/<\/svg>(.*?$)/);d&&d[1]&&(d='\x3cforeignObject x\x3d"0" y\x3d"0" width\x3d"'+b.chart.width+'" height\x3d"'+b.chart.height+'"\x3e\x3cbody xmlns\x3d"http://www.w3.org/1999/xhtml"\x3e'+
d[1]+"\x3c/body\x3e\x3c/foreignObject\x3e",a=a.replace("\x3c/svg\x3e",d+"\x3c/svg\x3e"))}return a=a.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\(("|&quot;)(\S+)("|&quot;)\)/g,"url($2)").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'\x3csvg xmlns:xlink\x3d"http://www.w3.org/1999/xlink" ').replace(/ (NS[0-9]+\:)?href=/g," xlink:href\x3d").replace(/\n/," ").replace(/<\/svg>.*?$/,"\x3c/svg\x3e").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,
'$1\x3d"rgb($2)" $1-opacity\x3d"$3"').replace(/&nbsp;/g,"\u00a0").replace(/&shy;/g,"\u00ad")},getChartHTML:function(){this.inlineStyles();return this.container.innerHTML},getSVG:function(a){var b,d,c,v,k,g=x(this.options,a);t.createElementNS||(t.createElementNS=function(a,b){return t.createElement(b)});d=n("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},t.body);c=this.renderTo.style.width;k=this.renderTo.style.height;c=g.exporting.sourceWidth||
g.chart.width||/px$/.test(c)&&parseInt(c,10)||600;k=g.exporting.sourceHeight||g.chart.height||/px$/.test(k)&&parseInt(k,10)||400;y(g.chart,{animation:!1,renderTo:d,forExport:!0,renderer:"SVGRenderer",width:c,height:k});g.exporting.enabled=!1;delete g.data;g.series=[];m(this.series,function(a){v=x(a.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});v.isInternal||g.series.push(v)});m(this.axes,function(a){a.userOptions.internalKey||(a.userOptions.internalKey=f.uniqueKey())});
b=new f.Chart(g,this.callback);a&&m(["xAxis","yAxis","series"],function(c){var e={};a[c]&&(e[c]=a[c],b.update(e))});m(this.axes,function(a){var c=f.find(b.axes,function(b){return b.options.internalKey===a.userOptions.internalKey}),e=a.getExtremes(),d=e.userMin,e=e.userMax;!c||void 0===d&&void 0===e||c.setExtremes(d,e,!0,!1)});c=b.getChartHTML();c=this.sanitizeSVG(c,g);g=null;b.destroy();E(d);return c},getSVGForExport:function(a,b){var d=this.options.exporting;return this.getSVG(x({chart:{borderRadius:0}},
d.chartOptions,b,{exporting:{sourceWidth:a&&a.sourceWidth||d.sourceWidth,sourceHeight:a&&a.sourceHeight||d.sourceHeight}}))},exportChart:function(a,b){b=this.getSVGForExport(a,b);a=x(this.options.exporting,a);f.post(a.url,{filename:a.filename||"chart",type:a.type,width:a.width||0,scale:a.scale,svg:b},a.formAttributes)},print:function(){var a=this,b=a.container,d=[],c=b.parentNode,f=t.body,k=f.childNodes,g=a.options.exporting.printMaxWidth,e,l;if(!a.isPrinting){a.isPrinting=!0;a.pointer.reset(null,
0);I(a,"beforePrint");if(l=g&&a.chartWidth>g)e=[a.options.chart.width,void 0,!1],a.setSize(g,void 0,!1);m(k,function(a,b){1===a.nodeType&&(d[b]=a.style.display,a.style.display="none")});f.appendChild(b);z.focus();z.print();setTimeout(function(){c.appendChild(b);m(k,function(a,b){1===a.nodeType&&(a.style.display=d[b])});a.isPrinting=!1;l&&a.setSize.apply(a,e);I(a,"afterPrint")},1E3)}},contextMenu:function(a,b,d,c,v,k,g){var e=this,l=e.chartWidth,q=e.chartHeight,r="cache-"+a,h=e[r],B=Math.max(v,k),
D,w;h||(e[r]=h=n("div",{className:a},{position:"absolute",zIndex:1E3,padding:B+"px"},e.container),D=n("div",{className:"highcharts-menu"},null,h),w=function(){J(h,{display:"none"});g&&g.setState(0);e.openMenu=!1},e.exportEvents.push(u(h,"mouseleave",function(){h.hideTimer=setTimeout(w,500)}),u(h,"mouseenter",function(){clearTimeout(h.hideTimer)}),u(t,"mouseup",function(b){e.pointer.inClass(b.target,a)||w()})),m(b,function(a){"string"===typeof a&&(a=e.options.exporting.menuItemDefinitions[a]);if(f.isObject(a,
!0)){var b;b=a.separator?n("hr",null,null,D):n("div",{className:"highcharts-menu-item",onclick:function(b){b&&b.stopPropagation();w();a.onclick&&a.onclick.apply(e,arguments)},innerHTML:a.text||e.options.lang[a.textKey]},null,D);e.exportDivElements.push(b)}}),e.exportDivElements.push(D,h),e.exportMenuWidth=h.offsetWidth,e.exportMenuHeight=h.offsetHeight);b={display:"block"};d+e.exportMenuWidth>l?b.right=l-d-v-B+"px":b.left=d-B+"px";c+k+e.exportMenuHeight>q&&"top"!==g.alignOptions.verticalAlign?b.bottom=
q-c-B+"px":b.top=c+k-B+"px";J(h,b);e.openMenu=!0},addButton:function(a){var b=this,d=b.renderer,c=x(b.options.navigation.buttonOptions,a),f=c.onclick,k=c.menuItems,g,e,l=c.symbolSize||12;b.btnCount||(b.btnCount=0);b.exportDivElements||(b.exportDivElements=[],b.exportSVGElements=[]);if(!1!==c.enabled){var q=c.theme,r=q.states,h=r&&r.hover,r=r&&r.select,m;delete q.states;f?m=function(a){a.stopPropagation();f.call(b,a)}:k&&(m=function(){b.contextMenu(e.menuClassName,k,e.translateX,e.translateY,e.width,
e.height,e);e.setState(2)});c.text&&c.symbol?q.paddingLeft=F(q.paddingLeft,25):c.text||y(q,{width:c.width,height:c.height,padding:0});e=d.button(c.text,0,0,m,q,h,r).addClass(a.className).attr({title:b.options.lang[c._titleKey],zIndex:3});e.menuClassName=a.menuClassName||"highcharts-menu-"+b.btnCount++;c.symbol&&(g=d.symbol(c.symbol,c.symbolX-l/2,c.symbolY-l/2,l,l).addClass("highcharts-button-symbol").attr({zIndex:1}).add(e));e.add().align(y(c,{width:e.width,x:F(c.x,b.buttonOffset)}),!0,"spacingBox");
b.buttonOffset+=(e.width+c.buttonSpacing)*("right"===c.align?-1:1);b.exportSVGElements.push(e,g)}},destroyExport:function(a){var b=a?a.target:this;a=b.exportSVGElements;var d=b.exportDivElements,c=b.exportEvents,f;a&&(m(a,function(a,c){a&&(a.onclick=a.ontouchstart=null,f="cache-"+a.menuClassName,b[f]&&delete b[f],b.exportSVGElements[c]=a.destroy())}),a.length=0);d&&(m(d,function(a,c){clearTimeout(a.hideTimer);L(a,"mouseleave");b.exportDivElements[c]=a.onmouseout=a.onmouseover=a.ontouchstart=a.onclick=
null;E(a)}),d.length=0);c&&(m(c,function(a){a()}),c.length=0)}});H.prototype.inlineToAttributes="fill stroke strokeLinecap strokeLinejoin strokeWidth textAnchor x y".split(" ");H.prototype.inlineBlacklist=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/perspective/,/TapHighlightColor/,/^transition/];H.prototype.unstyledElements=["clipPath","defs","desc"];C.prototype.inlineStyles=function(){function a(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()})}
function b(d){function r(b,f){n=u=!1;if(k){for(A=k.length;A--&&!u;)u=k[A].test(f);n=!u}"transform"===f&&"none"===b&&(n=!0);for(A=v.length;A--&&!n;)n=v[A].test(f)||"function"===typeof b;n||q[f]!==b&&e[d.nodeName][f]!==b&&(-1!==c.indexOf(f)?d.setAttribute(a(f),b):p+=a(f)+":"+b+";")}var h,q,p="",w,n,u,A;if(1===d.nodeType&&-1===g.indexOf(d.nodeName)){h=z.getComputedStyle(d,null);q="svg"===d.nodeName?{}:z.getComputedStyle(d.parentNode,null);e[d.nodeName]||(l||(l=t.createElementNS(f.SVG_NS,"svg"),l.setAttribute("version",
"1.1"),t.body.appendChild(l)),w=t.createElementNS(d.namespaceURI,d.nodeName),l.appendChild(w),e[d.nodeName]=x(z.getComputedStyle(w,null)),l.removeChild(w));if(O||N)for(var y in h)r(h[y],y);else G(h,r);p&&(h=d.getAttribute("style"),d.setAttribute("style",(h?h+";":"")+p));"svg"===d.nodeName&&d.setAttribute("stroke-width","1px");"text"!==d.nodeName&&m(d.children||d.childNodes,b)}}var d=this.renderer,c=d.inlineToAttributes,v=d.inlineBlacklist,k=d.inlineWhitelist,g=d.unstyledElements,e={},l;b(this.container.querySelector("svg"));
l.parentNode.removeChild(l)};M.menu=function(a,b,d,c){return["M",a,b+2.5,"L",a+d,b+2.5,"M",a,b+c/2+.5,"L",a+d,b+c/2+.5,"M",a,b+c-1.5,"L",a+d,b+c-1.5]};C.prototype.renderExporting=function(){var a=this,b=a.options.exporting,d=b.buttons,c=a.isDirtyExporting||!a.exportSVGElements;a.buttonOffset=0;a.isDirtyExporting&&a.destroyExport();c&&!1!==b.enabled&&(a.exportEvents=[],G(d,function(b){a.addButton(b)}),a.isDirtyExporting=!1);u(a,"destroy",a.destroyExport)};C.prototype.callbacks.push(function(a){a.renderExporting();
u(a,"redraw",a.renderExporting);m(["exporting","navigation"],function(b){a[b]={update:function(d,c){a.isDirtyExporting=!0;x(!0,a.options[b],d);F(c,!0)&&a.redraw()}}})})})(p)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/exporting.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":28,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","defaultOptions","doc","Chart","addEvent","removeEvent","fireEvent","createElement","discardElement","css","merge","pick","each","objectEach","extend","win","userAgent","navigator","SVGRenderer","symbols","Renderer","prototype","isMSBrowser","test","isFirefoxBrowser","lang","printChart","downloadPNG","downloadJPEG","downloadPDF","downloadSVG","contextButtonTitle","navigation","buttonOptions","theme","symbolSize","symbolX","symbolY","align","buttonSpacing","height","verticalAlign","width","exporting","type","url","printMaxWidth","scale","buttons","contextButton","className","menuClassName","symbol","_titleKey","menuItems","menuItemDefinitions","textKey","onclick","print","separator","exportChart","post","H.post","data","formAttributes","form","method","action","enctype","display","body","val","name","value","submit","sanitizeSVG","svg","options","allowHTML","html","match","chart","replace","getChartHTML","inlineStyles","container","innerHTML","getSVG","chartOptions","chartCopy","sandbox","seriesOptions","sourceHeight","createElementNS","doc.createElementNS","ns","tagName","position","top","chartWidth","chartHeight","cssWidth","renderTo","style","cssHeight","sourceWidth","parseInt","animation","forExport","renderer","enabled","series","serie","userOptions","enableMouseTracking","showCheckbox","visible","isInternal","push","axes","axis","internalKey","uniqueKey","callback","coll","collOptions","update","axisCopy","find","copy","extremes","getExtremes","userMin","userMax","undefined","setExtremes","destroy","getSVGForExport","chartExportingOptions","borderRadius","exportingOptions","filename","origDisplay","origParent","parentNode","childNodes","resetParams","handleMaxWidth","isPrinting","pointer","reset","setSize","node","i","nodeType","appendChild","focus","setTimeout","apply","contextMenu","items","x","y","button","cacheName","menu","menuPadding","Math","max","innerMenu","hide","zIndex","padding","setState","openMenu","exportEvents","hideTimer","clearTimeout","e","inClass","target","item","isObject","element","stopPropagation","arguments","text","exportDivElements","exportMenuWidth","offsetWidth","exportMenuHeight","offsetHeight","menuStyle","right","left","alignOptions","bottom","addButton","btnOptions","btnCount","exportSVGElements","attr","states","hover","select","call","translateX","translateY","paddingLeft","addClass","title","add","buttonOffset","destroyExport","elem","ontouchstart","length","onmouseout","onmouseover","unbind","inlineToAttributes","inlineBlacklist","unstyledElements","Chart.prototype.inlineStyles","hyphenate","prop","a","b","toLowerCase","recurse","filterStyles","blacklisted","whitelisted","whitelist","blacklist","parentStyles","defaultStyles","nodeName","indexOf","setAttribute","cssText","styles","dummy","getComputedStyle","dummySVG","SVG_NS","namespaceURI","removeChild","p","styleAttr","getAttribute","children","inlineWhitelist","querySelector","symbols.menu","arr","renderExporting","Chart.prototype.renderExporting","isDirty","isDirtyExporting","callbacks","redraw"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/exporting.src.js
@@ -0,0 +1,1332 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Exporting module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Exporting module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
/* eslint indent:0 */
 
// create shortcuts
var defaultOptions = H.defaultOptions,
doc = H.doc,
Chart = H.Chart,
addEvent = H.addEvent,
removeEvent = H.removeEvent,
fireEvent = H.fireEvent,
createElement = H.createElement,
discardElement = H.discardElement,
css = H.css,
merge = H.merge,
pick = H.pick,
each = H.each,
objectEach = H.objectEach,
extend = H.extend,
isTouchDevice = H.isTouchDevice,
win = H.win,
userAgent = win.navigator.userAgent,
SVGRenderer = H.SVGRenderer,
symbols = H.Renderer.prototype.symbols,
isMSBrowser = /Edge\/|Trident\/|MSIE /.test(userAgent),
isFirefoxBrowser = /firefox/i.test(userAgent);
 
// Add language
/**
* @apioption lang
*/
extend(defaultOptions.lang, {
printChart: 'Print chart',
downloadPNG: 'Download PNG image',
downloadJPEG: 'Download JPEG image',
downloadPDF: 'Download PDF document',
downloadSVG: 'Download SVG vector image',
contextButtonTitle: 'Chart context menu'
});
 
// Buttons and menus are collected in a separate config option set called 'navigation'.
// This can be extended later to add control buttons like zoom and pan right click menus.
 
/**
* @apioption navigation
*/
defaultOptions.navigation = {
buttonOptions: {
theme: {},
symbolSize: 14,
symbolX: 12.5,
symbolY: 10.5,
align: 'right',
buttonSpacing: 3,
height: 22,
// text: null,
verticalAlign: 'top',
width: 24
}
};
 
 
 
 
// Add the export related options
 
/**
* Options for the exporting module. For an overview on the matter, see [the docs](http://www.highcharts.com/docs/export-module/export-module-overview).
* @type {Object}
* @optionparent exporting
*/
defaultOptions.exporting = {
//enabled: true,
//filename: 'chart',
 
/**
* Default MIME type for exporting if `chart.exportChart()` is called
* without specifying a `type` option. Possible values are `image/png`,
* `image/jpeg`, `application/pdf` and `image/svg+xml`.
*
* @validvalue ["image/png", "image/jpeg", "application/pdf", "image/svg+xml"]
* @type {String}
* @default image/png
* @since 2.0
* @product highcharts highstock highmaps
*/
type: 'image/png',
 
/**
* The URL for the server module converting the SVG string to an image
* format. By default this points to Highchart's free web service.
*
* @type {String}
* @default https://export.highcharts.com
* @since 2.0
* @product highcharts highstock highmaps
*/
url: 'https://export.highcharts.com/',
//width: undefined,
 
/**
* When printing the chart from the menu item in the burger menu, if
* the on-screen chart exceeds this width, it is resized. After printing
* or cancelled, it is restored. The default width makes the chart
* fit into typical paper format. Note that this does not affect the
* chart when printing the web page as a whole.
*
* @type {Number}
* @default 780
* @since 4.2.5
* @product highcharts highstock highmaps
*/
printMaxWidth: 780,
 
/**
* Defines the scale or zoom factor for the exported image compared
* to the on-screen display. While for instance a 600px wide chart
* may look good on a website, it will look bad in print. The default
* scale of 2 makes this chart export to a 1200px PNG or JPG.
*
* @type {Number}
* @see [chart.width](#chart.width), [exporting.sourceWidth](#exporting.
* sourceWidth)
* @sample {highcharts} highcharts/exporting/scale/ Scale demonstrated
* @sample {highstock} highcharts/exporting/scale/ Scale demonstrated
* @sample {highmaps} maps/exporting/scale/ Scale demonstrated
* @default 2
* @since 3.0
* @product highcharts highstock highmaps
*/
scale: 2,
 
/**
* Options for the export related buttons, print and export. In addition
* to the default buttons listed here, custom buttons can be added.
* See [navigation.buttonOptions](#navigation.buttonOptions) for general
* options.
*
* @product highcharts highstock highmaps
*/
buttons: {
 
/**
* Options for the export button.
*
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
* style/style-by-css), export button styles can be applied with the
* `.highcharts-contextbutton` class.
*
* @extends navigation.buttonOptions
* @product highcharts highstock highmaps
*/
contextButton: {
 
/**
*/
className: 'highcharts-contextbutton',
 
/**
*/
menuClassName: 'highcharts-contextmenu',
//x: -10,
 
/**
* The symbol for the button. Points to a definition function in
* the `Highcharts.Renderer.symbols` collection. The default `exportIcon`
* function is part of the exporting module.
*
* @validvalue ["circle", "square", "diamond", "triangle", "triangle-down", "menu"]
* @type {String}
* @sample {highcharts} highcharts/exporting/buttons-contextbutton-symbol/ Use a circle for symbol
* @sample {highstock} highcharts/exporting/buttons-contextbutton-symbol/ Use a circle for symbol
* @sample {highmaps} highcharts/exporting/buttons-contextbutton-symbol/ Use a circle for symbol
* @default menu
* @since 2.0
* @product highcharts highstock highmaps
*/
symbol: 'menu',
 
/**
*/
_titleKey: 'contextButtonTitle',
 
/**
* A collection of config options for the menu items. Each options
* object consists of a `text` option which is a string to show in
* the menu item, as well as an `onclick` parameter which is a callback
* function to run on click.
*
* By default, there is the "Print" menu item plus one menu item
* for each of the available export types. Menu items can be customized
* by defining a new array of items and assigning `null` to unwanted
* positions (see override example below).
*
* @type {Array<Object>}
* @sample {highcharts} highcharts/exporting/buttons-contextbutton-onclick/ Skip the menu and export the chart directly
* @sample {highcharts} highcharts/exporting/buttons-contextbutton-menuitems/ Override the menu items
* @sample {highstock} highcharts/exporting/buttons-contextbutton-onclick/ Skip the menu and export the chart directly
* @sample {highstock} highcharts/exporting/buttons-contextbutton-menuitems/ Override the menu items
* @sample {highmaps} highcharts/exporting/buttons-contextbutton-onclick/ Skip the menu and export the chart directly
* @sample {highmaps} highcharts/exporting/buttons-contextbutton-menuitems/ Override the menu items
* @since 2.0
* @product highcharts highstock highmaps
*/
menuItems: [
'printChart',
'separator',
'downloadPNG',
'downloadJPEG',
'downloadPDF',
'downloadSVG'
]
}
},
// docs. Created API item with since:next. Add information and link to sample
// from menuItems too.
 
/**
* An object consisting of definitions for the menu items in the context
* menu. Each key value pair has a `key` that is referenced in the
* [menuItems](#exporting.buttons.contextButton.menuItems) setting,
* and a `value`, which is an object with the following properties:
*
* <dl>
*
* <dt>onclick</dt>
*
* <dd>The click handler for the menu item</dd>
*
* <dt>text</dt>
*
* <dd>The text for the menu item</dd>
*
* <dt>textKey</dt>
*
* <dd>If internationalization is required, the key to a language string</dd>
*
* </dl>
*
* @type {Object}
* @sample {highcharts} highcharts/exporting/menuitemdefinitions/ Menu item definitions
* @sample {highstock} highcharts/exporting/menuitemdefinitions/ Menu item definitions
* @sample {highmaps} highcharts/exporting/menuitemdefinitions/ Menu item definitions
* @since next
* @product highcharts highstock highmaps
*/
menuItemDefinitions: {
 
/**
*/
printChart: {
 
/**
*/
textKey: 'printChart',
 
/**
*/
onclick: function() {
this.print();
}
},
 
/**
*/
separator: {
 
/**
*/
separator: true
},
 
/**
*/
downloadPNG: {
 
/**
*/
textKey: 'downloadPNG',
 
/**
*/
onclick: function() {
this.exportChart();
}
},
 
/**
*/
downloadJPEG: {
 
/**
*/
textKey: 'downloadJPEG',
 
/**
*/
onclick: function() {
this.exportChart({
type: 'image/jpeg'
});
}
},
 
/**
*/
downloadPDF: {
 
/**
*/
textKey: 'downloadPDF',
 
/**
*/
onclick: function() {
this.exportChart({
type: 'application/pdf'
});
}
},
 
/**
*/
downloadSVG: {
 
/**
*/
textKey: 'downloadSVG',
 
/**
*/
onclick: function() {
this.exportChart({
type: 'image/svg+xml'
});
}
}
}
};
 
/**
* Fires after a chart is printed through the context menu item or the
* `Chart.print` method. Requires the exporting module.
*
* @type {Function}
* @context Chart
* @sample {highcharts} highcharts/chart/events-beforeprint-afterprint/
* Rescale the chart to print
* @sample {highstock} highcharts/chart/events-beforeprint-afterprint/
* Rescale the chart to print
* @sample {highmaps} highcharts/chart/events-beforeprint-afterprint/
* Rescale the chart to print
* @since 4.1.0
* @apioption chart.events.afterPrint
*/
 
/**
* Fires before a chart is printed through the context menu item or
* the `Chart.print` method. Requires the exporting module.
*
* @type {Function}
* @context Chart
* @sample {highcharts} highcharts/chart/events-beforeprint-afterprint/
* Rescale the chart to print
* @sample {highstock} highcharts/chart/events-beforeprint-afterprint/
* Rescale the chart to print
* @sample {highmaps} highcharts/chart/events-beforeprint-afterprint/
* Rescale the chart to print
* @since 4.1.0
* @apioption chart.events.beforePrint
*/
 
 
// Add the H.post utility
H.post = function(url, data, formAttributes) {
// create the form
var form = createElement('form', merge({
method: 'post',
action: url,
enctype: 'multipart/form-data'
}, formAttributes), {
display: 'none'
}, doc.body);
 
// add the data
objectEach(data, function(val, name) {
createElement('input', {
type: 'hidden',
name: name,
value: val
}, null, form);
});
 
// submit
form.submit();
 
// clean up
discardElement(form);
};
 
extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
 
/**
* Exporting module only. A collection of fixes on the produced SVG to
* account for expando properties, browser bugs, VML problems and other.
* Returns a cleaned SVG.
*
* @private
*/
sanitizeSVG: function(svg, options) {
// Move HTML into a foreignObject
if (options && options.exporting && options.exporting.allowHTML) {
var html = svg.match(/<\/svg>(.*?$)/);
if (html && html[1]) {
html = '<foreignObject x="0" y="0" ' +
'width="' + options.chart.width + '" ' +
'height="' + options.chart.height + '">' +
'<body xmlns="http://www.w3.org/1999/xhtml">' +
html[1] +
'</body>' +
'</foreignObject>';
svg = svg.replace('</svg>', html + '</svg>');
}
}
 
svg = svg
.replace(/zIndex="[^"]+"/g, '')
.replace(/isShadow="[^"]+"/g, '')
.replace(/symbolName="[^"]+"/g, '')
.replace(/jQuery[0-9]+="[^"]+"/g, '')
.replace(/url\(("|&quot;)(\S+)("|&quot;)\)/g, 'url($2)')
.replace(/url\([^#]+#/g, 'url(#')
.replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
.replace(/ (NS[0-9]+\:)?href=/g, ' xlink:href=') // #3567
.replace(/\n/, ' ')
// Any HTML added to the container after the SVG (#894)
.replace(/<\/svg>.*?$/, '</svg>')
// Batik doesn't support rgba fills and strokes (#3095)
.replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g, '$1="rgb($2)" $1-opacity="$3"')
/* This fails in IE < 8
.replace(/([0-9]+)\.([0-9]+)/g, function(s1, s2, s3) { // round off to save weight
return s2 +'.'+ s3[0];
})*/
 
// Replace HTML entities, issue #347
.replace(/&nbsp;/g, '\u00A0') // no-break space
.replace(/&shy;/g, '\u00AD'); // soft hyphen
 
 
 
return svg;
},
 
/**
* Return the unfiltered innerHTML of the chart container. Used as hook for
* plugins. In styled mode, it also takes care of inlining CSS style rules.
*
* @see Chart#getSVG
*
* @returns {String}
* The unfiltered SVG of the chart.
*/
getChartHTML: function() {
 
this.inlineStyles();
 
return this.container.innerHTML;
},
 
/**
* Return an SVG representation of the chart.
*
* @param chartOptions {Options}
* Additional chart options for the generated SVG representation.
* For collections like `xAxis`, `yAxis` or `series`, the additional
* options is either merged in to the orininal item of the same
* `id`, or to the first item if a common id is not found.
* @return {String}
* The SVG representation of the rendered chart.
* @sample highcharts/members/chart-getsvg/
* View the SVG from a button
*/
getSVG: function(chartOptions) {
var chart = this,
chartCopy,
sandbox,
svg,
seriesOptions,
sourceWidth,
sourceHeight,
cssWidth,
cssHeight,
options = merge(chart.options, chartOptions); // copy the options and add extra options
 
 
// IE compatibility hack for generating SVG content that it doesn't really understand
if (!doc.createElementNS) {
doc.createElementNS = function(ns, tagName) {
return doc.createElement(tagName);
};
}
 
// create a sandbox where a new chart will be generated
sandbox = createElement('div', null, {
position: 'absolute',
top: '-9999em',
width: chart.chartWidth + 'px',
height: chart.chartHeight + 'px'
}, doc.body);
 
// get the source size
cssWidth = chart.renderTo.style.width;
cssHeight = chart.renderTo.style.height;
sourceWidth = options.exporting.sourceWidth ||
options.chart.width ||
(/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||
600;
sourceHeight = options.exporting.sourceHeight ||
options.chart.height ||
(/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||
400;
 
// override some options
extend(options.chart, {
animation: false,
renderTo: sandbox,
forExport: true,
renderer: 'SVGRenderer',
width: sourceWidth,
height: sourceHeight
});
options.exporting.enabled = false; // hide buttons in print
delete options.data; // #3004
 
// prepare for replicating the chart
options.series = [];
each(chart.series, function(serie) {
seriesOptions = merge(serie.userOptions, { // #4912
animation: false, // turn off animation
enableMouseTracking: false,
showCheckbox: false,
visible: serie.visible
});
 
if (!seriesOptions.isInternal) { // used for the navigator series that has its own option set
options.series.push(seriesOptions);
}
});
 
// Assign an internal key to ensure a one-to-one mapping (#5924)
each(chart.axes, function(axis) {
if (!axis.userOptions.internalKey) { // #6444
axis.userOptions.internalKey = H.uniqueKey();
}
});
 
// generate the chart copy
chartCopy = new H.Chart(options, chart.callback);
 
// Axis options and series options (#2022, #3900, #5982)
if (chartOptions) {
each(['xAxis', 'yAxis', 'series'], function(coll) {
var collOptions = {};
if (chartOptions[coll]) {
collOptions[coll] = chartOptions[coll];
chartCopy.update(collOptions);
}
});
}
 
// Reflect axis extremes in the export (#5924)
each(chart.axes, function(axis) {
var axisCopy = H.find(chartCopy.axes, function(copy) {
return copy.options.internalKey ===
axis.userOptions.internalKey;
}),
extremes = axis.getExtremes(),
userMin = extremes.userMin,
userMax = extremes.userMax;
 
if (axisCopy && (userMin !== undefined || userMax !== undefined)) {
axisCopy.setExtremes(userMin, userMax, true, false);
}
});
 
// Get the SVG from the container's innerHTML
svg = chartCopy.getChartHTML();
 
svg = chart.sanitizeSVG(svg, options);
 
// free up memory
options = null;
chartCopy.destroy();
discardElement(sandbox);
 
return svg;
},
 
getSVGForExport: function(options, chartOptions) {
var chartExportingOptions = this.options.exporting;
 
return this.getSVG(merge({
chart: {
borderRadius: 0
}
},
chartExportingOptions.chartOptions,
chartOptions, {
exporting: {
sourceWidth: (options && options.sourceWidth) || chartExportingOptions.sourceWidth,
sourceHeight: (options && options.sourceHeight) || chartExportingOptions.sourceHeight
}
}
));
},
 
/**
* Exporting module required. Submit an SVG version of the chart to a server
* along with some parameters for conversion.
* @param {Object} exportingOptions
* Exporting options in addition to those defined in {@link
* https://api.highcharts.com/highcharts/exporting|exporting}.
* @param {String} exportingOptions.filename
* The file name for the export without extension.
* @param {String} exportingOptions.url
* The URL for the server module to do the conversion.
* @param {Number} exportingOptions.width
* The width of the PNG or JPG image generated on the server.
* @param {String} exportingOptions.type
* The MIME type of the converted image.
* @param {Number} exportingOptions.sourceWidth
* The pixel width of the source (in-page) chart.
* @param {Number} exportingOptions.sourceHeight
* The pixel height of the source (in-page) chart.
* @param {Options} chartOptions
* Additional chart options for the exported chart. For example a
* different background color can be added here, or `dataLabels`
* for export only.
*
* @sample highcharts/members/chart-exportchart/
* Export with no options
* @sample highcharts/members/chart-exportchart-filename/
* PDF type and custom filename
* @sample highcharts/members/chart-exportchart-custom-background/
* Different chart background in export
* @sample stock/members/chart-exportchart/
* Export with Highstock
*/
exportChart: function(exportingOptions, chartOptions) {
 
var svg = this.getSVGForExport(exportingOptions, chartOptions);
 
// merge the options
exportingOptions = merge(this.options.exporting, exportingOptions);
 
// do the post
H.post(exportingOptions.url, {
filename: exportingOptions.filename || 'chart',
type: exportingOptions.type,
width: exportingOptions.width || 0, // IE8 fails to post undefined correctly, so use 0
scale: exportingOptions.scale,
svg: svg
}, exportingOptions.formAttributes);
 
},
 
/**
* Exporting module required. Clears away other elements in the page and
* prints the chart as it is displayed. By default, when the exporting
* module is enabled, a context button with a drop down menu in the upper
* right corner accesses this function.
*
* @sample highcharts/members/chart-print/
* Print from a HTML button
*/
print: function() {
 
var chart = this,
container = chart.container,
origDisplay = [],
origParent = container.parentNode,
body = doc.body,
childNodes = body.childNodes,
printMaxWidth = chart.options.exporting.printMaxWidth,
resetParams,
handleMaxWidth;
 
if (chart.isPrinting) { // block the button while in printing mode
return;
}
 
chart.isPrinting = true;
chart.pointer.reset(null, 0);
 
fireEvent(chart, 'beforePrint');
 
// Handle printMaxWidth
handleMaxWidth = printMaxWidth && chart.chartWidth > printMaxWidth;
if (handleMaxWidth) {
resetParams = [chart.options.chart.width, undefined, false];
chart.setSize(printMaxWidth, undefined, false);
}
 
// hide all body content
each(childNodes, function(node, i) {
if (node.nodeType === 1) {
origDisplay[i] = node.style.display;
node.style.display = 'none';
}
});
 
// pull out the chart
body.appendChild(container);
 
// print
win.focus(); // #1510
win.print();
 
// allow the browser to prepare before reverting
setTimeout(function() {
 
// put the chart back in
origParent.appendChild(container);
 
// restore all body content
each(childNodes, function(node, i) {
if (node.nodeType === 1) {
node.style.display = origDisplay[i];
}
});
 
chart.isPrinting = false;
 
// Reset printMaxWidth
if (handleMaxWidth) {
chart.setSize.apply(chart, resetParams);
}
 
fireEvent(chart, 'afterPrint');
 
}, 1000);
 
},
 
/**
* Display a popup menu for choosing the export type.
*
* @private
*
* @param {String} className An identifier for the menu
* @param {Array} items A collection with text and onclicks for the items
* @param {Number} x The x position of the opener button
* @param {Number} y The y position of the opener button
* @param {Number} width The width of the opener button
* @param {Number} height The height of the opener button
*/
contextMenu: function(className, items, x, y, width, height, button) {
var chart = this,
navOptions = chart.options.navigation,
chartWidth = chart.chartWidth,
chartHeight = chart.chartHeight,
cacheName = 'cache-' + className,
menu = chart[cacheName],
menuPadding = Math.max(width, height), // for mouse leave detection
innerMenu,
hide,
menuStyle;
 
// create the menu only the first time
if (!menu) {
 
// create a HTML element above the SVG
chart[cacheName] = menu = createElement('div', {
className: className
}, {
position: 'absolute',
zIndex: 1000,
padding: menuPadding + 'px'
}, chart.container);
 
innerMenu = createElement('div', {
className: 'highcharts-menu'
}, null, menu);
 
 
 
// hide on mouse out
hide = function() {
css(menu, {
display: 'none'
});
if (button) {
button.setState(0);
}
chart.openMenu = false;
};
 
// Hide the menu some time after mouse leave (#1357)
chart.exportEvents.push(
addEvent(menu, 'mouseleave', function() {
menu.hideTimer = setTimeout(hide, 500);
}),
addEvent(menu, 'mouseenter', function() {
clearTimeout(menu.hideTimer);
}),
 
// Hide it on clicking or touching outside the menu (#2258, #2335,
// #2407)
addEvent(doc, 'mouseup', function(e) {
if (!chart.pointer.inClass(e.target, className)) {
hide();
}
})
);
 
// create the items
each(items, function(item) {
 
if (typeof item === 'string') {
item = chart.options.exporting.menuItemDefinitions[item];
}
 
if (H.isObject(item, true)) {
var element;
 
if (item.separator) {
element = createElement('hr', null, null, innerMenu);
 
} else {
element = createElement('div', {
className: 'highcharts-menu-item',
onclick: function(e) {
if (e) { // IE7
e.stopPropagation();
}
hide();
if (item.onclick) {
item.onclick.apply(chart, arguments);
}
},
innerHTML: item.text || chart.options.lang[item.textKey]
}, null, innerMenu);
 
 
}
 
// Keep references to menu divs to be able to destroy them
chart.exportDivElements.push(element);
}
});
 
// Keep references to menu and innerMenu div to be able to destroy them
chart.exportDivElements.push(innerMenu, menu);
 
chart.exportMenuWidth = menu.offsetWidth;
chart.exportMenuHeight = menu.offsetHeight;
}
 
menuStyle = {
display: 'block'
};
 
// if outside right, right align it
if (x + chart.exportMenuWidth > chartWidth) {
menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';
} else {
menuStyle.left = (x - menuPadding) + 'px';
}
// if outside bottom, bottom align it
if (y + height + chart.exportMenuHeight > chartHeight && button.alignOptions.verticalAlign !== 'top') {
menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';
} else {
menuStyle.top = (y + height - menuPadding) + 'px';
}
 
css(menu, menuStyle);
chart.openMenu = true;
},
 
/**
* Add the export button to the chart, with options.
*
* @private
*/
addButton: function(options) {
var chart = this,
renderer = chart.renderer,
btnOptions = merge(chart.options.navigation.buttonOptions, options),
onclick = btnOptions.onclick,
menuItems = btnOptions.menuItems,
symbol,
button,
symbolSize = btnOptions.symbolSize || 12;
if (!chart.btnCount) {
chart.btnCount = 0;
}
 
// Keeps references to the button elements
if (!chart.exportDivElements) {
chart.exportDivElements = [];
chart.exportSVGElements = [];
}
 
if (btnOptions.enabled === false) {
return;
}
 
 
var attr = btnOptions.theme,
states = attr.states,
hover = states && states.hover,
select = states && states.select,
callback;
 
delete attr.states;
 
if (onclick) {
callback = function(e) {
e.stopPropagation();
onclick.call(chart, e);
};
 
} else if (menuItems) {
callback = function() {
chart.contextMenu(
button.menuClassName,
menuItems,
button.translateX,
button.translateY,
button.width,
button.height,
button
);
button.setState(2);
};
}
 
 
if (btnOptions.text && btnOptions.symbol) {
attr.paddingLeft = pick(attr.paddingLeft, 25);
 
} else if (!btnOptions.text) {
extend(attr, {
width: btnOptions.width,
height: btnOptions.height,
padding: 0
});
}
 
button = renderer.button(btnOptions.text, 0, 0, callback, attr, hover, select)
.addClass(options.className)
.attr({
 
title: chart.options.lang[btnOptions._titleKey],
zIndex: 3 // #4955
});
button.menuClassName = options.menuClassName || 'highcharts-menu-' + chart.btnCount++;
 
if (btnOptions.symbol) {
symbol = renderer.symbol(
btnOptions.symbol,
btnOptions.symbolX - (symbolSize / 2),
btnOptions.symbolY - (symbolSize / 2),
symbolSize,
symbolSize
)
.addClass('highcharts-button-symbol')
.attr({
zIndex: 1
}).add(button);
 
 
}
 
button.add()
.align(extend(btnOptions, {
width: button.width,
x: pick(btnOptions.x, chart.buttonOffset) // #1654
}), true, 'spacingBox');
 
chart.buttonOffset += (button.width + btnOptions.buttonSpacing) * (btnOptions.align === 'right' ? -1 : 1);
 
chart.exportSVGElements.push(button, symbol);
 
},
 
/**
* Destroy the export buttons.
*
* @private
*/
destroyExport: function(e) {
var chart = e ? e.target : this,
exportSVGElements = chart.exportSVGElements,
exportDivElements = chart.exportDivElements,
exportEvents = chart.exportEvents,
cacheName;
 
// Destroy the extra buttons added
if (exportSVGElements) {
each(exportSVGElements, function(elem, i) {
 
// Destroy and null the svg/vml elements
if (elem) { // #1822
elem.onclick = elem.ontouchstart = null;
cacheName = 'cache-' + elem.menuClassName;
 
if (chart[cacheName]) {
delete chart[cacheName];
}
 
chart.exportSVGElements[i] = elem.destroy();
}
});
exportSVGElements.length = 0;
}
 
// Destroy the divs for the menu
if (exportDivElements) {
each(exportDivElements, function(elem, i) {
 
// Remove the event handler
clearTimeout(elem.hideTimer); // #5427
removeEvent(elem, 'mouseleave');
 
// Remove inline events
chart.exportDivElements[i] = elem.onmouseout = elem.onmouseover = elem.ontouchstart = elem.onclick = null;
 
// Destroy the div by moving to garbage bin
discardElement(elem);
});
exportDivElements.length = 0;
}
 
if (exportEvents) {
each(exportEvents, function(unbind) {
unbind();
});
exportEvents.length = 0;
}
}
});
 
 
// These ones are translated to attributes rather than styles
SVGRenderer.prototype.inlineToAttributes = [
'fill',
'stroke',
'strokeLinecap',
'strokeLinejoin',
'strokeWidth',
'textAnchor',
'x',
'y'
];
// These CSS properties are not inlined. Remember camelCase.
SVGRenderer.prototype.inlineBlacklist = [
/-/, // In Firefox, both hyphened and camelCased names are listed
/^(clipPath|cssText|d|height|width)$/, // Full words
/^font$/, // more specific props are set
/[lL]ogical(Width|Height)$/,
/perspective/,
/TapHighlightColor/,
/^transition/
// /^text (border|color|cursor|height|webkitBorder)/
];
SVGRenderer.prototype.unstyledElements = [
'clipPath',
'defs',
'desc'
];
 
/**
* Analyze inherited styles from stylesheets and add them inline
*
* @todo: What are the border styles for text about? In general, text has a lot of properties.
* @todo: Make it work with IE9 and IE10.
*/
Chart.prototype.inlineStyles = function() {
var renderer = this.renderer,
inlineToAttributes = renderer.inlineToAttributes,
blacklist = renderer.inlineBlacklist,
whitelist = renderer.inlineWhitelist, // For IE
unstyledElements = renderer.unstyledElements,
defaultStyles = {},
dummySVG;
 
/**
* Make hyphenated property names out of camelCase
*/
function hyphenate(prop) {
return prop.replace(
/([A-Z])/g,
function(a, b) {
return '-' + b.toLowerCase();
}
);
}
 
/**
* Call this on all elements and recurse to children
*/
function recurse(node) {
var styles,
parentStyles,
cssText = '',
dummy,
styleAttr,
blacklisted,
whitelisted,
i;
 
// Check computed styles and whether they are in the white/blacklist for
// styles or atttributes
function filterStyles(val, prop) {
 
// Check against whitelist & blacklist
blacklisted = whitelisted = false;
if (whitelist) {
// Styled mode in IE has a whitelist instead.
// Exclude all props not in this list.
i = whitelist.length;
while (i-- && !whitelisted) {
whitelisted = whitelist[i].test(prop);
}
blacklisted = !whitelisted;
}
 
// Explicitly remove empty transforms
if (prop === 'transform' && val === 'none') {
blacklisted = true;
}
 
i = blacklist.length;
while (i-- && !blacklisted) {
blacklisted = blacklist[i].test(prop) || typeof val === 'function';
}
 
if (!blacklisted) {
// If parent node has the same style, it gets inherited, no need to inline it
if (parentStyles[prop] !== val && defaultStyles[node.nodeName][prop] !== val) {
// Attributes
if (inlineToAttributes.indexOf(prop) !== -1) {
node.setAttribute(hyphenate(prop), val);
// Styles
} else {
cssText += hyphenate(prop) + ':' + val + ';';
}
}
}
}
 
if (node.nodeType === 1 && unstyledElements.indexOf(node.nodeName) === -1) {
styles = win.getComputedStyle(node, null);
parentStyles = node.nodeName === 'svg' ? {} : win.getComputedStyle(node.parentNode, null);
 
// Get default styles from the browser so that we don't have to add these
if (!defaultStyles[node.nodeName]) {
if (!dummySVG) {
dummySVG = doc.createElementNS(H.SVG_NS, 'svg');
dummySVG.setAttribute('version', '1.1');
doc.body.appendChild(dummySVG);
}
dummy = doc.createElementNS(node.namespaceURI, node.nodeName);
dummySVG.appendChild(dummy);
defaultStyles[node.nodeName] = merge(win.getComputedStyle(dummy, null)); // Copy, so we can remove the node
dummySVG.removeChild(dummy);
}
 
// Loop through all styles and add them inline if they are ok
if (isFirefoxBrowser || isMSBrowser) {
// Some browsers put lots of styles on the prototype
for (var p in styles) {
filterStyles(styles[p], p);
}
} else {
objectEach(styles, filterStyles);
}
 
// Apply styles
if (cssText) {
styleAttr = node.getAttribute('style');
node.setAttribute('style', (styleAttr ? styleAttr + ';' : '') + cssText);
}
 
// Set default stroke width (needed at least for IE)
if (node.nodeName === 'svg') {
node.setAttribute('stroke-width', '1px');
}
 
if (node.nodeName === 'text') {
return;
}
 
// Recurse
each(node.children || node.childNodes, recurse);
}
}
 
/**
* Remove the dummy objects used to get defaults
*/
function tearDown() {
dummySVG.parentNode.removeChild(dummySVG);
}
 
recurse(this.container.querySelector('svg'));
tearDown();
 
};
 
 
 
symbols.menu = function(x, y, width, height) {
var arr = [
'M', x, y + 2.5,
'L', x + width, y + 2.5,
'M', x, y + height / 2 + 0.5,
'L', x + width, y + height / 2 + 0.5,
'M', x, y + height - 1.5,
'L', x + width, y + height - 1.5
];
return arr;
};
 
// Add the buttons on chart load
Chart.prototype.renderExporting = function() {
var chart = this,
exportingOptions = chart.options.exporting,
buttons = exportingOptions.buttons,
isDirty = chart.isDirtyExporting || !chart.exportSVGElements;
 
chart.buttonOffset = 0;
if (chart.isDirtyExporting) {
chart.destroyExport();
}
 
if (isDirty && exportingOptions.enabled !== false) {
chart.exportEvents = [];
 
objectEach(buttons, function(button) {
chart.addButton(button);
});
 
chart.isDirtyExporting = false;
}
 
// Destroy the export elements at chart destroy
addEvent(chart, 'destroy', chart.destroyExport);
};
 
Chart.prototype.callbacks.push(function(chart) {
 
function update(prop, options, redraw) {
chart.isDirtyExporting = true;
merge(true, chart.options[prop], options);
if (pick(redraw, true)) {
chart.redraw();
}
 
}
 
chart.renderExporting();
 
addEvent(chart, 'redraw', chart.renderExporting);
 
// Add update methods to handle chart.update and chart.exporting.update
// and chart.navigation.update.
each(['exporting', 'navigation'], function(prop) {
chart[prop] = {
update: function(options, redraw) {
update(prop, options, redraw);
}
};
});
 
// Uncomment this to see a button directly below the chart, for quick
// testing of export
/*
if (!chart.renderer.forExport) {
var button;
 
// View SVG Image
button = doc.createElement('button');
button.innerHTML = 'View SVG Image';
chart.renderTo.parentNode.appendChild(button);
button.onclick = function () {
var div = doc.createElement('div');
div.innerHTML = chart.getSVGForExport();
chart.renderTo.parentNode.appendChild(div);
};
 
// View SVG Source
button = doc.createElement('button');
button.innerHTML = 'View SVG Source';
chart.renderTo.parentNode.appendChild(button);
button.onclick = function () {
var pre = doc.createElement('pre');
pre.innerHTML = chart.getSVGForExport()
.replace(/</g, '\n&lt;')
.replace(/>/g, '&gt;');
chart.renderTo.parentNode.appendChild(pre);
};
}
// */
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/funnel.js
@@ -0,0 +1,12 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Highcharts funnel module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(e){"object"===typeof module&&module.exports?module.exports=e:e(Highcharts)})(function(e){(function(g){var e=g.seriesType,C=g.seriesTypes,H=g.noop,D=g.pick,I=g.each;e("funnel","pie",{animation:!1,center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",reversed:!1,size:!0},{animate:H,translate:function(){var b=function(a,b){return/%$/.test(a)?b*parseInt(a,10)/100:parseInt(a,10)},E=0,c=this.chart,f=this.options,d=f.reversed,e=f.ignoreHiddenPoint,t=c.plotWidth,c=c.plotHeight,
q=0,g=f.center,h=b(g[0],t),r=b(g[1],c),C=b(f.width,t),l,v,m=b(f.height,c),w=b(f.neckWidth,t),F=b(f.neckHeight,c),x=r-m/2+m-F,b=this.data,z,A,D="left"===f.dataLabels.position?1:0,B,n,G,u,k,y,p;this.getWidthAt=v=function(a){var b=r-m/2;return a>x||m===F?w:w+(C-w)*(1-(a-b)/(m-F))};this.getX=function(a,b,c){return h+(b?-1:1)*(v(d?2*r-a:a)/2+c.labelDistance)};this.center=[h,r,m];this.centerX=h;I(b,function(a){e&&!1===a.visible||(E+=a.y)});I(b,function(a){p=null;A=E?a.y/E:0;n=r-m/2+q*m;k=n+A*m;l=v(n);B=
h-l/2;G=B+l;l=v(k);u=h-l/2;y=u+l;n>x?(B=u=h-w/2,G=y=h+w/2):k>x&&(p=k,l=v(x),u=h-l/2,y=u+l,k=x);d&&(n=2*r-n,k=2*r-k,p=p?2*r-p:null);z=["M",B,n,"L",G,n,y,k];p&&z.push(y,p,u,p);z.push(u,k,"Z");a.shapeType="path";a.shapeArgs={d:z};a.percentage=100*A;a.plotX=h;a.plotY=(n+(p||k))/2;a.tooltipPos=[h,a.plotY];a.slice=H;a.half=D;e&&!1===a.visible||(q+=A)})},sortByAngle:function(b){b.sort(function(b,c){return b.plotY-c.plotY})},drawDataLabels:function(){var b=this.data,e=this.options.dataLabels.distance,c,f,
d,g=b.length,t,q;for(this.center[2]-=2*e;g--;)d=b[g],f=(c=d.half)?1:-1,q=d.plotY,d.labelDistance=D(d.options.dataLabels&&d.options.dataLabels.distance,e),this.maxLabelDistance=Math.max(d.labelDistance,this.maxLabelDistance||0),t=this.getX(q,c,d),d.labelPos=[0,q,t+(d.labelDistance-5)*f,q,t+d.labelDistance*f,q,c?"right":"left",0];C.pie.prototype.drawDataLabels.call(this)}});e("pyramid","funnel",{neckWidth:"0%",neckHeight:"0%",reversed:!0})})(e)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/funnel.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","seriesType","seriesTypes","noop","pick","each","animation","center","width","neckWidth","height","neckHeight","reversed","size","animate","translate","getLength","length","relativeTo","test","parseInt","sum","chart","series","options","ignoreHiddenPoint","plotWidth","plotHeight","cumulative","centerX","centerY","tempWidth","getWidthAt","neckY","data","path","fraction","half","dataLabels","position","x1","y1","x2","x3","y3","x4","y5","y","top","getX","series.getX","point","labelDistance","visible","push","shapeType","shapeArgs","d","percentage","plotX","plotY","tooltipPos","slice","sortByAngle","points","sort","a","b","drawDataLabels","distance","leftSide","sign","i","x","maxLabelDistance","Math","max","labelPos","pie","prototype","call"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/funnel.src.js
@@ -0,0 +1,391 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Highcharts funnel module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Highcharts funnel module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/* eslint indent:0 */
 
// create shortcuts
var seriesType = Highcharts.seriesType,
seriesTypes = Highcharts.seriesTypes,
noop = Highcharts.noop,
pick = Highcharts.pick,
each = Highcharts.each;
 
 
seriesType('funnel', 'pie',
/**
* Funnel charts are a type of chart often used to visualize stages in a sales
* project, where the top are the initial stages with the most clients.
* It requires that the modules/funnel.js file is loaded.
*
* @sample highcharts/demo/funnel/ Funnel demo
* @extends {plotOptions.pie}
* @optionparent plotOptions.funnel
*/
{
 
/**
*/
animation: false,
 
/**
* The center of the series. By default, it is centered in the middle
* of the plot area, so it fills the plot area height.
*
* @type {Array<String|Number>}
* @default ["50%", "50%"]
* @since 3.0
* @product highcharts
*/
center: ['50%', '50%'],
 
/**
* The width of the funnel compared to the width of the plot area,
* or the pixel width if it is a number.
*
* @type {Number|String}
* @default 90%
* @since 3.0
* @product highcharts
*/
width: '90%',
 
/**
* The width of the neck, the lower part of the funnel. A number defines
* pixel width, a percentage string defines a percentage of the plot
* area width.
*
* @type {Number|String}
* @sample {highcharts} highcharts/demo/funnel/ Funnel demo
* @default 30%
* @since 3.0
* @product highcharts
*/
neckWidth: '30%',
 
/**
* The height of the funnel or pyramid. If it is a number it defines
* the pixel height, if it is a percentage string it is the percentage
* of the plot area height.
*
* @type {Number|String}
* @sample {highcharts} highcharts/demo/funnel/ Funnel demo
* @since 3.0
* @product highcharts
*/
height: '100%',
 
/**
* The height of the neck, the lower part of the funnel. A number defines
* pixel width, a percentage string defines a percentage of the plot
* area height.
*
* @type {Number|String}
* @default 25%
* @product highcharts
*/
neckHeight: '25%',
 
/**
* A reversed funnel has the widest area down. A reversed funnel with
* no neck width and neck height is a pyramid.
*
* @type {Boolean}
* @default false
* @since 3.0.10
* @product highcharts
*/
reversed: false,
 
/**
*/
size: true, // to avoid adapting to data label size in Pie.drawDataLabels
 
 
},
 
// Properties
{
animate: noop,
 
/**
* Overrides the pie translate method
*/
translate: function() {
 
var
// Get positions - either an integer or a percentage string must be given
getLength = function(length, relativeTo) {
return (/%$/).test(length) ?
relativeTo * parseInt(length, 10) / 100 :
parseInt(length, 10);
},
 
sum = 0,
series = this,
chart = series.chart,
options = series.options,
reversed = options.reversed,
ignoreHiddenPoint = options.ignoreHiddenPoint,
plotWidth = chart.plotWidth,
plotHeight = chart.plotHeight,
cumulative = 0, // start at top
center = options.center,
centerX = getLength(center[0], plotWidth),
centerY = getLength(center[1], plotHeight),
width = getLength(options.width, plotWidth),
tempWidth,
getWidthAt,
height = getLength(options.height, plotHeight),
neckWidth = getLength(options.neckWidth, plotWidth),
neckHeight = getLength(options.neckHeight, plotHeight),
neckY = (centerY - height / 2) + height - neckHeight,
data = series.data,
path,
fraction,
half = options.dataLabels.position === 'left' ? 1 : 0,
 
x1,
y1,
x2,
x3,
y3,
x4,
y5;
 
// Return the width at a specific y coordinate
series.getWidthAt = getWidthAt = function(y) {
var top = (centerY - height / 2);
 
return y > neckY || height === neckHeight ?
neckWidth :
neckWidth + (width - neckWidth) * (1 - (y - top) / (height - neckHeight));
};
series.getX = function(y, half, point) {
return centerX + (half ? -1 : 1) * ((getWidthAt(reversed ? 2 * centerY - y : y) / 2) + point.labelDistance);
};
 
// Expose
series.center = [centerX, centerY, height];
series.centerX = centerX;
 
/*
* Individual point coordinate naming:
*
* x1,y1 _________________ x2,y1
* \ /
* \ /
* \ /
* \ /
* \ /
* x3,y3 _________ x4,y3
*
* Additional for the base of the neck:
*
* | |
* | |
* | |
* x3,y5 _________ x4,y5
*/
 
 
 
 
// get the total sum
each(data, function(point) {
if (!ignoreHiddenPoint || point.visible !== false) {
sum += point.y;
}
});
 
each(data, function(point) {
// set start and end positions
y5 = null;
fraction = sum ? point.y / sum : 0;
y1 = centerY - height / 2 + cumulative * height;
y3 = y1 + fraction * height;
//tempWidth = neckWidth + (width - neckWidth) * ((height - neckHeight - y1) / (height - neckHeight));
tempWidth = getWidthAt(y1);
x1 = centerX - tempWidth / 2;
x2 = x1 + tempWidth;
tempWidth = getWidthAt(y3);
x3 = centerX - tempWidth / 2;
x4 = x3 + tempWidth;
 
// the entire point is within the neck
if (y1 > neckY) {
x1 = x3 = centerX - neckWidth / 2;
x2 = x4 = centerX + neckWidth / 2;
 
// the base of the neck
} else if (y3 > neckY) {
y5 = y3;
 
tempWidth = getWidthAt(neckY);
x3 = centerX - tempWidth / 2;
x4 = x3 + tempWidth;
 
y3 = neckY;
}
 
if (reversed) {
y1 = 2 * centerY - y1;
y3 = 2 * centerY - y3;
y5 = (y5 ? 2 * centerY - y5 : null);
}
// save the path
path = [
'M',
x1, y1,
'L',
x2, y1,
x4, y3
];
if (y5) {
path.push(x4, y5, x3, y5);
}
path.push(x3, y3, 'Z');
 
// prepare for using shared dr
point.shapeType = 'path';
point.shapeArgs = {
d: path
};
 
 
// for tooltips and data labels
point.percentage = fraction * 100;
point.plotX = centerX;
point.plotY = (y1 + (y5 || y3)) / 2;
 
// Placement of tooltips and data labels
point.tooltipPos = [
centerX,
point.plotY
];
 
// Slice is a noop on funnel points
point.slice = noop;
 
// Mimicking pie data label placement logic
point.half = half;
 
if (!ignoreHiddenPoint || point.visible !== false) {
cumulative += fraction;
}
});
},
 
/**
* Funnel items don't have angles (#2289)
*/
sortByAngle: function(points) {
points.sort(function(a, b) {
return a.plotY - b.plotY;
});
},
 
/**
* Extend the pie data label method
*/
drawDataLabels: function() {
var series = this,
data = series.data,
labelDistance = series.options.dataLabels.distance,
leftSide,
sign,
point,
i = data.length,
x,
y;
 
// In the original pie label anticollision logic, the slots are distributed
// from one labelDistance above to one labelDistance below the pie. In funnels
// we don't want this.
series.center[2] -= 2 * labelDistance;
 
// Set the label position array for each point.
while (i--) {
point = data[i];
leftSide = point.half;
sign = leftSide ? 1 : -1;
y = point.plotY;
point.labelDistance = pick(
point.options.dataLabels && point.options.dataLabels.distance,
labelDistance
);
 
series.maxLabelDistance = Math.max(point.labelDistance, series.maxLabelDistance || 0);
x = series.getX(y, leftSide, point);
 
// set the anchor point for data labels
point.labelPos = [
0, // first break of connector
y, // a/a
x + (point.labelDistance - 5) * sign, // second break, right outside point shape
y, // a/a
x + point.labelDistance * sign, // landing point for connector
y, // a/a
leftSide ? 'right' : 'left', // alignment
0 // center angle
];
}
 
seriesTypes.pie.prototype.drawDataLabels.call(this);
}
 
});
 
/**
* Pyramid series type.
*/
seriesType('pyramid', 'funnel',
/**
* A pyramid series is a special type of funnel, without neck and reversed by default.
* @extends funnel
* @optionparent plotOptions.pyramid
*/
{
 
/**
*/
neckWidth: '0%',
 
/**
*/
neckHeight: '0%',
 
/**
* The pyramid is reversed by default, as opposed to the funnel, which
* shares the layout engine, and is not reversed.
*
* @type {Boolean}
* @default true
* @since 3.0.10
* @product highcharts
*/
reversed: true
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/gantt.js
@@ -0,0 +1,24 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Gantt series
 
(c) 2016 Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(g){var n=g.dateFormat,r=g.each,t=g.isObject,v=g.pick,m=g.wrap,p=g.Axis,w=g.Chart,u=g.Tick;p.prototype.isOuterAxis=function(){var a=this,e=-1,b=!0;r(this.chart.axes,function(d,f){d.side===a.side&&(d===a?e=f:0<=e&&f>e&&(b=!1))});return b};u.prototype.getLabelWidth=function(){return this.label.getBBox().width};p.prototype.getMaxLabelLength=function(a){var e=this.tickPositions,b=this.ticks,d=0;
if(!this.maxLabelLength||a)r(e,function(a){(a=b[a])&&a.labelLength>d&&(d=a.labelLength)}),this.maxLabelLength=d;return this.maxLabelLength};p.prototype.addTitle=function(){var a=this.chart.renderer,e=this.axisParent,b=this.horiz,d=this.opposite,f=this.options,c=f.title,l;this.showAxis=l=this.hasData()||v(f.showEmpty,!0);f.title="";this.axisTitle||((f=c.textAlign)||(f=(b?{low:"left",middle:"center",high:"right"}:{low:d?"right":"left",middle:"center",high:d?"left":"right"})[c.align]),this.axisTitle=
a.text(c.text,0,0,c.useHTML).attr({zIndex:7,rotation:c.rotation||0,align:f}).addClass("highcharts-axis-title").add(e),this.axisTitle.isNew=!0);this.axisTitle[l?"show":"hide"](!0)};g.dateFormats={W:function(a){a=new Date(a);var e=0===a.getUTCDay()?7:a.getUTCDay(),b=a.getTime(),d=new Date(a.getUTCFullYear(),0,1,-6);a.setDate(a.getUTCDate()+4-e);return 1+Math.floor(Math.floor((b-d)/864E5)/7)},E:function(a){return n("%a",a,!0).charAt(0)}};m(u.prototype,"addLabel",function(a){var e=this.axis,b=void 0!==
e.options.categories,d=e.tickPositions,d=this.pos!==d[d.length-1];(!e.options.grid||b||d)&&a.apply(this)});m(u.prototype,"getLabelPosition",function(a,e,b,d){var f=a.apply(this,Array.prototype.slice.call(arguments,1)),c=this.axis,l=c.options,h=l.tickInterval||1,q,k;l.grid&&(q=l.labels.style.fontSize,k=c.chart.renderer.fontMetrics(q,d),q=k.b,k=k.h,c.horiz&&void 0===l.categories?(l=c.axisGroup.getBBox().height,h=this.pos+h/2,f.x=c.translate(h)+c.left,h=l/2+k/2-Math.abs(k-q),f.y=0===c.side?b-h:b+h):
(void 0===l.categories&&(h=this.pos+h/2,f.y=c.translate(h)+c.top+q/2),h=this.getLabelWidth()/2-c.maxLabelLength/2,f.x=3===c.side?f.x+h:f.x-h));return f});m(p.prototype,"tickSize",function(a){var e=a.apply(this,Array.prototype.slice.call(arguments,1)),b;this.options.grid&&!this.horiz&&(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),this.maxLabelLength||(this.maxLabelLength=this.getMaxLabelLength()),b=this.maxLabelLength+b,e[0]=b);return e});m(p.prototype,"getOffset",function(a){var e=this.chart.axisOffset,
b=this.side,d,f,c=this.options,l=c.title,h=l&&l.text&&!1!==l.enabled;this.options.grid&&t(this.options.title)?(f=this.tickSize("tick")[0],e[b]&&f&&(d=e[b]+f),h&&this.addTitle(),a.apply(this,Array.prototype.slice.call(arguments,1)),e[b]=v(d,e[b]),c.title=l):a.apply(this,Array.prototype.slice.call(arguments,1))});m(p.prototype,"renderUnsquish",function(a){this.options.grid&&(this.labelRotation=0,this.options.labels.rotation=0);a.apply(this)});m(p.prototype,"setOptions",function(a,e){e.grid&&this.horiz&&
(e.startOnTick=!0,e.minPadding=0,e.endOnTick=!0);a.apply(this,Array.prototype.slice.call(arguments,1))});m(p.prototype,"render",function(a){var e=this.options,b,d,f,c,l,h,q=this.chart.renderer;if(e.grid){if(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),b=this.maxLabelLength+b,d=e.lineWidth,this.rightWall&&this.rightWall.destroy(),a.apply(this),a=this.axisGroup.getBBox(),this.horiz&&(this.rightWall=q.path(["M",a.x+this.width+1,a.y,"L",a.x+this.width+1,a.y+a.height]).attr({stroke:e.tickColor||
"#ccd6eb","stroke-width":e.tickWidth||1,zIndex:7,class:"grid-wall"}).add(this.axisGroup)),this.isOuterAxis()&&this.axisLine&&(this.horiz&&(b=a.height-1),d)){a=this.getLinePath(d);l=a.indexOf("M")+1;h=a.indexOf("L")+1;f=a.indexOf("M")+2;c=a.indexOf("L")+2;if(0===this.side||3===this.side)b=-b;this.horiz?(a[f]+=b,a[c]+=b):(a[l]+=b,a[h]+=b);this.axisLineExtra?this.axisLineExtra.animate({d:a}):this.axisLineExtra=q.path(a).attr({stroke:e.lineColor,"stroke-width":d,zIndex:7}).add(this.axisGroup);this.axisLine[this.showAxis?
"show":"hide"](!0)}}else a.apply(this)});m(w.prototype,"render",function(a){var e=25/11,b,d;r(this.axes,function(a){var c=a.options;c.grid&&(d=c.labels.style.fontSize,b=a.chart.renderer.fontMetrics(d),"datetime"===c.type&&(c.units=[["millisecond",[1]],["second",[1]],["minute",[1]],["hour",[1]],["day",[1]],["week",[1]],["month",[1]],["year",null]]),a.horiz?c.tickLength=c.cellHeight||b.h*e:(c.tickWidth=1,c.lineWidth||(c.lineWidth=1)))});a.apply(this)})})(n);(function(g){var n=g.getOptions().plotOptions,
r=g.seriesTypes.column,t=g.each,v=g.extendClass,m=g.isNumber,p=g.isObject,w=g.merge,u=g.pick,a=g.seriesTypes,e=g.wrap,b=g.Axis,d=g.Point,f=g.Series;n.xrange=w(n.column,{tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.yCategory}\x3c/b\x3e\x3cbr/\x3e'}});a.xrange=v(r,{pointClass:v(d,{getLabelConfig:function(){var a=d.prototype.getLabelConfig.call(this);a.x2=this.x2;a.yCategory=this.yCategory=this.series.yAxis.categories&&this.series.yAxis.categories[this.y];
return a}}),type:"xrange",forceDL:!0,parallelArrays:["x","x2","y"],requireSorting:!1,animate:a.line.prototype.animate,getColumnMetrics:function(){function a(){t(e.series,function(a){var c=a.xAxis;a.xAxis=a.yAxis;a.yAxis=c})}var b,e=this.chart;a();this.yAxis.closestPointRange=1;b=r.prototype.getColumnMetrics.call(this);a();return b},cropData:function(a,b,e,d){b=f.prototype.cropData.call(this,this.x2Data,b,e,d);b.xData=a.slice(b.start,b.end);return b},translate:function(){r.prototype.translate.apply(this,
arguments);var a=this.xAxis,b=this.columnMetrics,e=this.options.minPointLength||0;t(this.points,function(c){var k=c.plotX,d=u(c.x2,c.x+(c.len||0)),d=a.toPixels(d,!0),f=d-k,h;e&&(h=e-f,0>h&&(h=0),k-=h/2,d+=h/2);k=Math.max(k,-10);d=Math.min(Math.max(d,-10),a.len+10);d<k&&(d=k);c.shapeArgs={x:k,y:c.plotY+b.offset,width:d-k,height:b.width};c.tooltipPos[0]+=f/2;c.tooltipPos[1]-=b.width/2;if(d=c.partialFill)p(d)&&(d=d.amount),m(d)||(d=0),k=c.shapeArgs,c.partShapeArgs={x:k.x,y:k.y+1,width:k.width*d,height:k.height-
2}})},drawPoints:function(){var a=this,b=this.chart,d=b.renderer,e=b.pointCount<(a.options.animationLimit||250)?"animate":"attr";t(a.points,function(b){var c=b.graphic,f=b.shapeType,h=b.shapeArgs,g=b.partShapeArgs;if(m(b.plotY)&&null!==b.y)if(c){if(b.graphicOriginal[e](w(h)),g)b.graphicOverlay[e](w(g))}else b.graphic=c=d.g("point").attr({"class":b.getClassName()}).add(b.group||a.group),b.graphicOriginal=d[f](h).addClass("highcharts-partfill-original").add(c),g&&(b.graphicOverlay=d[f](g).addClass("highcharts-partfill-overlay").add(c));
else c&&(b.graphic=c.destroy())})}});e(b.prototype,"getSeriesExtremes",function(a){var b=this.series,c,d;a.call(this);this.isXAxis&&"xrange"===b.type&&(c=u(this.dataMax,Number.MIN_VALUE),t(this.series,function(a){t(a.x2Data||[],function(a){a>c&&(c=a,d=!0)})}),d&&(this.dataMax=c))})})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/gantt.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":24,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","dateFormat","each","isObject","pick","wrap","Axis","Chart","Tick","prototype","isOuterAxis","Axis.prototype.isOuterAxis","axis","thisIndex","isOuter","chart","axes","otherAxis","index","side","getLabelWidth","Tick.prototype.getLabelWidth","label","getBBox","width","getMaxLabelLength","Axis.prototype.getMaxLabelLength","force","tickPositions","ticks","maxLabelLength","tick","labelLength","addTitle","Axis.prototype.addTitle","renderer","axisParent","horiz","opposite","options","axisTitleOptions","title","showAxis","hasData","showEmpty","axisTitle","textAlign","low","middle","high","align","text","useHTML","attr","zIndex","rotation","addClass","add","isNew","dateFormats","W","timestamp","date","Date","day","getUTCDay","time","getTime","startOfYear","getUTCFullYear","setDate","getUTCDate","Math","floor","dayNumber","E","charAt","proceed","isCategoryAxis","undefined","categories","isLastTick","pos","lastTick","length","grid","apply","x","y","retVal","Array","slice","call","arguments","tickInterval","fontSize","labelMetrics","labels","style","fontMetrics","lblB","b","lblH","h","axisHeight","axisGroup","height","newPos","translate","left","labelCenter","abs","top","newX","labelPadding","defaultLeftAxisOptions","distance","axisOffset","tickSize","enabled","labelRotation","userOptions","startOnTick","minPadding","endOnTick","lineWidth","yStartIndex","yEndIndex","xStartIndex","xEndIndex","rightWall","destroy","axisGroupBox","path","stroke","tickColor","tickWidth","class","axisLine","linePath","getLinePath","indexOf","axisLineExtra","animate","d","lineColor","fontSizeToCellHeightRatio","type","units","tickLength","cellHeight","defaultPlotOptions","getOptions","plotOptions","columnType","seriesTypes","column","extendClass","isNumber","merge","Point","Series","xrange","tooltip","pointFormat","pointClass","getLabelConfig","cfg","x2","yCategory","series","yAxis","forceDL","parallelArrays","requireSorting","line","getColumnMetrics","swapAxes","s","xAxis","metrics","closestPointRange","cropData","xData","yData","min","max","crop","x2Data","start","end","columnMetrics","minPointLength","points","point","plotX","posX","len","plotX2","toPixels","widthDifference","shapeArgs","plotY","offset","tooltipPos","partialFill","amount","partShapeArgs","drawPoints","verb","pointCount","animationLimit","graphic","shapeType","graphicOriginal","graphicOverlay","g","getClassName","group","dataMax","modMax","isXAxis","Number","MIN_VALUE","val"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/gantt.src.js
@@ -0,0 +1,793 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Gantt series
*
* (c) 2016 Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2016 Highsoft AS
* Authors: Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var dateFormat = H.dateFormat,
each = H.each,
isObject = H.isObject,
pick = H.pick,
wrap = H.wrap,
Axis = H.Axis,
Chart = H.Chart,
Tick = H.Tick;
 
 
// Enum for which side the axis is on.
// Maps to axis.side
var axisSide = {
top: 0,
right: 1,
bottom: 2,
left: 3,
0: 'top',
1: 'right',
2: 'bottom',
3: 'left'
};
 
/**
* Checks if an axis is the outer axis in its dimension. Since
* axes are placed outwards in order, the axis with the highest
* index is the outermost axis.
*
* Example: If there are multiple x-axes at the top of the chart,
* this function returns true if the axis supplied is the last
* of the x-axes.
*
* @return true if the axis is the outermost axis in its dimension;
* false if not
*/
Axis.prototype.isOuterAxis = function() {
var axis = this,
thisIndex = -1,
isOuter = true;
 
each(this.chart.axes, function(otherAxis, index) {
if (otherAxis.side === axis.side) {
if (otherAxis === axis) {
// Get the index of the axis in question
thisIndex = index;
 
// Check thisIndex >= 0 in case thisIndex has
// not been found yet
} else if (thisIndex >= 0 && index > thisIndex) {
// There was an axis on the same side with a
// higher index. Exit the loop.
isOuter = false;
return;
}
}
});
// There were either no other axes on the same side,
// or the other axes were not farther from the chart
return isOuter;
};
 
/**
* Shortcut function to Tick.label.getBBox().width.
*
* @return {number} width - the width of the tick label
*/
Tick.prototype.getLabelWidth = function() {
return this.label.getBBox().width;
};
 
/**
* Get the maximum label length.
* This function can be used in states where the axis.maxLabelLength has not
* been set.
*
* @param {boolean} force - Optional parameter to force a new calculation, even
* if a value has already been set
* @return {number} maxLabelLength - the maximum label length of the axis
*/
Axis.prototype.getMaxLabelLength = function(force) {
var tickPositions = this.tickPositions,
ticks = this.ticks,
maxLabelLength = 0;
 
if (!this.maxLabelLength || force) {
each(tickPositions, function(tick) {
tick = ticks[tick];
if (tick && tick.labelLength > maxLabelLength) {
maxLabelLength = tick.labelLength;
}
});
this.maxLabelLength = maxLabelLength;
}
return this.maxLabelLength;
};
 
/**
* Adds the axis defined in axis.options.title
*/
Axis.prototype.addTitle = function() {
var axis = this,
renderer = axis.chart.renderer,
axisParent = axis.axisParent,
horiz = axis.horiz,
opposite = axis.opposite,
options = axis.options,
axisTitleOptions = options.title,
hasData,
showAxis,
textAlign;
 
// For reuse in Axis.render
hasData = axis.hasData();
axis.showAxis = showAxis = hasData || pick(options.showEmpty, true);
 
// Disregard title generation in original Axis.getOffset()
options.title = '';
 
if (!axis.axisTitle) {
textAlign = axisTitleOptions.textAlign;
if (!textAlign) {
textAlign = (horiz ? {
low: 'left',
middle: 'center',
high: 'right'
} : {
low: opposite ? 'right' : 'left',
middle: 'center',
high: opposite ? 'left' : 'right'
})[axisTitleOptions.align];
}
axis.axisTitle = renderer.text(
axisTitleOptions.text,
0,
0,
axisTitleOptions.useHTML
)
.attr({
zIndex: 7,
rotation: axisTitleOptions.rotation || 0,
align: textAlign
})
.addClass('highcharts-axis-title')
 
// Add to axisParent instead of axisGroup, to ignore the space
// it takes
.add(axisParent);
axis.axisTitle.isNew = true;
}
 
 
// hide or show the title depending on whether showEmpty is set
axis.axisTitle[showAxis ? 'show' : 'hide'](true);
};
 
/**
* Add custom date formats
*/
H.dateFormats = {
// Week number
W: function(timestamp) {
var date = new Date(timestamp),
day = date.getUTCDay() === 0 ? 7 : date.getUTCDay(),
time = date.getTime(),
startOfYear = new Date(date.getUTCFullYear(), 0, 1, -6),
dayNumber;
date.setDate(date.getUTCDate() + 4 - day);
dayNumber = Math.floor((time - startOfYear) / 86400000);
return 1 + Math.floor(dayNumber / 7);
},
// First letter of the day of the week, e.g. 'M' for 'Monday'.
E: function(timestamp) {
return dateFormat('%a', timestamp, true).charAt(0);
}
};
 
/**
* Prevents adding the last tick label if the axis is not a category axis.
*
* Since numeric labels are normally placed at starts and ends of a range of
* value, and this module makes the label point at the value, an "extra" label
* would appear.
*
* @param {function} proceed - the original function
*/
wrap(Tick.prototype, 'addLabel', function(proceed) {
var axis = this.axis,
isCategoryAxis = axis.options.categories !== undefined,
tickPositions = axis.tickPositions,
lastTick = tickPositions[tickPositions.length - 1],
isLastTick = this.pos !== lastTick;
 
if (!axis.options.grid || isCategoryAxis || isLastTick) {
proceed.apply(this);
}
});
 
/**
* Center tick labels vertically and horizontally between ticks
*
* @param {function} proceed - the original function
*
* @return {object} object - an object containing x and y positions
* for the tick
*/
wrap(Tick.prototype, 'getLabelPosition', function(proceed, x, y, label) {
var retVal = proceed.apply(this, Array.prototype.slice.call(arguments, 1)),
axis = this.axis,
options = axis.options,
tickInterval = options.tickInterval || 1,
newX,
newPos,
axisHeight,
fontSize,
labelMetrics,
lblB,
lblH,
labelCenter;
 
// Only center tick labels if axis has option grid: true
if (options.grid) {
fontSize = options.labels.style.fontSize;
labelMetrics = axis.chart.renderer.fontMetrics(fontSize, label);
lblB = labelMetrics.b;
lblH = labelMetrics.h;
 
if (axis.horiz && options.categories === undefined) {
// Center x position
axisHeight = axis.axisGroup.getBBox().height;
newPos = this.pos + tickInterval / 2;
retVal.x = axis.translate(newPos) + axis.left;
labelCenter = (axisHeight / 2) + (lblH / 2) - Math.abs(lblH - lblB);
 
// Center y position
if (axis.side === axisSide.top) {
retVal.y = y - labelCenter;
} else {
retVal.y = y + labelCenter;
}
} else {
// Center y position
if (options.categories === undefined) {
newPos = this.pos + (tickInterval / 2);
retVal.y = axis.translate(newPos) + axis.top + (lblB / 2);
}
 
// Center x position
newX = (this.getLabelWidth() / 2) - (axis.maxLabelLength / 2);
if (axis.side === axisSide.left) {
retVal.x += newX;
} else {
retVal.x -= newX;
}
}
}
return retVal;
});
 
 
/**
* Draw vertical ticks extra long to create cell floors and roofs.
* Overrides the tickLength for vertical axes.
*
* @param {function} proceed - the original function
* @returns {array} retVal -
*/
wrap(Axis.prototype, 'tickSize', function(proceed) {
var axis = this,
retVal = proceed.apply(axis, Array.prototype.slice.call(arguments, 1)),
labelPadding,
distance;
 
if (axis.options.grid && !axis.horiz) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
if (!axis.maxLabelLength) {
axis.maxLabelLength = axis.getMaxLabelLength();
}
distance = axis.maxLabelLength + labelPadding;
 
retVal[0] = distance;
}
return retVal;
});
 
/**
* Disregards space required by axisTitle, by adding axisTitle to axisParent
* instead of axisGroup, and disregarding margins and offsets related to
* axisTitle.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'getOffset', function(proceed) {
var axis = this,
axisOffset = axis.chart.axisOffset,
side = axis.side,
axisHeight,
tickSize,
options = axis.options,
axisTitleOptions = options.title,
addTitle = axisTitleOptions &&
axisTitleOptions.text &&
axisTitleOptions.enabled !== false;
 
if (axis.options.grid && isObject(axis.options.title)) {
 
tickSize = axis.tickSize('tick')[0];
if (axisOffset[side] && tickSize) {
axisHeight = axisOffset[side] + tickSize;
}
 
if (addTitle) {
// Use the custom addTitle() to add it, while preventing making room
// for it
axis.addTitle();
}
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
axisOffset[side] = pick(axisHeight, axisOffset[side]);
 
 
// Put axis options back after original Axis.getOffset() has been called
options.title = axisTitleOptions;
 
} else {
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
}
});
 
/**
* Prevents rotation of labels when squished, as rotating them would not
* help.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'renderUnsquish', function(proceed) {
if (this.options.grid) {
this.labelRotation = 0;
this.options.labels.rotation = 0;
}
proceed.apply(this);
});
 
/**
* Places leftmost tick at the start of the axis, to create a left wall.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'setOptions', function(proceed, userOptions) {
var axis = this;
if (userOptions.grid && axis.horiz) {
userOptions.startOnTick = true;
userOptions.minPadding = 0;
userOptions.endOnTick = true;
}
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
/**
* Draw an extra line on the far side of the the axisLine,
* creating cell roofs of a grid.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'render', function(proceed) {
var axis = this,
options = axis.options,
labelPadding,
distance,
lineWidth,
linePath,
yStartIndex,
yEndIndex,
xStartIndex,
xEndIndex,
renderer = axis.chart.renderer,
axisGroupBox;
 
if (options.grid) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
distance = axis.maxLabelLength + labelPadding;
lineWidth = options.lineWidth;
 
// Remove right wall before rendering
if (axis.rightWall) {
axis.rightWall.destroy();
}
 
// Call original Axis.render() to obtain axis.axisLine and
// axis.axisGroup
proceed.apply(axis);
 
axisGroupBox = axis.axisGroup.getBBox();
 
// Add right wall on horizontal axes
if (axis.horiz) {
axis.rightWall = renderer.path([
'M',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y,
'L',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y + axisGroupBox.height
])
.attr({
stroke: options.tickColor || '#ccd6eb',
'stroke-width': options.tickWidth || 1,
zIndex: 7,
class: 'grid-wall'
})
.add(axis.axisGroup);
}
 
if (axis.isOuterAxis() && axis.axisLine) {
if (axis.horiz) {
// -1 to avoid adding distance each time the chart updates
distance = axisGroupBox.height - 1;
}
 
if (lineWidth) {
linePath = axis.getLinePath(lineWidth);
xStartIndex = linePath.indexOf('M') + 1;
xEndIndex = linePath.indexOf('L') + 1;
yStartIndex = linePath.indexOf('M') + 2;
yEndIndex = linePath.indexOf('L') + 2;
 
// Negate distance if top or left axis
if (axis.side === axisSide.top || axis.side === axisSide.left) {
distance = -distance;
}
 
// If axis is horizontal, reposition line path vertically
if (axis.horiz) {
linePath[yStartIndex] = linePath[yStartIndex] + distance;
linePath[yEndIndex] = linePath[yEndIndex] + distance;
} else {
// If axis is vertical, reposition line path horizontally
linePath[xStartIndex] = linePath[xStartIndex] + distance;
linePath[xEndIndex] = linePath[xEndIndex] + distance;
}
 
if (!axis.axisLineExtra) {
axis.axisLineExtra = renderer.path(linePath)
.attr({
stroke: options.lineColor,
'stroke-width': lineWidth,
zIndex: 7
})
.add(axis.axisGroup);
} else {
axis.axisLineExtra.animate({
d: linePath
});
}
 
// show or hide the line depending on options.showEmpty
axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
}
}
} else {
proceed.apply(axis);
}
});
 
/**
* Wraps chart rendering with the following customizations:
* 1. Prohibit timespans of multitudes of a time unit
* 2. Draw cell walls on vertical axes
*
* @param {function} proceed - the original function
*/
wrap(Chart.prototype, 'render', function(proceed) {
// 25 is optimal height for default fontSize (11px)
// 25 / 11 ≈ 2.28
var fontSizeToCellHeightRatio = 25 / 11,
fontMetrics,
fontSize;
 
each(this.axes, function(axis) {
var options = axis.options;
if (options.grid) {
fontSize = options.labels.style.fontSize;
fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
 
// Prohibit timespans of multitudes of a time unit,
// e.g. two days, three weeks, etc.
if (options.type === 'datetime') {
options.units = [
['millisecond', [1]],
['second', [1]],
['minute', [1]],
['hour', [1]],
['day', [1]],
['week', [1]],
['month', [1]],
['year', null]
];
}
 
// Make tick marks taller, creating cell walls of a grid.
// Use cellHeight axis option if set
if (axis.horiz) {
options.tickLength = options.cellHeight ||
fontMetrics.h * fontSizeToCellHeightRatio;
} else {
options.tickWidth = 1;
if (!options.lineWidth) {
options.lineWidth = 1;
}
}
}
});
 
// Call original Chart.render()
proceed.apply(this);
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2014-2017 Highsoft AS
* Authors: Torstein Honsi, Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var defaultPlotOptions = H.getOptions().plotOptions,
color = H.Color,
columnType = H.seriesTypes.column,
each = H.each,
extendClass = H.extendClass,
isNumber = H.isNumber,
isObject = H.isObject,
merge = H.merge,
pick = H.pick,
seriesTypes = H.seriesTypes,
wrap = H.wrap,
Axis = H.Axis,
Point = H.Point,
Series = H.Series,
pointFormat = '<span style="color:{point.color}">' +
'\u25CF' +
'</span> {series.name}: <b>{point.yCategory}</b><br/>',
xrange = 'xrange';
 
defaultPlotOptions.xrange = merge(defaultPlotOptions.column, {
tooltip: {
pointFormat: pointFormat
}
});
seriesTypes.xrange = extendClass(columnType, {
pointClass: extendClass(Point, {
// Add x2 and yCategory to the available properties for tooltip formats
getLabelConfig: function() {
var cfg = Point.prototype.getLabelConfig.call(this);
 
cfg.x2 = this.x2;
cfg.yCategory = this.yCategory = this.series.yAxis.categories && this.series.yAxis.categories[this.y];
return cfg;
}
}),
type: xrange,
forceDL: true,
parallelArrays: ['x', 'x2', 'y'],
requireSorting: false,
animate: seriesTypes.line.prototype.animate,
 
/**
* Borrow the column series metrics, but with swapped axes. This gives free access
* to features like groupPadding, grouping, pointWidth etc.
*/
getColumnMetrics: function() {
var metrics,
chart = this.chart;
 
function swapAxes() {
each(chart.series, function(s) {
var xAxis = s.xAxis;
s.xAxis = s.yAxis;
s.yAxis = xAxis;
});
}
 
swapAxes();
 
this.yAxis.closestPointRange = 1;
metrics = columnType.prototype.getColumnMetrics.call(this);
 
swapAxes();
 
return metrics;
},
 
/**
* Override cropData to show a point where x is outside visible range
* but x2 is outside.
*/
cropData: function(xData, yData, min, max) {
 
// Replace xData with x2Data to find the appropriate cropStart
var cropData = Series.prototype.cropData,
crop = cropData.call(this, this.x2Data, yData, min, max);
 
// Re-insert the cropped xData
crop.xData = xData.slice(crop.start, crop.end);
 
return crop;
},
 
translate: function() {
columnType.prototype.translate.apply(this, arguments);
var series = this,
xAxis = series.xAxis,
metrics = series.columnMetrics,
minPointLength = series.options.minPointLength || 0;
 
each(series.points, function(point) {
var plotX = point.plotX,
posX = pick(point.x2, point.x + (point.len || 0)),
plotX2 = xAxis.toPixels(posX, true),
width = plotX2 - plotX,
widthDifference,
shapeArgs,
partialFill;
 
if (minPointLength) {
widthDifference = minPointLength - width;
if (widthDifference < 0) {
widthDifference = 0;
}
plotX -= widthDifference / 2;
plotX2 += widthDifference / 2;
}
 
plotX = Math.max(plotX, -10);
plotX2 = Math.min(Math.max(plotX2, -10), xAxis.len + 10);
 
if (plotX2 < plotX) { // #6107
plotX2 = plotX;
}
 
point.shapeArgs = {
x: plotX,
y: point.plotY + metrics.offset,
width: plotX2 - plotX,
height: metrics.width
};
point.tooltipPos[0] += width / 2;
point.tooltipPos[1] -= metrics.width / 2;
 
// Add a partShapeArgs to the point, based on the shapeArgs property
partialFill = point.partialFill;
if (partialFill) {
// Get the partial fill amount
if (isObject(partialFill)) {
partialFill = partialFill.amount;
}
// If it was not a number, assume 0
if (!isNumber(partialFill)) {
partialFill = 0;
}
shapeArgs = point.shapeArgs;
point.partShapeArgs = {
x: shapeArgs.x,
y: shapeArgs.y + 1,
width: shapeArgs.width * partialFill,
height: shapeArgs.height - 2
};
}
});
},
 
drawPoints: function() {
var series = this,
chart = this.chart,
options = series.options,
renderer = chart.renderer,
animationLimit = options.animationLimit || 250,
verb = chart.pointCount < animationLimit ? 'animate' : 'attr';
 
// draw the columns
each(series.points, function(point) {
var plotY = point.plotY,
graphic = point.graphic,
type = point.shapeType,
shapeArgs = point.shapeArgs,
partShapeArgs = point.partShapeArgs,
seriesOpts = series.options,
pfOptions = point.partialFill,
fill,
state = point.selected && 'select',
cutOff = options.stacking && !options.borderRadius;
 
if (isNumber(plotY) && point.y !== null) {
if (graphic) { // update
point.graphicOriginal[verb](
merge(shapeArgs)
);
if (partShapeArgs) {
point.graphicOverlay[verb](
merge(partShapeArgs)
);
}
 
} else {
point.graphic = graphic = renderer.g('point')
.attr({
'class': point.getClassName()
})
.add(point.group || series.group);
 
point.graphicOriginal = renderer[type](shapeArgs)
.addClass('highcharts-partfill-original')
.add(graphic);
if (partShapeArgs) {
point.graphicOverlay = renderer[type](partShapeArgs)
.addClass('highcharts-partfill-overlay')
.add(graphic);
}
}
 
 
 
} else if (graphic) {
point.graphic = graphic.destroy(); // #1269
}
});
}
});
 
/**
* Max x2 should be considered in xAxis extremes
*/
wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
var axis = this,
series = axis.series,
dataMax,
modMax;
 
proceed.call(this);
if (axis.isXAxis && series.type === xrange) {
dataMax = pick(axis.dataMax, Number.MIN_VALUE);
each(this.series, function(series) {
each(series.x2Data || [], function(val) {
if (val > dataMax) {
dataMax = val;
modMax = true;
}
});
});
if (modMax) {
axis.dataMax = dataMax;
}
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2016 Highsoft AS
* Authors: Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
//
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/grid-axis.js
@@ -0,0 +1,19 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
GridAxis
 
(c) 2016 Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(h){var n=h.dateFormat,p=h.each,t=h.isObject,r=h.pick,l=h.wrap,m=h.Axis,u=h.Chart,q=h.Tick;m.prototype.isOuterAxis=function(){var a=this,c=-1,b=!0;p(this.chart.axes,function(e,f){e.side===a.side&&(e===a?c=f:0<=c&&f>c&&(b=!1))});return b};q.prototype.getLabelWidth=function(){return this.label.getBBox().width};m.prototype.getMaxLabelLength=function(a){var c=this.tickPositions,b=this.ticks,e=0;
if(!this.maxLabelLength||a)p(c,function(a){(a=b[a])&&a.labelLength>e&&(e=a.labelLength)}),this.maxLabelLength=e;return this.maxLabelLength};m.prototype.addTitle=function(){var a=this.chart.renderer,c=this.axisParent,b=this.horiz,e=this.opposite,f=this.options,d=f.title,g;this.showAxis=g=this.hasData()||r(f.showEmpty,!0);f.title="";this.axisTitle||((f=d.textAlign)||(f=(b?{low:"left",middle:"center",high:"right"}:{low:e?"right":"left",middle:"center",high:e?"left":"right"})[d.align]),this.axisTitle=
a.text(d.text,0,0,d.useHTML).attr({zIndex:7,rotation:d.rotation||0,align:f}).addClass("highcharts-axis-title").add(c),this.axisTitle.isNew=!0);this.axisTitle[g?"show":"hide"](!0)};h.dateFormats={W:function(a){a=new Date(a);var c=0===a.getUTCDay()?7:a.getUTCDay(),b=a.getTime(),e=new Date(a.getUTCFullYear(),0,1,-6);a.setDate(a.getUTCDate()+4-c);return 1+Math.floor(Math.floor((b-e)/864E5)/7)},E:function(a){return n("%a",a,!0).charAt(0)}};l(q.prototype,"addLabel",function(a){var c=this.axis,b=void 0!==
c.options.categories,e=c.tickPositions,e=this.pos!==e[e.length-1];(!c.options.grid||b||e)&&a.apply(this)});l(q.prototype,"getLabelPosition",function(a,c,b,e){var f=a.apply(this,Array.prototype.slice.call(arguments,1)),d=this.axis,g=d.options,k=g.tickInterval||1,h,l;g.grid&&(h=g.labels.style.fontSize,l=d.chart.renderer.fontMetrics(h,e),h=l.b,l=l.h,d.horiz&&void 0===g.categories?(g=d.axisGroup.getBBox().height,k=this.pos+k/2,f.x=d.translate(k)+d.left,k=g/2+l/2-Math.abs(l-h),f.y=0===d.side?b-k:b+k):
(void 0===g.categories&&(k=this.pos+k/2,f.y=d.translate(k)+d.top+h/2),k=this.getLabelWidth()/2-d.maxLabelLength/2,f.x=3===d.side?f.x+k:f.x-k));return f});l(m.prototype,"tickSize",function(a){var c=a.apply(this,Array.prototype.slice.call(arguments,1)),b;this.options.grid&&!this.horiz&&(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),this.maxLabelLength||(this.maxLabelLength=this.getMaxLabelLength()),b=this.maxLabelLength+b,c[0]=b);return c});l(m.prototype,"getOffset",function(a){var c=this.chart.axisOffset,
b=this.side,e,f,d=this.options,g=d.title,k=g&&g.text&&!1!==g.enabled;this.options.grid&&t(this.options.title)?(f=this.tickSize("tick")[0],c[b]&&f&&(e=c[b]+f),k&&this.addTitle(),a.apply(this,Array.prototype.slice.call(arguments,1)),c[b]=r(e,c[b]),d.title=g):a.apply(this,Array.prototype.slice.call(arguments,1))});l(m.prototype,"renderUnsquish",function(a){this.options.grid&&(this.labelRotation=0,this.options.labels.rotation=0);a.apply(this)});l(m.prototype,"setOptions",function(a,c){c.grid&&this.horiz&&
(c.startOnTick=!0,c.minPadding=0,c.endOnTick=!0);a.apply(this,Array.prototype.slice.call(arguments,1))});l(m.prototype,"render",function(a){var c=this.options,b,e,f,d,g,k,h=this.chart.renderer;if(c.grid){if(b=2*Math.abs(this.defaultLeftAxisOptions.labels.x),b=this.maxLabelLength+b,e=c.lineWidth,this.rightWall&&this.rightWall.destroy(),a.apply(this),a=this.axisGroup.getBBox(),this.horiz&&(this.rightWall=h.path(["M",a.x+this.width+1,a.y,"L",a.x+this.width+1,a.y+a.height]).attr({stroke:c.tickColor||
"#ccd6eb","stroke-width":c.tickWidth||1,zIndex:7,class:"grid-wall"}).add(this.axisGroup)),this.isOuterAxis()&&this.axisLine&&(this.horiz&&(b=a.height-1),e)){a=this.getLinePath(e);g=a.indexOf("M")+1;k=a.indexOf("L")+1;f=a.indexOf("M")+2;d=a.indexOf("L")+2;if(0===this.side||3===this.side)b=-b;this.horiz?(a[f]+=b,a[d]+=b):(a[g]+=b,a[k]+=b);this.axisLineExtra?this.axisLineExtra.animate({d:a}):this.axisLineExtra=h.path(a).attr({stroke:c.lineColor,"stroke-width":e,zIndex:7}).add(this.axisGroup);this.axisLine[this.showAxis?
"show":"hide"](!0)}}else a.apply(this)});l(u.prototype,"render",function(a){var c=25/11,b,e;p(this.axes,function(a){var d=a.options;d.grid&&(e=d.labels.style.fontSize,b=a.chart.renderer.fontMetrics(e),"datetime"===d.type&&(d.units=[["millisecond",[1]],["second",[1]],["minute",[1]],["hour",[1]],["day",[1]],["week",[1]],["month",[1]],["year",null]]),a.horiz?d.tickLength=d.cellHeight||b.h*c:(d.tickWidth=1,d.lineWidth||(d.lineWidth=1)))});a.apply(this)})})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/grid-axis.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":19,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","dateFormat","each","isObject","pick","wrap","Axis","Chart","Tick","prototype","isOuterAxis","Axis.prototype.isOuterAxis","axis","thisIndex","isOuter","chart","axes","otherAxis","index","side","getLabelWidth","Tick.prototype.getLabelWidth","label","getBBox","width","getMaxLabelLength","Axis.prototype.getMaxLabelLength","force","tickPositions","ticks","maxLabelLength","tick","labelLength","addTitle","Axis.prototype.addTitle","renderer","axisParent","horiz","opposite","options","axisTitleOptions","title","showAxis","hasData","showEmpty","axisTitle","textAlign","low","middle","high","align","text","useHTML","attr","zIndex","rotation","addClass","add","isNew","dateFormats","W","timestamp","date","Date","day","getUTCDay","time","getTime","startOfYear","getUTCFullYear","setDate","getUTCDate","Math","floor","dayNumber","E","charAt","proceed","isCategoryAxis","undefined","categories","isLastTick","pos","lastTick","length","grid","apply","x","y","retVal","Array","slice","call","arguments","tickInterval","fontSize","labelMetrics","labels","style","fontMetrics","lblB","b","lblH","h","axisHeight","axisGroup","height","newPos","translate","left","labelCenter","abs","top","newX","labelPadding","defaultLeftAxisOptions","distance","axisOffset","tickSize","enabled","labelRotation","userOptions","startOnTick","minPadding","endOnTick","lineWidth","yStartIndex","yEndIndex","xStartIndex","xEndIndex","rightWall","destroy","axisGroupBox","path","stroke","tickColor","tickWidth","class","axisLine","linePath","getLinePath","indexOf","axisLineExtra","animate","d","lineColor","fontSizeToCellHeightRatio","type","units","tickLength","cellHeight"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/grid-axis.src.js
@@ -0,0 +1,545 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* GridAxis
*
* (c) 2016 Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2016 Highsoft AS
* Authors: Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var dateFormat = H.dateFormat,
each = H.each,
isObject = H.isObject,
pick = H.pick,
wrap = H.wrap,
Axis = H.Axis,
Chart = H.Chart,
Tick = H.Tick;
 
 
// Enum for which side the axis is on.
// Maps to axis.side
var axisSide = {
top: 0,
right: 1,
bottom: 2,
left: 3,
0: 'top',
1: 'right',
2: 'bottom',
3: 'left'
};
 
/**
* Checks if an axis is the outer axis in its dimension. Since
* axes are placed outwards in order, the axis with the highest
* index is the outermost axis.
*
* Example: If there are multiple x-axes at the top of the chart,
* this function returns true if the axis supplied is the last
* of the x-axes.
*
* @return true if the axis is the outermost axis in its dimension;
* false if not
*/
Axis.prototype.isOuterAxis = function() {
var axis = this,
thisIndex = -1,
isOuter = true;
 
each(this.chart.axes, function(otherAxis, index) {
if (otherAxis.side === axis.side) {
if (otherAxis === axis) {
// Get the index of the axis in question
thisIndex = index;
 
// Check thisIndex >= 0 in case thisIndex has
// not been found yet
} else if (thisIndex >= 0 && index > thisIndex) {
// There was an axis on the same side with a
// higher index. Exit the loop.
isOuter = false;
return;
}
}
});
// There were either no other axes on the same side,
// or the other axes were not farther from the chart
return isOuter;
};
 
/**
* Shortcut function to Tick.label.getBBox().width.
*
* @return {number} width - the width of the tick label
*/
Tick.prototype.getLabelWidth = function() {
return this.label.getBBox().width;
};
 
/**
* Get the maximum label length.
* This function can be used in states where the axis.maxLabelLength has not
* been set.
*
* @param {boolean} force - Optional parameter to force a new calculation, even
* if a value has already been set
* @return {number} maxLabelLength - the maximum label length of the axis
*/
Axis.prototype.getMaxLabelLength = function(force) {
var tickPositions = this.tickPositions,
ticks = this.ticks,
maxLabelLength = 0;
 
if (!this.maxLabelLength || force) {
each(tickPositions, function(tick) {
tick = ticks[tick];
if (tick && tick.labelLength > maxLabelLength) {
maxLabelLength = tick.labelLength;
}
});
this.maxLabelLength = maxLabelLength;
}
return this.maxLabelLength;
};
 
/**
* Adds the axis defined in axis.options.title
*/
Axis.prototype.addTitle = function() {
var axis = this,
renderer = axis.chart.renderer,
axisParent = axis.axisParent,
horiz = axis.horiz,
opposite = axis.opposite,
options = axis.options,
axisTitleOptions = options.title,
hasData,
showAxis,
textAlign;
 
// For reuse in Axis.render
hasData = axis.hasData();
axis.showAxis = showAxis = hasData || pick(options.showEmpty, true);
 
// Disregard title generation in original Axis.getOffset()
options.title = '';
 
if (!axis.axisTitle) {
textAlign = axisTitleOptions.textAlign;
if (!textAlign) {
textAlign = (horiz ? {
low: 'left',
middle: 'center',
high: 'right'
} : {
low: opposite ? 'right' : 'left',
middle: 'center',
high: opposite ? 'left' : 'right'
})[axisTitleOptions.align];
}
axis.axisTitle = renderer.text(
axisTitleOptions.text,
0,
0,
axisTitleOptions.useHTML
)
.attr({
zIndex: 7,
rotation: axisTitleOptions.rotation || 0,
align: textAlign
})
.addClass('highcharts-axis-title')
 
// Add to axisParent instead of axisGroup, to ignore the space
// it takes
.add(axisParent);
axis.axisTitle.isNew = true;
}
 
 
// hide or show the title depending on whether showEmpty is set
axis.axisTitle[showAxis ? 'show' : 'hide'](true);
};
 
/**
* Add custom date formats
*/
H.dateFormats = {
// Week number
W: function(timestamp) {
var date = new Date(timestamp),
day = date.getUTCDay() === 0 ? 7 : date.getUTCDay(),
time = date.getTime(),
startOfYear = new Date(date.getUTCFullYear(), 0, 1, -6),
dayNumber;
date.setDate(date.getUTCDate() + 4 - day);
dayNumber = Math.floor((time - startOfYear) / 86400000);
return 1 + Math.floor(dayNumber / 7);
},
// First letter of the day of the week, e.g. 'M' for 'Monday'.
E: function(timestamp) {
return dateFormat('%a', timestamp, true).charAt(0);
}
};
 
/**
* Prevents adding the last tick label if the axis is not a category axis.
*
* Since numeric labels are normally placed at starts and ends of a range of
* value, and this module makes the label point at the value, an "extra" label
* would appear.
*
* @param {function} proceed - the original function
*/
wrap(Tick.prototype, 'addLabel', function(proceed) {
var axis = this.axis,
isCategoryAxis = axis.options.categories !== undefined,
tickPositions = axis.tickPositions,
lastTick = tickPositions[tickPositions.length - 1],
isLastTick = this.pos !== lastTick;
 
if (!axis.options.grid || isCategoryAxis || isLastTick) {
proceed.apply(this);
}
});
 
/**
* Center tick labels vertically and horizontally between ticks
*
* @param {function} proceed - the original function
*
* @return {object} object - an object containing x and y positions
* for the tick
*/
wrap(Tick.prototype, 'getLabelPosition', function(proceed, x, y, label) {
var retVal = proceed.apply(this, Array.prototype.slice.call(arguments, 1)),
axis = this.axis,
options = axis.options,
tickInterval = options.tickInterval || 1,
newX,
newPos,
axisHeight,
fontSize,
labelMetrics,
lblB,
lblH,
labelCenter;
 
// Only center tick labels if axis has option grid: true
if (options.grid) {
fontSize = options.labels.style.fontSize;
labelMetrics = axis.chart.renderer.fontMetrics(fontSize, label);
lblB = labelMetrics.b;
lblH = labelMetrics.h;
 
if (axis.horiz && options.categories === undefined) {
// Center x position
axisHeight = axis.axisGroup.getBBox().height;
newPos = this.pos + tickInterval / 2;
retVal.x = axis.translate(newPos) + axis.left;
labelCenter = (axisHeight / 2) + (lblH / 2) - Math.abs(lblH - lblB);
 
// Center y position
if (axis.side === axisSide.top) {
retVal.y = y - labelCenter;
} else {
retVal.y = y + labelCenter;
}
} else {
// Center y position
if (options.categories === undefined) {
newPos = this.pos + (tickInterval / 2);
retVal.y = axis.translate(newPos) + axis.top + (lblB / 2);
}
 
// Center x position
newX = (this.getLabelWidth() / 2) - (axis.maxLabelLength / 2);
if (axis.side === axisSide.left) {
retVal.x += newX;
} else {
retVal.x -= newX;
}
}
}
return retVal;
});
 
 
/**
* Draw vertical ticks extra long to create cell floors and roofs.
* Overrides the tickLength for vertical axes.
*
* @param {function} proceed - the original function
* @returns {array} retVal -
*/
wrap(Axis.prototype, 'tickSize', function(proceed) {
var axis = this,
retVal = proceed.apply(axis, Array.prototype.slice.call(arguments, 1)),
labelPadding,
distance;
 
if (axis.options.grid && !axis.horiz) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
if (!axis.maxLabelLength) {
axis.maxLabelLength = axis.getMaxLabelLength();
}
distance = axis.maxLabelLength + labelPadding;
 
retVal[0] = distance;
}
return retVal;
});
 
/**
* Disregards space required by axisTitle, by adding axisTitle to axisParent
* instead of axisGroup, and disregarding margins and offsets related to
* axisTitle.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'getOffset', function(proceed) {
var axis = this,
axisOffset = axis.chart.axisOffset,
side = axis.side,
axisHeight,
tickSize,
options = axis.options,
axisTitleOptions = options.title,
addTitle = axisTitleOptions &&
axisTitleOptions.text &&
axisTitleOptions.enabled !== false;
 
if (axis.options.grid && isObject(axis.options.title)) {
 
tickSize = axis.tickSize('tick')[0];
if (axisOffset[side] && tickSize) {
axisHeight = axisOffset[side] + tickSize;
}
 
if (addTitle) {
// Use the custom addTitle() to add it, while preventing making room
// for it
axis.addTitle();
}
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
axisOffset[side] = pick(axisHeight, axisOffset[side]);
 
 
// Put axis options back after original Axis.getOffset() has been called
options.title = axisTitleOptions;
 
} else {
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
}
});
 
/**
* Prevents rotation of labels when squished, as rotating them would not
* help.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'renderUnsquish', function(proceed) {
if (this.options.grid) {
this.labelRotation = 0;
this.options.labels.rotation = 0;
}
proceed.apply(this);
});
 
/**
* Places leftmost tick at the start of the axis, to create a left wall.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'setOptions', function(proceed, userOptions) {
var axis = this;
if (userOptions.grid && axis.horiz) {
userOptions.startOnTick = true;
userOptions.minPadding = 0;
userOptions.endOnTick = true;
}
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
/**
* Draw an extra line on the far side of the the axisLine,
* creating cell roofs of a grid.
*
* @param {function} proceed - the original function
*/
wrap(Axis.prototype, 'render', function(proceed) {
var axis = this,
options = axis.options,
labelPadding,
distance,
lineWidth,
linePath,
yStartIndex,
yEndIndex,
xStartIndex,
xEndIndex,
renderer = axis.chart.renderer,
axisGroupBox;
 
if (options.grid) {
labelPadding = (Math.abs(axis.defaultLeftAxisOptions.labels.x) * 2);
distance = axis.maxLabelLength + labelPadding;
lineWidth = options.lineWidth;
 
// Remove right wall before rendering
if (axis.rightWall) {
axis.rightWall.destroy();
}
 
// Call original Axis.render() to obtain axis.axisLine and
// axis.axisGroup
proceed.apply(axis);
 
axisGroupBox = axis.axisGroup.getBBox();
 
// Add right wall on horizontal axes
if (axis.horiz) {
axis.rightWall = renderer.path([
'M',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y,
'L',
axisGroupBox.x + axis.width + 1, // account for left wall
axisGroupBox.y + axisGroupBox.height
])
.attr({
stroke: options.tickColor || '#ccd6eb',
'stroke-width': options.tickWidth || 1,
zIndex: 7,
class: 'grid-wall'
})
.add(axis.axisGroup);
}
 
if (axis.isOuterAxis() && axis.axisLine) {
if (axis.horiz) {
// -1 to avoid adding distance each time the chart updates
distance = axisGroupBox.height - 1;
}
 
if (lineWidth) {
linePath = axis.getLinePath(lineWidth);
xStartIndex = linePath.indexOf('M') + 1;
xEndIndex = linePath.indexOf('L') + 1;
yStartIndex = linePath.indexOf('M') + 2;
yEndIndex = linePath.indexOf('L') + 2;
 
// Negate distance if top or left axis
if (axis.side === axisSide.top || axis.side === axisSide.left) {
distance = -distance;
}
 
// If axis is horizontal, reposition line path vertically
if (axis.horiz) {
linePath[yStartIndex] = linePath[yStartIndex] + distance;
linePath[yEndIndex] = linePath[yEndIndex] + distance;
} else {
// If axis is vertical, reposition line path horizontally
linePath[xStartIndex] = linePath[xStartIndex] + distance;
linePath[xEndIndex] = linePath[xEndIndex] + distance;
}
 
if (!axis.axisLineExtra) {
axis.axisLineExtra = renderer.path(linePath)
.attr({
stroke: options.lineColor,
'stroke-width': lineWidth,
zIndex: 7
})
.add(axis.axisGroup);
} else {
axis.axisLineExtra.animate({
d: linePath
});
}
 
// show or hide the line depending on options.showEmpty
axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
}
}
} else {
proceed.apply(axis);
}
});
 
/**
* Wraps chart rendering with the following customizations:
* 1. Prohibit timespans of multitudes of a time unit
* 2. Draw cell walls on vertical axes
*
* @param {function} proceed - the original function
*/
wrap(Chart.prototype, 'render', function(proceed) {
// 25 is optimal height for default fontSize (11px)
// 25 / 11 ≈ 2.28
var fontSizeToCellHeightRatio = 25 / 11,
fontMetrics,
fontSize;
 
each(this.axes, function(axis) {
var options = axis.options;
if (options.grid) {
fontSize = options.labels.style.fontSize;
fontMetrics = axis.chart.renderer.fontMetrics(fontSize);
 
// Prohibit timespans of multitudes of a time unit,
// e.g. two days, three weeks, etc.
if (options.type === 'datetime') {
options.units = [
['millisecond', [1]],
['second', [1]],
['minute', [1]],
['hour', [1]],
['day', [1]],
['week', [1]],
['month', [1]],
['year', null]
];
}
 
// Make tick marks taller, creating cell walls of a grid.
// Use cellHeight axis option if set
if (axis.horiz) {
options.tickLength = options.cellHeight ||
fontMetrics.h * fontSizeToCellHeightRatio;
} else {
options.tickWidth = 1;
if (!options.lineWidth) {
options.lineWidth = 1;
}
}
}
});
 
// Call original Chart.render()
proceed.apply(this);
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/heatmap.js
@@ -0,0 +1,25 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(q){"object"===typeof module&&module.exports?module.exports=q:q(Highcharts)})(function(q){(function(b){var l=b.Axis,t=b.Chart,m=b.color,h,e=b.each,v=b.extend,w=b.isNumber,n=b.Legend,f=b.LegendSymbolMixin,x=b.noop,r=b.merge,u=b.pick,p=b.wrap;h=b.ColorAxis=function(){this.init.apply(this,arguments)};v(h.prototype,l.prototype);v(h.prototype,{defaultColorAxisOptions:{lineWidth:0,minPadding:0,maxPadding:0,gridLineWidth:1,tickPixelInterval:72,startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},
width:.01},labels:{overflow:"justify",rotation:0},minColor:"#e6ebf5",maxColor:"#003399",tickLength:5,showInLegend:!0},keepProps:["legendGroup","legendItemHeight","legendItemWidth","legendItem","legendSymbol"].concat(l.prototype.keepProps),init:function(a,c){var d="vertical"!==a.options.legend.layout,k;this.coll="colorAxis";k=r(this.defaultColorAxisOptions,{side:d?2:1,reversed:!d},c,{opposite:!d,showEmpty:!1,title:null});l.prototype.init.call(this,a,k);c.dataClasses&&this.initDataClasses(c);this.initStops();
this.horiz=d;this.zoomEnabled=!1;this.defaultLegendLength=200},initDataClasses:function(a){var c,d=0,k=this.chart.options.chart.colorCount,g=this.options,b=a.dataClasses.length;this.dataClasses=c=[];this.legendItems=[];e(a.dataClasses,function(a,e){a=r(a);c.push(a);"category"===g.dataClassColor?(a.colorIndex=d,d++,d===k&&(d=0)):a.color=m(g.minColor).tweenTo(m(g.maxColor),2>b?.5:e/(b-1))})},setTickPositions:function(){if(!this.dataClasses)return l.prototype.setTickPositions.call(this)},initStops:function(){this.stops=
this.options.stops||[[0,this.options.minColor],[1,this.options.maxColor]];e(this.stops,function(a){a.color=m(a[1])})},setOptions:function(a){l.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker},setAxisSize:function(){var a=this.legendSymbol,c=this.chart,d=c.options.legend||{},k,g;a?(this.left=d=a.attr("x"),this.top=k=a.attr("y"),this.width=g=a.attr("width"),this.height=a=a.attr("height"),this.right=c.chartWidth-d-g,this.bottom=c.chartHeight-k-a,this.len=this.horiz?g:a,this.pos=
this.horiz?d:k):this.len=(this.horiz?d.symbolWidth:d.symbolHeight)||this.defaultLegendLength},normalizedValue:function(a){this.isLog&&(a=this.val2lin(a));return 1-(this.max-a)/(this.max-this.min||1)},toColor:function(a,c){var d=this.stops,k,g,b=this.dataClasses,e,f;if(b)for(f=b.length;f--;){if(e=b[f],k=e.from,d=e.to,(void 0===k||a>=k)&&(void 0===d||a<=d)){c&&(c.dataClass=f,c.colorIndex=e.colorIndex);break}}else{a=this.normalizedValue(a);for(f=d.length;f--&&!(a>d[f][0]););k=d[f]||d[f+1];d=d[f+1]||
k;a=1-(d[0]-a)/(d[0]-k[0]||1);g=k.color.tweenTo(d.color,a)}return g},getOffset:function(){var a=this.legendGroup,c=this.chart.axisOffset[this.side];a&&(this.axisParent=a,l.prototype.getOffset.call(this),this.added||(this.added=!0,this.labelLeft=0,this.labelRight=this.width),this.chart.axisOffset[this.side]=c)},setLegendColor:function(){var a,c=this.reversed;a=c?1:0;c=c?0:1;a=this.horiz?[a,0,c,0]:[0,c,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],y2:a[3]},stops:this.stops}},drawLegendSymbol:function(a,
c){var d=a.padding,b=a.options,g=this.horiz,f=u(b.symbolWidth,g?this.defaultLegendLength:12),e=u(b.symbolHeight,g?12:this.defaultLegendLength),h=u(b.labelPadding,g?16:30),b=u(b.itemDistance,10);this.setLegendColor();c.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,f,e).attr({zIndex:1}).add(c.legendGroup);this.legendItemWidth=f+d+(g?b:h);this.legendItemHeight=e+d+(g?h:0)},setState:x,visible:!0,setVisible:x,getSeriesExtremes:function(){var a=this.series,c=a.length;this.dataMin=Infinity;for(this.dataMax=
-Infinity;c--;)void 0!==a[c].valueMin&&(this.dataMin=Math.min(this.dataMin,a[c].valueMin),this.dataMax=Math.max(this.dataMax,a[c].valueMax))},drawCrosshair:function(a,c){var d=c&&c.plotX,b=c&&c.plotY,g,f=this.pos,e=this.len;c&&(g=this.toPixels(c[c.series.colorKey]),g<f?g=f-2:g>f+e&&(g=f+e+2),c.plotX=g,c.plotY=this.len-g,l.prototype.drawCrosshair.call(this,a,c),c.plotX=d,c.plotY=b,this.cross&&this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup))},getPlotLinePath:function(a,c,d,
b,g){return w(g)?this.horiz?["M",g-4,this.top-6,"L",g+4,this.top-6,g,this.top,"Z"]:["M",this.left,g,"L",this.left-6,g+6,this.left-6,g-6,"Z"]:l.prototype.getPlotLinePath.call(this,a,c,d,b)},update:function(a,c){var d=this.chart,b=d.legend;e(this.series,function(a){a.isDirtyData=!0});a.dataClasses&&b.allItems&&(e(b.allItems,function(a){a.isDataClass&&a.legendGroup&&a.legendGroup.destroy()}),d.isDirtyLegend=!0);d.options[this.coll]=r(this.userOptions,a);l.prototype.update.call(this,a,c);this.legendItem&&
(this.setLegendColor(),b.colorizeItem(this,!0))},remove:function(){this.legendItem&&this.chart.legend.destroyItem(this);l.prototype.remove.call(this)},getDataClassLegendSymbols:function(){var a=this,c=this.chart,d=this.legendItems,k=c.options.legend,g=k.valueDecimals,h=k.valueSuffix||"",p;d.length||e(this.dataClasses,function(k,l){var n=!0,r=k.from,m=k.to;p="";void 0===r?p="\x3c ":void 0===m&&(p="\x3e ");void 0!==r&&(p+=b.numberFormat(r,g)+h);void 0!==r&&void 0!==m&&(p+=" - ");void 0!==m&&(p+=b.numberFormat(m,
g)+h);d.push(v({chart:c,name:p,options:{},drawLegendSymbol:f.drawRectangle,visible:!0,setState:x,isDataClass:!0,setVisible:function(){n=this.visible=!n;e(a.series,function(a){e(a.points,function(a){a.dataClass===l&&a.setVisible(n)})});c.legend.colorizeItem(this,n)}},k))});return d},name:""});e(["fill","stroke"],function(a){b.Fx.prototype[a+"Setter"]=function(){this.elem.attr(a,m(this.start).tweenTo(m(this.end),this.pos),null,!0)}});p(t.prototype,"getAxes",function(a){var c=this.options.colorAxis;
a.call(this);this.colorAxis=[];c&&new h(this,c)});p(n.prototype,"getAllItems",function(a){var c=[],d=this.chart.colorAxis[0];d&&d.options&&(d.options.showInLegend&&(d.options.dataClasses?c=c.concat(d.getDataClassLegendSymbols()):c.push(d)),e(d.series,function(a){a.options.showInLegend=!1}));return c.concat(a.call(this))});p(n.prototype,"colorizeItem",function(a,c,d){a.call(this,c,d);d&&c.legendColor&&c.legendSymbol.attr({fill:c.legendColor})});p(n.prototype,"update",function(a){a.apply(this,[].slice.call(arguments,
1));this.chart.colorAxis[0]&&this.chart.colorAxis[0].update({},arguments[2])})})(q);(function(b){var l=b.defined,t=b.each,m=b.noop;b.colorPointMixin={isValid:function(){return null!==this.value},setVisible:function(b){var e=this,h=b?"show":"hide";t(["graphic","dataLabel"],function(b){if(e[b])e[b][h]()})},setState:function(h){b.Point.prototype.setState.call(this,h);this.graphic&&this.graphic.attr({zIndex:"hover"===h?1:0})}};b.colorSeriesMixin={pointArrayMap:["value"],axisTypes:["xAxis","yAxis","colorAxis"],
optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:m,parallelArrays:["x","y","value"],colorKey:"value",translateColors:function(){var b=this,e=this.options.nullColor,l=this.colorAxis,m=this.colorKey;t(this.data,function(h){var f=h[m];if(f=h.options.color||(h.isNull?e:l&&void 0!==f?l.toColor(f,h):h.color||b.color))h.color=f})},colorAttribs:function(b){var e={};l(b.color)&&(e[this.colorProp||"fill"]=b.color);return e}}})(q);(function(b){var l=b.colorPointMixin,
t=b.each,m=b.merge,h=b.noop,e=b.pick,q=b.Series,w=b.seriesType,n=b.seriesTypes;w("heatmap","scatter",{animation:!1,borderWidth:0,dataLabels:{formatter:function(){return this.point.value},inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},marker:null,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{halo:!1,brightness:.2}}},m(b.colorSeriesMixin,{pointArrayMap:["y","value"],hasPointSpecificOptions:!0,getExtremesFromAll:!0,
directTouch:!0,init:function(){var b;n.scatter.prototype.init.apply(this,arguments);b=this.options;b.pointRange=e(b.pointRange,b.colsize||1);this.yAxis.axisPointRange=b.rowsize||1},translate:function(){var b=this.options,e=this.xAxis,h=this.yAxis,l=function(b,a,c){return Math.min(Math.max(a,b),c)};this.generatePoints();t(this.points,function(f){var a=(b.colsize||1)/2,c=(b.rowsize||1)/2,d=l(Math.round(e.len-e.translate(f.x-a,0,1,0,1)),-e.len,2*e.len),a=l(Math.round(e.len-e.translate(f.x+a,0,1,0,1)),
-e.len,2*e.len),k=l(Math.round(h.translate(f.y-c,0,1,0,1)),-h.len,2*h.len),c=l(Math.round(h.translate(f.y+c,0,1,0,1)),-h.len,2*h.len);f.plotX=f.clientX=(d+a)/2;f.plotY=(k+c)/2;f.shapeType="rect";f.shapeArgs={x:Math.min(d,a),y:Math.min(k,c),width:Math.abs(a-d),height:Math.abs(c-k)}});this.translateColors()},drawPoints:function(){n.column.prototype.drawPoints.call(this);t(this.points,function(b){b.graphic.css(this.colorAttribs(b))},this)},animate:h,getBox:h,drawLegendSymbol:b.LegendSymbolMixin.drawRectangle,
alignDataLabel:n.column.prototype.alignDataLabel,getExtremes:function(){q.prototype.getExtremes.call(this,this.valueData);this.valueMin=this.dataMin;this.valueMax=this.dataMax;q.prototype.getExtremes.call(this)}}),l)})(q)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/heatmap.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":25,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Axis","Chart","color","ColorAxis","each","extend","isNumber","Legend","LegendSymbolMixin","noop","merge","pick","wrap","H.ColorAxis","init","apply","arguments","prototype","defaultColorAxisOptions","lineWidth","minPadding","maxPadding","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","offset","marker","animation","duration","width","labels","overflow","rotation","minColor","maxColor","tickLength","showInLegend","keepProps","concat","chart","userOptions","horiz","options","legend","layout","coll","side","reversed","opposite","showEmpty","title","call","dataClasses","initDataClasses","initStops","zoomEnabled","defaultLegendLength","colorCounter","colorCount","len","length","legendItems","dataClass","i","push","dataClassColor","colorIndex","tweenTo","setTickPositions","stops","stop","setOptions","crosshair","setAxisSize","symbol","legendSymbol","legendOptions","y","left","x","attr","top","height","right","chartWidth","bottom","chartHeight","pos","symbolWidth","symbolHeight","normalizedValue","value","isLog","val2lin","max","min","toColor","point","from","to","undefined","getOffset","group","legendGroup","sideOffset","axisOffset","axisParent","added","labelLeft","labelRight","setLegendColor","grad","one","zero","legendColor","linearGradient","x1","y1","x2","y2","drawLegendSymbol","item","padding","labelPadding","itemDistance","renderer","rect","baseline","zIndex","add","legendItemWidth","legendItemHeight","setState","visible","setVisible","getSeriesExtremes","series","dataMin","Infinity","dataMax","valueMin","Math","valueMax","drawCrosshair","e","plotX","plotY","crossPos","axisPos","axisLen","toPixels","colorKey","cross","addClass","getPlotLinePath","a","b","c","d","update","newOptions","redraw","isDirtyData","allItems","isDataClass","destroy","isDirtyLegend","legendItem","colorizeItem","remove","destroyItem","getDataClassLegendSymbols","axis","valueDecimals","valueSuffix","name","vis","numberFormat","drawRectangle","points","prop","Fx","elem","start","end","proceed","colorAxisOptions","colorAxis","fill","slice","defined","colorPointMixin","isValid","method","key","state","Point","graphic","colorSeriesMixin","pointArrayMap","axisTypes","optionalAxis","trackerGroups","getSymbol","parallelArrays","translateColors","nullColor","data","isNull","colorAttribs","ret","colorProp","Series","seriesType","seriesTypes","borderWidth","dataLabels","formatter","inside","verticalAlign","crop","pointRange","tooltip","pointFormat","states","normal","hover","halo","brightness","hasPointSpecificOptions","getExtremesFromAll","directTouch","scatter","colsize","yAxis","axisPointRange","rowsize","translate","xAxis","between","generatePoints","xPad","yPad","round","clientX","shapeType","shapeArgs","abs","drawPoints","column","css","animate","getBox","alignDataLabel","getExtremes","valueData"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/heatmap.src.js
@@ -0,0 +1,1082 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Axis = H.Axis,
Chart = H.Chart,
color = H.color,
ColorAxis,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
Legend = H.Legend,
LegendSymbolMixin = H.LegendSymbolMixin,
noop = H.noop,
merge = H.merge,
pick = H.pick,
wrap = H.wrap;
 
/**
* The ColorAxis object for inclusion in gradient legends
*/
ColorAxis = H.ColorAxis = function() {
this.init.apply(this, arguments);
};
extend(ColorAxis.prototype, Axis.prototype);
extend(ColorAxis.prototype, {
/**
* @extends {xAxis}
* @optionparent colorAxis
*/
defaultColorAxisOptions: {
 
/**
*/
lineWidth: 0,
 
/**
* Padding of the min value relative to the length of the axis. A
* padding of 0.05 will make a 100px axis 5px longer.
*
* @type {Number}
* @product highmaps
*/
minPadding: 0,
 
/**
* Padding of the max value relative to the length of the axis. A
* padding of 0.05 will make a 100px axis 5px longer.
*
* @type {Number}
* @product highmaps
*/
maxPadding: 0,
 
/**
* The width of the grid lines extending from the axis across the
* gradient of a scalar color axis.
*
* @type {Number}
* @sample {highmaps} maps/coloraxis/gridlines/ Grid lines demonstrated
* @default 1
* @product highmaps
*/
gridLineWidth: 1,
 
/**
* If [tickInterval](#colorAxis.tickInterval) is `null` this option
* sets the approximate pixel interval of the tick marks.
*
* @type {Number}
* @default 72
* @product highmaps
*/
tickPixelInterval: 72,
 
/**
* Whether to force the axis to start on a tick. Use this option with
* the `maxPadding` option to control the axis start.
*
* @type {Boolean}
* @default true
* @product highmaps
*/
startOnTick: true,
 
/**
* Whether to force the axis to end on a tick. Use this option with
* the [maxPadding](#colorAxis.maxPadding) option to control the axis
* end.
*
* @type {Boolean}
* @default true
* @product highmaps
*/
endOnTick: true,
 
/**
*/
offset: 0,
 
/**
* The triangular marker on a scalar color axis that points to the
* value of the hovered area. To disable the marker, set `marker:
* null`.
*
* @type {Object}
* @sample {highmaps} maps/coloraxis/marker/ Black marker
* @product highmaps
*/
marker: {
 
/**
* Animation for the marker as it moves between values. Set to `false`
* to disable animation. Defaults to `{ duration: 50 }`.
*
* @type {Object|Boolean}
* @product highmaps
*/
animation: {
 
/**
*/
duration: 50
},
 
/**
*/
width: 0.01
 
},
 
/**
* The axis labels show the number for each tick.
*
* For more live examples on label options, see [xAxis.labels in the
* Highcharts API.](/highcharts#xAxis.labels)
*
* @type {Object}
* @extends xAxis.labels
* @product highmaps
*/
labels: {
 
/**
* How to handle overflowing labels on horizontal axis. Can be undefined
* or "justify". If "justify", labels will not render outside the
* plot area. If there is room to move it, it will be aligned to
* the edge, else it will be removed.
*
* @validvalue [null, "justify"]
* @type {String}
* @default justify
* @product highmaps
*/
overflow: 'justify',
 
/**
*/
rotation: 0
},
 
/**
* The color to represent the minimum of the color axis. Unless [dataClasses](#colorAxis.
* dataClasses) or [stops](#colorAxis.stops) are set, the gradient
* starts at this value.
*
* If dataClasses are set, the color is based on minColor and maxColor
* unless a color is set for each data class, or the [dataClassColor](#colorAxis.
* dataClassColor) is set.
*
* @type {Color}
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor/ Min and max colors on scalar (gradient) axis
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/ On data classes
* @default #e6ebf5
* @product highmaps
*/
minColor: '#e6ebf5',
 
/**
* The color to represent the maximum of the color axis. Unless [dataClasses](#colorAxis.
* dataClasses) or [stops](#colorAxis.stops) are set, the gradient
* ends at this value.
*
* If dataClasses are set, the color is based on minColor and maxColor
* unless a color is set for each data class, or the [dataClassColor](#colorAxis.
* dataClassColor) is set.
*
* @type {Color}
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor/ Min and max colors on scalar (gradient) axis
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/ On data classes
* @default #003399
* @product highmaps
*/
maxColor: '#003399',
 
/**
*/
tickLength: 5,
 
/**
* Whether to display the colorAxis in the legend.
*
* @type {Boolean}
* @see [heatmap.showInLegend](#series<heatmap>.showInLegend)
* @default true
* @since 4.2.7
* @product highmaps
*/
showInLegend: true
},
 
// Properties to preserve after destroy, for Axis.update (#5881, #6025)
keepProps: [
'legendGroup',
'legendItemHeight',
'legendItemWidth',
'legendItem',
'legendSymbol'
].concat(Axis.prototype.keepProps),
 
/**
* Initialize the color axis
*/
init: function(chart, userOptions) {
var horiz = chart.options.legend.layout !== 'vertical',
options;
 
this.coll = 'colorAxis';
 
// Build the options
options = merge(this.defaultColorAxisOptions, {
side: horiz ? 2 : 1,
reversed: !horiz
}, userOptions, {
opposite: !horiz,
showEmpty: false,
title: null
});
 
Axis.prototype.init.call(this, chart, options);
 
// Base init() pushes it to the xAxis array, now pop it again
// chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
 
// Prepare data classes
if (userOptions.dataClasses) {
this.initDataClasses(userOptions);
}
this.initStops();
 
// Override original axis properties
this.horiz = horiz;
this.zoomEnabled = false;
 
// Add default values
this.defaultLegendLength = 200;
},
 
initDataClasses: function(userOptions) {
var chart = this.chart,
dataClasses,
colorCounter = 0,
colorCount = chart.options.chart.colorCount,
options = this.options,
len = userOptions.dataClasses.length;
this.dataClasses = dataClasses = [];
this.legendItems = [];
 
each(userOptions.dataClasses, function(dataClass, i) {
var colors;
 
dataClass = merge(dataClass);
dataClasses.push(dataClass);
 
 
if (options.dataClassColor === 'category') {
 
dataClass.colorIndex = colorCounter;
 
// increase and loop back to zero
colorCounter++;
if (colorCounter === colorCount) {
colorCounter = 0;
}
} else {
dataClass.color = color(options.minColor).tweenTo(
color(options.maxColor),
len < 2 ? 0.5 : i / (len - 1) // #3219
);
}
});
},
 
/**
* Override so that ticks are not added in data class axes (#6914)
*/
setTickPositions: function() {
if (!this.dataClasses) {
return Axis.prototype.setTickPositions.call(this);
}
},
 
 
initStops: function() {
this.stops = this.options.stops || [
[0, this.options.minColor],
[1, this.options.maxColor]
];
each(this.stops, function(stop) {
stop.color = color(stop[1]);
});
},
 
/**
* Extend the setOptions method to process extreme colors and color
* stops.
*/
setOptions: function(userOptions) {
Axis.prototype.setOptions.call(this, userOptions);
 
this.options.crosshair = this.options.marker;
},
 
setAxisSize: function() {
var symbol = this.legendSymbol,
chart = this.chart,
legendOptions = chart.options.legend || {},
x,
y,
width,
height;
 
if (symbol) {
this.left = x = symbol.attr('x');
this.top = y = symbol.attr('y');
this.width = width = symbol.attr('width');
this.height = height = symbol.attr('height');
this.right = chart.chartWidth - x - width;
this.bottom = chart.chartHeight - y - height;
 
this.len = this.horiz ? width : height;
this.pos = this.horiz ? x : y;
} else {
// Fake length for disabled legend to avoid tick issues
// and such (#5205)
this.len = (
this.horiz ?
legendOptions.symbolWidth :
legendOptions.symbolHeight
) || this.defaultLegendLength;
}
},
 
normalizedValue: function(value) {
if (this.isLog) {
value = this.val2lin(value);
}
return 1 - ((this.max - value) / ((this.max - this.min) || 1));
},
 
/**
* Translate from a value to a color
*/
toColor: function(value, point) {
var pos,
stops = this.stops,
from,
to,
color,
dataClasses = this.dataClasses,
dataClass,
i;
 
if (dataClasses) {
i = dataClasses.length;
while (i--) {
dataClass = dataClasses[i];
from = dataClass.from;
to = dataClass.to;
if (
(from === undefined || value >= from) &&
(to === undefined || value <= to)
) {
 
if (point) {
point.dataClass = i;
point.colorIndex = dataClass.colorIndex;
}
break;
}
}
 
} else {
 
pos = this.normalizedValue(value);
i = stops.length;
while (i--) {
if (pos > stops[i][0]) {
break;
}
}
from = stops[i] || stops[i + 1];
to = stops[i + 1] || from;
 
// The position within the gradient
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
 
color = from.color.tweenTo(
to.color,
pos
);
}
return color;
},
 
/**
* Override the getOffset method to add the whole axis groups inside
* the legend.
*/
getOffset: function() {
var group = this.legendGroup,
sideOffset = this.chart.axisOffset[this.side];
 
if (group) {
 
// Hook for the getOffset method to add groups to this parent group
this.axisParent = group;
 
// Call the base
Axis.prototype.getOffset.call(this);
 
// First time only
if (!this.added) {
 
this.added = true;
 
this.labelLeft = 0;
this.labelRight = this.width;
}
// Reset it to avoid color axis reserving space
this.chart.axisOffset[this.side] = sideOffset;
}
},
 
/**
* Create the color gradient
*/
setLegendColor: function() {
var grad,
horiz = this.horiz,
reversed = this.reversed,
one = reversed ? 1 : 0,
zero = reversed ? 0 : 1;
 
grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
this.legendColor = {
linearGradient: {
x1: grad[0],
y1: grad[1],
x2: grad[2],
y2: grad[3]
},
stops: this.stops
};
},
 
/**
* The color axis appears inside the legend and has its own legend symbol
*/
drawLegendSymbol: function(legend, item) {
var padding = legend.padding,
legendOptions = legend.options,
horiz = this.horiz,
width = pick(
legendOptions.symbolWidth,
horiz ? this.defaultLegendLength : 12
),
height = pick(
legendOptions.symbolHeight,
horiz ? 12 : this.defaultLegendLength
),
labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
itemDistance = pick(legendOptions.itemDistance, 10);
 
this.setLegendColor();
 
// Create the gradient
item.legendSymbol = this.chart.renderer.rect(
0,
legend.baseline - 11,
width,
height
).attr({
zIndex: 1
}).add(item.legendGroup);
 
// Set how much space this legend item takes up
this.legendItemWidth = width + padding +
(horiz ? itemDistance : labelPadding);
this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
},
/**
* Fool the legend
*/
setState: noop,
visible: true,
setVisible: noop,
getSeriesExtremes: function() {
var series = this.series,
i = series.length;
this.dataMin = Infinity;
this.dataMax = -Infinity;
while (i--) {
if (series[i].valueMin !== undefined) {
this.dataMin = Math.min(this.dataMin, series[i].valueMin);
this.dataMax = Math.max(this.dataMax, series[i].valueMax);
}
}
},
drawCrosshair: function(e, point) {
var plotX = point && point.plotX,
plotY = point && point.plotY,
crossPos,
axisPos = this.pos,
axisLen = this.len;
 
if (point) {
crossPos = this.toPixels(point[point.series.colorKey]);
if (crossPos < axisPos) {
crossPos = axisPos - 2;
} else if (crossPos > axisPos + axisLen) {
crossPos = axisPos + axisLen + 2;
}
 
point.plotX = crossPos;
point.plotY = this.len - crossPos;
Axis.prototype.drawCrosshair.call(this, e, point);
point.plotX = plotX;
point.plotY = plotY;
 
if (this.cross) {
this.cross
.addClass('highcharts-coloraxis-marker')
.add(this.legendGroup);
 
 
 
}
}
},
getPlotLinePath: function(a, b, c, d, pos) {
// crosshairs only
return isNumber(pos) ? // pos can be 0 (#3969)
(
this.horiz ? [
'M',
pos - 4, this.top - 6,
'L',
pos + 4, this.top - 6,
pos, this.top,
'Z'
] : [
'M',
this.left, pos,
'L',
this.left - 6, pos + 6,
this.left - 6, pos - 6,
'Z'
]
) :
Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
},
 
update: function(newOptions, redraw) {
var chart = this.chart,
legend = chart.legend;
 
each(this.series, function(series) {
// Needed for Axis.update when choropleth colors change
series.isDirtyData = true;
});
 
// When updating data classes, destroy old items and make sure new ones
// are created (#3207)
if (newOptions.dataClasses && legend.allItems) {
each(legend.allItems, function(item) {
if (item.isDataClass && item.legendGroup) {
item.legendGroup.destroy();
}
});
chart.isDirtyLegend = true;
}
 
// Keep the options structure updated for export. Unlike xAxis and
// yAxis, the colorAxis is not an array. (#3207)
chart.options[this.coll] = merge(this.userOptions, newOptions);
 
Axis.prototype.update.call(this, newOptions, redraw);
if (this.legendItem) {
this.setLegendColor();
legend.colorizeItem(this, true);
}
},
 
/**
* Extend basic axis remove by also removing the legend item.
*/
remove: function() {
if (this.legendItem) {
this.chart.legend.destroyItem(this);
}
Axis.prototype.remove.call(this);
},
 
/**
* Get the legend item symbols for data classes
*/
getDataClassLegendSymbols: function() {
var axis = this,
chart = this.chart,
legendItems = this.legendItems,
legendOptions = chart.options.legend,
valueDecimals = legendOptions.valueDecimals,
valueSuffix = legendOptions.valueSuffix || '',
name;
 
if (!legendItems.length) {
each(this.dataClasses, function(dataClass, i) {
var vis = true,
from = dataClass.from,
to = dataClass.to;
 
// Assemble the default name. This can be overridden
// by legend.options.labelFormatter
name = '';
if (from === undefined) {
name = '< ';
} else if (to === undefined) {
name = '> ';
}
if (from !== undefined) {
name += H.numberFormat(from, valueDecimals) + valueSuffix;
}
if (from !== undefined && to !== undefined) {
name += ' - ';
}
if (to !== undefined) {
name += H.numberFormat(to, valueDecimals) + valueSuffix;
}
// Add a mock object to the legend items
legendItems.push(extend({
chart: chart,
name: name,
options: {},
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
visible: true,
setState: noop,
isDataClass: true,
setVisible: function() {
vis = this.visible = !vis;
each(axis.series, function(series) {
each(series.points, function(point) {
if (point.dataClass === i) {
point.setVisible(vis);
}
});
});
 
chart.legend.colorizeItem(this, vis);
}
}, dataClass));
});
}
return legendItems;
},
name: '' // Prevents 'undefined' in legend in IE8
});
 
/**
* Handle animation of the color attributes directly
*/
each(['fill', 'stroke'], function(prop) {
H.Fx.prototype[prop + 'Setter'] = function() {
this.elem.attr(
prop,
color(this.start).tweenTo(
color(this.end),
this.pos
),
null,
true
);
};
});
 
/**
* Extend the chart getAxes method to also get the color axis
*/
wrap(Chart.prototype, 'getAxes', function(proceed) {
 
var options = this.options,
colorAxisOptions = options.colorAxis;
 
proceed.call(this);
 
this.colorAxis = [];
if (colorAxisOptions) {
new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
}
});
 
 
/**
* Wrap the legend getAllItems method to add the color axis. This also removes
* the axis' own series to prevent them from showing up individually.
*/
wrap(Legend.prototype, 'getAllItems', function(proceed) {
var allItems = [],
colorAxis = this.chart.colorAxis[0];
 
if (colorAxis && colorAxis.options) {
if (colorAxis.options.showInLegend) {
// Data classes
if (colorAxis.options.dataClasses) {
allItems = allItems.concat(
colorAxis.getDataClassLegendSymbols()
);
// Gradient legend
} else {
// Add this axis on top
allItems.push(colorAxis);
}
}
 
// Don't add the color axis' series
each(colorAxis.series, function(series) {
series.options.showInLegend = false;
});
}
 
return allItems.concat(proceed.call(this));
});
 
wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
proceed.call(this, item, visible);
if (visible && item.legendColor) {
item.legendSymbol.attr({
fill: item.legendColor
});
}
});
 
// Updates in the legend need to be reflected in the color axis (6888)
wrap(Legend.prototype, 'update', function(proceed) {
proceed.apply(this, [].slice.call(arguments, 1));
 
if (this.chart.colorAxis[0]) {
this.chart.colorAxis[0].update({}, arguments[2]);
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var defined = H.defined,
each = H.each,
noop = H.noop,
seriesTypes = H.seriesTypes;
 
/**
* Mixin for maps and heatmaps
*/
H.colorPointMixin = {
/**
* Color points have a value option that determines whether or not it is
* a null point
*/
isValid: function() {
return this.value !== null;
},
 
/**
* Set the visibility of a single point
*/
setVisible: function(vis) {
var point = this,
method = vis ? 'show' : 'hide';
 
// Show and hide associated elements
each(['graphic', 'dataLabel'], function(key) {
if (point[key]) {
point[key][method]();
}
});
},
setState: function(state) {
H.Point.prototype.setState.call(this, state);
if (this.graphic) {
this.graphic.attr({
zIndex: state === 'hover' ? 1 : 0
});
}
}
};
 
H.colorSeriesMixin = {
pointArrayMap: ['value'],
axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
optionalAxis: 'colorAxis',
trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
getSymbol: noop,
parallelArrays: ['x', 'y', 'value'],
colorKey: 'value',
 
 
 
/**
* In choropleth maps, the color is a result of the value, so this needs
* translation too
*/
translateColors: function() {
var series = this,
nullColor = this.options.nullColor,
colorAxis = this.colorAxis,
colorKey = this.colorKey;
 
each(this.data, function(point) {
var value = point[colorKey],
color;
 
color = point.options.color ||
(
point.isNull ?
nullColor :
(colorAxis && value !== undefined) ?
colorAxis.toColor(value, point) :
point.color || series.color
);
 
if (color) {
point.color = color;
}
});
},
 
/**
* Get the color attibutes to apply on the graphic
*/
colorAttribs: function(point) {
var ret = {};
if (defined(point.color)) {
ret[this.colorProp || 'fill'] = point.color;
}
return ret;
}
};
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var colorPointMixin = H.colorPointMixin,
colorSeriesMixin = H.colorSeriesMixin,
each = H.each,
LegendSymbolMixin = H.LegendSymbolMixin,
merge = H.merge,
noop = H.noop,
pick = H.pick,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The Heatmap series type
 
/**
* @extends {plotOptions.scatter}
* @optionparent plotOptions.heatmap
*/
seriesType('heatmap', 'scatter', {
 
/**
*/
animation: false,
 
/**
*/
borderWidth: 0,
 
 
/**
*/
dataLabels: {
 
/**
*/
formatter: function() { // #2945
return this.point.value;
},
 
/**
*/
inside: true,
 
/**
*/
verticalAlign: 'middle',
 
/**
*/
crop: false,
 
/**
*/
overflow: false,
 
/**
*/
padding: 0 // #3837
},
 
/**
*/
marker: null,
 
/**
*/
pointRange: null, // dynamically set to colsize by default
 
/**
*/
tooltip: {
 
/**
*/
pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
},
 
/**
*/
states: {
 
/**
*/
normal: {
 
/**
*/
animation: true
},
 
/**
*/
hover: {
 
/**
*/
halo: false, // #3406, halo is not required on heatmaps
 
/**
*/
brightness: 0.2
}
}
}, merge(colorSeriesMixin, {
pointArrayMap: ['y', 'value'],
hasPointSpecificOptions: true,
getExtremesFromAll: true,
directTouch: true,
 
/**
* Override the init method to add point ranges on both axes.
*/
init: function() {
var options;
seriesTypes.scatter.prototype.init.apply(this, arguments);
 
options = this.options;
// #3758, prevent resetting in setData
options.pointRange = pick(options.pointRange, options.colsize || 1);
this.yAxis.axisPointRange = options.rowsize || 1; // general point range
},
translate: function() {
var series = this,
options = series.options,
xAxis = series.xAxis,
yAxis = series.yAxis,
between = function(x, a, b) {
return Math.min(Math.max(a, x), b);
};
 
series.generatePoints();
 
each(series.points, function(point) {
var xPad = (options.colsize || 1) / 2,
yPad = (options.rowsize || 1) / 2,
x1 = between(
Math.round(
xAxis.len -
xAxis.translate(point.x - xPad, 0, 1, 0, 1)
), -xAxis.len, 2 * xAxis.len
),
x2 = between(
Math.round(
xAxis.len -
xAxis.translate(point.x + xPad, 0, 1, 0, 1)
), -xAxis.len, 2 * xAxis.len
),
y1 = between(
Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len
),
y2 = between(
Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len
);
 
// Set plotX and plotY for use in K-D-Tree and more
point.plotX = point.clientX = (x1 + x2) / 2;
point.plotY = (y1 + y2) / 2;
 
point.shapeType = 'rect';
point.shapeArgs = {
x: Math.min(x1, x2),
y: Math.min(y1, y2),
width: Math.abs(x2 - x1),
height: Math.abs(y2 - y1)
};
});
 
series.translateColors();
},
drawPoints: function() {
seriesTypes.column.prototype.drawPoints.call(this);
 
each(this.points, function(point) {
 
// In styled mode, use CSS, otherwise the fill used in the style
// sheet will take precedence over the fill attribute.
point.graphic.css(this.colorAttribs(point));
 
}, this);
},
animate: noop,
getBox: noop,
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
getExtremes: function() {
// Get the extremes from the value data
Series.prototype.getExtremes.call(this, this.valueData);
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Get the extremes from the y data
Series.prototype.getExtremes.call(this);
}
 
}), colorPointMixin);
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/map-parser.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":32,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","doc","win","document","each","objectEach","pick","inArray","isNumber","splat","SeriesBuilder","Data","dataOptions","chartOptions","init","extend","prototype","options","columns","rowsToColumns","rows","firstRowAsNames","decimalRegex","decimalPoint","RegExp","rawColumns","length","dataFound","parseCSV","parseTable","parseGoogleSpreadsheet","getColumnDistribution","xColumns","getValueCount","type","seriesTypes","pointArrayMap","globalType","chart","individualCounts","seriesBuilders","seriesIndex","i","series","push","seriesMapping","mapping","x","builder","numberOfValueColumnsNeeded","addColumnReader","val","name","hasReader","undefined","globalPointArrayMap","valueCount","global","individual","switchRowsAndColumns","parseTypes","parsed","complete","self","csv","startRow","endRow","Number","MAX_VALUE","startColumn","endColumn","itemDelimiter","lines","activeRowNo","replace","split","lineDelimiter","indexOf","line","rowNo","trimmed","trim","isComment","items","item","colNo","table","getElementById","getElementsByTagName","tr","children","tagName","innerHTML","googleSpreadsheetKey","gr","gc","jQuery","ajax","dataType","url","googleSpreadsheetWorksheet","error","success","json","cells","feed","entry","cell","cellCount","colCount","rowCount","Math","max","gs$cell","col","row","min","content","$t","column","str","inside","test","parseColumn","floatVal","trimVal","trimInsideVal","isXColumn","backup","descending","columnType","columnTypes","forceCategory","xAxis","parseFloat","isDatetime","isNumeric","dateVal","parseDate","diff","alternativeFormat","dateFormat","dateFormats","alternative","unsorted","mixed","sort","reverse","unshift","pop","regex","parser","match","Date","UTC","ret","key","format","parse","getTime","getTimezoneOffset","rowsLength","colsLength","call","getFreeIndexes","numberOfColumns","freeIndexes","freeIndexValues","referencedIndexes","s","getReferencedColumnIndexes","data","j","allSeriesBuilders","afterComplete","shift","populateColumns","index","splice","readers","typeCol","columnIndex","r","configName","read","turboThreshold","uniqueNames","Highcharts.data","wrap","Chart","proceed","userOptions","callback","hasOwnProperty","merge","pointIsArray","SeriesBuilder.prototype.populateColumns","enoughColumns","reader","SeriesBuilder.prototype.read","rowIndex","point","columnIndexes","value","SeriesBuilder.prototype.addColumnReader","SeriesBuilder.prototype.getReferencedColumnIndexes","referencedColumnIndexes","columnReader","SeriesBuilder.prototype.hasReader","H","svg","loadSVG","pathToArray","path","matrix","position","positions","fixedPoint","startPoint","isRelative","operator","matrixTransform","p","m","a","c","e","b","d","f","isString","toUpperCase","pathToString","arr","join","roundPaths","scale","mapProto","map","fakeSeries","origSize","translate","Axis","minPixelPadding","yAxis","getBox","maxX","minX","maxY","minY","transA","len","translatePath","round","_foundBox","getPathLikeChildren","parent","Array","slice","concat","getPathDefinition","node","nodeName","getAttribute","y","w","h","getTranslate","elem","ctm","getCTM","isNaN","getName","desc","nameTag","innerText","hasFill","handleSVG","xml","currentParent","allPaths","commonLineage","lastCommonAncestor","handleGroups","$frame","$","css","top","appendTo","body","html","removeAttribute","skip","itemLineage","parentNode","g","groupPath","pathHasFill"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/map.js
@@ -0,0 +1,66 @@
/*
Highmaps JS v5.0.14 (2017-07-28)
Highmaps as a plugin for Highcharts 4.1.x or Highstock 2.1.x (x being the patch version of this file)
 
(c) 2011-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(a){var l=a.Axis,n=a.each,g=a.pick;a=a.wrap;a(l.prototype,"getSeriesExtremes",function(a){var f=this.isXAxis,p,v,l=[],m;f&&n(this.series,function(a,b){a.useMapGeometry&&(l[b]=a.xData,a.xData=[])});a.call(this);f&&(p=g(this.dataMin,Number.MAX_VALUE),v=g(this.dataMax,-Number.MAX_VALUE),n(this.series,function(a,b){a.useMapGeometry&&(p=Math.min(p,g(a.minX,p)),v=Math.max(v,g(a.maxX,v)),a.xData=l[b],
m=!0)}),m&&(this.dataMin=p,this.dataMax=v))});a(l.prototype,"setAxisTranslation",function(a){var f=this.chart,p=f.plotWidth/f.plotHeight,f=f.xAxis[0],g;a.call(this);"yAxis"===this.coll&&void 0!==f.transA&&n(this.series,function(a){a.preserveAspectRatio&&(g=!0)});if(g&&(this.transA=f.transA=Math.min(this.transA,f.transA),a=p/((f.max-f.min)/(this.max-this.min)),a=1>a?this:f,p=(a.max-a.min)*a.transA,a.pixelPadding=a.len-p,a.minPixelPadding=a.pixelPadding/2,p=a.fixTo)){p=p[1]-a.toValue(p[0],!0);p*=a.transA;
if(Math.abs(p)>a.minPixelPadding||a.min===a.dataMin&&a.max===a.dataMax)p=0;a.minPixelPadding-=p}});a(l.prototype,"render",function(a){a.call(this);this.fixTo=null})})(x);(function(a){var l=a.Axis,n=a.Chart,g=a.color,f,t=a.each,p=a.extend,v=a.isNumber,u=a.Legend,m=a.LegendSymbolMixin,c=a.noop,b=a.merge,e=a.pick,k=a.wrap;f=a.ColorAxis=function(){this.init.apply(this,arguments)};p(f.prototype,l.prototype);p(f.prototype,{defaultColorAxisOptions:{lineWidth:0,minPadding:0,maxPadding:0,gridLineWidth:1,tickPixelInterval:72,
startOnTick:!0,endOnTick:!0,offset:0,marker:{animation:{duration:50},width:.01},labels:{overflow:"justify",rotation:0},minColor:"#e6ebf5",maxColor:"#003399",tickLength:5,showInLegend:!0},keepProps:["legendGroup","legendItemHeight","legendItemWidth","legendItem","legendSymbol"].concat(l.prototype.keepProps),init:function(a,h){var d="vertical"!==a.options.legend.layout,r;this.coll="colorAxis";r=b(this.defaultColorAxisOptions,{side:d?2:1,reversed:!d},h,{opposite:!d,showEmpty:!1,title:null});l.prototype.init.call(this,
a,r);h.dataClasses&&this.initDataClasses(h);this.initStops();this.horiz=d;this.zoomEnabled=!1;this.defaultLegendLength=200},initDataClasses:function(a){var r,d=0,q=this.chart.options.chart.colorCount,w=this.options,e=a.dataClasses.length;this.dataClasses=r=[];this.legendItems=[];t(a.dataClasses,function(a,h){a=b(a);r.push(a);"category"===w.dataClassColor?(a.colorIndex=d,d++,d===q&&(d=0)):a.color=g(w.minColor).tweenTo(g(w.maxColor),2>e?.5:h/(e-1))})},setTickPositions:function(){if(!this.dataClasses)return l.prototype.setTickPositions.call(this)},
initStops:function(){this.stops=this.options.stops||[[0,this.options.minColor],[1,this.options.maxColor]];t(this.stops,function(a){a.color=g(a[1])})},setOptions:function(a){l.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker},setAxisSize:function(){var a=this.legendSymbol,h=this.chart,d=h.options.legend||{},q,b;a?(this.left=d=a.attr("x"),this.top=q=a.attr("y"),this.width=b=a.attr("width"),this.height=a=a.attr("height"),this.right=h.chartWidth-d-b,this.bottom=h.chartHeight-
q-a,this.len=this.horiz?b:a,this.pos=this.horiz?d:q):this.len=(this.horiz?d.symbolWidth:d.symbolHeight)||this.defaultLegendLength},normalizedValue:function(a){this.isLog&&(a=this.val2lin(a));return 1-(this.max-a)/(this.max-this.min||1)},toColor:function(a,h){var d=this.stops,q,b,r=this.dataClasses,e,c;if(r)for(c=r.length;c--;){if(e=r[c],q=e.from,d=e.to,(void 0===q||a>=q)&&(void 0===d||a<=d)){h&&(h.dataClass=c,h.colorIndex=e.colorIndex);break}}else{a=this.normalizedValue(a);for(c=d.length;c--&&!(a>
d[c][0]););q=d[c]||d[c+1];d=d[c+1]||q;a=1-(d[0]-a)/(d[0]-q[0]||1);b=q.color.tweenTo(d.color,a)}return b},getOffset:function(){var a=this.legendGroup,h=this.chart.axisOffset[this.side];a&&(this.axisParent=a,l.prototype.getOffset.call(this),this.added||(this.added=!0,this.labelLeft=0,this.labelRight=this.width),this.chart.axisOffset[this.side]=h)},setLegendColor:function(){var a,h=this.reversed;a=h?1:0;h=h?0:1;a=this.horiz?[a,0,h,0]:[0,h,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],
y2:a[3]},stops:this.stops}},drawLegendSymbol:function(a,h){var d=a.padding,q=a.options,b=this.horiz,r=e(q.symbolWidth,b?this.defaultLegendLength:12),c=e(q.symbolHeight,b?12:this.defaultLegendLength),k=e(q.labelPadding,b?16:30),q=e(q.itemDistance,10);this.setLegendColor();h.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,r,c).attr({zIndex:1}).add(h.legendGroup);this.legendItemWidth=r+d+(b?q:k);this.legendItemHeight=c+d+(b?k:0)},setState:c,visible:!0,setVisible:c,getSeriesExtremes:function(){var a=
this.series,b=a.length;this.dataMin=Infinity;for(this.dataMax=-Infinity;b--;)void 0!==a[b].valueMin&&(this.dataMin=Math.min(this.dataMin,a[b].valueMin),this.dataMax=Math.max(this.dataMax,a[b].valueMax))},drawCrosshair:function(a,b){var d=b&&b.plotX,q=b&&b.plotY,h,e=this.pos,c=this.len;b&&(h=this.toPixels(b[b.series.colorKey]),h<e?h=e-2:h>e+c&&(h=e+c+2),b.plotX=h,b.plotY=this.len-h,l.prototype.drawCrosshair.call(this,a,b),b.plotX=d,b.plotY=q,this.cross&&this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup))},
getPlotLinePath:function(a,b,d,q,e){return v(e)?this.horiz?["M",e-4,this.top-6,"L",e+4,this.top-6,e,this.top,"Z"]:["M",this.left,e,"L",this.left-6,e+6,this.left-6,e-6,"Z"]:l.prototype.getPlotLinePath.call(this,a,b,d,q)},update:function(a,e){var d=this.chart,q=d.legend;t(this.series,function(a){a.isDirtyData=!0});a.dataClasses&&q.allItems&&(t(q.allItems,function(a){a.isDataClass&&a.legendGroup&&a.legendGroup.destroy()}),d.isDirtyLegend=!0);d.options[this.coll]=b(this.userOptions,a);l.prototype.update.call(this,
a,e);this.legendItem&&(this.setLegendColor(),q.colorizeItem(this,!0))},remove:function(){this.legendItem&&this.chart.legend.destroyItem(this);l.prototype.remove.call(this)},getDataClassLegendSymbols:function(){var b=this,e=this.chart,d=this.legendItems,q=e.options.legend,k=q.valueDecimals,f=q.valueSuffix||"",g;d.length||t(this.dataClasses,function(q,h){var r=!0,w=q.from,l=q.to;g="";void 0===w?g="\x3c ":void 0===l&&(g="\x3e ");void 0!==w&&(g+=a.numberFormat(w,k)+f);void 0!==w&&void 0!==l&&(g+=" - ");
void 0!==l&&(g+=a.numberFormat(l,k)+f);d.push(p({chart:e,name:g,options:{},drawLegendSymbol:m.drawRectangle,visible:!0,setState:c,isDataClass:!0,setVisible:function(){r=this.visible=!r;t(b.series,function(a){t(a.points,function(a){a.dataClass===h&&a.setVisible(r)})});e.legend.colorizeItem(this,r)}},q))});return d},name:""});t(["fill","stroke"],function(b){a.Fx.prototype[b+"Setter"]=function(){this.elem.attr(b,g(this.start).tweenTo(g(this.end),this.pos),null,!0)}});k(n.prototype,"getAxes",function(a){var b=
this.options.colorAxis;a.call(this);this.colorAxis=[];b&&new f(this,b)});k(u.prototype,"getAllItems",function(a){var b=[],d=this.chart.colorAxis[0];d&&d.options&&(d.options.showInLegend&&(d.options.dataClasses?b=b.concat(d.getDataClassLegendSymbols()):b.push(d)),t(d.series,function(a){a.options.showInLegend=!1}));return b.concat(a.call(this))});k(u.prototype,"colorizeItem",function(a,b,d){a.call(this,b,d);d&&b.legendColor&&b.legendSymbol.attr({fill:b.legendColor})});k(u.prototype,"update",function(a){a.apply(this,
[].slice.call(arguments,1));this.chart.colorAxis[0]&&this.chart.colorAxis[0].update({},arguments[2])})})(x);(function(a){var l=a.defined,n=a.each,g=a.noop;a.colorPointMixin={isValid:function(){return null!==this.value},setVisible:function(a){var f=this,g=a?"show":"hide";n(["graphic","dataLabel"],function(a){if(f[a])f[a][g]()})},setState:function(f){a.Point.prototype.setState.call(this,f);this.graphic&&this.graphic.attr({zIndex:"hover"===f?1:0})}};a.colorSeriesMixin={pointArrayMap:["value"],axisTypes:["xAxis",
"yAxis","colorAxis"],optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:g,parallelArrays:["x","y","value"],colorKey:"value",translateColors:function(){var a=this,t=this.options.nullColor,g=this.colorAxis,l=this.colorKey;n(this.data,function(f){var m=f[l];if(m=f.options.color||(f.isNull?t:g&&void 0!==m?g.toColor(m,f):f.color||a.color))f.color=m})},colorAttribs:function(a){var f={};l(a.color)&&(f[this.colorProp||"fill"]=a.color);return f}}})(x);(function(a){function l(a){a&&
(a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)}function n(a){this.init(a)}var g=a.addEvent,f=a.Chart,t=a.doc,p=a.each,v=a.extend,u=a.merge,m=a.pick,c=a.wrap;n.prototype.init=function(a){this.chart=a;a.mapNavButtons=[]};n.prototype.update=function(b){var e=this.chart,c=e.options.mapNavigation,r,h=function(a){this.handler.call(e,a);l(a)},d=e.mapNavButtons;b&&(c=e.options.mapNavigation=u(e.options.mapNavigation,b));for(;d.length;)d.pop().destroy();m(c.enableButtons,
c.enabled)&&!e.renderer.forExport&&a.objectEach(c.buttons,function(a,b){r=u(c.buttonOptions,a);a=e.renderer.button(r.text,0,0,h,void 0,void 0,void 0,0,"zoomIn"===b?"topbutton":"bottombutton").addClass("highcharts-map-navigation").attr({width:r.width,height:r.height,title:e.options.lang[b],padding:r.padding,zIndex:5}).add();a.handler=r.onclick;a.align(v(r,{width:a.width,height:2*a.height}),null,r.alignTo);g(a.element,"dblclick",l);d.push(a)});this.updateEvents(c)};n.prototype.updateEvents=function(a){var b=
this.chart;m(a.enableDoubleClickZoom,a.enabled)||a.enableDoubleClickZoomTo?this.unbindDblClick=this.unbindDblClick||g(b.container,"dblclick",function(a){b.pointer.onContainerDblClick(a)}):this.unbindDblClick&&(this.unbindDblClick=this.unbindDblClick());m(a.enableMouseWheelZoom,a.enabled)?this.unbindMouseWheel=this.unbindMouseWheel||g(b.container,void 0===t.onmousewheel?"DOMMouseScroll":"mousewheel",function(a){b.pointer.onContainerMouseWheel(a);l(a);return!1}):this.unbindMouseWheel&&(this.unbindMouseWheel=
this.unbindMouseWheel())};v(f.prototype,{fitToBox:function(a,e){p([["x","width"],["y","height"]],function(b){var c=b[0];b=b[1];a[c]+a[b]>e[c]+e[b]&&(a[b]>e[b]?(a[b]=e[b],a[c]=e[c]):a[c]=e[c]+e[b]-a[b]);a[b]>e[b]&&(a[b]=e[b]);a[c]<e[c]&&(a[c]=e[c])});return a},mapZoom:function(a,c,f,r,h){var d=this.xAxis[0],b=d.max-d.min,e=m(c,d.min+b/2),k=b*a,b=this.yAxis[0],g=b.max-b.min,t=m(f,b.min+g/2),g=g*a,e=this.fitToBox({x:e-k*(r?(r-d.pos)/d.len:.5),y:t-g*(h?(h-b.pos)/b.len:.5),width:k,height:g},{x:d.dataMin,
y:b.dataMin,width:d.dataMax-d.dataMin,height:b.dataMax-b.dataMin}),k=e.x<=d.dataMin&&e.width>=d.dataMax-d.dataMin&&e.y<=b.dataMin&&e.height>=b.dataMax-b.dataMin;r&&(d.fixTo=[r-d.pos,c]);h&&(b.fixTo=[h-b.pos,f]);void 0===a||k?(d.setExtremes(void 0,void 0,!1),b.setExtremes(void 0,void 0,!1)):(d.setExtremes(e.x,e.x+e.width,!1),b.setExtremes(e.y,e.y+e.height,!1));this.redraw()}});c(f.prototype,"render",function(a){this.mapNavigation=new n(this);this.mapNavigation.update();a.call(this)})})(x);(function(a){var l=
a.extend,n=a.pick,g=a.Pointer;a=a.wrap;l(g.prototype,{onContainerDblClick:function(a){var f=this.chart;a=this.normalize(a);f.options.mapNavigation.enableDoubleClickZoomTo?f.pointer.inClass(a.target,"highcharts-tracker")&&f.hoverPoint&&f.hoverPoint.zoomTo():f.isInsidePlot(a.chartX-f.plotLeft,a.chartY-f.plotTop)&&f.mapZoom(.5,f.xAxis[0].toValue(a.chartX),f.yAxis[0].toValue(a.chartY),a.chartX,a.chartY)},onContainerMouseWheel:function(a){var f=this.chart,g;a=this.normalize(a);g=a.detail||-(a.wheelDelta/
120);f.isInsidePlot(a.chartX-f.plotLeft,a.chartY-f.plotTop)&&f.mapZoom(Math.pow(f.options.mapNavigation.mouseWheelSensitivity,g),f.xAxis[0].toValue(a.chartX),f.yAxis[0].toValue(a.chartY),a.chartX,a.chartY)}});a(g.prototype,"zoomOption",function(a){var f=this.chart.options.mapNavigation;n(f.enableTouchZoom,f.enabled)&&(this.chart.options.chart.pinchType="xy");a.apply(this,[].slice.call(arguments,1))});a(g.prototype,"pinchTranslate",function(a,g,l,n,u,m,c){a.call(this,g,l,n,u,m,c);"map"===this.chart.options.chart.type&&
this.hasZoom&&(a=n.scaleX>n.scaleY,this.pinchTranslateDirection(!a,g,l,n,u,m,c,a?n.scaleX:n.scaleY))})})(x);(function(a){var l=a.colorPointMixin,n=a.each,g=a.extend,f=a.isNumber,t=a.map,p=a.merge,v=a.noop,u=a.pick,m=a.isArray,c=a.Point,b=a.Series,e=a.seriesType,k=a.seriesTypes,r=a.splat,h=void 0!==a.doc.documentElement.style.vectorEffect;e("map","scatter",{allAreas:!0,animation:!1,nullColor:"#f7f7f7",borderColor:"#cccccc",borderWidth:1,marker:null,stickyTracking:!1,joinBy:"hc-key",dataLabels:{formatter:function(){return this.point.value},
inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},turboThreshold:0,tooltip:{followPointer:!0,pointFormat:"{point.name}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{brightness:.2,halo:null},select:{color:"#cccccc"}}},p(a.colorSeriesMixin,{type:"map",getExtremesFromAll:!0,useMapGeometry:!0,forceDL:!0,searchPoint:v,directTouch:!0,preserveAspectRatio:!0,pointArrayMap:["value"],getBox:function(d){var b=Number.MAX_VALUE,e=-b,c=b,h=-b,r=b,m=b,k=this.xAxis,g=this.yAxis,l;
n(d||[],function(d){if(d.path){"string"===typeof d.path&&(d.path=a.splitPath(d.path));var q=d.path||[],k=q.length,g=!1,w=-b,n=b,z=-b,p=b,t=d.properties;if(!d._foundBox){for(;k--;)f(q[k])&&(g?(w=Math.max(w,q[k]),n=Math.min(n,q[k])):(z=Math.max(z,q[k]),p=Math.min(p,q[k])),g=!g);d._midX=n+(w-n)*u(d.middleX,t&&t["hc-middle-x"],.5);d._midY=p+(z-p)*u(d.middleY,t&&t["hc-middle-y"],.5);d._maxX=w;d._minX=n;d._maxY=z;d._minY=p;d.labelrank=u(d.labelrank,(w-n)*(z-p));d._foundBox=!0}e=Math.max(e,d._maxX);c=Math.min(c,
d._minX);h=Math.max(h,d._maxY);r=Math.min(r,d._minY);m=Math.min(d._maxX-d._minX,d._maxY-d._minY,m);l=!0}});l&&(this.minY=Math.min(r,u(this.minY,b)),this.maxY=Math.max(h,u(this.maxY,-b)),this.minX=Math.min(c,u(this.minX,b)),this.maxX=Math.max(e,u(this.maxX,-b)),k&&void 0===k.options.minRange&&(k.minRange=Math.min(5*m,(this.maxX-this.minX)/5,k.minRange||b)),g&&void 0===g.options.minRange&&(g.minRange=Math.min(5*m,(this.maxY-this.minY)/5,g.minRange||b)))},getExtremes:function(){b.prototype.getExtremes.call(this,
this.valueData);this.chart.hasRendered&&this.isDirtyData&&this.getBox(this.options.data);this.valueMin=this.dataMin;this.valueMax=this.dataMax;this.dataMin=this.minY;this.dataMax=this.maxY},translatePath:function(a){var d=!1,b=this.xAxis,e=this.yAxis,c=b.min,h=b.transA,b=b.minPixelPadding,r=e.min,m=e.transA,e=e.minPixelPadding,k,g=[];if(a)for(k=a.length;k--;)f(a[k])?(g[k]=d?(a[k]-c)*h+b:(a[k]-r)*m+e,d=!d):g[k]=a[k];return g},setData:function(d,e,c,h){var q=this.options,k=this.chart.options.chart,
g=k&&k.map,w=q.mapData,l=q.joinBy,v=null===l,u=q.keys||this.pointArrayMap,y=[],B={},A=this.chart.mapTransforms;!w&&g&&(w="string"===typeof g?a.maps[g]:g);v&&(l="_i");l=this.joinBy=r(l);l[1]||(l[1]=l[0]);d&&n(d,function(a,b){var e=0;if(f(a))d[b]={value:a};else if(m(a)){d[b]={};!q.keys&&a.length>u.length&&"string"===typeof a[0]&&(d[b]["hc-key"]=a[0],++e);for(var c=0;c<u.length;++c,++e)u[c]&&(d[b][u[c]]=a[e])}v&&(d[b]._i=b)});this.getBox(d);(this.chart.mapTransforms=A=k&&k.mapTransforms||w&&w["hc-transform"]||
A)&&a.objectEach(A,function(a){a.rotation&&(a.cosAngle=Math.cos(a.rotation),a.sinAngle=Math.sin(a.rotation))});if(w){"FeatureCollection"===w.type&&(this.mapTitle=w.title,w=a.geojson(w,this.type,this));this.mapData=w;this.mapMap={};for(A=0;A<w.length;A++)k=w[A],g=k.properties,k._i=A,l[0]&&g&&g[l[0]]&&(k[l[0]]=g[l[0]]),B[k[l[0]]]=k;this.mapMap=B;d&&l[1]&&n(d,function(a){B[a[l[1]]]&&y.push(B[a[l[1]]])});q.allAreas?(this.getBox(w),d=d||[],l[1]&&n(d,function(a){y.push(a[l[1]])}),y="|"+t(y,function(a){return a&&
a[l[0]]}).join("|")+"|",n(w,function(a){l[0]&&-1!==y.indexOf("|"+a[l[0]]+"|")||(d.push(p(a,{value:null})),h=!1)})):this.getBox(y)}b.prototype.setData.call(this,d,e,c,h)},drawGraph:v,drawDataLabels:v,doFullTranslate:function(){return this.isDirtyData||this.chart.isResizing||this.chart.renderer.isVML||!this.baseTrans},translate:function(){var a=this,b=a.xAxis,e=a.yAxis,c=a.doFullTranslate();a.generatePoints();n(a.data,function(d){d.plotX=b.toPixels(d._midX,!0);d.plotY=e.toPixels(d._midY,!0);c&&(d.shapeType=
"path",d.shapeArgs={d:a.translatePath(d.path)})});a.translateColors()},pointAttribs:function(a,b){a=this.colorAttribs(a);h?a["vector-effect"]="non-scaling-stroke":a["stroke-width"]="inherit";return a},drawPoints:function(){var a=this,b=a.xAxis,e=a.yAxis,c=a.group,g=a.chart,r=g.renderer,m,f,l,p,t=this.baseTrans,y,u,v,x,G;a.transformGroup||(a.transformGroup=r.g().attr({scaleX:1,scaleY:1}).add(c),a.transformGroup.survive=!0);a.doFullTranslate()?(a.group=a.transformGroup,k.column.prototype.drawPoints.apply(a),
a.group=c,n(a.points,function(b){b.graphic&&(b.name&&b.graphic.addClass("highcharts-name-"+b.name.replace(/ /g,"-").toLowerCase()),b.properties&&b.properties["hc-key"]&&b.graphic.addClass("highcharts-key-"+b.properties["hc-key"].toLowerCase()),b.graphic.css(a.pointAttribs(b,b.selected&&"select")))}),this.baseTrans={originX:b.min-b.minPixelPadding/b.transA,originY:e.min-e.minPixelPadding/e.transA+(e.reversed?0:e.len/e.transA),transAX:b.transA,transAY:e.transA},this.transformGroup.animate({translateX:0,
translateY:0,scaleX:1,scaleY:1})):(m=b.transA/t.transAX,f=e.transA/t.transAY,l=b.toPixels(t.originX,!0),p=e.toPixels(t.originY,!0),.99<m&&1.01>m&&.99<f&&1.01>f&&(f=m=1,l=Math.round(l),p=Math.round(p)),y=this.transformGroup,g.renderer.globalAnimation?(u=y.attr("translateX"),v=y.attr("translateY"),x=y.attr("scaleX"),G=y.attr("scaleY"),y.attr({animator:0}).animate({animator:1},{step:function(a,b){y.attr({translateX:u+(l-u)*b.pos,translateY:v+(p-v)*b.pos,scaleX:x+(m-x)*b.pos,scaleY:G+(f-G)*b.pos})}})):
y.attr({translateX:l,translateY:p,scaleX:m,scaleY:f}));h||a.group.element.setAttribute("stroke-width",a.options[a.pointAttrToOptions&&a.pointAttrToOptions["stroke-width"]||"borderWidth"]/(m||1));this.drawMapDataLabels()},drawMapDataLabels:function(){b.prototype.drawDataLabels.call(this);this.dataLabelsGroup&&this.dataLabelsGroup.clip(this.chart.clipRect)},render:function(){var a=this,e=b.prototype.render;a.chart.renderer.isVML&&3E3<a.data.length?setTimeout(function(){e.call(a)}):e.call(a)},animate:function(a){var b=
this.options.animation,d=this.group,e=this.xAxis,c=this.yAxis,h=e.pos,k=c.pos;this.chart.renderer.isSVG&&(!0===b&&(b={duration:1E3}),a?d.attr({translateX:h+e.len/2,translateY:k+c.len/2,scaleX:.001,scaleY:.001}):(d.animate({translateX:h,translateY:k,scaleX:1,scaleY:1},b),this.animate=null))},animateDrilldown:function(a){var b=this.chart.plotBox,d=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],e=d.bBox,c=this.chart.options.drilldown.animation;a||(a=Math.min(e.width/b.width,e.height/
b.height),d.shapeArgs={scaleX:a,scaleY:a,translateX:e.x,translateY:e.y},n(this.points,function(a){a.graphic&&a.graphic.attr(d.shapeArgs).animate({scaleX:1,scaleY:1,translateX:0,translateY:0},c)}),this.animate=null)},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,animateDrillupFrom:function(a){k.column.prototype.animateDrillupFrom.call(this,a)},animateDrillupTo:function(a){k.column.prototype.animateDrillupTo.call(this,a)}}),g({applyOptions:function(a,b){a=c.prototype.applyOptions.call(this,a,b);
b=this.series;var d=b.joinBy;b.mapData&&((d=void 0!==a[d[1]]&&b.mapMap[a[d[1]]])?(b.xyFromShape&&(a.x=d._midX,a.y=d._midY),g(a,d)):a.value=a.value||null);return a},onMouseOver:function(a){clearTimeout(this.colorInterval);if(null!==this.value||this.series.options.nullInteraction)c.prototype.onMouseOver.call(this,a);else this.series.onMouseOut(a)},zoomTo:function(){var a=this.series;a.xAxis.setExtremes(this._minX,this._maxX,!1);a.yAxis.setExtremes(this._minY,this._maxY,!1);a.chart.redraw()}},l))})(x);
(function(a){var l=a.seriesType;l("mapline","map",{},{type:"mapline",colorProp:"stroke",drawLegendSymbol:a.seriesTypes.line.prototype.drawLegendSymbol})})(x);(function(a){var l=a.merge,n=a.Point;a=a.seriesType;a("mappoint","scatter",{dataLabels:{enabled:!0,formatter:function(){return this.point.name},crop:!1,defer:!1,overflow:!1,style:{color:"#000000"}}},{type:"mappoint",forceDL:!0},{applyOptions:function(a,f){a=void 0!==a.lat&&void 0!==a.lon?l(a,this.series.chart.fromLatLonToPoint(a)):a;return n.prototype.applyOptions.call(this,
a,f)}})})(x);(function(a){var l=a.arrayMax,n=a.arrayMin,g=a.Axis,f=a.each,t=a.isNumber,p=a.noop,v=a.pick,u=a.pInt,m=a.Point,c=a.seriesType,b=a.seriesTypes;c("bubble","scatter",{dataLabels:{formatter:function(){return this.point.z},inside:!0,verticalAlign:"middle"},marker:{radius:null,states:{hover:{radiusPlus:0}},symbol:"circle"},minSize:8,maxSize:"20%",softThreshold:!1,states:{hover:{halo:{size:5}}},tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"},
{pointArrayMap:["y","z"],parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],specialGroup:"group",bubblePadding:!0,zoneAxis:"z",directTouch:!0,getRadii:function(a,b,c,h){var d,e,k,m=this.zData,f=[],r=this.options,g="width"!==r.sizeBy,l=r.zThreshold,n=b-a;e=0;for(d=m.length;e<d;e++)k=m[e],r.sizeByAbsoluteValue&&null!==k&&(k=Math.abs(k-l),b=Math.max(b-l,Math.abs(a-l)),a=0),null===k?k=null:k<a?k=c/2-1:(k=0<n?(k-a)/n:.5,g&&0<=k&&(k=Math.sqrt(k)),k=Math.ceil(c+k*(h-c))/2),f.push(k);
this.radii=f},animate:function(a){var b=this.options.animation;a||(f(this.points,function(a){var e=a.graphic,d;e&&e.width&&(d={x:e.x,y:e.y,width:e.width,height:e.height},e.attr({x:a.plotX,y:a.plotY,width:1,height:1}),e.animate(d,b))}),this.animate=null)},translate:function(){var e,c=this.data,m,h,d=this.radii;b.scatter.prototype.translate.call(this);for(e=c.length;e--;)m=c[e],h=d?d[e]:0,t(h)&&h>=this.minPxSize/2?(m.marker=a.extend(m.marker,{radius:h,width:2*h,height:2*h}),m.dlBox={x:m.plotX-h,y:m.plotY-
h,width:2*h,height:2*h}):m.shapeArgs=m.plotY=m.dlBox=void 0},alignDataLabel:b.column.prototype.alignDataLabel,buildKDTree:p,applyZones:p},{haloPath:function(a){return m.prototype.haloPath.call(this,0===a?0:(this.marker?this.marker.radius||0:0)+a)},ttBelow:!1});g.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,h=0,d=b,m=this.isXAxis,g=m?"xData":"yData",p=this.min,x={},H=Math.min(c.plotWidth,c.plotHeight),D=Number.MAX_VALUE,E=-Number.MAX_VALUE,z=this.max-p,C=b/z,F=[];f(this.series,
function(b){var d=b.options;!b.bubblePadding||!b.visible&&c.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,F.push(b),m&&(f(["minSize","maxSize"],function(a){var b=d[a],e=/%$/.test(b),b=u(b);x[a]=e?H*b/100:b}),b.minPxSize=x.minSize,b.maxPxSize=Math.max(x.maxSize,x.minSize),b=b.zData,b.length&&(D=v(d.zMin,Math.min(D,Math.max(n(b),!1===d.displayNegative?d.zThreshold:-Number.MAX_VALUE))),E=v(d.zMax,Math.max(E,l(b))))))});f(F,function(b){var e=b[g],c=e.length,k;m&&b.getRadii(D,E,b.minPxSize,
b.maxPxSize);if(0<z)for(;c--;)t(e[c])&&a.dataMin<=e[c]&&e[c]<=a.dataMax&&(k=b.radii[c],h=Math.min((e[c]-p)*C-k,h),d=Math.max((e[c]-p)*C+k,d))});F.length&&0<z&&!this.isLog&&(d-=b,C*=(b+h-d)/b,f([["min","userMin",h],["max","userMax",d]],function(b){void 0===v(a.options[b[0]],a[b[1]])&&(a[b[0]]+=b[2]/C)}))}})(x);(function(a){var l=a.merge,n=a.Point,g=a.seriesType,f=a.seriesTypes;f.bubble&&g("mapbubble","bubble",{animationLimit:500,tooltip:{pointFormat:"{point.name}: {point.z}"}},{xyFromShape:!0,type:"mapbubble",
pointArrayMap:["z"],getMapData:f.map.prototype.getMapData,getBox:f.map.prototype.getBox,setData:f.map.prototype.setData},{applyOptions:function(a,g){return a&&void 0!==a.lat&&void 0!==a.lon?n.prototype.applyOptions.call(this,l(a,this.series.chart.fromLatLonToPoint(a)),g):f.map.prototype.pointClass.prototype.applyOptions.call(this,a,g)},ttBelow:!1})})(x);(function(a){var l=a.colorPointMixin,n=a.each,g=a.merge,f=a.noop,t=a.pick,p=a.Series,v=a.seriesType,u=a.seriesTypes;v("heatmap","scatter",{animation:!1,
borderWidth:0,dataLabels:{formatter:function(){return this.point.value},inside:!0,verticalAlign:"middle",crop:!1,overflow:!1,padding:0},marker:null,pointRange:null,tooltip:{pointFormat:"{point.x}, {point.y}: {point.value}\x3cbr/\x3e"},states:{normal:{animation:!0},hover:{halo:!1,brightness:.2}}},g(a.colorSeriesMixin,{pointArrayMap:["y","value"],hasPointSpecificOptions:!0,getExtremesFromAll:!0,directTouch:!0,init:function(){var a;u.scatter.prototype.init.apply(this,arguments);a=this.options;a.pointRange=
t(a.pointRange,a.colsize||1);this.yAxis.axisPointRange=a.rowsize||1},translate:function(){var a=this.options,c=this.xAxis,b=this.yAxis,e=function(a,b,e){return Math.min(Math.max(b,a),e)};this.generatePoints();n(this.points,function(k){var m=(a.colsize||1)/2,h=(a.rowsize||1)/2,d=e(Math.round(c.len-c.translate(k.x-m,0,1,0,1)),-c.len,2*c.len),m=e(Math.round(c.len-c.translate(k.x+m,0,1,0,1)),-c.len,2*c.len),f=e(Math.round(b.translate(k.y-h,0,1,0,1)),-b.len,2*b.len),h=e(Math.round(b.translate(k.y+h,0,
1,0,1)),-b.len,2*b.len);k.plotX=k.clientX=(d+m)/2;k.plotY=(f+h)/2;k.shapeType="rect";k.shapeArgs={x:Math.min(d,m),y:Math.min(f,h),width:Math.abs(m-d),height:Math.abs(h-f)}});this.translateColors()},drawPoints:function(){u.column.prototype.drawPoints.call(this);n(this.points,function(a){a.graphic.css(this.colorAttribs(a))},this)},animate:f,getBox:f,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,alignDataLabel:u.column.prototype.alignDataLabel,getExtremes:function(){p.prototype.getExtremes.call(this,
this.valueData);this.valueMin=this.dataMin;this.valueMax=this.dataMax;p.prototype.getExtremes.call(this)}}),l)})(x);(function(a){function l(a,c){var b,e,k,f=!1,h=a.x,d=a.y;a=0;for(b=c.length-1;a<c.length;b=a++)e=c[a][1]>d,k=c[b][1]>d,e!==k&&h<(c[b][0]-c[a][0])*(d-c[a][1])/(c[b][1]-c[a][1])+c[a][0]&&(f=!f);return f}var n=a.Chart,g=a.each,f=a.extend,t=a.format,p=a.merge,v=a.win,u=a.wrap;n.prototype.transformFromLatLon=function(f,c){if(void 0===v.proj4)return a.error(21),{x:0,y:null};f=v.proj4(c.crs,
[f.lon,f.lat]);var b=c.cosAngle||c.rotation&&Math.cos(c.rotation),e=c.sinAngle||c.rotation&&Math.sin(c.rotation);f=c.rotation?[f[0]*b+f[1]*e,-f[0]*e+f[1]*b]:f;return{x:((f[0]-(c.xoffset||0))*(c.scale||1)+(c.xpan||0))*(c.jsonres||1)+(c.jsonmarginX||0),y:(((c.yoffset||0)-f[1])*(c.scale||1)+(c.ypan||0))*(c.jsonres||1)-(c.jsonmarginY||0)}};n.prototype.transformToLatLon=function(f,c){if(void 0===v.proj4)a.error(21);else{f={x:((f.x-(c.jsonmarginX||0))/(c.jsonres||1)-(c.xpan||0))/(c.scale||1)+(c.xoffset||
0),y:((-f.y-(c.jsonmarginY||0))/(c.jsonres||1)+(c.ypan||0))/(c.scale||1)+(c.yoffset||0)};var b=c.cosAngle||c.rotation&&Math.cos(c.rotation),e=c.sinAngle||c.rotation&&Math.sin(c.rotation);c=v.proj4(c.crs,"WGS84",c.rotation?{x:f.x*b+f.y*-e,y:f.x*e+f.y*b}:f);return{lat:c.y,lon:c.x}}};n.prototype.fromPointToLatLon=function(f){var c=this.mapTransforms,b;if(c){for(b in c)if(c.hasOwnProperty(b)&&c[b].hitZone&&l({x:f.x,y:-f.y},c[b].hitZone.coordinates[0]))return this.transformToLatLon(f,c[b]);return this.transformToLatLon(f,
c["default"])}a.error(22)};n.prototype.fromLatLonToPoint=function(f){var c=this.mapTransforms,b,e;if(!c)return a.error(22),{x:0,y:null};for(b in c)if(c.hasOwnProperty(b)&&c[b].hitZone&&(e=this.transformFromLatLon(f,c[b]),l({x:e.x,y:-e.y},c[b].hitZone.coordinates[0])))return e;return this.transformFromLatLon(f,c["default"])};a.geojson=function(a,c,b){var e=[],k=[],l=function(a){var b,e=a.length;k.push("M");for(b=0;b<e;b++)1===b&&k.push("L"),k.push(a[b][0],-a[b][1])};c=c||"map";g(a.features,function(a){var b=
a.geometry,h=b.type,b=b.coordinates;a=a.properties;var m;k=[];"map"===c||"mapbubble"===c?("Polygon"===h?(g(b,l),k.push("Z")):"MultiPolygon"===h&&(g(b,function(a){g(a,l)}),k.push("Z")),k.length&&(m={path:k})):"mapline"===c?("LineString"===h?l(b):"MultiLineString"===h&&g(b,l),k.length&&(m={path:k})):"mappoint"===c&&"Point"===h&&(m={x:b[0],y:-b[1]});m&&e.push(f(m,{name:a.name||a.NAME,properties:a}))});b&&a.copyrightShort&&(b.chart.mapCredits=t(b.chart.options.credits.mapText,{geojson:a}),b.chart.mapCreditsFull=
t(b.chart.options.credits.mapTextFull,{geojson:a}));return e};u(n.prototype,"addCredits",function(a,c){c=p(!0,this.options.credits,c);this.mapCredits&&(c.href=null);a.call(this,c);this.credits&&this.mapCreditsFull&&this.credits.attr({title:this.mapCreditsFull})})})(x);(function(a){function l(a,e,c,f,h,d,g,l){return["M",a+h,e,"L",a+c-d,e,"C",a+c-d/2,e,a+c,e+d/2,a+c,e+d,"L",a+c,e+f-g,"C",a+c,e+f-g/2,a+c-g/2,e+f,a+c-g,e+f,"L",a+l,e+f,"C",a+l/2,e+f,a,e+f-l/2,a,e+f-l,"L",a,e+h,"C",a,e+h/2,a+h/2,e,a+h,
e,"Z"]}var n=a.Chart,g=a.defaultOptions,f=a.each,t=a.extend,p=a.merge,v=a.pick,u=a.Renderer,m=a.SVGRenderer,c=a.VMLRenderer;t(g.lang,{zoomIn:"Zoom in",zoomOut:"Zoom out"});g.mapNavigation={buttonOptions:{alignTo:"plotBox",align:"left",verticalAlign:"top",x:0,width:18,height:18,padding:5},buttons:{zoomIn:{onclick:function(){this.mapZoom(.5)},text:"+",y:0},zoomOut:{onclick:function(){this.mapZoom(2)},text:"-",y:28}},mouseWheelSensitivity:1.1};a.splitPath=function(a){var b;a=a.replace(/([A-Za-z])/g,
" $1 ");a=a.replace(/^\s*/,"").replace(/\s*$/,"");a=a.split(/[ ,]+/);for(b=0;b<a.length;b++)/[a-zA-Z]/.test(a[b])||(a[b]=parseFloat(a[b]));return a};a.maps={};m.prototype.symbols.topbutton=function(a,c,f,g,h){return l(a-1,c-1,f,g,h.r,h.r,0,0)};m.prototype.symbols.bottombutton=function(a,c,f,g,h){return l(a-1,c-1,f,g,0,0,h.r,h.r)};u===c&&f(["topbutton","bottombutton"],function(a){c.prototype.symbols[a]=m.prototype.symbols[a]});a.Map=a.mapChart=function(b,c,f){var e="string"===typeof b||b.nodeName,
h=arguments[e?1:0],d={endOnTick:!1,visible:!1,minPadding:0,maxPadding:0,startOnTick:!1},g,k=a.getOptions().credits;g=h.series;h.series=null;h=p({chart:{panning:"xy",type:"map"},credits:{mapText:v(k.mapText,' \u00a9 \x3ca href\x3d"{geojson.copyrightUrl}"\x3e{geojson.copyrightShort}\x3c/a\x3e'),mapTextFull:v(k.mapTextFull,"{geojson.copyright}")},tooltip:{followTouchMove:!1},xAxis:d,yAxis:p(d,{reversed:!0})},h,{chart:{inverted:!1,alignTicks:!1}});h.series=g;return e?new n(b,h,f):new n(h,c)}})(x)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/map.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":66,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Axis","each","pick","wrap","prototype","proceed","isXAxis","dataMin","dataMax","xData","useMapGeometry","series","i","call","Number","MAX_VALUE","Math","min","minX","max","maxX","chart","plotRatio","plotWidth","plotHeight","xAxis","preserveAspectRatio","coll","undefined","transA","fixTo","mapRatio","padAxis","adjustedAxisLength","pixelPadding","len","minPixelPadding","fixDiff","toValue","abs","Chart","color","ColorAxis","extend","isNumber","Legend","LegendSymbolMixin","noop","merge","H.ColorAxis","init","apply","arguments","defaultColorAxisOptions","lineWidth","minPadding","maxPadding","gridLineWidth","tickPixelInterval","startOnTick","endOnTick","offset","marker","animation","duration","width","labels","overflow","rotation","minColor","maxColor","tickLength","showInLegend","keepProps","concat","userOptions","horiz","options","legend","layout","side","reversed","opposite","showEmpty","title","dataClasses","initDataClasses","initStops","zoomEnabled","defaultLegendLength","colorCounter","colorCount","length","legendItems","dataClass","push","dataClassColor","colorIndex","tweenTo","setTickPositions","stops","stop","setOptions","crosshair","setAxisSize","symbol","legendSymbol","legendOptions","y","left","x","attr","top","height","right","chartWidth","bottom","chartHeight","pos","symbolWidth","symbolHeight","normalizedValue","value","isLog","val2lin","toColor","point","from","to","getOffset","group","legendGroup","sideOffset","axisOffset","axisParent","added","labelLeft","labelRight","setLegendColor","grad","one","zero","legendColor","linearGradient","x1","y1","x2","y2","drawLegendSymbol","item","padding","labelPadding","itemDistance","renderer","rect","baseline","zIndex","add","legendItemWidth","legendItemHeight","setState","visible","setVisible","getSeriesExtremes","Infinity","valueMin","valueMax","drawCrosshair","e","plotX","plotY","crossPos","axisPos","axisLen","toPixels","colorKey","cross","addClass","getPlotLinePath","a","b","c","d","update","newOptions","redraw","isDirtyData","allItems","isDataClass","destroy","isDirtyLegend","legendItem","colorizeItem","remove","destroyItem","getDataClassLegendSymbols","axis","valueDecimals","valueSuffix","name","vis","numberFormat","drawRectangle","points","prop","Fx","elem","start","end","colorAxisOptions","colorAxis","fill","slice","defined","colorPointMixin","isValid","method","key","state","Point","graphic","colorSeriesMixin","pointArrayMap","axisTypes","optionalAxis","trackerGroups","getSymbol","parallelArrays","translateColors","nullColor","data","isNull","colorAttribs","ret","colorProp","stopEvent","preventDefault","stopPropagation","cancelBubble","MapNavigation","addEvent","doc","MapNavigation.prototype.init","mapNavButtons","MapNavigation.prototype.update","o","mapNavigation","buttonOptions","outerHandler","handler","pop","enableButtons","enabled","forExport","objectEach","buttons","button","n","text","hoverStates","selectStates","lang","onclick","align","alignTo","element","updateEvents","MapNavigation.prototype.updateEvents","enableDoubleClickZoom","enableDoubleClickZoomTo","unbindDblClick","container","pointer","onContainerDblClick","enableMouseWheelZoom","unbindMouseWheel","onmousewheel","onContainerMouseWheel","fitToBox","inner","outer","dim","size","mapZoom","howMuch","centerXArg","centerYArg","mouseX","mouseY","xRange","centerX","newXRange","yAxis","yRange","centerY","newYRange","newExt","fixToX","fixToY","zoomOut","setExtremes","Pointer","normalize","inClass","target","hoverPoint","zoomTo","isInsidePlot","chartX","plotLeft","chartY","plotTop","delta","detail","wheelDelta","pow","mouseWheelSensitivity","enableTouchZoom","pinchType","pinchDown","touches","transform","selectionMarker","clip","lastValidTouch","type","hasZoom","xBigger","scaleX","scaleY","pinchTranslateDirection","map","isArray","Series","seriesType","seriesTypes","splat","supportsVectorEffect","documentElement","style","vectorEffect","allAreas","borderColor","borderWidth","stickyTracking","joinBy","dataLabels","formatter","inside","verticalAlign","crop","turboThreshold","tooltip","followPointer","pointFormat","states","normal","hover","brightness","halo","select","getExtremesFromAll","forceDL","searchPoint","directTouch","getBox","paths","maxY","minY","minRange","hasBox","path","splitPath","even","pointMaxX","pointMinX","pointMaxY","pointMinY","properties","_foundBox","_midX","middleX","_midY","middleY","_maxX","_minX","_maxY","_minY","labelrank","getExtremes","valueData","hasRendered","translatePath","xMin","xTransA","xMinPixelPadding","yMin","yTransA","yMinPixelPadding","setData","updatePoints","chartOptions","globalMapData","mapData","joinByNull","keys","dataUsed","mapMap","mapTransforms","maps","val","ix","j","_i","cosAngle","cos","sinAngle","sin","mapTitle","geojson","mapPoint","props","join","indexOf","drawGraph","drawDataLabels","doFullTranslate","isResizing","isVML","baseTrans","translate","generatePoints","shapeType","shapeArgs","pointAttribs","drawPoints","translateX","translateY","transformGroup","startTranslateX","startTranslateY","startScaleX","startScaleY","g","survive","column","replace","toLowerCase","css","selected","originX","originY","transAX","transAY","animate","round","globalAnimation","animator","step","now","fx","setAttribute","pointAttrToOptions","drawMapDataLabels","dataLabelsGroup","clipRect","render","setTimeout","isSVG","animateDrilldown","toBox","plotBox","level","drilldownLevels","fromBox","bBox","animationOptions","drilldown","scale","animateDrillupFrom","animateDrillupTo","applyOptions","xyFromShape","onMouseOver","clearTimeout","colorInterval","nullInteraction","onMouseOut","line","defer","mergedOptions","lat","lon","fromLatLonToPoint","arrayMax","arrayMin","pInt","z","radius","radiusPlus","minSize","maxSize","softThreshold","zThreshold","zoneAxis","specialGroup","bubblePadding","getRadii","zMin","zMax","zData","radii","sizeByArea","sizeBy","zRange","sizeByAbsoluteValue","sqrt","ceil","animationTarget","scatter","minPxSize","dlBox","alignDataLabel","buildKDTree","applyZones","haloPath","ttBelow","beforePadding","Axis.prototype.beforePadding","axisLength","pxMin","pxMax","dataKey","extremes","smallestSize","range","activeSeries","seriesOptions","ignoreHiddenSeries","allowZoomOutside","isPercent","test","maxPxSize","displayNegative","bubble","animationLimit","getMapData","pointClass","pointRange","hasPointSpecificOptions","colsize","axisPointRange","rowsize","between","xPad","yPad","clientX","pointInPolygon","polygon","rel1","rel2","format","win","transformFromLatLon","Chart.prototype.transformFromLatLon","latLon","proj4","error","projected","crs","rotated","xoffset","xpan","jsonres","jsonmarginX","yoffset","ypan","jsonmarginY","transformToLatLon","Chart.prototype.transformToLatLon","normalized","fromPointToLatLon","Chart.prototype.fromPointToLatLon","transforms","hasOwnProperty","hitZone","coordinates","Chart.prototype.fromLatLonToPoint","coords","H.geojson","hType","polygonToPath","features","feature","geometry","items","NAME","copyrightShort","mapCredits","credits","mapText","mapCreditsFull","mapTextFull","href","selectiveRoundedRect","w","h","rTopLeft","rTopRight","rBottomRight","rBottomLeft","defaultOptions","Renderer","SVGRenderer","VMLRenderer","zoomIn","H.splitPath","split","parseFloat","symbols","topbutton","SVGRenderer.prototype.symbols.topbutton","r","bottombutton","SVGRenderer.prototype.symbols.bottombutton","shape","Map","mapChart","H.mapChart","hasRenderToArg","nodeName","hiddenAxis","defaultCreditsOptions","getOptions","panning","followTouchMove","inverted","alignTicks"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/map.src.js
@@ -0,0 +1,3894 @@
/**
* @license Highmaps JS v5.0.14 (2017-07-28)
* Highmaps as a plugin for Highcharts 4.1.x or Highstock 2.1.x (x being the patch version of this file)
*
* (c) 2011-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Axis = H.Axis,
each = H.each,
pick = H.pick,
wrap = H.wrap;
/**
* Override to use the extreme coordinates from the SVG shape, not the
* data values
*/
wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
var isXAxis = this.isXAxis,
dataMin,
dataMax,
xData = [],
useMapGeometry;
 
// Remove the xData array and cache it locally so that the proceed method doesn't use it
if (isXAxis) {
each(this.series, function(series, i) {
if (series.useMapGeometry) {
xData[i] = series.xData;
series.xData = [];
}
});
}
 
// Call base to reach normal cartesian series (like mappoint)
proceed.call(this);
 
// Run extremes logic for map and mapline
if (isXAxis) {
dataMin = pick(this.dataMin, Number.MAX_VALUE);
dataMax = pick(this.dataMax, -Number.MAX_VALUE);
each(this.series, function(series, i) {
if (series.useMapGeometry) {
dataMin = Math.min(dataMin, pick(series.minX, dataMin));
dataMax = Math.max(dataMax, pick(series.maxX, dataMax));
series.xData = xData[i]; // Reset xData array
useMapGeometry = true;
}
});
if (useMapGeometry) {
this.dataMin = dataMin;
this.dataMax = dataMax;
}
}
});
 
/**
* Override axis translation to make sure the aspect ratio is always kept
*/
wrap(Axis.prototype, 'setAxisTranslation', function(proceed) {
var chart = this.chart,
mapRatio,
plotRatio = chart.plotWidth / chart.plotHeight,
adjustedAxisLength,
xAxis = chart.xAxis[0],
padAxis,
fixTo,
fixDiff,
preserveAspectRatio;
 
 
// Run the parent method
proceed.call(this);
 
// Check for map-like series
if (this.coll === 'yAxis' && xAxis.transA !== undefined) {
each(this.series, function(series) {
if (series.preserveAspectRatio) {
preserveAspectRatio = true;
}
});
}
 
// On Y axis, handle both
if (preserveAspectRatio) {
 
// Use the same translation for both axes
this.transA = xAxis.transA = Math.min(this.transA, xAxis.transA);
 
mapRatio = plotRatio / ((xAxis.max - xAxis.min) / (this.max - this.min));
 
// What axis to pad to put the map in the middle
padAxis = mapRatio < 1 ? this : xAxis;
 
// Pad it
adjustedAxisLength = (padAxis.max - padAxis.min) * padAxis.transA;
padAxis.pixelPadding = padAxis.len - adjustedAxisLength;
padAxis.minPixelPadding = padAxis.pixelPadding / 2;
 
fixTo = padAxis.fixTo;
if (fixTo) {
fixDiff = fixTo[1] - padAxis.toValue(fixTo[0], true);
fixDiff *= padAxis.transA;
if (Math.abs(fixDiff) > padAxis.minPixelPadding || (padAxis.min === padAxis.dataMin && padAxis.max === padAxis.dataMax)) { // zooming out again, keep within restricted area
fixDiff = 0;
}
padAxis.minPixelPadding -= fixDiff;
}
}
});
 
/**
* Override Axis.render in order to delete the fixTo prop
*/
wrap(Axis.prototype, 'render', function(proceed) {
proceed.call(this);
this.fixTo = null;
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Axis = H.Axis,
Chart = H.Chart,
color = H.color,
ColorAxis,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
Legend = H.Legend,
LegendSymbolMixin = H.LegendSymbolMixin,
noop = H.noop,
merge = H.merge,
pick = H.pick,
wrap = H.wrap;
 
/**
* The ColorAxis object for inclusion in gradient legends
*/
ColorAxis = H.ColorAxis = function() {
this.init.apply(this, arguments);
};
extend(ColorAxis.prototype, Axis.prototype);
extend(ColorAxis.prototype, {
/**
* @extends {xAxis}
* @optionparent colorAxis
*/
defaultColorAxisOptions: {
 
/**
*/
lineWidth: 0,
 
/**
* Padding of the min value relative to the length of the axis. A
* padding of 0.05 will make a 100px axis 5px longer.
*
* @type {Number}
* @product highmaps
*/
minPadding: 0,
 
/**
* Padding of the max value relative to the length of the axis. A
* padding of 0.05 will make a 100px axis 5px longer.
*
* @type {Number}
* @product highmaps
*/
maxPadding: 0,
 
/**
* The width of the grid lines extending from the axis across the
* gradient of a scalar color axis.
*
* @type {Number}
* @sample {highmaps} maps/coloraxis/gridlines/ Grid lines demonstrated
* @default 1
* @product highmaps
*/
gridLineWidth: 1,
 
/**
* If [tickInterval](#colorAxis.tickInterval) is `null` this option
* sets the approximate pixel interval of the tick marks.
*
* @type {Number}
* @default 72
* @product highmaps
*/
tickPixelInterval: 72,
 
/**
* Whether to force the axis to start on a tick. Use this option with
* the `maxPadding` option to control the axis start.
*
* @type {Boolean}
* @default true
* @product highmaps
*/
startOnTick: true,
 
/**
* Whether to force the axis to end on a tick. Use this option with
* the [maxPadding](#colorAxis.maxPadding) option to control the axis
* end.
*
* @type {Boolean}
* @default true
* @product highmaps
*/
endOnTick: true,
 
/**
*/
offset: 0,
 
/**
* The triangular marker on a scalar color axis that points to the
* value of the hovered area. To disable the marker, set `marker:
* null`.
*
* @type {Object}
* @sample {highmaps} maps/coloraxis/marker/ Black marker
* @product highmaps
*/
marker: {
 
/**
* Animation for the marker as it moves between values. Set to `false`
* to disable animation. Defaults to `{ duration: 50 }`.
*
* @type {Object|Boolean}
* @product highmaps
*/
animation: {
 
/**
*/
duration: 50
},
 
/**
*/
width: 0.01
 
},
 
/**
* The axis labels show the number for each tick.
*
* For more live examples on label options, see [xAxis.labels in the
* Highcharts API.](/highcharts#xAxis.labels)
*
* @type {Object}
* @extends xAxis.labels
* @product highmaps
*/
labels: {
 
/**
* How to handle overflowing labels on horizontal axis. Can be undefined
* or "justify". If "justify", labels will not render outside the
* plot area. If there is room to move it, it will be aligned to
* the edge, else it will be removed.
*
* @validvalue [null, "justify"]
* @type {String}
* @default justify
* @product highmaps
*/
overflow: 'justify',
 
/**
*/
rotation: 0
},
 
/**
* The color to represent the minimum of the color axis. Unless [dataClasses](#colorAxis.
* dataClasses) or [stops](#colorAxis.stops) are set, the gradient
* starts at this value.
*
* If dataClasses are set, the color is based on minColor and maxColor
* unless a color is set for each data class, or the [dataClassColor](#colorAxis.
* dataClassColor) is set.
*
* @type {Color}
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor/ Min and max colors on scalar (gradient) axis
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/ On data classes
* @default #e6ebf5
* @product highmaps
*/
minColor: '#e6ebf5',
 
/**
* The color to represent the maximum of the color axis. Unless [dataClasses](#colorAxis.
* dataClasses) or [stops](#colorAxis.stops) are set, the gradient
* ends at this value.
*
* If dataClasses are set, the color is based on minColor and maxColor
* unless a color is set for each data class, or the [dataClassColor](#colorAxis.
* dataClassColor) is set.
*
* @type {Color}
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor/ Min and max colors on scalar (gradient) axis
* @sample {highmaps} maps/coloraxis/mincolor-maxcolor-dataclasses/ On data classes
* @default #003399
* @product highmaps
*/
maxColor: '#003399',
 
/**
*/
tickLength: 5,
 
/**
* Whether to display the colorAxis in the legend.
*
* @type {Boolean}
* @see [heatmap.showInLegend](#series<heatmap>.showInLegend)
* @default true
* @since 4.2.7
* @product highmaps
*/
showInLegend: true
},
 
// Properties to preserve after destroy, for Axis.update (#5881, #6025)
keepProps: [
'legendGroup',
'legendItemHeight',
'legendItemWidth',
'legendItem',
'legendSymbol'
].concat(Axis.prototype.keepProps),
 
/**
* Initialize the color axis
*/
init: function(chart, userOptions) {
var horiz = chart.options.legend.layout !== 'vertical',
options;
 
this.coll = 'colorAxis';
 
// Build the options
options = merge(this.defaultColorAxisOptions, {
side: horiz ? 2 : 1,
reversed: !horiz
}, userOptions, {
opposite: !horiz,
showEmpty: false,
title: null
});
 
Axis.prototype.init.call(this, chart, options);
 
// Base init() pushes it to the xAxis array, now pop it again
// chart[this.isXAxis ? 'xAxis' : 'yAxis'].pop();
 
// Prepare data classes
if (userOptions.dataClasses) {
this.initDataClasses(userOptions);
}
this.initStops();
 
// Override original axis properties
this.horiz = horiz;
this.zoomEnabled = false;
 
// Add default values
this.defaultLegendLength = 200;
},
 
initDataClasses: function(userOptions) {
var chart = this.chart,
dataClasses,
colorCounter = 0,
colorCount = chart.options.chart.colorCount,
options = this.options,
len = userOptions.dataClasses.length;
this.dataClasses = dataClasses = [];
this.legendItems = [];
 
each(userOptions.dataClasses, function(dataClass, i) {
var colors;
 
dataClass = merge(dataClass);
dataClasses.push(dataClass);
 
 
if (options.dataClassColor === 'category') {
 
dataClass.colorIndex = colorCounter;
 
// increase and loop back to zero
colorCounter++;
if (colorCounter === colorCount) {
colorCounter = 0;
}
} else {
dataClass.color = color(options.minColor).tweenTo(
color(options.maxColor),
len < 2 ? 0.5 : i / (len - 1) // #3219
);
}
});
},
 
/**
* Override so that ticks are not added in data class axes (#6914)
*/
setTickPositions: function() {
if (!this.dataClasses) {
return Axis.prototype.setTickPositions.call(this);
}
},
 
 
initStops: function() {
this.stops = this.options.stops || [
[0, this.options.minColor],
[1, this.options.maxColor]
];
each(this.stops, function(stop) {
stop.color = color(stop[1]);
});
},
 
/**
* Extend the setOptions method to process extreme colors and color
* stops.
*/
setOptions: function(userOptions) {
Axis.prototype.setOptions.call(this, userOptions);
 
this.options.crosshair = this.options.marker;
},
 
setAxisSize: function() {
var symbol = this.legendSymbol,
chart = this.chart,
legendOptions = chart.options.legend || {},
x,
y,
width,
height;
 
if (symbol) {
this.left = x = symbol.attr('x');
this.top = y = symbol.attr('y');
this.width = width = symbol.attr('width');
this.height = height = symbol.attr('height');
this.right = chart.chartWidth - x - width;
this.bottom = chart.chartHeight - y - height;
 
this.len = this.horiz ? width : height;
this.pos = this.horiz ? x : y;
} else {
// Fake length for disabled legend to avoid tick issues
// and such (#5205)
this.len = (
this.horiz ?
legendOptions.symbolWidth :
legendOptions.symbolHeight
) || this.defaultLegendLength;
}
},
 
normalizedValue: function(value) {
if (this.isLog) {
value = this.val2lin(value);
}
return 1 - ((this.max - value) / ((this.max - this.min) || 1));
},
 
/**
* Translate from a value to a color
*/
toColor: function(value, point) {
var pos,
stops = this.stops,
from,
to,
color,
dataClasses = this.dataClasses,
dataClass,
i;
 
if (dataClasses) {
i = dataClasses.length;
while (i--) {
dataClass = dataClasses[i];
from = dataClass.from;
to = dataClass.to;
if (
(from === undefined || value >= from) &&
(to === undefined || value <= to)
) {
 
if (point) {
point.dataClass = i;
point.colorIndex = dataClass.colorIndex;
}
break;
}
}
 
} else {
 
pos = this.normalizedValue(value);
i = stops.length;
while (i--) {
if (pos > stops[i][0]) {
break;
}
}
from = stops[i] || stops[i + 1];
to = stops[i + 1] || from;
 
// The position within the gradient
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
 
color = from.color.tweenTo(
to.color,
pos
);
}
return color;
},
 
/**
* Override the getOffset method to add the whole axis groups inside
* the legend.
*/
getOffset: function() {
var group = this.legendGroup,
sideOffset = this.chart.axisOffset[this.side];
 
if (group) {
 
// Hook for the getOffset method to add groups to this parent group
this.axisParent = group;
 
// Call the base
Axis.prototype.getOffset.call(this);
 
// First time only
if (!this.added) {
 
this.added = true;
 
this.labelLeft = 0;
this.labelRight = this.width;
}
// Reset it to avoid color axis reserving space
this.chart.axisOffset[this.side] = sideOffset;
}
},
 
/**
* Create the color gradient
*/
setLegendColor: function() {
var grad,
horiz = this.horiz,
reversed = this.reversed,
one = reversed ? 1 : 0,
zero = reversed ? 0 : 1;
 
grad = horiz ? [one, 0, zero, 0] : [0, zero, 0, one]; // #3190
this.legendColor = {
linearGradient: {
x1: grad[0],
y1: grad[1],
x2: grad[2],
y2: grad[3]
},
stops: this.stops
};
},
 
/**
* The color axis appears inside the legend and has its own legend symbol
*/
drawLegendSymbol: function(legend, item) {
var padding = legend.padding,
legendOptions = legend.options,
horiz = this.horiz,
width = pick(
legendOptions.symbolWidth,
horiz ? this.defaultLegendLength : 12
),
height = pick(
legendOptions.symbolHeight,
horiz ? 12 : this.defaultLegendLength
),
labelPadding = pick(legendOptions.labelPadding, horiz ? 16 : 30),
itemDistance = pick(legendOptions.itemDistance, 10);
 
this.setLegendColor();
 
// Create the gradient
item.legendSymbol = this.chart.renderer.rect(
0,
legend.baseline - 11,
width,
height
).attr({
zIndex: 1
}).add(item.legendGroup);
 
// Set how much space this legend item takes up
this.legendItemWidth = width + padding +
(horiz ? itemDistance : labelPadding);
this.legendItemHeight = height + padding + (horiz ? labelPadding : 0);
},
/**
* Fool the legend
*/
setState: noop,
visible: true,
setVisible: noop,
getSeriesExtremes: function() {
var series = this.series,
i = series.length;
this.dataMin = Infinity;
this.dataMax = -Infinity;
while (i--) {
if (series[i].valueMin !== undefined) {
this.dataMin = Math.min(this.dataMin, series[i].valueMin);
this.dataMax = Math.max(this.dataMax, series[i].valueMax);
}
}
},
drawCrosshair: function(e, point) {
var plotX = point && point.plotX,
plotY = point && point.plotY,
crossPos,
axisPos = this.pos,
axisLen = this.len;
 
if (point) {
crossPos = this.toPixels(point[point.series.colorKey]);
if (crossPos < axisPos) {
crossPos = axisPos - 2;
} else if (crossPos > axisPos + axisLen) {
crossPos = axisPos + axisLen + 2;
}
 
point.plotX = crossPos;
point.plotY = this.len - crossPos;
Axis.prototype.drawCrosshair.call(this, e, point);
point.plotX = plotX;
point.plotY = plotY;
 
if (this.cross) {
this.cross
.addClass('highcharts-coloraxis-marker')
.add(this.legendGroup);
 
 
 
}
}
},
getPlotLinePath: function(a, b, c, d, pos) {
// crosshairs only
return isNumber(pos) ? // pos can be 0 (#3969)
(
this.horiz ? [
'M',
pos - 4, this.top - 6,
'L',
pos + 4, this.top - 6,
pos, this.top,
'Z'
] : [
'M',
this.left, pos,
'L',
this.left - 6, pos + 6,
this.left - 6, pos - 6,
'Z'
]
) :
Axis.prototype.getPlotLinePath.call(this, a, b, c, d);
},
 
update: function(newOptions, redraw) {
var chart = this.chart,
legend = chart.legend;
 
each(this.series, function(series) {
// Needed for Axis.update when choropleth colors change
series.isDirtyData = true;
});
 
// When updating data classes, destroy old items and make sure new ones
// are created (#3207)
if (newOptions.dataClasses && legend.allItems) {
each(legend.allItems, function(item) {
if (item.isDataClass && item.legendGroup) {
item.legendGroup.destroy();
}
});
chart.isDirtyLegend = true;
}
 
// Keep the options structure updated for export. Unlike xAxis and
// yAxis, the colorAxis is not an array. (#3207)
chart.options[this.coll] = merge(this.userOptions, newOptions);
 
Axis.prototype.update.call(this, newOptions, redraw);
if (this.legendItem) {
this.setLegendColor();
legend.colorizeItem(this, true);
}
},
 
/**
* Extend basic axis remove by also removing the legend item.
*/
remove: function() {
if (this.legendItem) {
this.chart.legend.destroyItem(this);
}
Axis.prototype.remove.call(this);
},
 
/**
* Get the legend item symbols for data classes
*/
getDataClassLegendSymbols: function() {
var axis = this,
chart = this.chart,
legendItems = this.legendItems,
legendOptions = chart.options.legend,
valueDecimals = legendOptions.valueDecimals,
valueSuffix = legendOptions.valueSuffix || '',
name;
 
if (!legendItems.length) {
each(this.dataClasses, function(dataClass, i) {
var vis = true,
from = dataClass.from,
to = dataClass.to;
 
// Assemble the default name. This can be overridden
// by legend.options.labelFormatter
name = '';
if (from === undefined) {
name = '< ';
} else if (to === undefined) {
name = '> ';
}
if (from !== undefined) {
name += H.numberFormat(from, valueDecimals) + valueSuffix;
}
if (from !== undefined && to !== undefined) {
name += ' - ';
}
if (to !== undefined) {
name += H.numberFormat(to, valueDecimals) + valueSuffix;
}
// Add a mock object to the legend items
legendItems.push(extend({
chart: chart,
name: name,
options: {},
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
visible: true,
setState: noop,
isDataClass: true,
setVisible: function() {
vis = this.visible = !vis;
each(axis.series, function(series) {
each(series.points, function(point) {
if (point.dataClass === i) {
point.setVisible(vis);
}
});
});
 
chart.legend.colorizeItem(this, vis);
}
}, dataClass));
});
}
return legendItems;
},
name: '' // Prevents 'undefined' in legend in IE8
});
 
/**
* Handle animation of the color attributes directly
*/
each(['fill', 'stroke'], function(prop) {
H.Fx.prototype[prop + 'Setter'] = function() {
this.elem.attr(
prop,
color(this.start).tweenTo(
color(this.end),
this.pos
),
null,
true
);
};
});
 
/**
* Extend the chart getAxes method to also get the color axis
*/
wrap(Chart.prototype, 'getAxes', function(proceed) {
 
var options = this.options,
colorAxisOptions = options.colorAxis;
 
proceed.call(this);
 
this.colorAxis = [];
if (colorAxisOptions) {
new ColorAxis(this, colorAxisOptions); // eslint-disable-line no-new
}
});
 
 
/**
* Wrap the legend getAllItems method to add the color axis. This also removes
* the axis' own series to prevent them from showing up individually.
*/
wrap(Legend.prototype, 'getAllItems', function(proceed) {
var allItems = [],
colorAxis = this.chart.colorAxis[0];
 
if (colorAxis && colorAxis.options) {
if (colorAxis.options.showInLegend) {
// Data classes
if (colorAxis.options.dataClasses) {
allItems = allItems.concat(
colorAxis.getDataClassLegendSymbols()
);
// Gradient legend
} else {
// Add this axis on top
allItems.push(colorAxis);
}
}
 
// Don't add the color axis' series
each(colorAxis.series, function(series) {
series.options.showInLegend = false;
});
}
 
return allItems.concat(proceed.call(this));
});
 
wrap(Legend.prototype, 'colorizeItem', function(proceed, item, visible) {
proceed.call(this, item, visible);
if (visible && item.legendColor) {
item.legendSymbol.attr({
fill: item.legendColor
});
}
});
 
// Updates in the legend need to be reflected in the color axis (6888)
wrap(Legend.prototype, 'update', function(proceed) {
proceed.apply(this, [].slice.call(arguments, 1));
 
if (this.chart.colorAxis[0]) {
this.chart.colorAxis[0].update({}, arguments[2]);
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var defined = H.defined,
each = H.each,
noop = H.noop,
seriesTypes = H.seriesTypes;
 
/**
* Mixin for maps and heatmaps
*/
H.colorPointMixin = {
/**
* Color points have a value option that determines whether or not it is
* a null point
*/
isValid: function() {
return this.value !== null;
},
 
/**
* Set the visibility of a single point
*/
setVisible: function(vis) {
var point = this,
method = vis ? 'show' : 'hide';
 
// Show and hide associated elements
each(['graphic', 'dataLabel'], function(key) {
if (point[key]) {
point[key][method]();
}
});
},
setState: function(state) {
H.Point.prototype.setState.call(this, state);
if (this.graphic) {
this.graphic.attr({
zIndex: state === 'hover' ? 1 : 0
});
}
}
};
 
H.colorSeriesMixin = {
pointArrayMap: ['value'],
axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
optionalAxis: 'colorAxis',
trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
getSymbol: noop,
parallelArrays: ['x', 'y', 'value'],
colorKey: 'value',
 
 
 
/**
* In choropleth maps, the color is a result of the value, so this needs
* translation too
*/
translateColors: function() {
var series = this,
nullColor = this.options.nullColor,
colorAxis = this.colorAxis,
colorKey = this.colorKey;
 
each(this.data, function(point) {
var value = point[colorKey],
color;
 
color = point.options.color ||
(
point.isNull ?
nullColor :
(colorAxis && value !== undefined) ?
colorAxis.toColor(value, point) :
point.color || series.color
);
 
if (color) {
point.color = color;
}
});
},
 
/**
* Get the color attibutes to apply on the graphic
*/
colorAttribs: function(point) {
var ret = {};
if (defined(point.color)) {
ret[this.colorProp || 'fill'] = point.color;
}
return ret;
}
};
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Chart = H.Chart,
doc = H.doc,
each = H.each,
extend = H.extend,
merge = H.merge,
pick = H.pick,
wrap = H.wrap;
 
function stopEvent(e) {
if (e) {
if (e.preventDefault) {
e.preventDefault();
}
if (e.stopPropagation) {
e.stopPropagation();
}
e.cancelBubble = true;
}
}
 
/**
* The MapNavigation handles buttons for navigation in addition to mousewheel
* and doubleclick handlers for chart zooming.
* @param {Chart} chart The Chart instance.
*/
function MapNavigation(chart) {
this.init(chart);
}
 
/**
* Initiator function.
* @param {Chart} chart The Chart instance.
*/
MapNavigation.prototype.init = function(chart) {
this.chart = chart;
chart.mapNavButtons = [];
};
 
/**
* Update the map navigation with new options. Calling this is the same as
* calling `chart.update({ mapNavigation: {} })`.
* @param {Object} options New options for the map navigation.
*/
MapNavigation.prototype.update = function(options) {
var chart = this.chart,
o = chart.options.mapNavigation,
buttonOptions,
attr,
states,
hoverStates,
selectStates,
outerHandler = function(e) {
this.handler.call(chart, e);
stopEvent(e); // Stop default click event (#4444)
},
mapNavButtons = chart.mapNavButtons;
 
// Merge in new options in case of update, and register back to chart
// options.
if (options) {
o = chart.options.mapNavigation =
merge(chart.options.mapNavigation, options);
}
 
// Destroy buttons in case of dynamic update
while (mapNavButtons.length) {
mapNavButtons.pop().destroy();
}
 
if (pick(o.enableButtons, o.enabled) && !chart.renderer.forExport) {
 
H.objectEach(o.buttons, function(button, n) {
buttonOptions = merge(o.buttonOptions, button);
 
 
 
button = chart.renderer.button(
buttonOptions.text,
0,
0,
outerHandler,
attr,
hoverStates,
selectStates,
0,
n === 'zoomIn' ? 'topbutton' : 'bottombutton'
)
.addClass('highcharts-map-navigation')
.attr({
width: buttonOptions.width,
height: buttonOptions.height,
title: chart.options.lang[n],
padding: buttonOptions.padding,
zIndex: 5
})
.add();
button.handler = buttonOptions.onclick;
button.align(
extend(buttonOptions, {
width: button.width,
height: 2 * button.height
}),
null,
buttonOptions.alignTo
);
// Stop double click event (#4444)
addEvent(button.element, 'dblclick', stopEvent);
 
mapNavButtons.push(button);
 
});
}
 
this.updateEvents(o);
};
 
/**
* Update events, called internally from the update function. Add new event
* handlers, or unbinds events if disabled.
* @param {Object} options Options for map navigation.
*/
MapNavigation.prototype.updateEvents = function(options) {
var chart = this.chart;
 
// Add the double click event
if (
pick(options.enableDoubleClickZoom, options.enabled) ||
options.enableDoubleClickZoomTo
) {
this.unbindDblClick = this.unbindDblClick || addEvent(
chart.container,
'dblclick',
function(e) {
chart.pointer.onContainerDblClick(e);
}
);
} else if (this.unbindDblClick) {
// Unbind and set unbinder to undefined
this.unbindDblClick = this.unbindDblClick();
}
 
// Add the mousewheel event
if (pick(options.enableMouseWheelZoom, options.enabled)) {
this.unbindMouseWheel = this.unbindMouseWheel || addEvent(
chart.container,
doc.onmousewheel === undefined ? 'DOMMouseScroll' : 'mousewheel',
function(e) {
chart.pointer.onContainerMouseWheel(e);
// Issue #5011, returning false from non-jQuery event does
// not prevent default
stopEvent(e);
return false;
}
);
} else if (this.unbindMouseWheel) {
// Unbind and set unbinder to undefined
this.unbindMouseWheel = this.unbindMouseWheel();
}
 
};
 
// Add events to the Chart object itself
extend(Chart.prototype, /** @lends Chart.prototype */ {
 
/**
* Fit an inner box to an outer. If the inner box overflows left or right,
* align it to the sides of the outer. If it overflows both sides, fit it
* within the outer. This is a pattern that occurs more places in
* Highcharts, perhaps it should be elevated to a common utility function.
*
* @private
*/
fitToBox: function(inner, outer) {
each([
['x', 'width'],
['y', 'height']
], function(dim) {
var pos = dim[0],
size = dim[1];
 
if (inner[pos] + inner[size] > outer[pos] + outer[size]) { // right overflow
if (inner[size] > outer[size]) { // the general size is greater, fit fully to outer
inner[size] = outer[size];
inner[pos] = outer[pos];
} else { // align right
inner[pos] = outer[pos] + outer[size] - inner[size];
}
}
if (inner[size] > outer[size]) {
inner[size] = outer[size];
}
if (inner[pos] < outer[pos]) {
inner[pos] = outer[pos];
}
});
 
 
return inner;
},
 
/**
* Highmaps only. Zoom in or out of the map. See also {@link Point#zoomTo}.
* See {@link Chart#fromLatLonToPoint} for how to get the `centerX` and
* `centerY` parameters for a geographic location.
*
* @param {Number} [howMuch]
* How much to zoom the map. Values less than 1 zooms in. 0.5 zooms
* in to half the current view. 2 zooms to twice the current view.
* If omitted, the zoom is reset.
* @param {Number} [centerX]
* The X axis position to center around if available space.
* @param {Number} [centerY]
* The Y axis position to center around if available space.
* @param {Number} [mouseX]
* Fix the zoom to this position if possible. This is used for
* example in mousewheel events, where the area under the mouse
* should be fixed as we zoom in.
* @param {Number} [mouseY]
* Fix the zoom to this position if possible.
*/
mapZoom: function(howMuch, centerXArg, centerYArg, mouseX, mouseY) {
/*if (this.isMapZooming) {
this.mapZoomQueue = arguments;
return;
}*/
 
var chart = this,
xAxis = chart.xAxis[0],
xRange = xAxis.max - xAxis.min,
centerX = pick(centerXArg, xAxis.min + xRange / 2),
newXRange = xRange * howMuch,
yAxis = chart.yAxis[0],
yRange = yAxis.max - yAxis.min,
centerY = pick(centerYArg, yAxis.min + yRange / 2),
newYRange = yRange * howMuch,
fixToX = mouseX ? ((mouseX - xAxis.pos) / xAxis.len) : 0.5,
fixToY = mouseY ? ((mouseY - yAxis.pos) / yAxis.len) : 0.5,
newXMin = centerX - newXRange * fixToX,
newYMin = centerY - newYRange * fixToY,
newExt = chart.fitToBox({
x: newXMin,
y: newYMin,
width: newXRange,
height: newYRange
}, {
x: xAxis.dataMin,
y: yAxis.dataMin,
width: xAxis.dataMax - xAxis.dataMin,
height: yAxis.dataMax - yAxis.dataMin
}),
zoomOut = newExt.x <= xAxis.dataMin &&
newExt.width >= xAxis.dataMax - xAxis.dataMin &&
newExt.y <= yAxis.dataMin &&
newExt.height >= yAxis.dataMax - yAxis.dataMin;
 
// When mousewheel zooming, fix the point under the mouse
if (mouseX) {
xAxis.fixTo = [mouseX - xAxis.pos, centerXArg];
}
if (mouseY) {
yAxis.fixTo = [mouseY - yAxis.pos, centerYArg];
}
 
// Zoom
if (howMuch !== undefined && !zoomOut) {
xAxis.setExtremes(newExt.x, newExt.x + newExt.width, false);
yAxis.setExtremes(newExt.y, newExt.y + newExt.height, false);
 
// Reset zoom
} else {
xAxis.setExtremes(undefined, undefined, false);
yAxis.setExtremes(undefined, undefined, false);
}
 
// Prevent zooming until this one is finished animating
/*chart.holdMapZoom = true;
setTimeout(function () {
chart.holdMapZoom = false;
}, 200);*/
/*delay = animation ? animation.duration || 500 : 0;
if (delay) {
chart.isMapZooming = true;
setTimeout(function () {
chart.isMapZooming = false;
if (chart.mapZoomQueue) {
chart.mapZoom.apply(chart, chart.mapZoomQueue);
}
chart.mapZoomQueue = null;
}, delay);
}*/
 
chart.redraw();
}
});
 
/**
* Extend the Chart.render method to add zooming and panning
*/
wrap(Chart.prototype, 'render', function(proceed) {
// Render the plus and minus buttons. Doing this before the shapes makes getBBox much quicker, at least in Chrome.
this.mapNavigation = new MapNavigation(this);
this.mapNavigation.update();
 
proceed.call(this);
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var extend = H.extend,
pick = H.pick,
Pointer = H.Pointer,
wrap = H.wrap;
 
// Extend the Pointer
extend(Pointer.prototype, {
 
/**
* The event handler for the doubleclick event
*/
onContainerDblClick: function(e) {
var chart = this.chart;
 
e = this.normalize(e);
 
if (chart.options.mapNavigation.enableDoubleClickZoomTo) {
if (chart.pointer.inClass(e.target, 'highcharts-tracker') && chart.hoverPoint) {
chart.hoverPoint.zoomTo();
}
} else if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
chart.mapZoom(
0.5,
chart.xAxis[0].toValue(e.chartX),
chart.yAxis[0].toValue(e.chartY),
e.chartX,
e.chartY
);
}
},
 
/**
* The event handler for the mouse scroll event
*/
onContainerMouseWheel: function(e) {
var chart = this.chart,
delta;
 
e = this.normalize(e);
 
// Firefox uses e.detail, WebKit and IE uses wheelDelta
delta = e.detail || -(e.wheelDelta / 120);
if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
chart.mapZoom(
Math.pow(chart.options.mapNavigation.mouseWheelSensitivity, delta),
chart.xAxis[0].toValue(e.chartX),
chart.yAxis[0].toValue(e.chartY),
e.chartX,
e.chartY
);
}
}
});
 
// The pinchType is inferred from mapNavigation options.
wrap(Pointer.prototype, 'zoomOption', function(proceed) {
 
 
var mapNavigation = this.chart.options.mapNavigation;
 
// Pinch status
if (pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
this.chart.options.chart.pinchType = 'xy';
}
 
proceed.apply(this, [].slice.call(arguments, 1));
 
});
 
// Extend the pinchTranslate method to preserve fixed ratio when zooming
wrap(Pointer.prototype, 'pinchTranslate', function(proceed, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {
var xBigger;
proceed.call(this, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
 
// Keep ratio
if (this.chart.options.chart.type === 'map' && this.hasZoom) {
xBigger = transform.scaleX > transform.scaleY;
this.pinchTranslateDirection(!xBigger,
pinchDown,
touches,
transform,
selectionMarker,
clip,
lastValidTouch,
xBigger ? transform.scaleX : transform.scaleY
);
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var colorPointMixin = H.colorPointMixin,
colorSeriesMixin = H.colorSeriesMixin,
doc = H.doc,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
LegendSymbolMixin = H.LegendSymbolMixin,
map = H.map,
merge = H.merge,
noop = H.noop,
pick = H.pick,
isArray = H.isArray,
Point = H.Point,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes,
splat = H.splat;
 
// The vector-effect attribute is not supported in IE <= 11 (at least), so we need
// diffent logic (#3218)
var supportsVectorEffect = doc.documentElement.style.vectorEffect !== undefined;
 
 
// Add the map series type
/**
* @extends {plotOptions.scatter}
* @optionparent plotOptions.map
*/
seriesType('map', 'scatter', {
 
/**
*/
allAreas: true,
 
 
/**
*/
animation: false, // makes the complex shapes slow
 
/**
* The color to apply to null points.
*
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
* style/style-by-css), the null point fill is set in the `.highcharts-
* null-point` class.
*
* @type {Color}
* @sample {highmaps} maps/demo/all-areas-as-null/ Null color
* @default #f7f7f7
* @product highmaps
*/
nullColor: '#f7f7f7',
 
/**
*/
borderColor: '#cccccc',
 
/**
*/
borderWidth: 1,
 
/**
*/
marker: null,
 
/**
*/
stickyTracking: false,
 
/**
*/
joinBy: 'hc-key',
 
/**
*/
dataLabels: {
 
/**
*/
formatter: function() { // #2945
return this.point.value;
},
 
/**
*/
inside: true, // for the color
 
/**
*/
verticalAlign: 'middle',
 
/**
*/
crop: false,
 
/**
*/
overflow: false,
 
/**
*/
padding: 0
},
 
/**
*/
turboThreshold: 0,
 
/**
*/
tooltip: {
 
/**
*/
followPointer: true,
 
/**
*/
pointFormat: '{point.name}: {point.value}<br/>'
},
 
/**
*/
states: {
 
/**
*/
normal: {
 
/**
*/
animation: true
},
 
/**
*/
hover: {
 
/**
*/
brightness: 0.2,
 
/**
*/
halo: null
},
 
/**
*/
select: {
 
/**
*/
color: '#cccccc'
}
}
 
// Prototype members
}, merge(colorSeriesMixin, {
type: 'map',
getExtremesFromAll: true,
useMapGeometry: true, // get axis extremes from paths, not values
forceDL: true,
searchPoint: noop,
directTouch: true, // When tooltip is not shared, this series (and derivatives) requires direct touch/hover. KD-tree does not apply.
preserveAspectRatio: true, // X axis and Y axis must have same translation slope
pointArrayMap: ['value'],
/**
* Get the bounding box of all paths in the map combined.
*/
getBox: function(paths) {
var MAX_VALUE = Number.MAX_VALUE,
maxX = -MAX_VALUE,
minX = MAX_VALUE,
maxY = -MAX_VALUE,
minY = MAX_VALUE,
minRange = MAX_VALUE,
xAxis = this.xAxis,
yAxis = this.yAxis,
hasBox;
 
// Find the bounding box
each(paths || [], function(point) {
 
if (point.path) {
if (typeof point.path === 'string') {
point.path = H.splitPath(point.path);
}
 
var path = point.path || [],
i = path.length,
even = false, // while loop reads from the end
pointMaxX = -MAX_VALUE,
pointMinX = MAX_VALUE,
pointMaxY = -MAX_VALUE,
pointMinY = MAX_VALUE,
properties = point.properties;
 
// The first time a map point is used, analyze its box
if (!point._foundBox) {
while (i--) {
if (isNumber(path[i])) {
if (even) { // even = x
pointMaxX = Math.max(pointMaxX, path[i]);
pointMinX = Math.min(pointMinX, path[i]);
} else { // odd = Y
pointMaxY = Math.max(pointMaxY, path[i]);
pointMinY = Math.min(pointMinY, path[i]);
}
even = !even;
}
}
// Cache point bounding box for use to position data labels,
// bubbles etc
point._midX = pointMinX + (pointMaxX - pointMinX) * pick(
point.middleX,
properties && properties['hc-middle-x'],
0.5
);
point._midY = pointMinY + (pointMaxY - pointMinY) * pick(
point.middleY,
properties && properties['hc-middle-y'],
0.5
);
point._maxX = pointMaxX;
point._minX = pointMinX;
point._maxY = pointMaxY;
point._minY = pointMinY;
point.labelrank = pick(point.labelrank, (pointMaxX - pointMinX) * (pointMaxY - pointMinY));
point._foundBox = true;
}
 
maxX = Math.max(maxX, point._maxX);
minX = Math.min(minX, point._minX);
maxY = Math.max(maxY, point._maxY);
minY = Math.min(minY, point._minY);
minRange = Math.min(point._maxX - point._minX, point._maxY - point._minY, minRange);
hasBox = true;
}
});
 
// Set the box for the whole series
if (hasBox) {
this.minY = Math.min(minY, pick(this.minY, MAX_VALUE));
this.maxY = Math.max(maxY, pick(this.maxY, -MAX_VALUE));
this.minX = Math.min(minX, pick(this.minX, MAX_VALUE));
this.maxX = Math.max(maxX, pick(this.maxX, -MAX_VALUE));
 
// If no minRange option is set, set the default minimum zooming range to 5 times the
// size of the smallest element
if (xAxis && xAxis.options.minRange === undefined) {
xAxis.minRange = Math.min(5 * minRange, (this.maxX - this.minX) / 5, xAxis.minRange || MAX_VALUE);
}
if (yAxis && yAxis.options.minRange === undefined) {
yAxis.minRange = Math.min(5 * minRange, (this.maxY - this.minY) / 5, yAxis.minRange || MAX_VALUE);
}
}
},
 
getExtremes: function() {
// Get the actual value extremes for colors
Series.prototype.getExtremes.call(this, this.valueData);
 
// Recalculate box on updated data
if (this.chart.hasRendered && this.isDirtyData) {
this.getBox(this.options.data);
}
 
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Extremes for the mock Y axis
this.dataMin = this.minY;
this.dataMax = this.maxY;
},
 
/**
* Translate the path so that it automatically fits into the plot area box
* @param {Object} path
*/
translatePath: function(path) {
 
var series = this,
even = false, // while loop reads from the end
xAxis = series.xAxis,
yAxis = series.yAxis,
xMin = xAxis.min,
xTransA = xAxis.transA,
xMinPixelPadding = xAxis.minPixelPadding,
yMin = yAxis.min,
yTransA = yAxis.transA,
yMinPixelPadding = yAxis.minPixelPadding,
i,
ret = []; // Preserve the original
 
// Do the translation
if (path) {
i = path.length;
while (i--) {
if (isNumber(path[i])) {
ret[i] = even ?
(path[i] - xMin) * xTransA + xMinPixelPadding :
(path[i] - yMin) * yTransA + yMinPixelPadding;
even = !even;
} else {
ret[i] = path[i];
}
}
}
 
return ret;
},
 
/**
* Extend setData to join in mapData. If the allAreas option is true, all areas
* from the mapData are used, and those that don't correspond to a data value
* are given null values.
*/
setData: function(data, redraw, animation, updatePoints) {
var options = this.options,
chartOptions = this.chart.options.chart,
globalMapData = chartOptions && chartOptions.map,
mapData = options.mapData,
joinBy = options.joinBy,
joinByNull = joinBy === null,
pointArrayMap = options.keys || this.pointArrayMap,
dataUsed = [],
mapMap = {},
mapPoint,
mapTransforms = this.chart.mapTransforms,
props,
i;
 
// Collect mapData from chart options if not defined on series
if (!mapData && globalMapData) {
mapData = typeof globalMapData === 'string' ? H.maps[globalMapData] : globalMapData;
}
 
if (joinByNull) {
joinBy = '_i';
}
joinBy = this.joinBy = splat(joinBy);
if (!joinBy[1]) {
joinBy[1] = joinBy[0];
}
 
// Pick up numeric values, add index
// Convert Array point definitions to objects using pointArrayMap
if (data) {
each(data, function(val, i) {
var ix = 0;
if (isNumber(val)) {
data[i] = {
value: val
};
} else if (isArray(val)) {
data[i] = {};
// Automatically copy first item to hc-key if there is an extra leading string
if (!options.keys && val.length > pointArrayMap.length && typeof val[0] === 'string') {
data[i]['hc-key'] = val[0];
++ix;
}
// Run through pointArrayMap and what's left of the point data array in parallel, copying over the values
for (var j = 0; j < pointArrayMap.length; ++j, ++ix) {
if (pointArrayMap[j]) {
data[i][pointArrayMap[j]] = val[ix];
}
}
}
if (joinByNull) {
data[i]._i = i;
}
});
}
 
this.getBox(data);
 
// Pick up transform definitions for chart
this.chart.mapTransforms = mapTransforms = chartOptions && chartOptions.mapTransforms || mapData && mapData['hc-transform'] || mapTransforms;
 
// Cache cos/sin of transform rotation angle
if (mapTransforms) {
H.objectEach(mapTransforms, function(transform) {
if (transform.rotation) {
transform.cosAngle = Math.cos(transform.rotation);
transform.sinAngle = Math.sin(transform.rotation);
}
});
}
 
if (mapData) {
if (mapData.type === 'FeatureCollection') {
this.mapTitle = mapData.title;
mapData = H.geojson(mapData, this.type, this);
}
 
this.mapData = mapData;
this.mapMap = {};
 
for (i = 0; i < mapData.length; i++) {
mapPoint = mapData[i];
props = mapPoint.properties;
 
mapPoint._i = i;
// Copy the property over to root for faster access
if (joinBy[0] && props && props[joinBy[0]]) {
mapPoint[joinBy[0]] = props[joinBy[0]];
}
mapMap[mapPoint[joinBy[0]]] = mapPoint;
}
this.mapMap = mapMap;
 
// Registered the point codes that actually hold data
if (data && joinBy[1]) {
each(data, function(point) {
if (mapMap[point[joinBy[1]]]) {
dataUsed.push(mapMap[point[joinBy[1]]]);
}
});
}
 
if (options.allAreas) {
this.getBox(mapData);
data = data || [];
 
// Registered the point codes that actually hold data
if (joinBy[1]) {
each(data, function(point) {
dataUsed.push(point[joinBy[1]]);
});
}
 
// Add those map points that don't correspond to data, which will be drawn as null points
dataUsed = '|' + map(dataUsed, function(point) {
return point && point[joinBy[0]];
}).join('|') + '|'; // String search is faster than array.indexOf
 
each(mapData, function(mapPoint) {
if (!joinBy[0] || dataUsed.indexOf('|' + mapPoint[joinBy[0]] + '|') === -1) {
data.push(merge(mapPoint, {
value: null
}));
updatePoints = false; // #5050 - adding all areas causes the update optimization of setData to kick in, even though the point order has changed
}
});
} else {
this.getBox(dataUsed); // Issue #4784
}
}
Series.prototype.setData.call(this, data, redraw, animation, updatePoints);
},
 
 
/**
* No graph for the map series
*/
drawGraph: noop,
 
/**
* We need the points' bounding boxes in order to draw the data labels, so
* we skip it now and call it from drawPoints instead.
*/
drawDataLabels: noop,
 
/**
* Allow a quick redraw by just translating the area group. Used for zooming and panning
* in capable browsers.
*/
doFullTranslate: function() {
return this.isDirtyData || this.chart.isResizing || this.chart.renderer.isVML || !this.baseTrans;
},
 
/**
* Add the path option for data points. Find the max value for color calculation.
*/
translate: function() {
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
doFullTranslate = series.doFullTranslate();
 
series.generatePoints();
 
each(series.data, function(point) {
 
// Record the middle point (loosely based on centroid), determined
// by the middleX and middleY options.
point.plotX = xAxis.toPixels(point._midX, true);
point.plotY = yAxis.toPixels(point._midY, true);
 
if (doFullTranslate) {
 
point.shapeType = 'path';
point.shapeArgs = {
d: series.translatePath(point.path)
};
}
});
 
series.translateColors();
},
 
/**
* Get presentational attributes. In the maps series this runs in both
* styled and non-styled mode, because colors hold data when a colorAxis
* is used.
*/
pointAttribs: function(point, state) {
var attr;
 
attr = this.colorAttribs(point);
 
 
// If vector-effect is not supported, we set the stroke-width on the group element
// and let all point graphics inherit. That way we don't have to iterate over all
// points to update the stroke-width on zooming. TODO: Check unstyled
if (supportsVectorEffect) {
attr['vector-effect'] = 'non-scaling-stroke';
} else {
attr['stroke-width'] = 'inherit';
}
 
return attr;
},
 
/**
* Use the drawPoints method of column, that is able to handle simple shapeArgs.
* Extend it by assigning the tooltip position.
*/
drawPoints: function() {
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
group = series.group,
chart = series.chart,
renderer = chart.renderer,
scaleX,
scaleY,
translateX,
translateY,
baseTrans = this.baseTrans,
transformGroup,
startTranslateX,
startTranslateY,
startScaleX,
startScaleY;
 
// Set a group that handles transform during zooming and panning in order to preserve clipping
// on series.group
if (!series.transformGroup) {
series.transformGroup = renderer.g()
.attr({
scaleX: 1,
scaleY: 1
})
.add(group);
series.transformGroup.survive = true;
}
 
// Draw the shapes again
if (series.doFullTranslate()) {
 
// Individual point actions. TODO: Check unstyled.
 
 
// Draw them in transformGroup
series.group = series.transformGroup;
seriesTypes.column.prototype.drawPoints.apply(series);
series.group = group; // Reset
 
// Add class names
each(series.points, function(point) {
if (point.graphic) {
if (point.name) {
point.graphic.addClass('highcharts-name-' + point.name.replace(/ /g, '-').toLowerCase());
}
if (point.properties && point.properties['hc-key']) {
point.graphic.addClass('highcharts-key-' + point.properties['hc-key'].toLowerCase());
}
 
 
point.graphic.css(
series.pointAttribs(point, point.selected && 'select')
);
 
}
});
 
// Set the base for later scale-zooming. The originX and originY properties are the
// axis values in the plot area's upper left corner.
this.baseTrans = {
originX: xAxis.min - xAxis.minPixelPadding / xAxis.transA,
originY: yAxis.min - yAxis.minPixelPadding / yAxis.transA + (yAxis.reversed ? 0 : yAxis.len / yAxis.transA),
transAX: xAxis.transA,
transAY: yAxis.transA
};
 
// Reset transformation in case we're doing a full translate (#3789)
this.transformGroup.animate({
translateX: 0,
translateY: 0,
scaleX: 1,
scaleY: 1
});
 
// Just update the scale and transform for better performance
} else {
scaleX = xAxis.transA / baseTrans.transAX;
scaleY = yAxis.transA / baseTrans.transAY;
translateX = xAxis.toPixels(baseTrans.originX, true);
translateY = yAxis.toPixels(baseTrans.originY, true);
 
// Handle rounding errors in normal view (#3789)
if (scaleX > 0.99 && scaleX < 1.01 && scaleY > 0.99 && scaleY < 1.01) {
scaleX = 1;
scaleY = 1;
translateX = Math.round(translateX);
translateY = Math.round(translateY);
}
 
// Animate or move to the new zoom level. In order to prevent
// flickering as the different transform components are set out of
// sync (#5991), we run a fake animator attribute and set scale and
// translation synchronously in the same step.
// A possible improvement to the API would be to handle this in the
// renderer or animation engine itself, to ensure that when we are
// animating multiple properties, we make sure that each step for
// each property is performed in the same step. Also, for symbols
// and for transform properties, it should induce a single
// updateTransform and symbolAttr call.
transformGroup = this.transformGroup;
if (chart.renderer.globalAnimation) {
startTranslateX = transformGroup.attr('translateX');
startTranslateY = transformGroup.attr('translateY');
startScaleX = transformGroup.attr('scaleX');
startScaleY = transformGroup.attr('scaleY');
transformGroup
.attr({
animator: 0
})
.animate({
animator: 1
}, {
step: function(now, fx) {
transformGroup.attr({
translateX: startTranslateX +
(translateX - startTranslateX) * fx.pos,
translateY: startTranslateY +
(translateY - startTranslateY) * fx.pos,
scaleX: startScaleX +
(scaleX - startScaleX) * fx.pos,
scaleY: startScaleY +
(scaleY - startScaleY) * fx.pos
});
 
}
});
 
// When dragging, animation is off.
} else {
transformGroup.attr({
translateX: translateX,
translateY: translateY,
scaleX: scaleX,
scaleY: scaleY
});
}
 
}
 
// Set the stroke-width directly on the group element so the children inherit it. We need to use
// setAttribute directly, because the stroke-widthSetter method expects a stroke color also to be
// set.
if (!supportsVectorEffect) {
series.group.element.setAttribute(
'stroke-width',
series.options[
(series.pointAttrToOptions && series.pointAttrToOptions['stroke-width']) || 'borderWidth'
] / (scaleX || 1)
);
}
 
this.drawMapDataLabels();
 
 
},
 
/**
* Draw the data labels. Special for maps is the time that the data labels are drawn (after points),
* and the clipping of the dataLabelsGroup.
*/
drawMapDataLabels: function() {
 
Series.prototype.drawDataLabels.call(this);
if (this.dataLabelsGroup) {
this.dataLabelsGroup.clip(this.chart.clipRect);
}
},
 
/**
* Override render to throw in an async call in IE8. Otherwise it chokes on the US counties demo.
*/
render: function() {
var series = this,
render = Series.prototype.render;
 
// Give IE8 some time to breathe.
if (series.chart.renderer.isVML && series.data.length > 3000) {
setTimeout(function() {
render.call(series);
});
} else {
render.call(series);
}
},
 
/**
* The initial animation for the map series. By default, animation is disabled.
* Animation of map shapes is not at all supported in VML browsers.
*/
animate: function(init) {
var chart = this.chart,
animation = this.options.animation,
group = this.group,
xAxis = this.xAxis,
yAxis = this.yAxis,
left = xAxis.pos,
top = yAxis.pos;
 
if (chart.renderer.isSVG) {
 
if (animation === true) {
animation = {
duration: 1000
};
}
 
// Initialize the animation
if (init) {
 
// Scale down the group and place it in the center
group.attr({
translateX: left + xAxis.len / 2,
translateY: top + yAxis.len / 2,
scaleX: 0.001, // #1499
scaleY: 0.001
});
 
// Run the animation
} else {
group.animate({
translateX: left,
translateY: top,
scaleX: 1,
scaleY: 1
}, animation);
 
// Delete this function to allow it only once
this.animate = null;
}
}
},
 
/**
* Animate in the new series from the clicked point in the old series.
* Depends on the drilldown.js module
*/
animateDrilldown: function(init) {
var toBox = this.chart.plotBox,
level = this.chart.drilldownLevels[this.chart.drilldownLevels.length - 1],
fromBox = level.bBox,
animationOptions = this.chart.options.drilldown.animation,
scale;
 
if (!init) {
 
scale = Math.min(fromBox.width / toBox.width, fromBox.height / toBox.height);
level.shapeArgs = {
scaleX: scale,
scaleY: scale,
translateX: fromBox.x,
translateY: fromBox.y
};
 
each(this.points, function(point) {
if (point.graphic) {
point.graphic
.attr(level.shapeArgs)
.animate({
scaleX: 1,
scaleY: 1,
translateX: 0,
translateY: 0
}, animationOptions);
}
});
 
this.animate = null;
}
 
},
 
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
 
/**
* When drilling up, pull out the individual point graphics from the lower series
* and animate them into the origin point in the upper series.
*/
animateDrillupFrom: function(level) {
seriesTypes.column.prototype.animateDrillupFrom.call(this, level);
},
 
 
/**
* When drilling up, keep the upper series invisible until the lower series has
* moved into place
*/
animateDrillupTo: function(init) {
seriesTypes.column.prototype.animateDrillupTo.call(this, init);
}
 
// Point class
}), extend({
/**
* Extend the Point object to split paths
*/
applyOptions: function(options, x) {
 
var point = Point.prototype.applyOptions.call(this, options, x),
series = this.series,
joinBy = series.joinBy,
mapPoint;
 
if (series.mapData) {
mapPoint = point[joinBy[1]] !== undefined && series.mapMap[point[joinBy[1]]];
if (mapPoint) {
// This applies only to bubbles
if (series.xyFromShape) {
point.x = mapPoint._midX;
point.y = mapPoint._midY;
}
extend(point, mapPoint); // copy over properties
} else {
point.value = point.value || null;
}
}
 
return point;
},
 
/**
* Stop the fade-out
*/
onMouseOver: function(e) {
clearTimeout(this.colorInterval);
if (this.value !== null || this.series.options.nullInteraction) {
Point.prototype.onMouseOver.call(this, e);
} else { //#3401 Tooltip doesn't hide when hovering over null points
this.series.onMouseOut(e);
}
},
 
/**
* Highmaps only. Zoom in on the point using the global animation.
*
* @function #zoomTo
* @memberOf Point
* @sample maps/members/point-zoomto/
* Zoom to points from butons
*/
zoomTo: function() {
var point = this,
series = point.series;
 
series.xAxis.setExtremes(
point._minX,
point._maxX,
false
);
series.yAxis.setExtremes(
point._minY,
point._maxY,
false
);
series.chart.redraw();
}
}, colorPointMixin));
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The mapline series type
//
/**
* @extends {plotOptions.map}
* @optionparent plotOptions.mapline
*/
seriesType('mapline', 'map', {
 
}, {
type: 'mapline',
colorProp: 'stroke',
 
drawLegendSymbol: seriesTypes.line.prototype.drawLegendSymbol
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var merge = H.merge,
Point = H.Point,
seriesType = H.seriesType;
 
// The mappoint series type
/**
* @extends plotOptions.scatter
* @optionparent plotOptions.mappoint
*/
seriesType('mappoint', 'scatter', {
 
/**
*/
dataLabels: {
 
/**
*/
enabled: true,
 
/**
*/
formatter: function() { // #2945
return this.point.name;
},
 
/**
*/
crop: false,
 
/**
*/
defer: false,
 
/**
*/
overflow: false,
 
/**
*/
style: {
 
/**
*/
color: '#000000'
}
}
 
// Prototype members
}, {
type: 'mappoint',
forceDL: true
 
// Point class
}, {
applyOptions: function(options, x) {
var mergedOptions = options.lat !== undefined && options.lon !== undefined ? merge(options, this.series.chart.fromLatLonToPoint(options)) : options;
return Point.prototype.applyOptions.call(this, mergedOptions, x);
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var arrayMax = H.arrayMax,
arrayMin = H.arrayMin,
Axis = H.Axis,
color = H.color,
each = H.each,
isNumber = H.isNumber,
noop = H.noop,
pick = H.pick,
pInt = H.pInt,
Point = H.Point,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
/* ****************************************************************************
* Start Bubble series code *
*****************************************************************************/
 
 
/**
* @extends plotOptions.scatter
* @optionparent plotOptions.bubble
*/
seriesType('bubble', 'scatter', {
 
/**
*/
dataLabels: {
 
/**
*/
formatter: function() { // #2945
return this.point.z;
},
 
/**
*/
inside: true,
 
/**
*/
verticalAlign: 'middle'
},
// displayNegative: true,
 
/**
* Options for the point markers of line-like series. Properties like
* `fillColor`, `lineColor` and `lineWidth` define the visual appearance
* of the markers. Other series types, like column series, don't have
* markers, but have visual options on the series level instead.
*
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
* style/style-by-css), the markers can be styled with the `.highcharts-
* point`, `.highcharts-point-hover` and `.highcharts-point-select`
* class names.
*
* @type {Object}
* @extends plotOptions.series.marker
* @excluding radius
* @product highcharts
*/
marker: {
 
// Avoid offset in Point.setState
 
/**
*/
radius: null,
 
/**
*/
states: {
 
/**
*/
hover: {
 
/**
*/
radiusPlus: 0
}
},
 
/**
* A predefined shape or symbol for the marker. Possible values are
* "circle", "square", "diamond", "triangle" and "triangle-down".
*
* Additionally, the URL to a graphic can be given on the form `url(graphic.
* png)`. Note that for the image to be applied to exported charts,
* its URL needs to be accessible by the export server.
*
* Custom callbacks for symbol path generation can also be added to
* `Highcharts.SVGRenderer.prototype.symbols`. The callback is then
* used by its method name, as shown in the demo.
*
* @validvalue ["circle", "square", "diamond", "triangle", "triangle-down"]
* @type {String}
* @sample {highcharts} highcharts/plotoptions/bubble-symbol/ Bubble chart with various symbols
* @sample {highcharts} highcharts/plotoptions/series-marker-symbol/ General chart with predefined, graphic and custom markers
* @default circle
* @since 5.0.11
* @product highcharts
*/
symbol: 'circle'
},
 
/**
* Minimum bubble size. Bubbles will automatically size between the
* `minSize` and `maxSize` to reflect the `z` value of each bubble.
* Can be either pixels (when no unit is given), or a percentage of
* the smallest one of the plot width and height.
*
* @type {String}
* @sample {highcharts} highcharts/plotoptions/bubble-size/ Bubble size
* @default 8
* @since 3.0
* @product highcharts
*/
minSize: 8,
 
/**
* Maximum bubble size. Bubbles will automatically size between the
* `minSize` and `maxSize` to reflect the `z` value of each bubble.
* Can be either pixels (when no unit is given), or a percentage of
* the smallest one of the plot width and height.
*
* @type {String}
* @sample {highcharts} highcharts/plotoptions/bubble-size/ Bubble size
* @default 20%
* @since 3.0
* @product highcharts
*/
maxSize: '20%',
// negativeColor: null,
// sizeBy: 'area'
 
/**
* When this is true, the series will not cause the Y axis to cross
* the zero plane (or [threshold](#plotOptions.series.threshold) option)
* unless the data actually crosses the plane.
*
* For example, if `softThreshold` is `false`, a series of 0, 1, 2,
* 3 will make the Y axis show negative values according to the `minPadding`
* option. If `softThreshold` is `true`, the Y axis starts at 0.
*
* @type {Boolean}
* @default false
* @since 4.1.9
* @product highcharts
*/
softThreshold: false,
 
/**
*/
states: {
 
/**
*/
hover: {
 
/**
*/
halo: {
 
/**
*/
size: 5
}
}
},
 
/**
*/
tooltip: {
 
/**
*/
pointFormat: '({point.x}, {point.y}), Size: {point.z}'
},
 
/**
*/
turboThreshold: 0,
 
/**
* When [displayNegative](#plotOptions.bubble.displayNegative) is `false`,
* bubbles with lower Z values are skipped. When `displayNegative`
* is `true` and a [negativeColor](#plotOptions.bubble.negativeColor)
* is given, points with lower Z is colored.
*
* @type {Number}
* @sample {highcharts} highcharts/plotoptions/bubble-negative/ Negative bubbles
* @default 0
* @since 3.0
* @product highcharts
*/
zThreshold: 0,
 
/**
*/
zoneAxis: 'z'
 
// Prototype members
}, {
pointArrayMap: ['y', 'z'],
parallelArrays: ['x', 'y', 'z'],
trackerGroups: ['group', 'dataLabelsGroup'],
specialGroup: 'group', // To allow clipping (#6296)
bubblePadding: true,
zoneAxis: 'z',
directTouch: true,
 
 
 
/**
* Get the radius for each point based on the minSize, maxSize and each point's Z value. This
* must be done prior to Series.translate because the axis needs to add padding in
* accordance with the point sizes.
*/
getRadii: function(zMin, zMax, minSize, maxSize) {
var len,
i,
pos,
zData = this.zData,
radii = [],
options = this.options,
sizeByArea = options.sizeBy !== 'width',
zThreshold = options.zThreshold,
zRange = zMax - zMin,
value,
radius;
 
// Set the shape type and arguments to be picked up in drawPoints
for (i = 0, len = zData.length; i < len; i++) {
 
value = zData[i];
 
// When sizing by threshold, the absolute value of z determines the size
// of the bubble.
if (options.sizeByAbsoluteValue && value !== null) {
value = Math.abs(value - zThreshold);
zMax = Math.max(zMax - zThreshold, Math.abs(zMin - zThreshold));
zMin = 0;
}
 
if (value === null) {
radius = null;
// Issue #4419 - if value is less than zMin, push a radius that's always smaller than the minimum size
} else if (value < zMin) {
radius = minSize / 2 - 1;
} else {
// Relative size, a number between 0 and 1
pos = zRange > 0 ? (value - zMin) / zRange : 0.5;
 
if (sizeByArea && pos >= 0) {
pos = Math.sqrt(pos);
}
radius = Math.ceil(minSize + pos * (maxSize - minSize)) / 2;
}
radii.push(radius);
}
this.radii = radii;
},
 
/**
* Perform animation on the bubbles
*/
animate: function(init) {
var animation = this.options.animation;
 
if (!init) { // run the animation
each(this.points, function(point) {
var graphic = point.graphic,
animationTarget;
 
if (graphic && graphic.width) { // URL symbols don't have width
animationTarget = {
x: graphic.x,
y: graphic.y,
width: graphic.width,
height: graphic.height
};
 
// Start values
graphic.attr({
x: point.plotX,
y: point.plotY,
width: 1,
height: 1
});
 
// Run animation
graphic.animate(animationTarget, animation);
}
});
 
// delete this function to allow it only once
this.animate = null;
}
},
 
/**
* Extend the base translate method to handle bubble size
*/
translate: function() {
 
var i,
data = this.data,
point,
radius,
radii = this.radii;
 
// Run the parent method
seriesTypes.scatter.prototype.translate.call(this);
 
// Set the shape type and arguments to be picked up in drawPoints
i = data.length;
 
while (i--) {
point = data[i];
radius = radii ? radii[i] : 0; // #1737
 
if (isNumber(radius) && radius >= this.minPxSize / 2) {
// Shape arguments
point.marker = H.extend(point.marker, {
radius: radius,
width: 2 * radius,
height: 2 * radius
});
 
// Alignment box for the data label
point.dlBox = {
x: point.plotX - radius,
y: point.plotY - radius,
width: 2 * radius,
height: 2 * radius
};
} else { // below zThreshold
point.shapeArgs = point.plotY = point.dlBox = undefined; // #1691
}
}
},
 
alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
buildKDTree: noop,
applyZones: noop
 
// Point class
}, {
haloPath: function(size) {
return Point.prototype.haloPath.call(
this,
size === 0 ? 0 : (this.marker ? this.marker.radius || 0 : 0) + size // #6067
);
},
ttBelow: false
});
 
/**
* Add logic to pad each axis with the amount of pixels
* necessary to avoid the bubbles to overflow.
*/
Axis.prototype.beforePadding = function() {
var axis = this,
axisLength = this.len,
chart = this.chart,
pxMin = 0,
pxMax = axisLength,
isXAxis = this.isXAxis,
dataKey = isXAxis ? 'xData' : 'yData',
min = this.min,
extremes = {},
smallestSize = Math.min(chart.plotWidth, chart.plotHeight),
zMin = Number.MAX_VALUE,
zMax = -Number.MAX_VALUE,
range = this.max - min,
transA = axisLength / range,
activeSeries = [];
 
// Handle padding on the second pass, or on redraw
each(this.series, function(series) {
 
var seriesOptions = series.options,
zData;
 
if (series.bubblePadding && (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
 
// Correction for #1673
axis.allowZoomOutside = true;
 
// Cache it
activeSeries.push(series);
 
if (isXAxis) { // because X axis is evaluated first
 
// For each series, translate the size extremes to pixel values
each(['minSize', 'maxSize'], function(prop) {
var length = seriesOptions[prop],
isPercent = /%$/.test(length);
 
length = pInt(length);
extremes[prop] = isPercent ?
smallestSize * length / 100 :
length;
 
});
series.minPxSize = extremes.minSize;
// Prioritize min size if conflict to make sure bubbles are
// always visible. #5873
series.maxPxSize = Math.max(extremes.maxSize, extremes.minSize);
 
// Find the min and max Z
zData = series.zData;
if (zData.length) { // #1735
zMin = pick(seriesOptions.zMin, Math.min(
zMin,
Math.max(
arrayMin(zData),
seriesOptions.displayNegative === false ? seriesOptions.zThreshold : -Number.MAX_VALUE
)
));
zMax = pick(seriesOptions.zMax, Math.max(zMax, arrayMax(zData)));
}
}
}
});
 
each(activeSeries, function(series) {
 
var data = series[dataKey],
i = data.length,
radius;
 
if (isXAxis) {
series.getRadii(zMin, zMax, series.minPxSize, series.maxPxSize);
}
 
if (range > 0) {
while (i--) {
if (isNumber(data[i]) && axis.dataMin <= data[i] && data[i] <= axis.dataMax) {
radius = series.radii[i];
pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
}
}
}
});
 
if (activeSeries.length && range > 0 && !this.isLog) {
pxMax -= axisLength;
transA *= (axisLength + pxMin - pxMax) / axisLength;
each([
['min', 'userMin', pxMin],
['max', 'userMax', pxMax]
], function(keys) {
if (pick(axis.options[keys[0]], axis[keys[1]]) === undefined) {
axis[keys[0]] += keys[2] / transA;
}
});
}
};
 
/* ****************************************************************************
* End Bubble series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var merge = H.merge,
Point = H.Point,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The mapbubble series type
if (seriesTypes.bubble) {
 
/**
* @extends {plotOptions.bubble}
* @optionparent plotOptions.mapbubble
*/
seriesType('mapbubble', 'bubble', {
 
/**
*/
animationLimit: 500,
 
/**
*/
tooltip: {
 
/**
*/
pointFormat: '{point.name}: {point.z}'
}
 
// Prototype members
}, {
xyFromShape: true,
type: 'mapbubble',
pointArrayMap: ['z'], // If one single value is passed, it is interpreted as z
/**
* Return the map area identified by the dataJoinBy option
*/
getMapData: seriesTypes.map.prototype.getMapData,
getBox: seriesTypes.map.prototype.getBox,
setData: seriesTypes.map.prototype.setData
 
// Point class
}, {
applyOptions: function(options, x) {
var point;
if (options && options.lat !== undefined && options.lon !== undefined) {
point = Point.prototype.applyOptions.call(
this,
merge(options, this.series.chart.fromLatLonToPoint(options)),
x
);
} else {
point = seriesTypes.map.prototype.pointClass.prototype.applyOptions.call(this, options, x);
}
return point;
},
ttBelow: false
});
}
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var colorPointMixin = H.colorPointMixin,
colorSeriesMixin = H.colorSeriesMixin,
each = H.each,
LegendSymbolMixin = H.LegendSymbolMixin,
merge = H.merge,
noop = H.noop,
pick = H.pick,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
// The Heatmap series type
 
/**
* @extends {plotOptions.scatter}
* @optionparent plotOptions.heatmap
*/
seriesType('heatmap', 'scatter', {
 
/**
*/
animation: false,
 
/**
*/
borderWidth: 0,
 
 
/**
*/
dataLabels: {
 
/**
*/
formatter: function() { // #2945
return this.point.value;
},
 
/**
*/
inside: true,
 
/**
*/
verticalAlign: 'middle',
 
/**
*/
crop: false,
 
/**
*/
overflow: false,
 
/**
*/
padding: 0 // #3837
},
 
/**
*/
marker: null,
 
/**
*/
pointRange: null, // dynamically set to colsize by default
 
/**
*/
tooltip: {
 
/**
*/
pointFormat: '{point.x}, {point.y}: {point.value}<br/>'
},
 
/**
*/
states: {
 
/**
*/
normal: {
 
/**
*/
animation: true
},
 
/**
*/
hover: {
 
/**
*/
halo: false, // #3406, halo is not required on heatmaps
 
/**
*/
brightness: 0.2
}
}
}, merge(colorSeriesMixin, {
pointArrayMap: ['y', 'value'],
hasPointSpecificOptions: true,
getExtremesFromAll: true,
directTouch: true,
 
/**
* Override the init method to add point ranges on both axes.
*/
init: function() {
var options;
seriesTypes.scatter.prototype.init.apply(this, arguments);
 
options = this.options;
// #3758, prevent resetting in setData
options.pointRange = pick(options.pointRange, options.colsize || 1);
this.yAxis.axisPointRange = options.rowsize || 1; // general point range
},
translate: function() {
var series = this,
options = series.options,
xAxis = series.xAxis,
yAxis = series.yAxis,
between = function(x, a, b) {
return Math.min(Math.max(a, x), b);
};
 
series.generatePoints();
 
each(series.points, function(point) {
var xPad = (options.colsize || 1) / 2,
yPad = (options.rowsize || 1) / 2,
x1 = between(
Math.round(
xAxis.len -
xAxis.translate(point.x - xPad, 0, 1, 0, 1)
), -xAxis.len, 2 * xAxis.len
),
x2 = between(
Math.round(
xAxis.len -
xAxis.translate(point.x + xPad, 0, 1, 0, 1)
), -xAxis.len, 2 * xAxis.len
),
y1 = between(
Math.round(yAxis.translate(point.y - yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len
),
y2 = between(
Math.round(yAxis.translate(point.y + yPad, 0, 1, 0, 1)), -yAxis.len, 2 * yAxis.len
);
 
// Set plotX and plotY for use in K-D-Tree and more
point.plotX = point.clientX = (x1 + x2) / 2;
point.plotY = (y1 + y2) / 2;
 
point.shapeType = 'rect';
point.shapeArgs = {
x: Math.min(x1, x2),
y: Math.min(y1, y2),
width: Math.abs(x2 - x1),
height: Math.abs(y2 - y1)
};
});
 
series.translateColors();
},
drawPoints: function() {
seriesTypes.column.prototype.drawPoints.call(this);
 
each(this.points, function(point) {
 
// In styled mode, use CSS, otherwise the fill used in the style
// sheet will take precedence over the fill attribute.
point.graphic.css(this.colorAttribs(point));
 
}, this);
},
animate: noop,
getBox: noop,
drawLegendSymbol: LegendSymbolMixin.drawRectangle,
alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
getExtremes: function() {
// Get the extremes from the value data
Series.prototype.getExtremes.call(this, this.valueData);
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Get the extremes from the y data
Series.prototype.getExtremes.call(this);
}
 
}), colorPointMixin);
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Chart = H.Chart,
each = H.each,
extend = H.extend,
format = H.format,
merge = H.merge,
win = H.win,
wrap = H.wrap;
/**
* Test for point in polygon. Polygon defined as array of [x,y] points.
*/
function pointInPolygon(point, polygon) {
var i,
j,
rel1,
rel2,
c = false,
x = point.x,
y = point.y;
 
for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
rel1 = polygon[i][1] > y;
rel2 = polygon[j][1] > y;
if (rel1 !== rel2 && (x < (polygon[j][0] - polygon[i][0]) * (y - polygon[i][1]) / (polygon[j][1] - polygon[i][1]) + polygon[i][0])) {
c = !c;
}
}
 
return c;
}
 
/**
* Highmaps only. Get point from latitude and longitude using specified
* transform definition.
*
* @function transformFromLatLon
* @memberOf Chart.prototype
*
* @param {Object} latLon
* A latitude/longitude object.
* @param {Number} latLon.lat
* The latitude.
* @param {Number} latLon.lon
* The longitude.
* @param {Object} transform
* The transform definition to use as explained in the {@link
* https://www.highcharts.com/docs/maps/latlon|documentation}.
*
* @return {Object}
* An object with `x` and `y` properties.
*
* @sample maps/series/latlon-transform/
* Use specific transformation for lat/lon
*/
Chart.prototype.transformFromLatLon = function(latLon, transform) {
if (win.proj4 === undefined) {
H.error(21);
return {
x: 0,
y: null
};
}
 
var projected = win.proj4(transform.crs, [latLon.lon, latLon.lat]),
cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
rotated = transform.rotation ? [projected[0] * cosAngle + projected[1] * sinAngle, -projected[0] * sinAngle + projected[1] * cosAngle] : projected;
 
return {
x: ((rotated[0] - (transform.xoffset || 0)) * (transform.scale || 1) + (transform.xpan || 0)) * (transform.jsonres || 1) + (transform.jsonmarginX || 0),
y: (((transform.yoffset || 0) - rotated[1]) * (transform.scale || 1) + (transform.ypan || 0)) * (transform.jsonres || 1) - (transform.jsonmarginY || 0)
};
};
 
/**
* Highmaps only. Get latLon from point using specified transform definition.
* The method returns an object with the numeric properties `lat` and `lon`.
*
* @function transformToLatLon
* @memberOf Chart.prototype
*
* @param {Point|Object} point
* A `Point` instance, or or any object containing the properties `x`
* and `y` with numeric values.
* @param {Object} transform
* The transform definition to use as explained in the {@link
* https://www.highcharts.com/docs/maps/latlon|documentation}.
*
* @return {Object}
* An object with `lat` and `lon` properties.
*
* @sample maps/series/latlon-transform/
* Use specific transformation for lat/lon
*
*/
Chart.prototype.transformToLatLon = function(point, transform) {
if (win.proj4 === undefined) {
H.error(21);
return;
}
 
var normalized = {
x: ((point.x - (transform.jsonmarginX || 0)) / (transform.jsonres || 1) - (transform.xpan || 0)) / (transform.scale || 1) + (transform.xoffset || 0),
y: ((-point.y - (transform.jsonmarginY || 0)) / (transform.jsonres || 1) + (transform.ypan || 0)) / (transform.scale || 1) + (transform.yoffset || 0)
},
cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
// Note: Inverted sinAngle to reverse rotation direction
projected = win.proj4(transform.crs, 'WGS84', transform.rotation ? {
x: normalized.x * cosAngle + normalized.y * -sinAngle,
y: normalized.x * sinAngle + normalized.y * cosAngle
} : normalized);
 
return {
lat: projected.y,
lon: projected.x
};
};
 
/**
* Highmaps only. Calculate latitude/longitude values for a point. Returns an
* object with the numeric properties `lat` and `lon`.
*
* @function fromPointToLatLon
* @memberOf Chart.prototype
*
* @param {Point|Object} point
* A `Point` instance or anything containing `x` and `y` properties
* with numeric values
* @return {Object}
* An object with `lat` and `lon` properties.
*
* @sample maps/demo/latlon-advanced/
* Advanced lat/lon demo
*/
Chart.prototype.fromPointToLatLon = function(point) {
var transforms = this.mapTransforms,
transform;
 
if (!transforms) {
H.error(22);
return;
}
 
for (transform in transforms) {
if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone &&
pointInPolygon({
x: point.x,
y: -point.y
}, transforms[transform].hitZone.coordinates[0])) {
return this.transformToLatLon(point, transforms[transform]);
}
}
 
return this.transformToLatLon(point, transforms['default']); // eslint-disable-line dot-notation
};
 
/**
* Highmaps only. Get chart coordinates from latitude/longitude. Returns an
* object with x and y values corresponding to the `xAxis` and `yAxis`.
*
* @function fromLatLonToPoint
* @memberOf Chart.prototype
*
* @param {Object} latLon
* Coordinates.
* @param {Number} latLon.lat
* The latitude.
* @param {Number} latLon.lon
* The longitude.
*
* @sample maps/series/latlon-to-point/
* Find a point from lat/lon
*
* @return {Object}
* X and Y coordinates in terms of chart axis values.
*/
Chart.prototype.fromLatLonToPoint = function(latLon) {
var transforms = this.mapTransforms,
transform,
coords;
 
if (!transforms) {
H.error(22);
return {
x: 0,
y: null
};
}
 
for (transform in transforms) {
if (transforms.hasOwnProperty(transform) && transforms[transform].hitZone) {
coords = this.transformFromLatLon(latLon, transforms[transform]);
if (pointInPolygon({
x: coords.x,
y: -coords.y
}, transforms[transform].hitZone.coordinates[0])) {
return coords;
}
}
}
 
return this.transformFromLatLon(latLon, transforms['default']); // eslint-disable-line dot-notation
};
 
/**
* Highmaps only. Restructure a GeoJSON object in preparation to be read
* directly by the {@link
* https://api.highcharts.com/highmaps/plotOptions.series.mapData|
* series.mapData} option. The GeoJSON will be broken down to fit a specific
* Highcharts type, either `map`, `mapline` or `mappoint`. Meta data in
* GeoJSON's properties object will be copied directly over to
* {@link Point.properties} in Highmaps.
*
* @function #geojson
* @memberOf Highcharts
*
* @param {Object} geojson
* The GeoJSON structure to parse, represented as a JavaScript object
* rather than a JSON string.
* @param {String} [hType=map]
* The Highmaps series type to prepare for. Setting "map" will return
* GeoJSON polygons and multipolygons. Setting "mapline" will return
* GeoJSON linestrings and multilinestrings. Setting "mappoint" will
* return GeoJSON points and multipoints.
*
* @return {Object}
* An object ready for the `mapData` option.
*
* @sample samples/maps/demo/geojson/
* Simple areas
* @sample maps/demo/geojson-multiple-types/
* Multiple types
*
*/
H.geojson = function(geojson, hType, series) {
var mapData = [],
path = [],
polygonToPath = function(polygon) {
var i,
len = polygon.length;
path.push('M');
for (i = 0; i < len; i++) {
if (i === 1) {
path.push('L');
}
path.push(polygon[i][0], -polygon[i][1]);
}
};
 
hType = hType || 'map';
 
each(geojson.features, function(feature) {
 
var geometry = feature.geometry,
type = geometry.type,
coordinates = geometry.coordinates,
properties = feature.properties,
point;
 
path = [];
 
if (hType === 'map' || hType === 'mapbubble') {
if (type === 'Polygon') {
each(coordinates, polygonToPath);
path.push('Z');
 
} else if (type === 'MultiPolygon') {
each(coordinates, function(items) {
each(items, polygonToPath);
});
path.push('Z');
}
 
if (path.length) {
point = {
path: path
};
}
 
} else if (hType === 'mapline') {
if (type === 'LineString') {
polygonToPath(coordinates);
} else if (type === 'MultiLineString') {
each(coordinates, polygonToPath);
}
 
if (path.length) {
point = {
path: path
};
}
 
} else if (hType === 'mappoint') {
if (type === 'Point') {
point = {
x: coordinates[0],
y: -coordinates[1]
};
}
}
if (point) {
mapData.push(extend(point, {
name: properties.name || properties.NAME,
 
/**
* In Highmaps, when data is loaded from GeoJSON, the GeoJSON
* item's properies are copied over here.
*
* @name #properties
* @memberOf Point
* @type {Object}
*/
properties: properties
}));
}
 
});
 
// Create a credits text that includes map source, to be picked up in Chart.addCredits
if (series && geojson.copyrightShort) {
series.chart.mapCredits = format(series.chart.options.credits.mapText, {
geojson: geojson
});
series.chart.mapCreditsFull = format(series.chart.options.credits.mapTextFull, {
geojson: geojson
});
}
 
return mapData;
};
 
/**
* Override addCredits to include map source by default
*/
wrap(Chart.prototype, 'addCredits', function(proceed, credits) {
 
credits = merge(true, this.options.credits, credits);
 
// Disable credits link if map credits enabled. This to allow for in-text anchors.
if (this.mapCredits) {
credits.href = null;
}
 
proceed.call(this, credits);
 
// Add full map credits to hover
if (this.credits && this.mapCreditsFull) {
this.credits.attr({
title: this.mapCreditsFull
});
}
});
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var Chart = H.Chart,
defaultOptions = H.defaultOptions,
each = H.each,
extend = H.extend,
merge = H.merge,
pick = H.pick,
Renderer = H.Renderer,
SVGRenderer = H.SVGRenderer,
VMLRenderer = H.VMLRenderer;
 
 
// Add language
extend(defaultOptions.lang, {
zoomIn: 'Zoom in',
zoomOut: 'Zoom out'
});
 
 
// Set the default map navigation options
 
/**
* @products highmaps
* @optionparent mapNavigation
*/
defaultOptions.mapNavigation = {
 
/**
* General options for the map navigation buttons. Individual options
* can be given from the [mapNavigation.buttons](#mapNavigation.buttons)
* option set.
*
* @type {Object}
* @sample {highmaps} maps/mapnavigation/button-theme/ Theming the navigation buttons
* @product highmaps
*/
buttonOptions: {
 
/**
* What box to align the buttons to. Possible values are `plotBox`
* and `spacingBox`.
*
* @validvalue ["plotBox", "spacingBox"]
* @type {String}
* @default plotBox
* @product highmaps
*/
alignTo: 'plotBox',
 
/**
* The alignment of the navigation buttons.
*
* @validvalue ["left", "center", "right"]
* @type {String}
* @default left
* @product highmaps
*/
align: 'left',
 
/**
* The vertical alignment of the buttons. Individual alignment can
* be adjusted by each button's `y` offset.
*
* @validvalue ["top", "middle", "bottom"]
* @type {String}
* @default bottom
* @product highmaps
*/
verticalAlign: 'top',
 
/**
* The X offset of the buttons relative to its `align` setting.
*
* @type {Number}
* @default 0
* @product highmaps
*/
x: 0,
 
/**
* The width of the map navigation buttons.
*
* @type {Number}
* @default 18
* @product highmaps
*/
width: 18,
 
/**
* The pixel height of the map navigation buttons.
*
* @type {Number}
* @default 18
* @product highmaps
*/
height: 18,
 
/**
* Padding for the navigation buttons.
*
* @type {Number}
* @default 5
* @since 5.0.0
* @product highmaps
*/
padding: 5
 
},
 
/**
* The individual buttons for the map navigation. This usually includes
* the zoom in and zoom out buttons. Properties for each button is
* inherited from [mapNavigation.buttonOptions](#mapNavigation.buttonOptions),
* while individual options can be overridden. But default, the `onclick`,
* `text` and `y` options are individual.
*
* @type {Object}
* @product highmaps
*/
buttons: {
 
/**
* Options for the zoom in button. Properties for the zoom in and
* zoom out buttons are inherited from [mapNavigation.buttonOptions](#mapNavigation.
* buttonOptions), while individual options can be overridden. By
* default, the `onclick`, `text` and `y` options are individual.
*
* @type {Object}
* @extends mapNavigation.buttonOptions
* @product highmaps
*/
zoomIn: {
 
/**
* Click handler for the button. Defaults to:
*
* <pre>function () {
* this.mapZoom(0.5);
* }</pre>
*
* @type {Function}
* @product highmaps
*/
onclick: function() {
this.mapZoom(0.5);
},
 
/**
* The text for the button. The tooltip (title) is a language option
* given by [lang.zoomIn](#lang.zoomIn).
*
* @type {String}
* @default +
* @product highmaps
*/
text: '+',
 
/**
* The position of the zoomIn button relative to the vertical alignment.
*
* @type {Number}
* @default 0
* @product highmaps
*/
y: 0
},
 
/**
* Options for the zoom out button. Properties for the zoom in and
* zoom out buttons are inherited from [mapNavigation.buttonOptions](#mapNavigation.
* buttonOptions), while individual options can be overridden. By
* default, the `onclick`, `text` and `y` options are individual.
*
* @type {Object}
* @extends mapNavigation.buttonOptions
* @product highmaps
*/
zoomOut: {
 
/**
* Click handler for the button. Defaults to:
*
* <pre>function () {
* this.mapZoom(2);
* }</pre>
*
* @type {Function}
* @product highmaps
*/
onclick: function() {
this.mapZoom(2);
},
 
/**
* The text for the button. The tooltip (title) is a language option
* given by [lang.zoomOut](#lang.zoomIn).
*
* @type {String}
* @default -
* @product highmaps
*/
text: '-',
 
/**
* The position of the zoomOut button relative to the vertical alignment.
*
* @type {Number}
* @default 28
* @product highmaps
*/
y: 28
}
},
 
/**
* Sensitivity of mouse wheel or trackpad scrolling. 1 is no sensitivity,
* while with 2, one mousewheel delta will zoom in 50%.
*
* @type {Number}
* @default 1.1
* @since 4.2.4
* @product highmaps
*/
mouseWheelSensitivity: 1.1
// enabled: false,
// enableButtons: null, // inherit from enabled
// enableTouchZoom: null, // inherit from enabled
// enableDoubleClickZoom: null, // inherit from enabled
// enableDoubleClickZoomTo: false
// enableMouseWheelZoom: null, // inherit from enabled
};
 
/**
* Utility for reading SVG paths directly.
*/
H.splitPath = function(path) {
var i;
 
// Move letters apart
path = path.replace(/([A-Za-z])/g, ' $1 ');
// Trim
path = path.replace(/^\s*/, '').replace(/\s*$/, '');
 
// Split on spaces and commas
path = path.split(/[ ,]+/); // Extra comma to escape gulp.scripts task
 
// Parse numbers
for (i = 0; i < path.length; i++) {
if (!/[a-zA-Z]/.test(path[i])) {
path[i] = parseFloat(path[i]);
}
}
return path;
};
 
// A placeholder for map definitions
H.maps = {};
 
 
 
 
 
// Create symbols for the zoom buttons
function selectiveRoundedRect(x, y, w, h, rTopLeft, rTopRight, rBottomRight, rBottomLeft) {
return [
'M', x + rTopLeft, y,
// top side
'L', x + w - rTopRight, y,
// top right corner
'C', x + w - rTopRight / 2,
y, x + w,
y + rTopRight / 2, x + w, y + rTopRight,
// right side
'L', x + w, y + h - rBottomRight,
// bottom right corner
'C', x + w, y + h - rBottomRight / 2,
x + w - rBottomRight / 2, y + h,
x + w - rBottomRight, y + h,
// bottom side
'L', x + rBottomLeft, y + h,
// bottom left corner
'C', x + rBottomLeft / 2, y + h,
x, y + h - rBottomLeft / 2,
x, y + h - rBottomLeft,
// left side
'L', x, y + rTopLeft,
// top left corner
'C', x, y + rTopLeft / 2,
x + rTopLeft / 2, y,
x + rTopLeft, y,
'Z'
];
}
SVGRenderer.prototype.symbols.topbutton = function(x, y, w, h, attr) {
return selectiveRoundedRect(x - 1, y - 1, w, h, attr.r, attr.r, 0, 0);
};
SVGRenderer.prototype.symbols.bottombutton = function(x, y, w, h, attr) {
return selectiveRoundedRect(x - 1, y - 1, w, h, 0, 0, attr.r, attr.r);
};
// The symbol callbacks are generated on the SVGRenderer object in all browsers. Even
// VML browsers need this in order to generate shapes in export. Now share
// them with the VMLRenderer.
if (Renderer === VMLRenderer) {
each(['topbutton', 'bottombutton'], function(shape) {
VMLRenderer.prototype.symbols[shape] = SVGRenderer.prototype.symbols[shape];
});
}
 
 
/**
* The factory function for creating new map charts. Creates a new {@link
* Chart|Chart} object with different default options than the basic Chart.
*
* @function #mapChart
* @memberOf Highcharts
*
* @param {String|HTMLDOMElement} renderTo
* The DOM element to render to, or its id.
* @param {Options} options
* The chart options structure as described in the {@link
* https://api.highcharts.com/highstock|options reference}.
* @param {Function} callback
* A function to execute when the chart object is finished loading and
* rendering. In most cases the chart is built in one thread, but in
* Internet Explorer version 8 or less the chart is sometimes initialized
* before the document is ready, and in these cases the chart object
* will not be finished synchronously. As a consequence, code that
* relies on the newly built Chart object should always run in the
* callback. Defining a {@link https://api.highcharts.com/highstock/chart.events.load|
* chart.event.load} handler is equivalent.
*
* @return {Chart}
* The chart object.
*/
H.Map = H.mapChart = function(a, b, c) {
 
var hasRenderToArg = typeof a === 'string' || a.nodeName,
options = arguments[hasRenderToArg ? 1 : 0],
hiddenAxis = {
endOnTick: false,
visible: false,
minPadding: 0,
maxPadding: 0,
startOnTick: false
},
seriesOptions,
defaultCreditsOptions = H.getOptions().credits;
 
/* For visual testing
hiddenAxis.gridLineWidth = 1;
hiddenAxis.gridZIndex = 10;
hiddenAxis.tickPositions = undefined;
// */
 
// Don't merge the data
seriesOptions = options.series;
options.series = null;
 
options = merge({
chart: {
panning: 'xy',
type: 'map'
},
credits: {
mapText: pick(defaultCreditsOptions.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">{geojson.copyrightShort}</a>'),
mapTextFull: pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')
},
tooltip: {
followTouchMove: false
},
xAxis: hiddenAxis,
yAxis: merge(hiddenAxis, {
reversed: true
})
},
options, // user's options
 
{ // forced options
chart: {
inverted: false,
alignTicks: false
}
}
);
 
options.series = seriesOptions;
 
 
return hasRenderToArg ?
new Chart(a, options, c) :
new Chart(options, b);
};
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/no-data-to-display.js
@@ -0,0 +1,12 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Plugin for displaying a message when there is no data visible in chart.
 
(c) 2010-2017 Highsoft AS
Author: Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(d){"object"===typeof module&&module.exports?module.exports=d:d(Highcharts)})(function(d){(function(c){function d(){this.hasData()?this.hideNoData():this.showNoData()}var f=c.seriesTypes,e=c.Chart.prototype,g=c.getOptions(),h=c.extend,k=c.each;h(g.lang,{noData:"No data to display"});g.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"}};k("bubble gauge heatmap pie treemap waterfall".split(" "),function(a){f[a]&&(f[a].prototype.hasData=function(){return!!this.points.length})});
c.Series.prototype.hasData=function(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin};e.showNoData=function(a){var b=this.options;a=a||b.lang.noData;b=b.noData;this.noDataLabel||(this.noDataLabel=this.renderer.label(a,0,0,null,null,null,b.useHTML,null,"no-data"),this.noDataLabel.add(),this.noDataLabel.align(h(this.noDataLabel.getBBox(),b.position),!1,"plotBox"))};e.hideNoData=function(){this.noDataLabel&&(this.noDataLabel=this.noDataLabel.destroy())};e.hasData=function(){for(var a=
this.series,b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0;return this.loadingShown};e.callbacks.push(function(a){c.addEvent(a,"load",d);c.addEvent(a,"redraw",d)})})(d)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/no-data-to-display.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","handleNoData","chart","hasData","hideNoData","showNoData","seriesTypes","chartPrototype","Chart","prototype","defaultOptions","getOptions","extend","each","lang","noData","position","x","y","align","verticalAlign","type","length","points","Series","H.Series.prototype.hasData","visible","undefined","dataMax","dataMin","chartPrototype.showNoData","str","options","text","noDataOptions","noDataLabel","renderer","label","useHTML","add","getBBox","chartPrototype.hideNoData","destroy","chartPrototype.hasData","series","i","isInternal","loadingShown","callbacks","push","addEvent"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/no-data-to-display.src.js
@@ -0,0 +1,209 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Plugin for displaying a message when there is no data visible in chart.
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Plugin for displaying a message when there is no data visible in chart.
*
* (c) 2010-2017 Highsoft AS
* Author: Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
var seriesTypes = H.seriesTypes,
chartPrototype = H.Chart.prototype,
defaultOptions = H.getOptions(),
extend = H.extend,
each = H.each;
 
// Add language option
extend(defaultOptions.lang, {
noData: 'No data to display'
});
 
// Add default display options for message
/**
* Options for displaying a message like "No data to display".
* This feature requires the file no-data-to-display.js to be loaded in the page.
* The actual text to display is set in the lang.noData option.
* @type {Object}
* @optionparent noData
*/
defaultOptions.noData = {
 
/**
* The position of the no-data label, relative to the plot area.
*
* @type {Object}
* @default { "x": 0, "y": 0, "align": "center", "verticalAlign": "middle" }
* @since 3.0.8
* @product highcharts highstock highmaps
*/
position: {
 
/**
* Horizontal offset of the label, in pixels.
*
* @type {Number}
* @default 0
* @product highcharts highstock
*/
x: 0,
 
/**
* Vertical offset of the label, in pixels.
*
* @type {Number}
* @default 0
* @product highcharts highstock
*/
y: 0,
 
/**
* Horizontal alignment of the label.
*
* @validvalue ["left", "center", "right"]
* @type {String}
* @default center
* @product highcharts highstock highmaps
*/
align: 'center',
 
/**
* Vertical alignment of the label.
*
* @validvalue ["top", "middle", "bottom"]
* @type {String}
* @default middle
* @product highcharts highstock
*/
verticalAlign: 'middle'
}
// useHTML: false
};
 
 
 
 
// Define hasData function for non-cartesian seris. Returns true if the series
// has points at all.
each([
'bubble',
'gauge',
'heatmap',
'pie',
'treemap',
'waterfall'
], function(type) {
if (seriesTypes[type]) {
seriesTypes[type].prototype.hasData = function() {
return !!this.points.length; /* != 0 */
};
}
});
 
/**
* Define hasData functions for series. These return true if there are data
* points on this series within the plot area.
*/
H.Series.prototype.hasData = function() {
return this.visible && this.dataMax !== undefined && this.dataMin !== undefined; // #3703
};
 
/**
* Display a no-data message.
*
* @param {String} str An optional message to show in place of the default one
*/
chartPrototype.showNoData = function(str) {
var chart = this,
options = chart.options,
text = str || options.lang.noData,
noDataOptions = options.noData;
 
if (!chart.noDataLabel) {
chart.noDataLabel = chart.renderer
.label(
text,
0,
0,
null,
null,
null,
noDataOptions.useHTML,
null,
'no-data'
);
 
 
 
chart.noDataLabel.add();
 
chart.noDataLabel.align(extend(chart.noDataLabel.getBBox(), noDataOptions.position), false, 'plotBox');
}
};
 
/**
* Hide no-data message
*/
chartPrototype.hideNoData = function() {
var chart = this;
if (chart.noDataLabel) {
chart.noDataLabel = chart.noDataLabel.destroy();
}
};
 
/**
* Returns true if there are data points within the plot area now
*/
chartPrototype.hasData = function() {
var chart = this,
series = chart.series,
i = series.length;
 
while (i--) {
if (series[i].hasData() && !series[i].options.isInternal) {
return true;
}
}
 
return chart.loadingShown; // #4588
};
 
/**
* Show no-data message if there is no data in sight. Otherwise, hide it.
*/
function handleNoData() {
var chart = this;
if (chart.hasData()) {
chart.hideNoData();
} else {
chart.showNoData();
}
}
 
/**
* Add event listener to handle automatic display of no-data message
*/
chartPrototype.callbacks.push(function(chart) {
H.addEvent(chart, 'load', handleNoData);
H.addEvent(chart, 'redraw', handleNoData);
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/offline-exporting.js
@@ -0,0 +1,20 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Client side exporting module
 
(c) 2015 Torstein Honsi / Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(c){function n(a,c){var d=t.getElementsByTagName("head")[0],b=t.createElement("script");b.type="text/javascript";b.src=a;b.onload=c;b.onerror=function(){console.error("Error loading script",a)};d.appendChild(b)}var C=c.merge,e=c.win,r=e.navigator,t=e.document,z=c.each,w=e.URL||e.webkitURL||e,A=/Edge\/|Trident\/|MSIE /.test(r.userAgent),D=/Edge\/\d+/.test(r.userAgent),E=A?150:0;c.CanVGRenderer=
{};c.dataURLtoBlob=function(a){if(e.atob&&e.ArrayBuffer&&e.Uint8Array&&e.Blob&&w.createObjectURL){a=a.match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);for(var c=e.atob(a[3]),d=new e.ArrayBuffer(c.length),d=new e.Uint8Array(d),b=0;b<d.length;++b)d[b]=c.charCodeAt(b);a=new e.Blob([d],{type:a[1]});return w.createObjectURL(a)}};c.downloadURL=function(a,f){var d=t.createElement("a"),b;if("string"===typeof a||a instanceof String||!r.msSaveOrOpenBlob){if(D||2E6<a.length)if(a=c.dataURLtoBlob(a),!a)throw"Data URL length limit reached";
if(void 0!==d.download)d.href=a,d.download=f,t.body.appendChild(d),d.click(),t.body.removeChild(d);else try{if(b=e.open(a,"chart"),void 0===b||null===b)throw"Failed to open window";}catch(u){e.location.href=a}}else r.msSaveOrOpenBlob(a,f)};c.svgToDataUrl=function(a){var c=-1<r.userAgent.indexOf("WebKit")&&0>r.userAgent.indexOf("Chrome");try{if(!c&&0>r.userAgent.toLowerCase().indexOf("firefox"))return w.createObjectURL(new e.Blob([a],{type:"image/svg+xml;charset-utf-16"}))}catch(d){}return"data:image/svg+xml;charset\x3dUTF-8,"+
encodeURIComponent(a)};c.imageToDataUrl=function(a,c,d,b,u,l,k,m,p){var g=new e.Image,h,f=function(){setTimeout(function(){var e=t.createElement("canvas"),f=e.getContext&&e.getContext("2d"),x;try{if(f){e.height=g.height*b;e.width=g.width*b;f.drawImage(g,0,0,e.width,e.height);try{x=e.toDataURL(c),u(x,c,d,b)}catch(F){h(a,c,d,b)}}else k(a,c,d,b)}finally{p&&p(a,c,d,b)}},E)},q=function(){m(a,c,d,b);p&&p(a,c,d,b)};h=function(){g=new e.Image;h=l;g.crossOrigin="Anonymous";g.onload=f;g.onerror=q;g.src=a};
g.onload=f;g.onerror=q;g.src=a};c.downloadSVGLocal=function(a,f,d,b){function u(b,a){a=new e.jsPDF("l","pt",[b.width.baseVal.value+2*a,b.height.baseVal.value+2*a]);e.svg2pdf(b,a,{removeInvalid:!0});return a.output("datauristring")}function l(){y.innerHTML=a;var e=y.getElementsByTagName("text"),g,f=y.getElementsByTagName("svg")[0].style;z(e,function(b){z(["font-family","font-size"],function(a){!b.style[a]&&f[a]&&(b.style[a]=f[a])});b.style["font-family"]=b.style["font-family"]&&b.style["font-family"].split(" ").splice(-1);
g=b.getElementsByTagName("title");z(g,function(a){b.removeChild(a)})});e=u(y.firstChild,0);try{c.downloadURL(e,v),b&&b()}catch(G){d()}}var k,m,p=!0,g,h=f.libURL||c.getOptions().exporting.libURL,y=t.createElement("div"),q=f.type||"image/png",v=(f.filename||"chart")+"."+("image/svg+xml"===q?"svg":q.split("/")[1]),B=f.scale||1,h="/"!==h.slice(-1)?h+"/":h;if("image/svg+xml"===q)try{r.msSaveOrOpenBlob?(m=new MSBlobBuilder,m.append(a),k=m.getBlob("image/svg+xml")):k=c.svgToDataUrl(a),c.downloadURL(k,v),
b&&b()}catch(x){d()}else"application/pdf"===q?e.jsPDF&&e.svg2pdf?l():(p=!0,n(h+"jspdf.js",function(){n(h+"svg2pdf.js",function(){l()})})):(k=c.svgToDataUrl(a),g=function(){try{w.revokeObjectURL(k)}catch(x){}},c.imageToDataUrl(k,q,{},B,function(a){try{c.downloadURL(a,v),b&&b()}catch(F){d()}},function(){var f=t.createElement("canvas"),u=f.getContext("2d"),l=a.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*B,k=a.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*B,m=function(){u.drawSvg(a,0,0,
l,k);try{c.downloadURL(r.msSaveOrOpenBlob?f.msToBlob():f.toDataURL(q),v),b&&b()}catch(H){d()}finally{g()}};f.width=l;f.height=k;e.canvg?m():(p=!0,n(h+"rgbcolor.js",function(){n(h+"canvg.js",function(){m()})}))},d,d,function(){p&&g()}))};c.Chart.prototype.getSVGForLocalExport=function(a,e,d,b){var f=this,l,k=0,m,p,g,h,n,q=function(a,c,d){++k;d.imageElement.setAttributeNS("http://www.w3.org/1999/xlink","href",a);k===l.length&&b(f.sanitizeSVG(m.innerHTML,p))};c.wrap(c.Chart.prototype,"getChartHTML",
function(a){var b=a.apply(this,Array.prototype.slice.call(arguments,1));p=this.options;m=this.container.cloneNode(!0);return b});f.getSVGForExport(a,e);l=m.getElementsByTagName("image");try{if(l.length)for(h=0,n=l.length;h<n;++h)g=l[h],c.imageToDataUrl(g.getAttributeNS("http://www.w3.org/1999/xlink","href"),"image/png",{imageElement:g},a.scale,q,d,d,d);else b(f.sanitizeSVG(m.innerHTML,p))}catch(v){d()}};c.Chart.prototype.exportChartLocal=function(a,e){var d=this,b=c.merge(d.options.exporting,a),f=
function(){if(!1===b.fallbackToExportServer)if(b.error)b.error(b);else throw"Fallback to export server disabled";else d.exportChart(b)};A&&(c.SVGRenderer.prototype.inlineWhitelist=[/^blockSize/,/^border/,/^caretColor/,/^color/,/^columnRule/,/^columnRuleColor/,/^cssFloat/,/^cursor/,/^fill$/,/^fillOpacity/,/^font/,/^inlineSize/,/^length/,/^lineHeight/,/^opacity/,/^outline/,/^parentRule/,/^rx$/,/^ry$/,/^stroke/,/^textAlign/,/^textAnchor/,/^textDecoration/,/^transform/,/^vectorEffect/,/^visibility/,/^x$/,
/^y$/]);A&&("application/pdf"===b.type||d.container.getElementsByTagName("image").length&&"image/svg+xml"!==b.type)||"application/pdf"===b.type&&d.container.getElementsByTagName("image").length?f():d.getSVGForLocalExport(b,e,f,function(a){-1<a.indexOf("\x3cforeignObject")&&"image/svg+xml"!==b.type?f():c.downloadSVGLocal(a,b,f)})};C(!0,c.getOptions().exporting,{libURL:"https://code.highcharts.com/5.0.14/lib/",menuItemDefinitions:{downloadPNG:{textKey:"downloadPNG",onclick:function(){this.exportChartLocal()}},
downloadJPEG:{textKey:"downloadJPEG",onclick:function(){this.exportChartLocal({type:"image/jpeg"})}},downloadSVG:{textKey:"downloadSVG",onclick:function(){this.exportChartLocal({type:"image/svg+xml"})}},downloadPDF:{textKey:"downloadPDF",onclick:function(){this.exportChartLocal({type:"application/pdf"})}}}})})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/offline-exporting.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":20,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","getScript","scriptLocation","callback","head","doc","getElementsByTagName","script","createElement","type","src","onload","onerror","script.onerror","console","error","appendChild","merge","win","nav","navigator","document","each","domurl","URL","webkitURL","isMSBrowser","test","userAgent","isEdgeBrowser","loadEventDeferDelay","CanVGRenderer","dataURLtoBlob","Highcharts.dataURLtoBlob","dataURL","atob","ArrayBuffer","Uint8Array","Blob","createObjectURL","parts","match","binStr","buf","length","binary","i","charCodeAt","blob","downloadURL","Highcharts.downloadURL","filename","a","windowRef","String","msSaveOrOpenBlob","undefined","download","href","body","click","removeChild","open","e","location","svgToDataUrl","Highcharts.svgToDataUrl","svg","webKit","indexOf","toLowerCase","encodeURIComponent","imageToDataUrl","Highcharts.imageToDataUrl","imageURL","imageType","callbackArgs","scale","successCallback","taintedCallback","noCanvasSupportCallback","failedLoadCallback","finallyCallback","img","Image","taintedHandler","loadHandler","setTimeout","canvas","ctx","getContext","height","width","drawImage","toDataURL","errorHandler","crossOrigin","downloadSVGLocal","Highcharts.downloadSVGLocal","options","failCallback","svgToPdf","svgElement","margin","pdf","jsPDF","baseVal","value","svg2pdf","removeInvalid","output","downloadPDF","dummySVGContainer","innerHTML","textElements","titleElements","svgElementStyle","style","el","property","split","splice","titleElement","svgData","firstChild","svgurl","objectURLRevoke","finallyHandler","libURL","getOptions","exporting","slice","MSBlobBuilder","append","getBlob","revokeObjectURL","imageWidth","imageHeight","downloadWithCanVG","drawSvg","msToBlob","canvg","Chart","prototype","getSVGForLocalExport","Highcharts.Chart.prototype.getSVGForLocalExport","chartOptions","chart","images","imagesEmbedded","chartCopyContainer","chartCopyOptions","l","embeddedSuccess","imageElement","setAttributeNS","sanitizeSVG","wrap","proceed","ret","apply","Array","call","arguments","container","cloneNode","getSVGForExport","getAttributeNS","exportChartLocal","Highcharts.Chart.prototype.exportChartLocal","exportingOptions","fallbackToExportServer","exportChart","SVGRenderer","inlineWhitelist","svgSuccess","menuItemDefinitions","downloadPNG","textKey","onclick","downloadJPEG","downloadSVG"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/offline-exporting.src.js
@@ -0,0 +1,591 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Client side exporting module
*
* (c) 2015 Torstein Honsi / Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(Highcharts) {
/**
* Client side exporting module
*
* (c) 2015 Torstein Honsi / Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
/*global MSBlobBuilder */
 
var merge = Highcharts.merge,
win = Highcharts.win,
nav = win.navigator,
doc = win.document,
each = Highcharts.each,
domurl = win.URL || win.webkitURL || win,
isMSBrowser = /Edge\/|Trident\/|MSIE /.test(nav.userAgent),
isEdgeBrowser = /Edge\/\d+/.test(nav.userAgent),
loadEventDeferDelay = isMSBrowser ? 150 : 0; // Milliseconds to defer image load event handlers to offset IE bug
 
// Dummy object so we can reuse our canvas-tools.js without errors
Highcharts.CanVGRenderer = {};
 
 
/**
* Downloads a script and executes a callback when done.
* @param {String} scriptLocation
* @param {Function} callback
*/
function getScript(scriptLocation, callback) {
var head = doc.getElementsByTagName('head')[0],
script = doc.createElement('script');
 
script.type = 'text/javascript';
script.src = scriptLocation;
script.onload = callback;
script.onerror = function() {
console.error('Error loading script', scriptLocation); // eslint-disable-line no-console
};
 
head.appendChild(script);
}
 
// Convert dataURL to Blob if supported, otherwise returns undefined
Highcharts.dataURLtoBlob = function(dataURL) {
if (
win.atob &&
win.ArrayBuffer &&
win.Uint8Array &&
win.Blob &&
domurl.createObjectURL
) {
// Try to convert data URL to Blob
var parts = dataURL.match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/),
binStr = win.atob(parts[3]), // Assume base64 encoding
buf = new win.ArrayBuffer(binStr.length),
binary = new win.Uint8Array(buf),
blob;
 
for (var i = 0; i < binary.length; ++i) {
binary[i] = binStr.charCodeAt(i);
}
 
blob = new win.Blob([binary], {
'type': parts[1]
});
return domurl.createObjectURL(blob);
}
};
 
// Download contents by dataURL/blob
Highcharts.downloadURL = function(dataURL, filename) {
var a = doc.createElement('a'),
windowRef;
 
// IE specific blob implementation
// Don't use for normal dataURLs
if (
typeof dataURL !== 'string' &&
!(dataURL instanceof String) &&
nav.msSaveOrOpenBlob
) {
nav.msSaveOrOpenBlob(dataURL, filename);
return;
}
 
// Some browsers have limitations for data URL lengths. Try to convert to
// Blob or fall back. Edge always needs that blob.
if (isEdgeBrowser || dataURL.length > 2000000) {
dataURL = Highcharts.dataURLtoBlob(dataURL);
if (!dataURL) {
throw 'Data URL length limit reached';
}
}
 
// Try HTML5 download attr if supported
if (a.download !== undefined) {
a.href = dataURL;
a.download = filename; // HTML5 download attribute
doc.body.appendChild(a);
a.click();
doc.body.removeChild(a);
} else {
// No download attr, just opening data URI
try {
windowRef = win.open(dataURL, 'chart');
if (windowRef === undefined || windowRef === null) {
throw 'Failed to open window';
}
} catch (e) {
// window.open failed, trying location.href
win.location.href = dataURL;
}
}
};
 
// Get blob URL from SVG code. Falls back to normal data URI.
Highcharts.svgToDataUrl = function(svg) {
var webKit = nav.userAgent.indexOf('WebKit') > -1 && nav.userAgent.indexOf('Chrome') < 0; // Webkit and not chrome
try {
// Safari requires data URI since it doesn't allow navigation to blob URLs
// Firefox has an issue with Blobs and internal references, leading to gradients not working using Blobs (#4550)
if (!webKit && nav.userAgent.toLowerCase().indexOf('firefox') < 0) {
return domurl.createObjectURL(new win.Blob([svg], {
type: 'image/svg+xml;charset-utf-16'
}));
}
} catch (e) {
// Ignore
}
return 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);
};
 
// Get data:URL from image URL
// Pass in callbacks to handle results. finallyCallback is always called at the end of the process. Supplying this callback is optional.
// All callbacks receive four arguments: imageURL, imageType, callbackArgs and scale. callbackArgs is used only by callbacks and can contain whatever.
Highcharts.imageToDataUrl = function(imageURL, imageType, callbackArgs, scale, successCallback, taintedCallback, noCanvasSupportCallback, failedLoadCallback, finallyCallback) {
var img = new win.Image(),
taintedHandler,
loadHandler = function() {
setTimeout(function() {
var canvas = doc.createElement('canvas'),
ctx = canvas.getContext && canvas.getContext('2d'),
dataURL;
try {
if (!ctx) {
noCanvasSupportCallback(imageURL, imageType, callbackArgs, scale);
} else {
canvas.height = img.height * scale;
canvas.width = img.width * scale;
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
 
// Now we try to get the contents of the canvas.
try {
dataURL = canvas.toDataURL(imageType);
successCallback(dataURL, imageType, callbackArgs, scale);
} catch (e) {
taintedHandler(imageURL, imageType, callbackArgs, scale);
}
}
} finally {
if (finallyCallback) {
finallyCallback(imageURL, imageType, callbackArgs, scale);
}
}
}, loadEventDeferDelay); // IE bug where image is not always ready despite calling load event.
},
// Image load failed (e.g. invalid URL)
errorHandler = function() {
failedLoadCallback(imageURL, imageType, callbackArgs, scale);
if (finallyCallback) {
finallyCallback(imageURL, imageType, callbackArgs, scale);
}
};
 
// This is called on load if the image drawing to canvas failed with a security error.
// We retry the drawing with crossOrigin set to Anonymous.
taintedHandler = function() {
img = new win.Image();
taintedHandler = taintedCallback;
img.crossOrigin = 'Anonymous'; // Must be set prior to loading image source
img.onload = loadHandler;
img.onerror = errorHandler;
img.src = imageURL;
};
 
img.onload = loadHandler;
img.onerror = errorHandler;
img.src = imageURL;
};
 
/**
* Get data URL to an image of an SVG and call download on it
*
* options object:
* filename: Name of resulting downloaded file without extension
* type: File type of resulting download
* scale: Scaling factor of downloaded image compared to source
* libURL: URL pointing to location of dependency scripts to download on demand
*/
Highcharts.downloadSVGLocal = function(svg, options, failCallback, successCallback) {
var svgurl,
blob,
objectURLRevoke = true,
finallyHandler,
libURL = options.libURL || Highcharts.getOptions().exporting.libURL,
dummySVGContainer = doc.createElement('div'),
imageType = options.type || 'image/png',
filename = (options.filename || 'chart') + '.' + (imageType === 'image/svg+xml' ? 'svg' : imageType.split('/')[1]),
scale = options.scale || 1;
 
libURL = libURL.slice(-1) !== '/' ? libURL + '/' : libURL; // Allow libURL to end with or without fordward slash
 
function svgToPdf(svgElement, margin) {
var width = svgElement.width.baseVal.value + 2 * margin,
height = svgElement.height.baseVal.value + 2 * margin,
pdf = new win.jsPDF('l', 'pt', [width, height]); // eslint-disable-line new-cap
 
win.svg2pdf(svgElement, pdf, {
removeInvalid: true
});
return pdf.output('datauristring');
}
 
function downloadPDF() {
dummySVGContainer.innerHTML = svg;
var textElements = dummySVGContainer.getElementsByTagName('text'),
titleElements,
svgData,
svgElementStyle = dummySVGContainer.getElementsByTagName('svg')[0].style;
// Workaround for the text styling. Making sure it does pick up the root element
each(textElements, function(el) {
// Workaround for the text styling. making sure it does pick up the root element
each(['font-family', 'font-size'], function(property) {
if (!el.style[property] && svgElementStyle[property]) {
el.style[property] = svgElementStyle[property];
}
});
el.style['font-family'] = el.style['font-family'] && el.style['font-family'].split(' ').splice(-1);
// Workaround for plotband with width, removing title from text nodes
titleElements = el.getElementsByTagName('title');
each(titleElements, function(titleElement) {
el.removeChild(titleElement);
});
});
svgData = svgToPdf(dummySVGContainer.firstChild, 0);
try {
Highcharts.downloadURL(svgData, filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
}
}
 
// Initiate download depending on file type
if (imageType === 'image/svg+xml') {
// SVG download. In this case, we want to use Microsoft specific Blob if available
try {
if (nav.msSaveOrOpenBlob) {
blob = new MSBlobBuilder();
blob.append(svg);
svgurl = blob.getBlob('image/svg+xml');
} else {
svgurl = Highcharts.svgToDataUrl(svg);
}
Highcharts.downloadURL(svgurl, filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
}
} else if (imageType === 'application/pdf') {
if (win.jsPDF && win.svg2pdf) {
downloadPDF();
} else {
// Must load pdf libraries first
objectURLRevoke = true; // Don't destroy the object URL yet since we are doing things asynchronously. A cleaner solution would be nice, but this will do for now.
getScript(libURL + 'jspdf.js', function() {
getScript(libURL + 'svg2pdf.js', function() {
downloadPDF();
});
});
}
} else {
// PNG/JPEG download - create bitmap from SVG
 
svgurl = Highcharts.svgToDataUrl(svg);
finallyHandler = function() {
try {
domurl.revokeObjectURL(svgurl);
} catch (e) {
// Ignore
}
};
// First, try to get PNG by rendering on canvas
Highcharts.imageToDataUrl(svgurl, imageType, { /* args */ }, scale, function(imageURL) {
// Success
try {
Highcharts.downloadURL(imageURL, filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
}
}, function() {
// Failed due to tainted canvas
// Create new and untainted canvas
var canvas = doc.createElement('canvas'),
ctx = canvas.getContext('2d'),
imageWidth = svg.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale,
imageHeight = svg.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1] * scale,
downloadWithCanVG = function() {
ctx.drawSvg(svg, 0, 0, imageWidth, imageHeight);
try {
Highcharts.downloadURL(nav.msSaveOrOpenBlob ? canvas.msToBlob() : canvas.toDataURL(imageType), filename);
if (successCallback) {
successCallback();
}
} catch (e) {
failCallback();
} finally {
finallyHandler();
}
};
 
canvas.width = imageWidth;
canvas.height = imageHeight;
if (win.canvg) {
// Use preloaded canvg
downloadWithCanVG();
} else {
// Must load canVG first
objectURLRevoke = true; // Don't destroy the object URL yet since we are doing things asynchronously. A cleaner solution would be nice, but this will do for now.
getScript(libURL + 'rgbcolor.js', function() { // Get RGBColor.js first
getScript(libURL + 'canvg.js', function() {
downloadWithCanVG();
});
});
}
},
// No canvas support
failCallback,
// Failed to load image
failCallback,
// Finally
function() {
if (objectURLRevoke) {
finallyHandler();
}
});
}
};
 
// Get SVG of chart prepared for client side export. This converts embedded images in the SVG to data URIs.
// The options and chartOptions arguments are passed to the getSVGForExport function.
Highcharts.Chart.prototype.getSVGForLocalExport = function(options, chartOptions, failCallback, successCallback) {
var chart = this,
images,
imagesEmbedded = 0,
chartCopyContainer,
chartCopyOptions,
el,
i,
l,
// After grabbing the SVG of the chart's copy container we need to do sanitation on the SVG
sanitize = function(svg) {
return chart.sanitizeSVG(svg, chartCopyOptions);
},
// Success handler, we converted image to base64!
embeddedSuccess = function(imageURL, imageType, callbackArgs) {
++imagesEmbedded;
 
// Change image href in chart copy
callbackArgs.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageURL);
 
// When done with last image we have our SVG
if (imagesEmbedded === images.length) {
successCallback(sanitize(chartCopyContainer.innerHTML));
}
};
 
// Hook into getSVG to get a copy of the chart copy's container
Highcharts.wrap(
Highcharts.Chart.prototype,
'getChartHTML',
function(proceed) {
var ret = proceed.apply(
this,
Array.prototype.slice.call(arguments, 1)
);
chartCopyOptions = this.options;
chartCopyContainer = this.container.cloneNode(true);
return ret;
}
);
 
// Trigger hook to get chart copy
chart.getSVGForExport(options, chartOptions);
images = chartCopyContainer.getElementsByTagName('image');
 
try {
// If there are no images to embed, the SVG is okay now.
if (!images.length) {
successCallback(sanitize(chartCopyContainer.innerHTML)); // Use SVG of chart copy
return;
}
 
// Go through the images we want to embed
for (i = 0, l = images.length; i < l; ++i) {
el = images[i];
Highcharts.imageToDataUrl(el.getAttributeNS('http://www.w3.org/1999/xlink', 'href'), 'image/png', {
imageElement: el
}, options.scale,
embeddedSuccess,
// Tainted canvas
failCallback,
// No canvas support
failCallback,
// Failed to load source
failCallback
);
}
} catch (e) {
failCallback();
}
};
 
/**
* Exporting and offline-exporting modules required. Export a chart to an image
* locally in the user's browser.
*
* @param {Object} exportingOptions
* Exporting options, the same as in {@link
* Highcharts.Chart#exportChart}.
* @param {Options} chartOptions
* Additional chart options for the exported chart. For example a
* different background color can be added here, or `dataLabels`
* for export only.
*/
Highcharts.Chart.prototype.exportChartLocal = function(exportingOptions, chartOptions) {
var chart = this,
options = Highcharts.merge(chart.options.exporting, exportingOptions),
fallbackToExportServer = function() {
if (options.fallbackToExportServer === false) {
if (options.error) {
options.error(options);
} else {
throw 'Fallback to export server disabled';
}
} else {
chart.exportChart(options);
}
},
svgSuccess = function(svg) {
// If SVG contains foreignObjects all exports except SVG will fail,
// as both CanVG and svg2pdf choke on this. Gracefully fall back.
if (
svg.indexOf('<foreignObject') > -1 &&
options.type !== 'image/svg+xml'
) {
fallbackToExportServer();
} else {
Highcharts.downloadSVGLocal(svg, options, fallbackToExportServer);
}
};
 
// If we are on IE and in styled mode, add a whitelist to the renderer
// for inline styles that we want to pass through. There are so many
// styles by default in IE that we don't want to blacklist them all.
 
if (isMSBrowser) {
Highcharts.SVGRenderer.prototype.inlineWhitelist = [
/^blockSize/,
/^border/,
/^caretColor/,
/^color/,
/^columnRule/,
/^columnRuleColor/,
/^cssFloat/,
/^cursor/,
/^fill$/,
/^fillOpacity/,
/^font/,
/^inlineSize/,
/^length/,
/^lineHeight/,
/^opacity/,
/^outline/,
/^parentRule/,
/^rx$/,
/^ry$/,
/^stroke/,
/^textAlign/,
/^textAnchor/,
/^textDecoration/,
/^transform/,
/^vectorEffect/,
/^visibility/,
/^x$/,
/^y$/
];
}
 
 
// Always fall back on:
// - MS browsers: Embedded images JPEG/PNG, or any PDF
// - Embedded images and PDF
if (
(
isMSBrowser &&
(
options.type === 'application/pdf' ||
chart.container.getElementsByTagName('image').length &&
options.type !== 'image/svg+xml'
)
) || (
options.type === 'application/pdf' &&
chart.container.getElementsByTagName('image').length
)
) {
fallbackToExportServer();
return;
}
 
chart.getSVGForLocalExport(options, chartOptions, fallbackToExportServer, svgSuccess);
};
 
// Extend the default options to use the local exporter logic
merge(true, Highcharts.getOptions().exporting, {
libURL: 'https://code.highcharts.com/5.0.14/lib/',
 
// When offline-exporting is loaded, redefine the menu item definitions
// related to download.
menuItemDefinitions: {
downloadPNG: {
textKey: 'downloadPNG',
onclick: function() {
this.exportChartLocal();
}
},
downloadJPEG: {
textKey: 'downloadJPEG',
onclick: function() {
this.exportChartLocal({
type: 'image/jpeg'
});
}
},
downloadSVG: {
textKey: 'downloadSVG',
onclick: function() {
this.exportChartLocal({
type: 'image/svg+xml'
});
}
},
downloadPDF: {
textKey: 'downloadPDF',
onclick: function() {
this.exportChartLocal({
type: 'application/pdf'
});
}
}
 
}
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/overlapping-datalabels.js
@@ -0,0 +1,11 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(d){"object"===typeof module&&module.exports?module.exports=d:d(Highcharts)})(function(d){(function(g){var d=g.Chart,h=g.each,l=g.objectEach,q=g.pick,r=g.addEvent;d.prototype.callbacks.push(function(f){function d(){var c=[];h(f.yAxis||[],function(b){b.options.stackLabels&&!b.options.stackLabels.allowOverlap&&l(b.stacks,function(a){l(a,function(a){c.push(a.label)})})});h(f.series||[],function(b){var a=b.options.dataLabels,e=b.dataLabelCollections||["dataLabel"];(a.enabled||b._hasPointLabels)&&
!a.allowOverlap&&b.visible&&h(e,function(a){h(b.points,function(b){b[a]&&(b[a].labelrank=q(b.labelrank,b.shapeArgs&&b.shapeArgs.height),c.push(b[a]))})})});f.hideOverlappingLabels(c)}d();r(f,"redraw",d)});d.prototype.hideOverlappingLabels=function(f){var d=f.length,c,b,a,e,g,m,n,p,k,l=function(a,b,c,d,e,f,g,h){return!(e>a+c||e+g<a||f>b+d||f+h<b)};for(b=0;b<d;b++)if(c=f[b])c.oldOpacity=c.opacity,c.newOpacity=1,c.width||(a=c.getBBox(),c.width=a.width,c.height=a.height);f.sort(function(a,b){return(b.labelrank||
0)-(a.labelrank||0)});for(b=0;b<d;b++)for(a=f[b],c=b+1;c<d;++c)if(e=f[c],a&&e&&a!==e&&a.placed&&e.placed&&0!==a.newOpacity&&0!==e.newOpacity&&(g=a.alignAttr,m=e.alignAttr,n=a.parentGroup,p=e.parentGroup,k=2*(a.box?0:a.padding||0),g=l(g.x+n.translateX,g.y+n.translateY,a.width-k,a.height-k,m.x+p.translateX,m.y+p.translateY,e.width-k,e.height-k)))(a.labelrank<e.labelrank?a:e).newOpacity=0;h(f,function(a){var b,c;a&&(c=a.newOpacity,a.oldOpacity!==c&&a.placed&&(c?a.show(!0):b=function(){a.hide()},a.alignAttr.opacity=
c,a[a.isOld?"animate":"attr"](a.alignAttr,null,b)),a.isOld=!0)})}})(d)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/overlapping-datalabels.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":11,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Chart","each","objectEach","pick","addEvent","prototype","callbacks","push","chart","collectAndHide","labels","yAxis","options","stackLabels","allowOverlap","stacks","stack","stackItem","label","series","dlOptions","dataLabels","collections","dataLabelCollections","enabled","_hasPointLabels","visible","coll","points","point","labelrank","shapeArgs","height","hideOverlappingLabels","Chart.prototype.hideOverlappingLabels","len","length","i","label1","label2","isIntersecting","pos2","parent1","parent2","padding","intersectRect","x1","y1","w1","h1","x2","y2","w2","h2","oldOpacity","opacity","newOpacity","width","bBox","getBBox","sort","a","b","j","placed","pos1","alignAttr","parentGroup","box","x","translateX","y","translateY","complete","show","hide","isOld"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/overlapping-datalabels.src.js
@@ -0,0 +1,210 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/**
* Highcharts module to hide overlapping data labels. This module is included in
* Highcharts.
*/
var Chart = H.Chart,
each = H.each,
objectEach = H.objectEach,
pick = H.pick,
addEvent = H.addEvent;
 
// Collect potensial overlapping data labels. Stack labels probably don't need
// to be considered because they are usually accompanied by data labels that lie
// inside the columns.
Chart.prototype.callbacks.push(function(chart) {
function collectAndHide() {
var labels = [];
 
each(chart.yAxis || [], function(yAxis) {
if (
yAxis.options.stackLabels &&
!yAxis.options.stackLabels.allowOverlap
) {
objectEach(yAxis.stacks, function(stack) {
objectEach(stack, function(stackItem) {
labels.push(stackItem.label);
});
});
}
});
 
each(chart.series || [], function(series) {
var dlOptions = series.options.dataLabels,
// Range series have two collections
collections = series.dataLabelCollections || ['dataLabel'];
 
if (
(dlOptions.enabled || series._hasPointLabels) &&
!dlOptions.allowOverlap &&
series.visible
) { // #3866
each(collections, function(coll) {
each(series.points, function(point) {
if (point[coll]) {
point[coll].labelrank = pick(
point.labelrank,
point.shapeArgs && point.shapeArgs.height
); // #4118
labels.push(point[coll]);
}
});
});
}
});
chart.hideOverlappingLabels(labels);
}
 
// Do it now ...
collectAndHide();
 
// ... and after each chart redraw
addEvent(chart, 'redraw', collectAndHide);
 
});
 
/**
* Hide overlapping labels. Labels are moved and faded in and out on zoom to
* provide a smooth visual imression.
*/
Chart.prototype.hideOverlappingLabels = function(labels) {
 
var len = labels.length,
label,
i,
j,
label1,
label2,
isIntersecting,
pos1,
pos2,
parent1,
parent2,
padding,
bBox,
intersectRect = function(x1, y1, w1, h1, x2, y2, w2, h2) {
return !(
x2 > x1 + w1 ||
x2 + w2 < x1 ||
y2 > y1 + h1 ||
y2 + h2 < y1
);
};
 
for (i = 0; i < len; i++) {
label = labels[i];
if (label) {
 
// Mark with initial opacity
label.oldOpacity = label.opacity;
label.newOpacity = 1;
 
// Get width and height if pure text nodes (stack labels)
if (!label.width) {
bBox = label.getBBox();
label.width = bBox.width;
label.height = bBox.height;
}
}
}
 
// Prevent a situation in a gradually rising slope, that each label will
// hide the previous one because the previous one always has lower rank.
labels.sort(function(a, b) {
return (b.labelrank || 0) - (a.labelrank || 0);
});
 
// Detect overlapping labels
for (i = 0; i < len; i++) {
label1 = labels[i];
 
for (j = i + 1; j < len; ++j) {
label2 = labels[j];
if (
label1 && label2 &&
label1 !== label2 && // #6465, polar chart with connectEnds
label1.placed && label2.placed &&
label1.newOpacity !== 0 && label2.newOpacity !== 0
) {
pos1 = label1.alignAttr;
pos2 = label2.alignAttr;
// Different panes have different positions
parent1 = label1.parentGroup;
parent2 = label2.parentGroup;
// Substract the padding if no background or border (#4333)
padding = 2 * (label1.box ? 0 : (label1.padding || 0));
isIntersecting = intersectRect(
pos1.x + parent1.translateX,
pos1.y + parent1.translateY,
label1.width - padding,
label1.height - padding,
pos2.x + parent2.translateX,
pos2.y + parent2.translateY,
label2.width - padding,
label2.height - padding
);
 
if (isIntersecting) {
(label1.labelrank < label2.labelrank ? label1 : label2)
.newOpacity = 0;
}
}
}
}
 
// Hide or show
each(labels, function(label) {
var complete,
newOpacity;
 
if (label) {
newOpacity = label.newOpacity;
 
if (label.oldOpacity !== newOpacity && label.placed) {
 
// Make sure the label is completely hidden to avoid catching
// clicks (#4362)
if (newOpacity) {
label.show(true);
} else {
complete = function() {
label.hide();
};
}
 
// Animate or set the opacity
label.alignAttr.opacity = newOpacity;
label[label.isOld ? 'animate' : 'attr'](
label.alignAttr,
null,
complete
);
 
}
label.isOld = true;
}
});
};
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/series-label.js
@@ -0,0 +1,19 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
 
(c) 2009-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(u){"object"===typeof module&&module.exports?module.exports=u:u(Highcharts)})(function(u){(function(q){function u(f,b,a,m,c,e){f=(e-b)*(a-f)-(m-b)*(c-f);return 0<f?!0:0>f?!1:!0}function v(f,b,a,m,c,e,d,l){return u(f,b,c,e,d,l)!==u(a,m,c,e,d,l)&&u(f,b,a,m,c,e)!==u(f,b,a,m,d,l)}function z(f,b,a,m,c,e,d,l){return v(f,b,f+a,b,c,e,d,l)||v(f+a,b,f+a,b+m,c,e,d,l)||v(f,b+m,f+a,b+m,c,e,d,l)||v(f,b,f,b+m,c,e,d,l)}function A(f){var b=this,a=Math.max(q.animObject(b.renderer.globalAnimation).duration,
250),m=!b.hasRendered;f.apply(b,[].slice.call(arguments,1));b.labelSeries=[];clearTimeout(b.seriesLabelTimer);w(b.series,function(c){var e=c.labelBySeries,d=e&&e.closest;c.options.label.enabled&&c.visible&&(c.graph||c.area)&&(b.labelSeries.push(c),m&&(a=Math.max(a,q.animObject(c.options.animation).duration)),d&&(void 0!==d[0].plotX?e.animate({x:d[0].plotX+d[1],y:d[0].plotY+d[2]}):e.attr({opacity:0})))});b.seriesLabelTimer=setTimeout(function(){b.drawSeriesLabels()},a)}var B=q.wrap,w=q.each,D=q.extend,
x=q.isNumber,C=q.Series,E=q.SVGRenderer,y=q.Chart;q.setOptions({plotOptions:{series:{label:{enabled:!0,connectorAllowed:!0,connectorNeighbourDistance:24,styles:{fontWeight:"bold"}}}}});E.prototype.symbols.connector=function(f,b,a,m,c){var e=c&&c.anchorX;c=c&&c.anchorY;var d,l,h=a/2;x(e)&&x(c)&&(d=["M",e,c],l=b-c,0>l&&(l=-m-l),l<a&&(h=e<f+a/2?l:a-l),c>b+m?d.push("L",f+h,b+m):c<b?d.push("L",f+h,b):e<f?d.push("L",f,b+m/2):e>f+a&&d.push("L",f+a,b+m/2));return d||[]};C.prototype.getPointsOnGraph=function(){var f=
this.points,b,a,m=[],c,e,d,l;e=this.graph||this.area;d=e.element;var h=(b=this.chart.inverted)?this.yAxis.pos:this.xAxis.pos,n=b?this.xAxis.pos:this.yAxis.pos;if(this.getPointSpline&&d.getPointAtLength){e.toD&&(a=e.attr("d"),e.attr({d:e.toD}));l=d.getTotalLength();for(c=0;c<l;c+=16)b=d.getPointAtLength(c),m.push({chartX:h+b.x,chartY:n+b.y,plotX:b.x,plotY:b.y});a&&e.attr({d:a});b=f[f.length-1];b.chartX=h+b.plotX;b.chartY=n+b.plotY;m.push(b)}else for(l=f.length,c=0;c<l;c+=1){b=f[c];a=f[c-1];b.chartX=
h+b.plotX;b.chartY=n+b.plotY;if(0<c&&(e=Math.abs(b.chartX-a.chartX),d=Math.abs(b.chartY-a.chartY),e=Math.max(e,d),16<e))for(e=Math.ceil(e/16),d=1;d<e;d+=1)m.push({chartX:a.chartX+d/e*(b.chartX-a.chartX),chartY:a.chartY+d/e*(b.chartY-a.chartY),plotX:a.plotX+d/e*(b.plotX-a.plotX),plotY:a.plotY+d/e*(b.plotY-a.plotY)});x(b.plotY)&&m.push(b)}return m};C.prototype.checkClearPoint=function(f,b,a,m){var c=Number.MAX_VALUE,e=Number.MAX_VALUE,d,l,h=this.options.label.connectorAllowed,n=this.chart,p,g,r,k;for(r=
0;r<n.boxesToAvoid.length;r+=1){g=n.boxesToAvoid[r];k=f+a.width;p=b;var q=b+a.height;if(!(f>g.right||k<g.left||p>g.bottom||q<g.top))return!1}for(r=0;r<n.series.length;r+=1)if(p=n.series[r],g=p.interpolatedPoints,p.visible&&g){for(k=1;k<g.length;k+=1){if(z(f,b,a.width,a.height,g[k-1].chartX,g[k-1].chartY,g[k].chartX,g[k].chartY))return!1;this===p&&!d&&m&&(d=z(f-16,b-16,a.width+32,a.height+32,g[k-1].chartX,g[k-1].chartY,g[k].chartX,g[k].chartY));this!==p&&(c=Math.min(c,Math.pow(f+a.width/2-g[k].chartX,
2)+Math.pow(b+a.height/2-g[k].chartY,2),Math.pow(f-g[k].chartX,2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2),Math.pow(f-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2)))}if(h&&this===p&&(m&&!d||c<Math.pow(this.options.label.connectorNeighbourDistance,2))){for(k=1;k<g.length;k+=1)d=Math.min(Math.pow(f+a.width/2-g[k].chartX,2)+Math.pow(b+a.height/2-g[k].chartY,2),Math.pow(f-g[k].chartX,
2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b-g[k].chartY,2),Math.pow(f+a.width-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2),Math.pow(f-g[k].chartX,2)+Math.pow(b+a.height-g[k].chartY,2)),d<e&&(e=d,l=g[k]);d=!0}}return!m||d?{x:f,y:b,weight:c-(l?e:0),connectorPoint:l}:!1};y.prototype.drawSeriesLabels=function(){var f=this,b=this.labelSeries;f.boxesToAvoid=[];w(b,function(a){a.interpolatedPoints=a.getPointsOnGraph();w(a.options.label.boxesToAvoid||[],function(a){f.boxesToAvoid.push(a)})});
w(f.series,function(a){function b(a,b,c){return a>g&&a<=g+k-c.width&&b>=r&&b<=r+q-c.height}var c,e,d,l=[],h,n,p=f.inverted,g=p?a.yAxis.pos:a.xAxis.pos,r=p?a.xAxis.pos:a.yAxis.pos,k=f.inverted?a.yAxis.len:a.xAxis.len,q=f.inverted?a.xAxis.len:a.yAxis.len,t=a.interpolatedPoints,p=a.labelBySeries;if(a.visible&&t){p||(a.labelBySeries=p=f.renderer.label(a.name,0,-9999,"connector").css(D({color:a.color},a.options.label.styles)).attr({padding:0,opacity:0,stroke:a.color,"stroke-width":1}).add(a.group).animate({opacity:1},
{duration:200}));c=p.getBBox();c.width=Math.round(c.width);for(n=t.length-1;0<n;--n)e=t[n].chartX+3,d=t[n].chartY-c.height-3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h),e=t[n].chartX+3,d=t[n].chartY+3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h),e=t[n].chartX-c.width-3,d=t[n].chartY+3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h),e=t[n].chartX-c.width-3,d=t[n].chartY-c.height-3,b(e,d,c)&&(h=a.checkClearPoint(e,d,c)),h&&l.push(h);if(!l.length)for(e=g+k-c.width;e>=g;e-=16)for(d=
r;d<r+q-c.height;d+=16)(h=a.checkClearPoint(e,d,c,!0))&&l.push(h);if(l.length){if(l.sort(function(a,b){return b.weight-a.weight}),h=l[0],f.boxesToAvoid.push({left:h.x,right:h.x+c.width,top:h.y,bottom:h.y+c.height}),Math.round(h.x)!==Math.round(p.x)||Math.round(h.y)!==Math.round(p.y))a.labelBySeries.attr({opacity:0,x:h.x-g,y:h.y-r,anchorX:h.connectorPoint&&h.connectorPoint.plotX,anchorY:h.connectorPoint&&h.connectorPoint.plotY}).animate({opacity:1}),a.options.kdNow=!0,a.buildKDTree(),a=a.searchPoint({chartX:h.x,
chartY:h.y},!0),p.closest=[a,h.x-g-a.plotX,h.y-r-a.plotY]}else p&&(a.labelBySeries=p.destroy())}})};B(y.prototype,"render",A);B(y.prototype,"redraw",A)})(u)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/series-label.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":19,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","ccw","x1","y1","x2","y2","x3","y3","cw","intersectLine","x4","y4","boxIntersectLine","x","y","w","h","drawLabels","proceed","chart","delay","Math","max","animObject","renderer","globalAnimation","duration","initial","hasRendered","apply","slice","call","arguments","labelSeries","clearTimeout","seriesLabelTimer","each","series","label","labelBySeries","closest","options","enabled","visible","graph","area","push","animation","undefined","plotX","animate","plotY","attr","opacity","setTimeout","drawSeriesLabels","wrap","extend","isNumber","Series","SVGRenderer","Chart","setOptions","plotOptions","connectorAllowed","connectorNeighbourDistance","styles","fontWeight","prototype","symbols","connector","SVGRenderer.prototype.symbols.connector","anchorX","anchorY","path","yOffset","lateral","getPointsOnGraph","Series.prototype.getPointsOnGraph","points","point","last","interpolated","i","deltaX","deltaY","len","node","element","paneLeft","inverted","yAxis","pos","xAxis","paneTop","getPointSpline","getPointAtLength","toD","d","getTotalLength","distance","chartX","chartY","length","abs","delta","n","ceil","j","checkClearPoint","Series.prototype.checkClearPoint","bBox","checkDistance","distToOthersSquared","Number","MAX_VALUE","distToPointSquared","dist","connectorPoint","connectorEnabled","boxesToAvoid","width","height","r1","right","left","top","bottom","interpolatedPoints","withinRange","leastDistance","min","pow","weight","Chart.prototype.drawSeriesLabels","box","insidePane","paneWidth","paneHeight","results","clearPoint","name","css","color","padding","stroke","add","group","getBBox","round","labelDistance","best","sort","a","b","kdNow","buildKDTree","searchPoint","destroy"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/series-label.src.js
@@ -0,0 +1,624 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
*
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/**
* EXPERIMENTAL Highcharts module to place labels next to a series in a natural position.
*
* TODO:
* - add column support (box collision detection, boxesToAvoid logic)
* - other series types, area etc.
* - avoid data labels, when data labels above, show series label below.
* - add more options (connector, format, formatter)
*
* http://jsfiddle.net/highcharts/L2u9rpwr/
* http://jsfiddle.net/highcharts/y5A37/
* http://jsfiddle.net/highcharts/264Nm/
* http://jsfiddle.net/highcharts/y5A37/
*/
 
 
var labelDistance = 3,
wrap = H.wrap,
each = H.each,
extend = H.extend,
isNumber = H.isNumber,
Series = H.Series,
SVGRenderer = H.SVGRenderer,
Chart = H.Chart;
 
H.setOptions({
plotOptions: {
series: {
 
/**
*/
label: {
 
/**
*/
enabled: true,
// Allow labels to be placed distant to the graph if necessary, and
// draw a connector line to the graph
 
/**
*/
connectorAllowed: true,
 
/**
*/
connectorNeighbourDistance: 24, // If the label is closer than this to a neighbour graph, draw a connector
 
/**
*/
styles: {
 
/**
*/
fontWeight: 'bold'
}
// boxesToAvoid: []
}
}
}
});
 
/**
* Counter-clockwise, part of the fast line intersection logic
*/
function ccw(x1, y1, x2, y2, x3, y3) {
var cw = ((y3 - y1) * (x2 - x1)) - ((y2 - y1) * (x3 - x1));
return cw > 0 ? true : cw < 0 ? false : true;
}
 
/**
* Detect if two lines intersect
*/
function intersectLine(x1, y1, x2, y2, x3, y3, x4, y4) {
return ccw(x1, y1, x3, y3, x4, y4) !== ccw(x2, y2, x3, y3, x4, y4) &&
ccw(x1, y1, x2, y2, x3, y3) !== ccw(x1, y1, x2, y2, x4, y4);
}
 
/**
* Detect if a box intersects with a line
*/
function boxIntersectLine(x, y, w, h, x1, y1, x2, y2) {
return (
intersectLine(x, y, x + w, y, x1, y1, x2, y2) || // top of label
intersectLine(x + w, y, x + w, y + h, x1, y1, x2, y2) || // right of label
intersectLine(x, y + h, x + w, y + h, x1, y1, x2, y2) || // bottom of label
intersectLine(x, y, x, y + h, x1, y1, x2, y2) // left of label
);
}
 
/**
* General symbol definition for labels with connector
*/
SVGRenderer.prototype.symbols.connector = function(x, y, w, h, options) {
var anchorX = options && options.anchorX,
anchorY = options && options.anchorY,
path,
yOffset,
lateral = w / 2;
 
if (isNumber(anchorX) && isNumber(anchorY)) {
 
path = ['M', anchorX, anchorY];
 
// Prefer 45 deg connectors
yOffset = y - anchorY;
if (yOffset < 0) {
yOffset = -h - yOffset;
}
if (yOffset < w) {
lateral = anchorX < x + (w / 2) ? yOffset : w - yOffset;
}
 
// Anchor below label
if (anchorY > y + h) {
path.push('L', x + lateral, y + h);
 
// Anchor above label
} else if (anchorY < y) {
path.push('L', x + lateral, y);
 
// Anchor left of label
} else if (anchorX < x) {
path.push('L', x, y + h / 2);
 
// Anchor right of label
} else if (anchorX > x + w) {
path.push('L', x + w, y + h / 2);
}
}
return path || [];
};
 
/**
* Points to avoid. In addition to actual data points, the label should avoid
* interpolated positions.
*/
Series.prototype.getPointsOnGraph = function() {
var distance = 16,
points = this.points,
point,
last,
interpolated = [],
i,
deltaX,
deltaY,
delta,
len,
n,
j,
d,
graph = this.graph || this.area,
node = graph.element,
inverted = this.chart.inverted,
paneLeft = inverted ? this.yAxis.pos : this.xAxis.pos,
paneTop = inverted ? this.xAxis.pos : this.yAxis.pos;
 
// For splines, get the point at length (possible caveat: peaks are not correctly detected)
if (this.getPointSpline && node.getPointAtLength) {
// If it is animating towards a path definition, use that briefly, and reset
if (graph.toD) {
d = graph.attr('d');
graph.attr({
d: graph.toD
});
}
len = node.getTotalLength();
for (i = 0; i < len; i += distance) {
point = node.getPointAtLength(i);
interpolated.push({
chartX: paneLeft + point.x,
chartY: paneTop + point.y,
plotX: point.x,
plotY: point.y
});
}
if (d) {
graph.attr({
d: d
});
}
// Last point
point = points[points.length - 1];
point.chartX = paneLeft + point.plotX;
point.chartY = paneTop + point.plotY;
interpolated.push(point);
 
// Interpolate
} else {
len = points.length;
for (i = 0; i < len; i += 1) {
 
point = points[i];
last = points[i - 1];
 
// Absolute coordinates so we can compare different panes
point.chartX = paneLeft + point.plotX;
point.chartY = paneTop + point.plotY;
 
// Add interpolated points
if (i > 0) {
deltaX = Math.abs(point.chartX - last.chartX);
deltaY = Math.abs(point.chartY - last.chartY);
delta = Math.max(deltaX, deltaY);
if (delta > distance) {
 
n = Math.ceil(delta / distance);
 
for (j = 1; j < n; j += 1) {
interpolated.push({
chartX: last.chartX + (point.chartX - last.chartX) * (j / n),
chartY: last.chartY + (point.chartY - last.chartY) * (j / n),
plotX: last.plotX + (point.plotX - last.plotX) * (j / n),
plotY: last.plotY + (point.plotY - last.plotY) * (j / n)
});
}
}
}
 
// Add the real point in order to find positive and negative peaks
if (isNumber(point.plotY)) {
interpolated.push(point);
}
}
}
return interpolated;
};
 
/**
* Check whether a proposed label position is clear of other elements
*/
Series.prototype.checkClearPoint = function(x, y, bBox, checkDistance) {
var distToOthersSquared = Number.MAX_VALUE, // distance to other graphs
distToPointSquared = Number.MAX_VALUE,
dist,
connectorPoint,
connectorEnabled = this.options.label.connectorAllowed,
 
chart = this.chart,
series,
points,
leastDistance = 16,
withinRange,
i,
j;
 
function intersectRect(r1, r2) {
return !(r2.left > r1.right ||
r2.right < r1.left ||
r2.top > r1.bottom ||
r2.bottom < r1.top);
}
 
/**
* Get the weight in order to determine the ideal position. Larger distance to
* other series gives more weight. Smaller distance to the actual point (connector points only)
* gives more weight.
*/
function getWeight(distToOthersSquared, distToPointSquared) {
return distToOthersSquared - distToPointSquared;
}
 
// First check for collision with existing labels
for (i = 0; i < chart.boxesToAvoid.length; i += 1) {
if (intersectRect(chart.boxesToAvoid[i], {
left: x,
right: x + bBox.width,
top: y,
bottom: y + bBox.height
})) {
return false;
}
}
 
// For each position, check if the lines around the label intersect with any of the
// graphs
for (i = 0; i < chart.series.length; i += 1) {
series = chart.series[i];
points = series.interpolatedPoints;
if (series.visible && points) {
for (j = 1; j < points.length; j += 1) {
// If any of the box sides intersect with the line, return
if (boxIntersectLine(
x,
y,
bBox.width,
bBox.height,
points[j - 1].chartX,
points[j - 1].chartY,
points[j].chartX,
points[j].chartY
)) {
return false;
}
 
// But if it is too far away (a padded box doesn't intersect), also return
if (this === series && !withinRange && checkDistance) {
withinRange = boxIntersectLine(
x - leastDistance,
y - leastDistance,
bBox.width + 2 * leastDistance,
bBox.height + 2 * leastDistance,
points[j - 1].chartX,
points[j - 1].chartY,
points[j].chartX,
points[j].chartY
);
}
 
// Find the squared distance from the center of the label
if (this !== series) {
distToOthersSquared = Math.min(
distToOthersSquared,
Math.pow(x + bBox.width / 2 - points[j].chartX, 2) + Math.pow(y + bBox.height / 2 - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2)
);
}
}
 
// Do we need a connector?
if (connectorEnabled && this === series && ((checkDistance && !withinRange) ||
distToOthersSquared < Math.pow(this.options.label.connectorNeighbourDistance, 2))) {
for (j = 1; j < points.length; j += 1) {
dist = Math.min(
Math.pow(x + bBox.width / 2 - points[j].chartX, 2) + Math.pow(y + bBox.height / 2 - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y - points[j].chartY, 2),
Math.pow(x + bBox.width - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2),
Math.pow(x - points[j].chartX, 2) + Math.pow(y + bBox.height - points[j].chartY, 2)
);
if (dist < distToPointSquared) {
distToPointSquared = dist;
connectorPoint = points[j];
}
}
withinRange = true;
}
}
}
 
return !checkDistance || withinRange ? {
x: x,
y: y,
weight: getWeight(distToOthersSquared, connectorPoint ? distToPointSquared : 0),
connectorPoint: connectorPoint
} : false;
 
};
 
/**
* The main initiator method that runs on chart level after initiation and redraw. It runs in
* a timeout to prevent locking, and loops over all series, taking all series and labels into
* account when placing the labels.
*/
Chart.prototype.drawSeriesLabels = function() {
var chart = this,
labelSeries = this.labelSeries;
 
chart.boxesToAvoid = [];
 
// Build the interpolated points
each(labelSeries, function(series) {
series.interpolatedPoints = series.getPointsOnGraph();
 
each(series.options.label.boxesToAvoid || [], function(box) {
chart.boxesToAvoid.push(box);
});
});
 
each(chart.series, function(series) {
var bBox,
x,
y,
results = [],
clearPoint,
i,
best,
inverted = chart.inverted,
paneLeft = inverted ? series.yAxis.pos : series.xAxis.pos,
paneTop = inverted ? series.xAxis.pos : series.yAxis.pos,
paneWidth = chart.inverted ? series.yAxis.len : series.xAxis.len,
paneHeight = chart.inverted ? series.xAxis.len : series.yAxis.len,
points = series.interpolatedPoints,
label = series.labelBySeries;
 
function insidePane(x, y, bBox) {
return x > paneLeft && x <= paneLeft + paneWidth - bBox.width &&
y >= paneTop && y <= paneTop + paneHeight - bBox.height;
}
 
if (series.visible && points) {
if (!label) {
series.labelBySeries = label = chart.renderer
.label(series.name, 0, -9999, 'connector')
.css(extend({
color: series.color
}, series.options.label.styles))
.attr({
padding: 0,
opacity: 0,
stroke: series.color,
'stroke-width': 1
})
.add(series.group)
.animate({
opacity: 1
}, {
duration: 200
});
}
 
bBox = label.getBBox();
bBox.width = Math.round(bBox.width);
 
// Ideal positions are centered above or below a point on right side
// of chart
for (i = points.length - 1; i > 0; i -= 1) {
 
// Right - up
x = points[i].chartX + labelDistance;
y = points[i].chartY - bBox.height - labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
// Right - down
x = points[i].chartX + labelDistance;
y = points[i].chartY + labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
// Left - down
x = points[i].chartX - bBox.width - labelDistance;
y = points[i].chartY + labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
// Left - up
x = points[i].chartX - bBox.width - labelDistance;
y = points[i].chartY - bBox.height - labelDistance;
if (insidePane(x, y, bBox)) {
best = series.checkClearPoint(
x,
y,
bBox
);
}
if (best) {
results.push(best);
}
 
}
 
// Brute force, try all positions on the chart in a 16x16 grid
if (!results.length) {
for (x = paneLeft + paneWidth - bBox.width; x >= paneLeft; x -= 16) {
for (y = paneTop; y < paneTop + paneHeight - bBox.height; y += 16) {
clearPoint = series.checkClearPoint(x, y, bBox, true);
if (clearPoint) {
results.push(clearPoint);
}
}
}
}
 
if (results.length) {
 
results.sort(function(a, b) {
return b.weight - a.weight;
});
 
best = results[0];
 
chart.boxesToAvoid.push({
left: best.x,
right: best.x + bBox.width,
top: best.y,
bottom: best.y + bBox.height
});
 
// Move it if needed
if (Math.round(best.x) !== Math.round(label.x) ||
Math.round(best.y) !== Math.round(label.y)) {
series.labelBySeries
.attr({
opacity: 0,
x: best.x - paneLeft,
y: best.y - paneTop,
anchorX: best.connectorPoint && best.connectorPoint.plotX,
anchorY: best.connectorPoint && best.connectorPoint.plotY
})
.animate({
opacity: 1
});
 
// Record closest point to stick to for sync redraw
series.options.kdNow = true;
series.buildKDTree();
var closest = series.searchPoint({
chartX: best.x,
chartY: best.y
}, true);
label.closest = [
closest,
best.x - paneLeft - closest.plotX,
best.y - paneTop - closest.plotY
];
 
}
 
} else if (label) {
series.labelBySeries = label.destroy();
}
}
});
};
 
/**
* Prepare drawing series labels
*/
function drawLabels(proceed) {
 
var chart = this,
delay = Math.max(
H.animObject(chart.renderer.globalAnimation).duration,
250
),
initial = !chart.hasRendered;
 
proceed.apply(chart, [].slice.call(arguments, 1));
 
chart.labelSeries = [];
 
clearTimeout(chart.seriesLabelTimer);
 
// Which series should have labels
each(chart.series, function(series) {
var options = series.options.label,
label = series.labelBySeries,
closest = label && label.closest;
 
if (options.enabled && series.visible && (series.graph || series.area)) {
chart.labelSeries.push(series);
 
// The labels are processing heavy, wait until the animation is done
if (initial) {
delay = Math.max(
delay,
H.animObject(series.options.animation).duration
);
}
 
// Keep the position updated to the axis while redrawing
if (closest) {
if (closest[0].plotX !== undefined) {
label.animate({
x: closest[0].plotX + closest[1],
y: closest[0].plotY + closest[2]
});
} else {
label.attr({
opacity: 0
});
}
}
}
});
 
chart.seriesLabelTimer = setTimeout(function() {
chart.drawSeriesLabels();
}, delay);
 
}
wrap(Chart.prototype, 'render', drawLabels);
wrap(Chart.prototype, 'redraw', drawLabels);
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/solid-gauge.js
@@ -0,0 +1,14 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Solid angular gauge module
 
(c) 2010-2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(l){"object"===typeof module&&module.exports?module.exports=l:l(Highcharts)})(function(l){(function(e){var l=e.pInt,u=e.pick,m=e.each,r=e.isNumber,w=e.wrap,v;w(e.Renderer.prototype.symbols,"arc",function(a,f,d,c,e,b){a=a(f,d,c,e,b);b.rounded&&(c=((b.r||c)-b.innerR)/2,b=["A",c,c,0,1,1,a[12],a[13]],a.splice.apply(a,[a.length-1,0].concat(["A",c,c,0,1,1,a[1],a[2]])),a.splice.apply(a,[11,3].concat(b)));return a});v={initDataClasses:function(a){var f=this.chart,d,c=0,t=this.options;this.dataClasses=
d=[];m(a.dataClasses,function(b,h){b=e.merge(b);d.push(b);b.color||("category"===t.dataClassColor?(h=f.options.colors,b.color=h[c++],c===h.length&&(c=0)):b.color=e.color(t.minColor).tweenTo(e.color(t.maxColor),h/(a.dataClasses.length-1)))})},initStops:function(a){this.stops=a.stops||[[0,this.options.minColor],[1,this.options.maxColor]];m(this.stops,function(a){a.color=e.color(a[1])})},toColor:function(a,f){var d=this.stops,c,e,b=this.dataClasses,h,g;if(b)for(g=b.length;g--;){if(h=b[g],c=h.from,d=
h.to,(void 0===c||a>=c)&&(void 0===d||a<=d)){e=h.color;f&&(f.dataClass=g);break}}else{this.isLog&&(a=this.val2lin(a));a=1-(this.max-a)/(this.max-this.min);for(g=d.length;g--&&!(a>d[g][0]););c=d[g]||d[g+1];d=d[g+1]||c;a=1-(d[0]-a)/(d[0]-c[0]||1);e=c.color.tweenTo(d.color,a)}return e}};e.seriesType("solidgauge","gauge",{colorByPoint:!0},{translate:function(){var a=this.yAxis;e.extend(a,v);!a.dataClasses&&a.options.dataClasses&&a.initDataClasses(a.options);a.initStops(a.options);e.seriesTypes.gauge.prototype.translate.call(this)},
drawPoints:function(){var a=this,f=a.yAxis,d=f.center,c=a.options,t=a.chart.renderer,b=c.overshoot,h=r(b)?b/180*Math.PI:0,g;r(c.threshold)&&(g=f.startAngleRad+f.translate(c.threshold,null,null,null,!0));this.thresholdAngleRad=u(g,f.startAngleRad);m(a.points,function(b){var g=b.graphic,k=f.startAngleRad+f.translate(b.y,null,null,null,!0),m=l(u(b.options.radius,c.radius,100))*d[2]/200,n=l(u(b.options.innerRadius,c.innerRadius,60))*d[2]/200,p=f.toColor(b.y,b),q=Math.min(f.startAngleRad,f.endAngleRad),
r=Math.max(f.startAngleRad,f.endAngleRad);"none"===p&&(p=b.color||a.color||"none");"none"!==p&&(b.color=p);k=Math.max(q-h,Math.min(r+h,k));!1===c.wrap&&(k=Math.max(q,Math.min(r,k)));q=Math.min(k,a.thresholdAngleRad);k=Math.max(k,a.thresholdAngleRad);k-q>2*Math.PI&&(k=q+2*Math.PI);b.shapeArgs=n={x:d[0],y:d[1],r:m,innerR:n,start:q,end:k,rounded:c.rounded};b.startR=m;g?(b=n.d,g.animate(e.extend({fill:p},n)),b&&(n.d=b)):b.graphic=t.arc(n).addClass(b.getClassName(),!0).attr({fill:p,"sweep-flag":0}).add(a.group)})},
animate:function(a){a||(this.startAngleRad=this.thresholdAngleRad,e.seriesTypes.pie.prototype.animate.call(this,a))}})})(l)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/solid-gauge.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":14,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","pInt","pick","each","isNumber","wrap","colorAxisMethods","Renderer","prototype","symbols","proceed","x","y","w","h","options","path","rounded","smallR","r","innerR","roundEnd","x2","y2","splice","apply","length","concat","roundStart","x1","y1","initDataClasses","userOptions","chart","dataClasses","colorCounter","dataClass","i","merge","push","color","dataClassColor","colors","minColor","tweenTo","maxColor","initStops","stops","stop","toColor","value","point","from","to","undefined","isLog","val2lin","pos","max","min","seriesType","solidGaugeOptions","colorByPoint","translate","axis","yAxis","extend","seriesTypes","gauge","call","drawPoints","series","center","renderer","overshoot","overshootVal","Math","PI","thresholdAngleRad","threshold","startAngleRad","points","graphic","rotation","radius","innerRadius","axisMinAngle","endAngleRad","axisMaxAngle","minAngle","maxAngle","shapeArgs","start","end","startR","d","animate","fill","arc","addClass","getClassName","attr","add","group","init","pie"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/solid-gauge.src.js
@@ -0,0 +1,306 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Solid angular gauge module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* Solid angular gauge module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
 
var pInt = H.pInt,
pick = H.pick,
each = H.each,
isNumber = H.isNumber,
wrap = H.wrap,
Renderer = H.Renderer,
colorAxisMethods;
 
/**
* Symbol definition of an arc with round edges.
*
* @param {Number} x - The X coordinate for the top left position.
* @param {Number} y - The Y coordinate for the top left position.
* @param {Number} w - The pixel width.
* @param {Number} h - The pixel height.
* @param {Object} [options] - Additional options, depending on the actual
* symbol drawn.
* @param {boolean} [options.rounded] - Whether to draw rounded edges.
* @return {Array} Path of the created arc.
*/
wrap(Renderer.prototype.symbols, 'arc', function(proceed, x, y, w, h, options) {
var arc = proceed,
path = arc(x, y, w, h, options);
if (options.rounded) {
var r = options.r || w,
smallR = (r - options.innerR) / 2,
x1 = path[1],
y1 = path[2],
x2 = path[12],
y2 = path[13],
roundStart = ['A', smallR, smallR, 0, 1, 1, x1, y1],
roundEnd = ['A', smallR, smallR, 0, 1, 1, x2, y2];
// Insert rounded edge on end, and remove line.
path.splice.apply(path, [path.length - 1, 0].concat(roundStart));
// Insert rounded edge on end, and remove line.
path.splice.apply(path, [11, 3].concat(roundEnd));
}
 
return path;
});
 
// These methods are defined in the ColorAxis object, and copied here.
// If we implement an AMD system we should make ColorAxis a dependency.
colorAxisMethods = {
 
 
initDataClasses: function(userOptions) {
var chart = this.chart,
dataClasses,
colorCounter = 0,
options = this.options;
this.dataClasses = dataClasses = [];
 
each(userOptions.dataClasses, function(dataClass, i) {
var colors;
 
dataClass = H.merge(dataClass);
dataClasses.push(dataClass);
if (!dataClass.color) {
if (options.dataClassColor === 'category') {
colors = chart.options.colors;
dataClass.color = colors[colorCounter++];
// loop back to zero
if (colorCounter === colors.length) {
colorCounter = 0;
}
} else {
dataClass.color = H.color(options.minColor).tweenTo(
H.color(options.maxColor),
i / (userOptions.dataClasses.length - 1)
);
}
}
});
},
 
initStops: function(userOptions) {
this.stops = userOptions.stops || [
[0, this.options.minColor],
[1, this.options.maxColor]
];
each(this.stops, function(stop) {
stop.color = H.color(stop[1]);
});
},
/**
* Translate from a value to a color
*/
toColor: function(value, point) {
var pos,
stops = this.stops,
from,
to,
color,
dataClasses = this.dataClasses,
dataClass,
i;
 
if (dataClasses) {
i = dataClasses.length;
while (i--) {
dataClass = dataClasses[i];
from = dataClass.from;
to = dataClass.to;
if ((from === undefined || value >= from) && (to === undefined || value <= to)) {
color = dataClass.color;
if (point) {
point.dataClass = i;
}
break;
}
}
 
} else {
 
if (this.isLog) {
value = this.val2lin(value);
}
pos = 1 - ((this.max - value) / (this.max - this.min));
i = stops.length;
while (i--) {
if (pos > stops[i][0]) {
break;
}
}
from = stops[i] || stops[i + 1];
to = stops[i + 1] || from;
 
// The position within the gradient
pos = 1 - (to[0] - pos) / ((to[0] - from[0]) || 1);
 
color = from.color.tweenTo(
to.color,
pos
);
}
return color;
}
};
/**
* @extends plotOptions.gauge
* @optionparent plotOptions.solidgauge
*/
var solidGaugeOptions = {
/**
*/
colorByPoint: true
 
};
 
 
// The solidgauge series type
H.seriesType('solidgauge', 'gauge', solidGaugeOptions, {
 
/**
* Extend the translate function to extend the Y axis with the necessary
* decoration (#5895).
*/
translate: function() {
var axis = this.yAxis;
H.extend(axis, colorAxisMethods);
 
// Prepare data classes
if (!axis.dataClasses && axis.options.dataClasses) {
axis.initDataClasses(axis.options);
}
axis.initStops(axis.options);
 
// Generate points and inherit data label position
H.seriesTypes.gauge.prototype.translate.call(this);
},
 
/**
* Draw the points where each point is one needle
*/
drawPoints: function() {
var series = this,
yAxis = series.yAxis,
center = yAxis.center,
options = series.options,
renderer = series.chart.renderer,
overshoot = options.overshoot,
overshootVal = isNumber(overshoot) ? overshoot / 180 * Math.PI : 0,
thresholdAngleRad;
 
// Handle the threshold option
if (isNumber(options.threshold)) {
thresholdAngleRad = yAxis.startAngleRad + yAxis.translate(
options.threshold,
null,
null,
null,
true
);
}
this.thresholdAngleRad = pick(thresholdAngleRad, yAxis.startAngleRad);
 
 
each(series.points, function(point) {
var graphic = point.graphic,
rotation = yAxis.startAngleRad + yAxis.translate(point.y, null, null, null, true),
radius = (pInt(pick(point.options.radius, options.radius, 100)) * center[2]) / 200,
innerRadius = (pInt(pick(point.options.innerRadius, options.innerRadius, 60)) * center[2]) / 200,
shapeArgs,
d,
toColor = yAxis.toColor(point.y, point),
axisMinAngle = Math.min(yAxis.startAngleRad, yAxis.endAngleRad),
axisMaxAngle = Math.max(yAxis.startAngleRad, yAxis.endAngleRad),
minAngle,
maxAngle;
 
if (toColor === 'none') { // #3708
toColor = point.color || series.color || 'none';
}
if (toColor !== 'none') {
point.color = toColor;
}
 
// Handle overshoot and clipping to axis max/min
rotation = Math.max(axisMinAngle - overshootVal, Math.min(axisMaxAngle + overshootVal, rotation));
 
// Handle the wrap option
if (options.wrap === false) {
rotation = Math.max(axisMinAngle, Math.min(axisMaxAngle, rotation));
}
 
minAngle = Math.min(rotation, series.thresholdAngleRad);
maxAngle = Math.max(rotation, series.thresholdAngleRad);
 
if (maxAngle - minAngle > 2 * Math.PI) {
maxAngle = minAngle + 2 * Math.PI;
}
 
point.shapeArgs = shapeArgs = {
x: center[0],
y: center[1],
r: radius,
innerR: innerRadius,
start: minAngle,
end: maxAngle,
rounded: options.rounded
};
point.startR = radius; // For PieSeries.animate
 
if (graphic) {
d = shapeArgs.d;
graphic.animate(H.extend({
fill: toColor
}, shapeArgs));
if (d) {
shapeArgs.d = d; // animate alters it
}
} else {
point.graphic = renderer.arc(shapeArgs)
.addClass(point.getClassName(), true)
.attr({
fill: toColor,
'sweep-flag': 0
})
.add(series.group);
 
 
}
});
},
 
/**
* Extend the pie slice animation by animating from start angle and up
*/
animate: function(init) {
 
if (!init) {
this.startAngleRad = this.thresholdAngleRad;
H.seriesTypes.pie.prototype.animate.call(this, init);
}
}
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/static-scale.js
@@ -0,0 +1,12 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
StaticScale
 
(c) 2016 Torstein Honsi, Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(a){"object"===typeof module&&module.exports?module.exports=a:a(Highcharts)})(function(a){(function(c){var a=c.Chart,e=c.each,f=c.pick;a.prototype.adjustHeight=function(){e(this.axes,function(b){var a=b.chart,e=!!a.initiatedScale&&a.options.animation,d=b.options.staticScale;c.isNumber(d)&&!b.horiz&&c.defined(b.min)&&(b=f(b.unitLength,b.max+b.tickInterval-b.min)*d,b=Math.max(b,d),d=b-a.plotHeight,1<=Math.abs(d)&&(a.plotHeight=b,a.setSize(null,a.chartHeight+d,e)))});this.initiatedScale=!0};
c.addEvent(a.prototype,"render",a.prototype.adjustHeight)})(a)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/static-scale.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":12,
"mappings":"A;;;;;;;;;;AAWC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAAA,IAOLC,EAAQD,CAAAC,MAPH,CAQLC,EAAOF,CAAAE,KARF,CASLC,EAAOH,CAAAG,KAEXF,EAAAG,UAAAC,aAAA,CAA+BC,QAAQ,EAAG,CACtCJ,CAAA,CAAK,IAAAK,KAAL,CAAgB,QAAQ,CAACC,CAAD,CAAO,CAAA,IACvBC,EAAQD,CAAAC,MADe,CAEvBC,EAAU,CAAEC,CAAAF,CAAAE,eAAZD,EAAoCD,CAAAG,QAAAC,UAFb,CAGvBC,EAAcN,CAAAI,QAAAE,YAIdd,EAAAe,SAAA,CAAWD,CAAX,CADJ,EAEKE,CAAAR,CAAAQ,MAFL,EAGIhB,CAAAiB,QAAA,CAAUT,CAAAU,IAAV,CAHJ,GAKIC,CAUA,CAVShB,CAAA,CACLK,CAAAY,WADK,CAELZ,CAAAa,IAFK,CAEMb,CAAAc,aAFN,CAE0Bd,CAAAU,IAF1B,CAUT,CAPIJ,CAOJ,CAJAK,CAIA,CAJSI,IAAAF,IAAA,CAASF,CAAT,CAAiBL,CAAjB,CAIT,CAFAU,CAEA,CAFOL,CAEP,CAFgBV,CAAAgB,WAEhB,CAAsB,CAAtB,EAAIF,IAAAG,IAAA,CAASF,CAAT,CAAJ,GACIf,CAAAgB,WACA,CADmBN,CACnB,CAAAV,CAAAkB,QAAA,CAAc,IAAd,CAAoBlB,CAAAmB,YAApB,CAAwCJ,CAAxC,CAA8Cd,CAA9C,CAFJ,CAfJ,CAN2B,CAA/B,CA4BA,KAAAC,eAAA,CAAsB,CAAA,CA7BgB,CA+B1CX;CAAA6B,SAAA,CAAW5B,CAAAG,UAAX,CAA4B,QAA5B,CAAsCH,CAAAG,UAAAC,aAAtC,CA1CS,CAAZ,CAAA,CA4CCN,CA5CD,CADkB,CANtB;",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","Chart","each","pick","prototype","adjustHeight","Chart.prototype.adjustHeight","axes","axis","chart","animate","initiatedScale","options","animation","staticScale","isNumber","horiz","defined","min","height","unitLength","max","tickInterval","Math","diff","plotHeight","abs","setSize","chartHeight","addEvent"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/static-scale.src.js
@@ -0,0 +1,64 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* StaticScale
*
* (c) 2016 Torstein Honsi, Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2017 Torstein Honsi, Lars Cabrera
*
* License: www.highcharts.com/license
*/
 
var Chart = H.Chart,
each = H.each,
pick = H.pick;
 
Chart.prototype.adjustHeight = function() {
each(this.axes, function(axis) {
var chart = axis.chart,
animate = !!chart.initiatedScale && chart.options.animation,
staticScale = axis.options.staticScale,
height,
diff;
if (
H.isNumber(staticScale) &&
!axis.horiz &&
H.defined(axis.min)
) {
height = pick(
axis.unitLength,
axis.max + axis.tickInterval - axis.min
) * staticScale;
 
// Minimum height is 1 x staticScale.
height = Math.max(height, staticScale);
 
diff = height - chart.plotHeight;
 
if (Math.abs(diff) >= 1) {
chart.plotHeight = height;
chart.setSize(null, chart.chartHeight + diff, animate);
}
}
 
});
this.initiatedScale = true;
};
H.addEvent(Chart.prototype, 'render', Chart.prototype.adjustHeight);
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/stock.js
@@ -0,0 +1,125 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
Highstock as a plugin for Highcharts
 
(c) 2017 Torstein Honsi
 
License: www.highcharts.com/license
*/
(function(K){"object"===typeof module&&module.exports?module.exports=K:K(Highcharts)})(function(K){(function(a){var B=a.addEvent,m=a.Axis,t=a.Chart,w=a.css,C=a.dateFormat,G=a.defined,J=a.each,r=a.extend,q=a.noop,A=a.timeUnits,F=a.wrap;F(a.Series.prototype,"init",function(a){var d;a.apply(this,Array.prototype.slice.call(arguments,1));(d=this.xAxis)&&d.options.ordinal&&B(this,"updatedData",function(){delete d.ordinalIndex})});F(m.prototype,"getTimeTicks",function(a,d,b,e,D,n,g,f){var k=0,x,u,c={},h,
l,z,p=[],v=-Number.MAX_VALUE,I=this.options.tickPixelInterval;if(!this.options.ordinal&&!this.options.breaks||!n||3>n.length||void 0===b)return a.call(this,d,b,e,D);l=n.length;for(x=0;x<l;x++){z=x&&n[x-1]>e;n[x]<b&&(k=x);if(x===l-1||n[x+1]-n[x]>5*g||z){if(n[x]>v){for(u=a.call(this,d,n[k],n[x],D);u.length&&u[0]<=v;)u.shift();u.length&&(v=u[u.length-1]);p=p.concat(u)}k=x+1}if(z)break}a=u.info;if(f&&a.unitRange<=A.hour){x=p.length-1;for(k=1;k<x;k++)C("%d",p[k])!==C("%d",p[k-1])&&(c[p[k]]="day",h=!0);
h&&(c[p[0]]="day");a.higherRanks=c}p.info=a;if(f&&G(I)){f=a=p.length;x=[];var H;for(h=[];f--;)k=this.translate(p[f]),H&&(h[f]=H-k),x[f]=H=k;h.sort();h=h[Math.floor(h.length/2)];h<.6*I&&(h=null);f=p[a-1]>e?a-1:a;for(H=void 0;f--;)k=x[f],e=Math.abs(H-k),H&&e<.8*I&&(null===h||e<.8*h)?(c[p[f]]&&!c[p[f+1]]?(e=f+1,H=k):e=f,p.splice(e,1)):H=k}return p});r(m.prototype,{beforeSetTickPositions:function(){var a,d=[],b=!1,e,D=this.getExtremes(),n=D.min,g=D.max,f,E=this.isXAxis&&!!this.options.breaks,D=this.options.ordinal,
x=this.chart.options.chart.ignoreHiddenSeries;if(D||E){J(this.series,function(g,c){if(!(x&&!1===g.visible||!1===g.takeOrdinalPosition&&!E)&&(d=d.concat(g.processedXData),a=d.length,d.sort(function(h,c){return h-c}),a))for(c=a-1;c--;)d[c]===d[c+1]&&d.splice(c,1)});a=d.length;if(2<a){e=d[1]-d[0];for(f=a-1;f--&&!b;)d[f+1]-d[f]!==e&&(b=!0);!this.options.keepOrdinalPadding&&(d[0]-n>e||g-d[d.length-1]>e)&&(b=!0)}b?(this.ordinalPositions=d,e=this.ordinal2lin(Math.max(n,d[0]),!0),f=Math.max(this.ordinal2lin(Math.min(g,
d[d.length-1]),!0),1),this.ordinalSlope=g=(g-n)/(f-e),this.ordinalOffset=n-e*g):this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0}this.isOrdinal=D&&b;this.groupIntervalFactor=null},val2lin:function(a,d){var b=this.ordinalPositions;if(b){var e=b.length,k,n;for(k=e;k--;)if(b[k]===a){n=k;break}for(k=e-1;k--;)if(a>b[k]||0===k){a=(a-b[k])/(b[k+1]-b[k]);n=k+a;break}d=d?n:this.ordinalSlope*(n||0)+this.ordinalOffset}else d=a;return d},lin2val:function(a,d){var b=this.ordinalPositions;if(b){var e=
this.ordinalSlope,k=this.ordinalOffset,n=b.length-1,g;if(d)0>a?a=b[0]:a>n?a=b[n]:(n=Math.floor(a),g=a-n);else for(;n--;)if(d=e*n+k,a>=d){e=e*(n+1)+k;g=(a-d)/(e-d);break}return void 0!==g&&void 0!==b[n]?b[n]+(g?g*(b[n+1]-b[n]):0):a}return a},getExtendedPositions:function(){var a=this.chart,d=this.series[0].currentDataGrouping,b=this.ordinalIndex,e=d?d.count+d.unitName:"raw",D=this.getExtremes(),n,g;b||(b=this.ordinalIndex={});b[e]||(n={series:[],chart:a,getExtremes:function(){return{min:D.dataMin,
max:D.dataMax}},options:{ordinal:!0},val2lin:m.prototype.val2lin,ordinal2lin:m.prototype.ordinal2lin},J(this.series,function(f){g={xAxis:n,xData:f.xData,chart:a,destroyGroupedData:q};g.options={dataGrouping:d?{enabled:!0,forced:!0,approximation:"open",units:[[d.unitName,[d.count]]]}:{enabled:!1}};f.processData.apply(g);n.series.push(g)}),this.beforeSetTickPositions.apply(n),b[e]=n.ordinalPositions);return b[e]},getGroupIntervalFactor:function(a,d,b){var e;b=b.processedXData;var k=b.length,n=[];e=
this.groupIntervalFactor;if(!e){for(e=0;e<k-1;e++)n[e]=b[e+1]-b[e];n.sort(function(g,a){return g-a});n=n[Math.floor(k/2)];a=Math.max(a,b[0]);d=Math.min(d,b[k-1]);this.groupIntervalFactor=e=k*n/(d-a)}return e},postProcessTickInterval:function(a){var d=this.ordinalSlope;return d?this.options.breaks?this.closestPointRange:a/(d/this.closestPointRange):a}});m.prototype.ordinal2lin=m.prototype.val2lin;F(t.prototype,"pan",function(a,d){var b=this.xAxis[0],e=d.chartX,k=!1;if(b.options.ordinal&&b.series.length){var n=
this.mouseDownX,g=b.getExtremes(),f=g.dataMax,E=g.min,x=g.max,u=this.hoverPoints,c=b.closestPointRange,n=(n-e)/(b.translationSlope*(b.ordinalSlope||c)),h={ordinalPositions:b.getExtendedPositions()},c=b.lin2val,l=b.val2lin,z;h.ordinalPositions?1<Math.abs(n)&&(u&&J(u,function(p){p.setState()}),0>n?(u=h,z=b.ordinalPositions?b:h):(u=b.ordinalPositions?b:h,z=h),h=z.ordinalPositions,f>h[h.length-1]&&h.push(f),this.fixedRange=x-E,n=b.toFixedRange(null,null,c.apply(u,[l.apply(u,[E,!0])+n,!0]),c.apply(z,[l.apply(z,
[x,!0])+n,!0])),n.min>=Math.min(g.dataMin,E)&&n.max<=Math.max(f,x)&&b.setExtremes(n.min,n.max,!0,!1,{trigger:"pan"}),this.mouseDownX=e,w(this.container,{cursor:"move"})):k=!0}else k=!0;k&&a.apply(this,Array.prototype.slice.call(arguments,1))})})(K);(function(a){function B(){return Array.prototype.slice.call(arguments,1)}function m(a){a.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,t(this.pointArrayMap,["y"]))}var t=a.pick,w=a.wrap,C=a.each,G=a.extend,J=a.isArray,r=a.fireEvent,
q=a.Axis,A=a.Series;G(q.prototype,{isInBreak:function(a,k){var d=a.repeat||Infinity,b=a.from,e=a.to-a.from;k=k>=b?(k-b)%d:d-(b-k)%d;return a.inclusive?k<=e:k<e&&0!==k},isInAnyBreak:function(a,k){var d=this.options.breaks,b=d&&d.length,e,q,n;if(b){for(;b--;)this.isInBreak(d[b],a)&&(e=!0,q||(q=t(d[b].showPoints,this.isXAxis?!1:!0)));n=e&&k?e&&!q:e}return n}});w(q.prototype,"setTickPositions",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));if(this.options.breaks){var k=this.tickPositions,
d=this.tickPositions.info,b=[],e;for(e=0;e<k.length;e++)this.isInAnyBreak(k[e])||b.push(k[e]);this.tickPositions=b;this.tickPositions.info=d}});w(q.prototype,"init",function(a,k,d){var b=this;d.breaks&&d.breaks.length&&(d.ordinal=!1);a.call(this,k,d);a=this.options.breaks;b.isBroken=J(a)&&!!a.length;b.isBroken&&(b.val2lin=function(a){var d=a,e,g;for(g=0;g<b.breakArray.length;g++)if(e=b.breakArray[g],e.to<=a)d-=e.len;else if(e.from>=a)break;else if(b.isInBreak(e,a)){d-=a-e.from;break}return d},b.lin2val=
function(a){var d,e;for(e=0;e<b.breakArray.length&&!(d=b.breakArray[e],d.from>=a);e++)d.to<a?a+=d.len:b.isInBreak(d,a)&&(a+=d.len);return a},b.setExtremes=function(a,d,b,g,f){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(d);)d-=this.closestPointRange;q.prototype.setExtremes.call(this,a,d,b,g,f)},b.setAxisTranslation=function(a){q.prototype.setAxisTranslation.call(this,a);a=b.options.breaks;var d=[],k=[],g=0,f,e,x=b.userMin||b.min,u=b.userMax||b.max,c=t(b.pointRangePadding,
0),h,l;C(a,function(c){e=c.repeat||Infinity;b.isInBreak(c,x)&&(x+=c.to%e-x%e);b.isInBreak(c,u)&&(u-=u%e-c.from%e)});C(a,function(c){h=c.from;for(e=c.repeat||Infinity;h-e>x;)h-=e;for(;h<x;)h+=e;for(l=h;l<u;l+=e)d.push({value:l,move:"in"}),d.push({value:l+(c.to-c.from),move:"out",size:c.breakSize})});d.sort(function(c,p){return c.value===p.value?("in"===c.move?0:1)-("in"===p.move?0:1):c.value-p.value});f=0;h=x;C(d,function(c){f+="in"===c.move?1:-1;1===f&&"in"===c.move&&(h=c.value);0===f&&(k.push({from:h,
to:c.value,len:c.value-h-(c.size||0)}),g+=c.value-h-(c.size||0))});b.breakArray=k;b.unitLength=u-x-g+c;r(b,"afterBreaks");b.options.staticScale?b.transA=b.options.staticScale:b.unitLength&&(b.transA*=(u-b.min+c)/b.unitLength);c&&(b.minPixelPadding=b.transA*b.minPointOffset);b.min=x;b.max=u})});w(A.prototype,"generatePoints",function(a){a.apply(this,B(arguments));var k=this.xAxis,d=this.yAxis,b=this.points,e,q=b.length,n=this.options.connectNulls,g;if(k&&d&&(k.options.breaks||d.options.breaks))for(;q--;)e=
b[q],g=null===e.y&&!1===n,g||!k.isInAnyBreak(e.x,!0)&&!d.isInAnyBreak(e.y,!0)||(b.splice(q,1),this.data[q]&&this.data[q].destroyElements())});a.Series.prototype.drawBreaks=function(a,k){var d=this,b=d.points,e,q,n,g;a&&C(k,function(f){e=a.breakArray||[];q=a.isXAxis?a.min:t(d.options.threshold,a.min);C(b,function(d){g=t(d["stack"+f.toUpperCase()],d[f]);C(e,function(f){n=!1;if(q<f.from&&g>f.to||q>f.from&&g<f.from)n="pointBreak";else if(q<f.from&&g>f.from&&g<f.to||q>f.from&&g>f.to&&g<f.from)n="pointInBreak";
n&&r(a,n,{point:d,brk:f})})})})};a.Series.prototype.gappedPath=function(){var q=this.options.gapSize,k=this.points.slice(),d=k.length-1,b=this.yAxis,e;if(q&&0<d)for("value"!==this.options.gapUnit&&(q*=this.closestPointRange);d--;)k[d+1].x-k[d].x>q&&(e=(k[d].x+k[d+1].x)/2,k.splice(d+1,0,{isNull:!0,x:e}),this.options.stacking&&(e=b.stacks[this.stackKey][e]=new a.StackItem(b,b.options.stackLabels,!1,e,this.stack),e.total=0));return this.getGraphPath(k)};w(a.seriesTypes.column.prototype,"drawPoints",
m);w(a.Series.prototype,"drawPoints",m)})(K);(function(a){var B=a.arrayMax,m=a.arrayMin,t=a.Axis,w=a.defaultPlotOptions,C=a.defined,G=a.each,J=a.extend,r=a.format,q=a.isNumber,A=a.merge,F=a.pick,k=a.Point,d=a.Tooltip,b=a.wrap,e=a.Series.prototype,D=e.processData,n=e.generatePoints,g=e.destroy,f={approximation:"average",groupPixelWidth:2,dateTimeLabelFormats:{millisecond:["%A, %b %e, %H:%M:%S.%L","%A, %b %e, %H:%M:%S.%L","-%H:%M:%S.%L"],second:["%A, %b %e, %H:%M:%S","%A, %b %e, %H:%M:%S","-%H:%M:%S"],
minute:["%A, %b %e, %H:%M","%A, %b %e, %H:%M","-%H:%M"],hour:["%A, %b %e, %H:%M","%A, %b %e, %H:%M","-%H:%M"],day:["%A, %b %e, %Y","%A, %b %e","-%A, %b %e, %Y"],week:["Week from %A, %b %e, %Y","%A, %b %e","-%A, %b %e, %Y"],month:["%B %Y","%B","-%B %Y"],year:["%Y","%Y","-%Y"]}},E={line:{},spline:{},area:{},areaspline:{},column:{approximation:"sum",groupPixelWidth:10},arearange:{approximation:"range"},areasplinerange:{approximation:"range"},columnrange:{approximation:"range",groupPixelWidth:10},candlestick:{approximation:"ohlc",
groupPixelWidth:10},ohlc:{approximation:"ohlc",groupPixelWidth:5}},x=a.defaultDataGroupingUnits=[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1]],["week",[1]],["month",[1,3,6]],["year",null]],u={sum:function(c){var a=c.length,l;if(!a&&c.hasNulls)l=null;else if(a)for(l=0;a--;)l+=c[a];return l},average:function(c){var a=c.length;c=u.sum(c);q(c)&&a&&(c/=a);return c},averages:function(){var c=[];G(arguments,function(a){c.push(u.average(a))});
return c},open:function(c){return c.length?c[0]:c.hasNulls?null:void 0},high:function(c){return c.length?B(c):c.hasNulls?null:void 0},low:function(c){return c.length?m(c):c.hasNulls?null:void 0},close:function(c){return c.length?c[c.length-1]:c.hasNulls?null:void 0},ohlc:function(c,a,l,g){c=u.open(c);a=u.high(a);l=u.low(l);g=u.close(g);if(q(c)||q(a)||q(l)||q(g))return[c,a,l,g]},range:function(c,a){c=u.low(c);a=u.high(a);if(q(c)||q(a))return[c,a];if(null===c&&null===a)return null}};e.groupData=function(c,
a,l,g){var p=this.data,v=this.options.data,h=[],d=[],b=[],z=c.length,y,e,k=!!a,n=[];g="function"===typeof g?g:u[g]||E[this.type]&&u[E[this.type].approximation]||u[f.approximation];var x=this.pointArrayMap,N=x&&x.length,A=0;e=0;var r,m;N?G(x,function(){n.push([])}):n.push([]);r=N||1;for(m=0;m<=z&&!(c[m]>=l[0]);m++);for(m;m<=z;m++){for(;void 0!==l[A+1]&&c[m]>=l[A+1]||m===z;){y=l[A];this.dataGroupInfo={start:e,length:n[0].length};e=g.apply(this,n);void 0!==e&&(h.push(y),d.push(e),b.push(this.dataGroupInfo));
e=m;for(y=0;y<r;y++)n[y].length=0,n[y].hasNulls=!1;A+=1;if(m===z)break}if(m===z)break;if(x){y=this.cropStart+m;var F=p&&p[y]||this.pointClass.prototype.applyOptions.apply({series:this},[v[y]]),C;for(y=0;y<N;y++)C=F[x[y]],q(C)?n[y].push(C):null===C&&(n[y].hasNulls=!0)}else y=k?a[m]:null,q(y)?n[0].push(y):null===y&&(n[0].hasNulls=!0)}return[h,d,b]};e.processData=function(){var c=this.chart,a=this.options.dataGrouping,l=!1!==this.allowDG&&a&&F(a.enabled,c.options.isStock),g=this.visible||!c.options.chart.ignoreHiddenSeries,
p;this.forceCrop=l;this.groupPixelWidth=null;this.hasProcessed=!0;if(!1!==D.apply(this,arguments)&&l){this.destroyGroupedData();var v=this.processedXData,f=this.processedYData,d=c.plotSizeX,c=this.xAxis,b=c.options.ordinal,M=this.groupPixelWidth=c.getGroupPixelWidth&&c.getGroupPixelWidth();if(M){this.isDirty=p=!0;this.points=null;var y=c.getExtremes(),l=y.min,y=y.max,b=b&&c.getGroupIntervalFactor(l,y,this)||1,d=M*(y-l)/d*b,M=c.getTimeTicks(c.normalizeTimeTickInterval(d,a.units||x),Math.min(l,v[0]),
Math.max(y,v[v.length-1]),c.options.startOfWeek,v,this.closestPointRange),v=e.groupData.apply(this,[v,f,M,a.approximation]),f=v[0],b=v[1];if(a.smoothed){a=f.length-1;for(f[a]=Math.min(f[a],y);a--&&0<a;)f[a]+=d/2;f[0]=Math.max(f[0],l)}this.currentDataGrouping=M.info;this.closestPointRange=M.info.totalRange;this.groupMap=v[2];C(f[0])&&f[0]<c.dataMin&&g&&(c.min===c.dataMin&&(c.min=f[0]),c.dataMin=f[0]);this.processedXData=f;this.processedYData=b}else this.currentDataGrouping=this.groupMap=null;this.hasGroupedData=
p}};e.destroyGroupedData=function(){var a=this.groupedData;G(a||[],function(c,l){c&&(a[l]=c.destroy?c.destroy():null)});this.groupedData=null};e.generatePoints=function(){n.apply(this);this.destroyGroupedData();this.groupedData=this.hasGroupedData?this.points:null};b(k.prototype,"update",function(c){this.dataGroup?a.error(24):c.apply(this,[].slice.call(arguments,1))});b(d.prototype,"tooltipFooterHeaderFormatter",function(c,g,l){var f=g.series,p=f.tooltipOptions,v=f.options.dataGrouping,h=p.xDateFormat,
d,b=f.xAxis,e=a.dateFormat;return b&&"datetime"===b.options.type&&v&&q(g.key)?(c=f.currentDataGrouping,v=v.dateTimeLabelFormats,c?(b=v[c.unitName],1===c.count?h=b[0]:(h=b[1],d=b[2])):!h&&v&&(h=this.getXDateFormat(g,p,b)),h=e(h,g.key),d&&(h+=e(d,g.key+c.totalRange-1)),r(p[(l?"footer":"header")+"Format"],{point:J(g.point,{key:h}),series:f})):c.call(this,g,l)});e.destroy=function(){for(var a=this.groupedData||[],f=a.length;f--;)a[f]&&a[f].destroy();g.apply(this)};b(e,"setOptions",function(a,g){a=a.call(this,
g);var c=this.type,h=this.chart.options.plotOptions,p=w[c].dataGrouping;E[c]&&(p||(p=A(f,E[c])),a.dataGrouping=A(p,h.series&&h.series.dataGrouping,h[c].dataGrouping,g.dataGrouping));this.chart.options.isStock&&(this.requireSorting=!0);return a});b(t.prototype,"setScale",function(a){a.call(this);G(this.series,function(a){a.hasProcessed=!1})});t.prototype.getGroupPixelWidth=function(){var a=this.series,g=a.length,l,f=0,p=!1,v;for(l=g;l--;)(v=a[l].options.dataGrouping)&&(f=Math.max(f,v.groupPixelWidth));
for(l=g;l--;)(v=a[l].options.dataGrouping)&&a[l].hasProcessed&&(g=(a[l].processedXData||a[l].data).length,a[l].groupPixelWidth||g>this.chart.plotSizeX/f||g&&v.forced)&&(p=!0);return p?f:0};t.prototype.setDataGrouping=function(a,g){var c;g=F(g,!0);a||(a={forced:!1,units:null});if(this instanceof t)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:a},!1);else G(this.chart.options.series,function(c){c.dataGrouping=a},!1);g&&this.chart.redraw()}})(K);(function(a){var B=a.each,m=a.Point,
t=a.seriesType,w=a.seriesTypes;t("ohlc","column",{lineWidth:1,tooltip:{pointFormat:'\x3cspan class\x3d"highcharts-color-{point.colorIndex}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eOpen: {point.open}\x3cbr/\x3eHigh: {point.high}\x3cbr/\x3eLow: {point.low}\x3cbr/\x3eClose: {point.close}\x3cbr/\x3e'},threshold:null},{directTouch:!1,pointArrayMap:["open","high","low","close"],toYData:function(a){return[a.open,a.high,a.low,a.close]},pointValKey:"close",translate:function(){var a=
this,m=a.yAxis,t=!!a.modifyValue,r=["plotOpen","plotHigh","plotLow","plotClose","yBottom"];w.column.prototype.translate.apply(a);B(a.points,function(q){B([q.open,q.high,q.low,q.close,q.low],function(A,F){null!==A&&(t&&(A=a.modifyValue(A)),q[r[F]]=m.toPixels(A,!0))});q.tooltipPos[1]=q.plotHigh+m.pos-a.chart.plotTop})},drawPoints:function(){var a=this,m=a.chart;B(a.points,function(t){var r,q,A,F,k=t.graphic,d,b=!k;void 0!==t.plotY&&(k||(t.graphic=k=m.renderer.path().add(a.group)),q=k.strokeWidth()%
2/2,d=Math.round(t.plotX)-q,A=Math.round(t.shapeArgs.width/2),F=["M",d,Math.round(t.yBottom),"L",d,Math.round(t.plotHigh)],null!==t.open&&(r=Math.round(t.plotOpen)+q,F.push("M",d,r,"L",d-A,r)),null!==t.close&&(r=Math.round(t.plotClose)+q,F.push("M",d,r,"L",d+A,r)),k[b?"attr":"animate"]({d:F}).addClass(t.getClassName(),!0))})},animate:null},{getClassName:function(){return m.prototype.getClassName.call(this)+(this.open<this.close?" highcharts-point-up":" highcharts-point-down")}})})(K);(function(a){var B=
a.defaultPlotOptions,m=a.each,t=a.merge;a=a.seriesType;a("candlestick","ohlc",t(B.column,{states:{hover:{lineWidth:2}},tooltip:B.ohlc.tooltip,threshold:null}),{drawPoints:function(){var a=this,t=a.chart;m(a.points,function(m){var w=m.graphic,r,q,A,F,k,d,b,e=!w;void 0!==m.plotY&&(w||(m.graphic=w=t.renderer.path().add(a.group)),k=w.strokeWidth()%2/2,d=Math.round(m.plotX)-k,r=m.plotOpen,q=m.plotClose,A=Math.min(r,q),r=Math.max(r,q),b=Math.round(m.shapeArgs.width/2),q=Math.round(A)!==Math.round(m.plotHigh),
F=r!==m.yBottom,A=Math.round(A)+k,r=Math.round(r)+k,k=[],k.push("M",d-b,r,"L",d-b,A,"L",d+b,A,"L",d+b,r,"Z","M",d,A,"L",d,q?Math.round(m.plotHigh):A,"M",d,r,"L",d,F?Math.round(m.yBottom):r),w[e?"attr":"animate"]({d:k}).addClass(m.getClassName(),!0))})}})})(K);(function(a){var B=a.addEvent,m=a.each,t=a.noop,w=a.seriesType,C=a.seriesTypes,G=a.TrackerMixin,J=a.SVGRenderer.prototype.symbols,r=a.stableSort;w("flags","column",{pointRange:0,shape:"flag",stackDistance:12,textAlign:"center",tooltip:{pointFormat:"{point.text}\x3cbr/\x3e"},
threshold:null,y:-30},{sorted:!1,noSharedTooltip:!0,allowDG:!1,takeOrdinalPosition:!1,trackerGroups:["markerGroup"],forceCrop:!0,init:a.Series.prototype.init,translate:function(){C.column.prototype.translate.apply(this);var a=this.options,A=this.chart,t=this.points,k=t.length-1,d,b,e=a.onSeries;d=e&&A.get(e);var a=a.onKey||"y",e=d&&d.options.step,w=d&&d.points,n=w&&w.length,g=this.xAxis,f=this.yAxis,E=g.getExtremes(),x=0,u,c,h;if(d&&d.visible&&n)for(x=(d.pointXOffset||0)+(d.barW||0)/2,d=d.currentDataGrouping,
c=w[n-1].x+(d?d.totalRange:0),r(t,function(a,c){return a.x-c.x}),a="plot"+a[0].toUpperCase()+a.substr(1);n--&&t[k]&&!(d=t[k],u=w[n],u.x<=d.x&&void 0!==u[a]&&(d.x<=c&&(d.plotY=u[a],u.x<d.x&&!e&&(h=w[n+1])&&void 0!==h[a]&&(d.plotY+=(d.x-u.x)/(h.x-u.x)*(h[a]-u[a]))),k--,n++,0>k)););m(t,function(a,c){var p;void 0===a.plotY&&(a.x>=E.min&&a.x<=E.max?a.plotY=A.chartHeight-g.bottom-(g.opposite?g.height:0)+g.offset-f.top:a.shapeArgs={});a.plotX+=x;(b=t[c-1])&&b.plotX===a.plotX&&(void 0===b.stackIndex&&(b.stackIndex=
0),p=b.stackIndex+1);a.stackIndex=p})},drawPoints:function(){var q=this.points,m=this.chart,t=m.renderer,k,d,b=this.options,e=b.y,r,n,g,f,E,x,u,c=this.yAxis;for(n=q.length;n--;)g=q[n],u=g.plotX>this.xAxis.len,k=g.plotX,f=g.stackIndex,r=g.options.shape||b.shape,d=g.plotY,void 0!==d&&(d=g.plotY+e-(void 0!==f&&f*b.stackDistance)),E=f?void 0:g.plotX,x=f?void 0:g.plotY,f=g.graphic,void 0!==d&&0<=k&&!u?(f||(f=g.graphic=t.label("",null,null,r,null,null,b.useHTML).attr({align:"flag"===r?"left":"center",width:b.width,
height:b.height,"text-align":b.textAlign}).addClass("highcharts-point").add(this.markerGroup),g.graphic.div&&(g.graphic.div.point=g)),0<k&&(k-=f.strokeWidth()%2),f.attr({text:g.options.title||b.title||"A",x:k,y:d,anchorX:E,anchorY:x}),g.tooltipPos=m.inverted?[c.len+c.pos-m.plotLeft-d,this.xAxis.len-k]:[k,d+c.pos-m.plotTop]):f&&(g.graphic=f.destroy());b.useHTML&&a.wrap(this.markerGroup,"on",function(c){return a.SVGElement.prototype.on.apply(c.apply(this,[].slice.call(arguments,1)),[].slice.call(arguments,
1))})},drawTracker:function(){var a=this.points;G.drawTrackerPoint.apply(this);m(a,function(q){var t=q.graphic;t&&B(t.element,"mouseover",function(){0<q.stackIndex&&!q.raised&&(q._y=t.y,t.attr({y:q._y-8}),q.raised=!0);m(a,function(a){a!==q&&a.raised&&a.graphic&&(a.graphic.attr({y:a._y}),a.raised=!1)})})})},animate:t,buildKDTree:t,setClip:t});J.flag=function(a,m,t,k,d){return["M",d&&d.anchorX||a,d&&d.anchorY||m,"L",a,m+k,a,m,a+t,m,a+t,m+k,a,m+k,"Z"]};m(["circle","square"],function(a){J[a+"pin"]=function(m,
q,k,d,b){var e=b&&b.anchorX;b=b&&b.anchorY;"circle"===a&&d>k&&(m-=Math.round((d-k)/2),k=d);m=J[a](m,q,k,d);e&&b&&m.push("M",e,q>b?q:q+d,"L",e,b);return m}})})(K);(function(a){function B(a,f,d){this.init(a,f,d)}var m=a.addEvent,t=a.Axis,w=a.correctFloat,C=a.defaultOptions,G=a.defined,J=a.destroyObjectProperties,r=a.each,q=a.fireEvent,A=a.hasTouch,F=a.isTouchDevice,k=a.merge,d=a.pick,b=a.removeEvent,e=a.wrap,D,n={height:F?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:a.svg&&!F,margin:10,minWidth:6,
step:.2,zIndex:3};C.scrollbar=k(!0,n,C.scrollbar);a.swapXY=D=function(a,f){var g=a.length,d;if(f)for(f=0;f<g;f+=3)d=a[f+1],a[f+1]=a[f+2],a[f+2]=d;return a};B.prototype={init:function(a,f,b){this.scrollbarButtons=[];this.renderer=a;this.userOptions=f;this.options=k(n,f);this.chart=b;this.size=d(this.options.size,this.options.height);f.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,f=this.options,d=this.size,b;this.group=b=a.g("scrollbar").attr({zIndex:f.zIndex,
translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0,r:f.trackBorderRadius||0,height:d,width:d}).add(b);this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(b);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:d,width:d,r:f.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(D(["M",-3,d/4,"L",-3,2*d/3,"M",0,d/4,"L",0,2*d/3,"M",3,d/4,"L",
3,2*d/3],f.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)},position:function(a,f,d,b){var g=this.options.vertical,c=0,h=this.rendered?"animate":"attr";this.x=a;this.y=f+this.trackBorderWidth;this.width=d;this.xOffset=this.height=b;this.yOffset=c;g?(this.width=this.yOffset=
d=c=this.size,this.xOffset=f=0,this.barWidth=b-2*d,this.x=a+=this.options.margin):(this.height=this.xOffset=b=f=this.size,this.barWidth=d-2*b,this.y+=this.options.margin);this.group[h]({translateX:a,translateY:this.y});this.track[h]({width:d,height:b});this.scrollbarButtons[1][h]({translateX:g?0:d-f,translateY:g?b-c:0})},drawScrollbarButton:function(a){var g=this.renderer,d=this.scrollbarButtons,b=this.options,e=this.size,c;c=g.g().add(this.group);d.push(c);c=g.rect().addClass("highcharts-scrollbar-button").add(c);
c.attr(c.crisp({x:-.5,y:-.5,width:e+1,height:e+1,r:b.buttonBorderRadius},c.strokeWidth()));g.path(D(["M",e/2+(a?-1:1),e/2-3,"L",e/2+(a?-1:1),e/2+3,"L",e/2+(a?2:-2),e/2],b.vertical)).addClass("highcharts-scrollbar-arrow").add(d[a])},setRange:function(a,f){var g=this.options,d=g.vertical,b=g.minWidth,c=this.barWidth,h,l,e=this.rendered&&!this.hasDragged?"animate":"attr";G(c)&&(a=Math.max(a,0),h=Math.ceil(c*a),this.calculatedWidth=l=w(c*Math.min(f,1)-h),l<b&&(h=(c-b+l)*a,l=b),b=Math.floor(h+this.xOffset+
this.yOffset),c=l/2-.5,this.from=a,this.to=f,d?(this.scrollbarGroup[e]({translateY:b}),this.scrollbar[e]({height:l}),this.scrollbarRifles[e]({translateY:c}),this.scrollbarTop=b,this.scrollbarLeft=0):(this.scrollbarGroup[e]({translateX:b}),this.scrollbar[e]({width:l}),this.scrollbarRifles[e]({translateX:c}),this.scrollbarLeft=b,this.scrollbarTop=0),12>=l?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===g.showFull&&(0>=a&&1<=f?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=
this;a.mouseMoveHandler=function(f){var d=a.chart.pointer.normalize(f),b=a.options.vertical?"chartY":"chartX",g=a.initPositions;!a.grabbedCenter||f.touches&&0===f.touches[0][b]||(d=a.cursorToScrollbarPosition(d)[b],b=a[b],b=d-b,a.hasDragged=!0,a.updatePosition(g[0]+b,g[1]+b),a.hasDragged&&q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:f.type,DOMEvent:f}))};a.mouseUpHandler=function(d){a.hasDragged&&q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:d.type,DOMEvent:d});
a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(d){d=a.chart.pointer.normalize(d);d=a.cursorToScrollbarPosition(d);a.chartX=d.chartX;a.chartY=d.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(d){var b=w(a.to-a.from)*a.options.step;a.updatePosition(w(a.from-b),w(a.to-b));q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:d})};a.buttonToMaxClick=function(d){var b=(a.to-a.from)*a.options.step;a.updatePosition(a.from+b,
a.to+b);q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:d})};a.trackClick=function(d){var b=a.chart.pointer.normalize(d),f=a.to-a.from,g=a.y+a.scrollbarTop,c=a.x+a.scrollbarLeft;a.options.vertical&&b.chartY>g||!a.options.vertical&&b.chartX>c?a.updatePosition(a.from+f,a.to+f):a.updatePosition(a.from-f,a.to-f);q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:d})}},cursorToScrollbarPosition:function(a){var d=this.options,d=d.minWidth>this.calculatedWidth?d.minWidth:0;return{chartX:(a.chartX-
this.x-this.xOffset)/(this.barWidth-d),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-d)}},updatePosition:function(a,d){1<d&&(a=w(1-w(d-a)),d=1);0>a&&(d=w(d-a),a=0);this.from=a;this.to=d},update:function(a){this.destroy();this.init(this.chart.renderer,k(!0,this.options,a),this.chart)},addEvents:function(){var a=this.options.inverted?[1,0]:[0,1],d=this.scrollbarButtons,b=this.scrollbarGroup.element,e=this.mouseDownHandler,k=this.mouseMoveHandler,c=this.mouseUpHandler,a=[[d[a[0]].element,"click",
this.buttonToMinClick],[d[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[b,"mousedown",e],[b.ownerDocument,"mousemove",k],[b.ownerDocument,"mouseup",c]];A&&a.push([b,"touchstart",e],[b.ownerDocument,"touchmove",k],[b.ownerDocument,"touchend",c]);r(a,function(a){m.apply(null,a)});this._events=a},removeEvents:function(){r(this._events,function(a){b.apply(null,a)});this._events.length=0},destroy:function(){var a=this.chart.scroller;this.removeEvents();r(["track",
"scrollbarRifles","scrollbar","scrollbarGroup","group"],function(a){this[a]&&this[a].destroy&&(this[a]=this[a].destroy())},this);a&&this===a.scrollbar&&(a.scrollbar=null,J(a.scrollbarButtons))}};e(t.prototype,"init",function(a){var b=this;a.apply(b,Array.prototype.slice.call(arguments,1));b.options.scrollbar&&b.options.scrollbar.enabled&&(b.options.scrollbar.vertical=!b.horiz,b.options.startOnTick=b.options.endOnTick=!1,b.scrollbar=new B(b.chart.renderer,b.options.scrollbar,b.chart),m(b.scrollbar,
"changed",function(a){var f=Math.min(d(b.options.min,b.min),b.min,b.dataMin),e=Math.max(d(b.options.max,b.max),b.max,b.dataMax)-f,c;b.horiz&&!b.reversed||!b.horiz&&b.reversed?(c=f+e*this.to,f+=e*this.from):(c=f+e*(1-this.from),f+=e*(1-this.to));b.setExtremes(f,c,!0,!1,a)}))});e(t.prototype,"render",function(a){var b=Math.min(d(this.options.min,this.min),this.min,d(this.dataMin,this.min)),e=Math.max(d(this.options.max,this.max),this.max,d(this.dataMax,this.max)),g=this.scrollbar,k=this.titleOffset||
0;a.apply(this,Array.prototype.slice.call(arguments,1));if(g){this.horiz?(g.position(this.left,this.top+this.height+2+this.chart.scrollbarsOffsets[1]+(this.opposite?0:k+this.axisTitleMargin+this.offset),this.width,this.height),k=1):(g.position(this.left+this.width+2+this.chart.scrollbarsOffsets[0]+(this.opposite?k+this.axisTitleMargin+this.offset:0),this.top,this.width,this.height),k=0);if(!this.opposite&&!this.horiz||this.opposite&&this.horiz)this.chart.scrollbarsOffsets[k]+=this.scrollbar.size+
this.scrollbar.options.margin;isNaN(b)||isNaN(e)||!G(this.min)||!G(this.max)?g.setRange(0,0):(k=(this.min-b)/(e-b),b=(this.max-b)/(e-b),this.horiz&&!this.reversed||!this.horiz&&this.reversed?g.setRange(k,b):g.setRange(1-b,1-k))}});e(t.prototype,"getOffset",function(a){var b=this.horiz?2:1,d=this.scrollbar;a.apply(this,Array.prototype.slice.call(arguments,1));d&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[b]+=d.size+d.options.margin)});e(t.prototype,"destroy",function(a){this.scrollbar&&
(this.scrollbar=this.scrollbar.destroy());a.apply(this,Array.prototype.slice.call(arguments,1))});a.Scrollbar=B})(K);(function(a){function B(a){this.init(a)}var m=a.addEvent,t=a.Axis,w=a.Chart,C=a.defaultOptions,G=a.defined,J=a.destroyObjectProperties,r=a.each,q=a.erase,A=a.error,F=a.extend,k=a.grep,d=a.hasTouch,b=a.isArray,e=a.isNumber,D=a.isObject,n=a.merge,g=a.pick,f=a.removeEvent,E=a.Scrollbar,x=a.Series,u=a.seriesTypes,c=a.wrap,h=a.swapXY,l=[].concat(a.defaultDataGroupingUnits),z=function(a){var p=
k(arguments,e);if(p.length)return Math[a].apply(0,p)};l[4]=["day",[1,2,3,4]];l[5]=["week",[1,2,3]];F(C,{navigator:{height:40,margin:25,maskInside:!0,series:{type:void 0===u.areaspline?"line":"areaspline",compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:l},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},pointRange:0,shadow:!1,threshold:null},xAxis:{className:"highcharts-navigator-xaxis",
tickLength:0,tickPixelInterval:200,labels:{align:"left",x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}});B.prototype={drawHandle:function(a,c,b,d){this.handles[c][d](b?{translateX:Math.round(this.left+this.height/2-8),translateY:Math.round(this.top+parseInt(a,10)+.5)}:{translateX:Math.round(this.left+parseInt(a,10)),translateY:Math.round(this.top+
this.height/2-8)})},getHandlePath:function(a){return h(["M",-4.5,.5,"L",3.5,.5,"L",3.5,15.5,"L",-4.5,15.5,"L",-4.5,.5,"M",-1.5,4,"L",-1.5,12,"M",.5,4,"L",.5,12],a)},drawOutline:function(a,c,b,d){var p=this.navigatorOptions.maskInside,v=this.outline.strokeWidth(),l=v/2,v=v%2/2,h=this.outlineHeight,e=this.scrollbarHeight,I=this.size,f=this.left-e,g=this.top;b?(f-=l,b=g+c+v,c=g+a+v,a=["M",f+h,g-e-v,"L",f+h,b,"L",f,b,"L",f,c,"L",f+h,c,"L",f+h,g+I+e].concat(p?["M",f+h,b-l,"L",f+h,c+l]:[])):(a+=f+e-v,c+=
f+e-v,g+=l,a=["M",f,g,"L",a,g,"L",a,g+h,"L",c,g+h,"L",c,g,"L",f+I+2*e,g].concat(p?["M",a-l,g,"L",c+l,g]:[]));this.outline[d]({d:a})},drawMasks:function(a,c,b,d){var p=this.left,l=this.top,v=this.height,h,f,e,I;b?(e=[p,p,p],I=[l,l+a,l+c],f=[v,v,v],h=[a,c-a,this.size-c]):(e=[p,p+a,p+c],I=[l,l,l],f=[a,c-a,this.size-c],h=[v,v,v]);r(this.shades,function(a,p){a[d]({x:e[p],y:I[p],width:f[p],height:h[p]})})},renderElements:function(){var a=this,c=a.navigatorOptions.maskInside,b=a.chart,d=b.inverted,l=b.renderer,
h;a.navigatorGroup=h=l.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();r([!c,c,!c],function(p,c){a.shades[c]=l.rect().addClass("highcharts-navigator-mask"+(1===c?"-inside":"-outside")).add(h)});a.outline=l.path().addClass("highcharts-navigator-outline").add(h);r([0,1],function(p){a.handles[p]=l.path(a.getHandlePath(d)).attr({zIndex:7-p}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][p]).add(h)})},update:function(a){r(this.series||[],function(a){a.baseSeries&&
delete a.baseSeries.navigatorSeries});this.destroy();n(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,c,b,d){var p=this.chart,l,h,v=this.scrollbarHeight,f,I=this.xAxis;l=I.fake?p.xAxis[0]:I;var k=this.navigatorEnabled,z,H=this.rendered;h=p.inverted;var n=p.xAxis[0].minRange;if(!this.hasDragged||G(b)){if(!e(a)||!e(c))if(H)b=0,d=I.width;else return;this.left=g(I.left,p.plotLeft+v+(h?p.plotWidth:0));this.size=z=f=g(I.len,(h?p.plotHeight:p.plotWidth)-2*v);p=h?
v:f+2*v;b=g(b,I.toPixels(a,!0));d=g(d,I.toPixels(c,!0));e(b)&&Infinity!==Math.abs(b)||(b=0,d=p);a=I.toValue(b,!0);c=I.toValue(d,!0);if(Math.abs(c-a)<n)if(this.grabbedLeft)b=I.toPixels(c-n,!0);else if(this.grabbedRight)d=I.toPixels(a+n,!0);else return;this.zoomedMax=Math.min(Math.max(b,d,0),z);this.zoomedMin=Math.min(Math.max(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(b,d),0),z);this.range=this.zoomedMax-this.zoomedMin;z=Math.round(this.zoomedMax);b=Math.round(this.zoomedMin);k&&(this.navigatorGroup.attr({visibility:"visible"}),
H=H&&!this.hasDragged?"animate":"attr",this.drawMasks(b,z,h,H),this.drawOutline(b,z,h,H),this.drawHandle(b,0,h,H),this.drawHandle(z,1,h,H));this.scrollbar&&(h?(h=this.top-v,l=this.left-v+(k||!l.opposite?0:(l.titleOffset||0)+l.axisTitleMargin),v=f+2*v):(h=this.top+(k?this.height:-v),l=this.left-v),this.scrollbar.position(l,h,p,v),this.scrollbar.setRange(this.zoomedMin/f,this.zoomedMax/f));this.rendered=!0}},addMouseEvents:function(){var a=this,c=a.chart,b=c.container,l=[],h,f;a.mouseMoveHandler=h=
function(c){a.onMouseMove(c)};a.mouseUpHandler=f=function(c){a.onMouseUp(c)};l=a.getPartsEvents("mousedown");l.push(m(b,"mousemove",h),m(b.ownerDocument,"mouseup",f));d&&(l.push(m(b,"touchmove",h),m(b.ownerDocument,"touchend",f)),l.concat(a.getPartsEvents("touchstart")));a.eventsToUnbind=l;a.series&&a.series[0]&&l.push(m(a.series[0].xAxis,"foundExtremes",function(){c.navigator.modifyNavigatorAxisExtremes()}))},getPartsEvents:function(a){var c=this,p=[];r(["shades","handles"],function(b){r(c[b],function(d,
l){p.push(m(d.element,a,function(a){c[b+"Mousedown"](a,l)}))})});return p},shadesMousedown:function(a,c){a=this.chart.pointer.normalize(a);var b=this.chart,p=this.xAxis,d=this.zoomedMin,l=this.left,h=this.size,v=this.range,f=a.chartX,e;b.inverted&&(f=a.chartY,l=this.top);1===c?(this.grabbedCenter=f,this.fixedWidth=v,this.dragOffset=f-d):(a=f-l-v/2,0===c?a=Math.max(0,a):2===c&&a+v>=h&&(a=h-v,e=this.getUnionExtremes().dataMax),a!==d&&(this.fixedWidth=v,c=p.toFixedRange(a,a+v,null,e),b.xAxis[0].setExtremes(Math.min(c.min,
c.max),Math.max(c.min,c.max),!0,null,{trigger:"navigator"})))},handlesMousedown:function(a,c){this.chart.pointer.normalize(a);a=this.chart;var b=a.xAxis[0],p=a.inverted&&!b.reversed||!a.inverted&&b.reversed;0===c?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=p?b.min:b.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=p?b.max:b.min);a.fixedRange=null},onMouseMove:function(a){var c=this,b=c.chart,p=c.left,d=c.navigatorSize,l=c.range,h=c.dragOffset,
f=b.inverted;a.touches&&0===a.touches[0].pageX||(a=b.pointer.normalize(a),b=a.chartX,f&&(p=c.top,b=a.chartY),c.grabbedLeft?(c.hasDragged=!0,c.render(0,0,b-p,c.otherHandlePos)):c.grabbedRight?(c.hasDragged=!0,c.render(0,0,c.otherHandlePos,b-p)):c.grabbedCenter&&(c.hasDragged=!0,b<h?b=h:b>d+h-l&&(b=d+h-l),c.render(0,0,b-h,b-h+l)),c.hasDragged&&c.scrollbar&&c.scrollbar.options.liveRedraw&&(a.DOMType=a.type,setTimeout(function(){c.onMouseUp(a)},0)))},onMouseUp:function(a){var c=this.chart,b=this.xAxis,
d=this.scrollbar,p,l,h=a.DOMEvent||a;(!this.hasDragged||d&&d.hasDragged)&&"scrollbar"!==a.trigger||(this.zoomedMin===this.otherHandlePos?p=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(l=this.fixedExtreme),this.zoomedMax===this.size&&(l=this.getUnionExtremes().dataMax),b=b.toFixedRange(this.zoomedMin,this.zoomedMax,p,l),G(b.min)&&c.xAxis[0].setExtremes(Math.min(b.min,b.max),Math.max(b.min,b.max),!0,this.hasDragged?!1:null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:h}));"mousemove"!==
a.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null)},removeEvents:function(){this.eventsToUnbind&&(r(this.eventsToUnbind,function(a){a()}),this.eventsToUnbind=void 0);this.removeBaseSeriesEvents()},removeBaseSeriesEvents:function(){var a=this.baseSeries||[];this.navigatorEnabled&&a[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&r(a,function(a){f(a,"updatedData",this.updatedDataHandler)},
this),a[0].xAxis&&f(a[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))},init:function(a){var b=a.options,d=b.navigator,l=d.enabled,p=b.scrollbar,h=p.enabled,b=l?d.height:0,f=h?p.height:0;this.handles=[];this.shades=[];this.chart=a;this.setBaseSeries();this.height=b;this.scrollbarHeight=f;this.scrollbarEnabled=h;this.navigatorEnabled=l;this.navigatorOptions=d;this.scrollbarOptions=p;this.outlineHeight=b+f;this.opposite=g(d.opposite,!l&&a.inverted);var e=this,p=e.baseSeries,h=a.xAxis.length,k=
a.yAxis.length,q=p&&p[0]&&p[0].xAxis||a.xAxis[0];a.extraMargin={type:e.opposite?"plotTop":"marginBottom",value:(l||!a.inverted?e.outlineHeight:0)+d.margin};a.inverted&&(a.extraMargin.type=e.opposite?"marginRight":"plotLeft");a.isDirtyBox=!0;e.navigatorEnabled?(e.xAxis=new t(a,n({breaks:q.options.breaks,ordinal:q.options.ordinal},d.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",isX:!0,type:"datetime",index:h,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,
zoomEnabled:!1},a.inverted?{offsets:[f,0,-f,0],width:b}:{offsets:[0,-f,0,f],height:b})),e.yAxis=new t(a,n(d.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:k,zoomEnabled:!1},a.inverted?{width:b}:{height:b})),p||d.series.data?e.updateNavigatorSeries():0===a.series.length&&c(a,"redraw",function(c,b){0<a.series.length&&!e.series&&(e.setBaseSeries(),a.redraw=c);c.call(a,b)}),e.renderElements(),e.addMouseEvents()):e.xAxis={translate:function(c,b){var d=a.xAxis[0],l=d.getExtremes(),p=d.len-2*
f,h=z("min",d.options.min,l.dataMin),d=z("max",d.options.max,l.dataMax)-h;return b?c*d/p+h:p*(c-h)/d},toPixels:function(a){return this.translate(a)},toValue:function(a){return this.translate(a,!0)},toFixedRange:t.prototype.toFixedRange,fake:!0};a.options.scrollbar.enabled&&(a.scrollbar=e.scrollbar=new E(a.renderer,n(a.options.scrollbar,{margin:e.navigatorEnabled?0:10,vertical:a.inverted}),a),m(e.scrollbar,"changed",function(c){var b=e.size,d=b*this.to,b=b*this.from;e.hasDragged=e.scrollbar.hasDragged;
e.render(0,0,b,d);(a.options.scrollbar.liveRedraw||"mousemove"!==c.DOMType)&&setTimeout(function(){e.onMouseUp(c)})}));e.addBaseSeriesEvents();e.addChartEvents()},getUnionExtremes:function(a){var c=this.chart.xAxis[0],b=this.xAxis,d=b.options,l=c.options,p;a&&null===c.dataMin||(p={dataMin:g(d&&d.min,z("min",l.min,c.dataMin,b.dataMin,b.min)),dataMax:g(d&&d.max,z("max",l.max,c.dataMax,b.dataMax,b.max))});return p},setBaseSeries:function(a){var c=this.chart,b=this.baseSeries=[];a=a||c.options&&c.options.navigator.baseSeries||
0;r(c.series||[],function(c,d){c.options.isInternal||!c.options.showInNavigator&&(d!==a&&c.options.id!==a||!1===c.options.showInNavigator)||b.push(c)});this.xAxis&&!this.xAxis.fake&&this.updateNavigatorSeries()},updateNavigatorSeries:function(){var c=this,d=c.chart,l=c.baseSeries,h,e,g=c.navigatorOptions.series,z,k={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",showInLegend:!1,stacking:!1,isInternal:!0,visible:!0},m=c.series=
a.grep(c.series||[],function(b){var d=b.baseSeries;return 0>a.inArray(d,l)?(d&&(f(d,"updatedData",c.updatedDataHandler),delete d.navigatorSeries),b.destroy(),!1):!0});l&&l.length&&r(l,function(a,l){var p=a.navigatorSeries,f=b(g)?{}:g;p&&!1===c.navigatorOptions.adaptToUpdatedData||(k.name="Navigator "+(l+1),h=a.options||{},z=h.navigatorOptions||{},e=n(h,k,f,z),l=z.data||f.data,c.hasNavigatorData=c.hasNavigatorData||!!l,e.data=l||h.data&&h.data.slice(0),p?p.update(e):(a.navigatorSeries=d.initSeries(e),
a.navigatorSeries.baseSeries=a,m.push(a.navigatorSeries)))});if(g.data&&(!l||!l.length)||b(g))c.hasNavigatorData=!1,g=a.splat(g),r(g,function(a,b){e=n({color:d.series[b]&&!d.series[b].options.isInternal&&d.series[b].color||d.options.colors[b]||d.options.colors[0]},a,k);e.data=a.data;e.data&&(c.hasNavigatorData=!0,m.push(d.initSeries(e)))});this.addBaseSeriesEvents()},addBaseSeriesEvents:function(){var a=this,c=a.baseSeries||[];c[0]&&c[0].xAxis&&m(c[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes);
r(c,function(c){m(c,"show",function(){this.navigatorSeries&&this.navigatorSeries.show()});m(c,"hide",function(){this.navigatorSeries&&this.navigatorSeries.hide()});!1!==this.navigatorOptions.adaptToUpdatedData&&c.xAxis&&m(c,"updatedData",this.updatedDataHandler);m(c,"remove",function(){this.navigatorSeries&&(q(a.series,this.navigatorSeries),this.navigatorSeries.remove(!1),delete this.navigatorSeries)})},this)},modifyNavigatorAxisExtremes:function(){var a=this.xAxis,c;a.getExtremes&&(!(c=this.getUnionExtremes(!0))||
c.dataMin===a.min&&c.dataMax===a.max||(a.min=c.dataMin,a.max=c.dataMax))},modifyBaseAxisExtremes:function(){var a=this.chart.navigator,c=this.getExtremes(),b=c.dataMin,d=c.dataMax,c=c.max-c.min,l=a.stickToMin,h=a.stickToMax,f,g,z=a.series&&a.series[0],k=!!this.setExtremes;this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger||(l&&(g=b,f=g+c),h&&(f=d,l||(g=Math.max(f-c,z&&z.xData?z.xData[0]:-Number.MAX_VALUE))),k&&(l||h)&&e(g)&&(this.min=this.userMin=g,this.max=this.userMax=f));a.stickToMin=
a.stickToMax=null},updatedDataHandler:function(){var a=this.chart.navigator,c=this.navigatorSeries;a.stickToMax=Math.round(a.zoomedMax)>=Math.round(a.size);a.stickToMin=e(this.xAxis.min)&&this.xAxis.min<=this.xData[0]&&(!this.chart.fixedRange||!a.stickToMax);c&&!a.hasNavigatorData&&(c.options.pointStart=this.xData[0],c.setData(this.options.data,!1,null,!1))},addChartEvents:function(){m(this.chart,"redraw",function(){var a=this.navigator,c=a&&(a.baseSeries&&a.baseSeries[0]&&a.baseSeries[0].xAxis||
a.scrollbar&&this.xAxis[0]);c&&a.render(c.min,c.max)})},destroy:function(){this.removeEvents();this.xAxis&&(q(this.chart.xAxis,this.xAxis),q(this.chart.axes,this.xAxis));this.yAxis&&(q(this.chart.yAxis,this.yAxis),q(this.chart.axes,this.yAxis));r(this.series||[],function(a){a.destroy&&a.destroy()});r("series xAxis yAxis shades outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" "),function(a){this[a]&&this[a].destroy&&this[a].destroy();this[a]=null},this);
r([this.handles],function(a){J(a)},this)}};a.Navigator=B;c(t.prototype,"zoom",function(a,c,b){var d=this.chart,l=d.options,h=l.chart.zoomType,e=l.navigator,l=l.rangeSelector,f;this.isXAxis&&(e&&e.enabled||l&&l.enabled)&&("x"===h?d.resetZoomButton="blocked":"y"===h?f=!1:"xy"===h&&(d=this.previousZoom,G(c)?this.previousZoom=[this.min,this.max]:d&&(c=d[0],b=d[1],delete this.previousZoom)));return void 0!==f?f:a.call(this,c,b)});c(w.prototype,"init",function(a,c,b){m(this,"beforeRender",function(){var a=
this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new B(this)});a.call(this,c,b)});c(w.prototype,"setChartSize",function(a){var c=this.legend,b=this.navigator,d,l,h,e;a.apply(this,[].slice.call(arguments,1));b&&(l=c.options,h=b.xAxis,e=b.yAxis,d=b.scrollbarHeight,this.inverted?(b.left=b.opposite?this.chartWidth-d-b.height:this.spacing[3]+d,b.top=this.plotTop+d):(b.left=this.plotLeft+d,b.top=b.navigatorOptions.top||this.chartHeight-b.height-d-this.spacing[2]-("bottom"===
l.verticalAlign&&l.enabled&&!l.floating?c.legendHeight+g(l.margin,10):0)),h&&e&&(this.inverted?h.options.left=e.options.left=b.left:h.options.top=e.options.top=b.top,h.setAxisSize(),e.setAxisSize()))});c(x.prototype,"addPoint",function(a,c,b,d,l){var h=this.options.turboThreshold;h&&this.xData.length>h&&D(c,!0)&&this.chart.navigator&&A(20,!0);a.call(this,c,b,d,l)});c(w.prototype,"addSeries",function(a,c,b,d){a=a.call(this,c,!1,d);this.navigator&&this.navigator.setBaseSeries();g(b,!0)&&this.redraw();
return a});c(x.prototype,"update",function(a,c,b){a.call(this,c,!1);this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries();g(b,!0)&&this.chart.redraw()});w.prototype.callbacks.push(function(a){var c=a.navigator;c&&(a=a.xAxis[0].getExtremes(),c.render(a.min,a.max))})})(K);(function(a){function B(a){this.init(a)}var m=a.addEvent,t=a.Axis,w=a.Chart,C=a.css,G=a.createElement,J=a.dateFormat,r=a.defaultOptions,q=r.global.useUTC,A=a.defined,F=a.destroyObjectProperties,k=a.discardElement,
d=a.each,b=a.extend,e=a.fireEvent,D=a.Date,n=a.isNumber,g=a.merge,f=a.pick,E=a.pInt,x=a.splat,u=a.wrap;b(r,{rangeSelector:{buttonTheme:{"stroke-width":0,width:28,height:18,padding:2,zIndex:7},height:35,inputPosition:{align:"right"}}});r.lang=g(r.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});B.prototype={clickButton:function(a,b){var c=this,h=c.chart,e=c.buttonOptions[a],g=h.xAxis[0],k=h.scroller&&h.scroller.getUnionExtremes()||g||{},H=k.dataMin,r=k.dataMax,u,y=g&&
Math.round(Math.min(g.max,f(r,g.max))),w=e.type,L,k=e._range,A,O,N,C=e.dataGrouping;if(null!==H&&null!==r){h.fixedRange=k;C&&(this.forcedDataGrouping=!0,t.prototype.setDataGrouping.call(g||{chart:this.chart},C,!1));if("month"===w||"year"===w)g?(w={range:e,max:y,dataMin:H,dataMax:r},u=g.minFromRange.call(w),n(w.newMax)&&(y=w.newMax)):k=e;else if(k)u=Math.max(y-k,H),y=Math.min(u+k,r);else if("ytd"===w)if(g)void 0===r&&(H=Number.MAX_VALUE,r=Number.MIN_VALUE,d(h.series,function(a){a=a.xData;H=Math.min(a[0],
H);r=Math.max(a[a.length-1],r)}),b=!1),y=c.getYTDExtremes(r,H,q),u=A=y.min,y=y.max;else{m(h,"beforeRender",function(){c.clickButton(a)});return}else"all"===w&&g&&(u=H,y=r);c.setSelected(a);g?g.setExtremes(u,y,f(b,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:e}):(L=x(h.options.xAxis)[0],N=L.range,L.range=k,O=L.min,L.min=A,m(h,"load",function(){L.range=N;L.min=O}))}},setSelected:function(a){this.selected=this.options.selected=a},defaultButtons:[{type:"month",count:1,text:"1m"},{type:"month",
count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],init:function(a){var c=this,b=a.options.rangeSelector,f=b.buttons||[].concat(c.defaultButtons),p=b.selected,g=function(){var a=c.minInput,b=c.maxInput;a&&a.blur&&e(a,"blur");b&&b.blur&&e(b,"blur")};c.chart=a;c.options=b;c.buttons=[];a.extraTopMargin=b.height;c.buttonOptions=f;this.unMouseDown=m(a.container,"mousedown",g);this.unResize=m(a,"resize",g);d(f,c.computeButtonRange);
void 0!==p&&f[p]&&this.clickButton(p,!1);m(a,"load",function(){m(a.xAxis[0],"setExtremes",function(b){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==b.trigger&&"updatedData"!==b.trigger&&c.forcedDataGrouping&&this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this.chart,b=a.xAxis[0],l=Math.round(b.max-b.min),e=!b.hasVisibleSeries,a=a.scroller&&a.scroller.getUnionExtremes()||b,f=a.dataMin,g=a.dataMax,a=this.getYTDExtremes(g,f,q),k=a.min,m=a.max,t=this.selected,r=n(t),y=
this.options.allButtonsEnabled,u=this.buttons;d(this.buttonOptions,function(a,c){var d=a._range,h=a.type,p=a.count||1;a=u[c];var z=0;c=c===t;var n=d>g-f,v=d<b.minRange,q=!1,H=!1,d=d===l;("month"===h||"year"===h)&&l>=864E5*{month:28,year:365}[h]*p&&l<=864E5*{month:31,year:366}[h]*p?d=!0:"ytd"===h?(d=m-k===l,q=!c):"all"===h&&(d=b.max-b.min>=g-f,H=!c&&r&&d);h=!y&&(n||v||H||e);d=c&&d||d&&!r&&!q;h?z=3:d&&(r=!0,z=2);a.state!==z&&a.setState(z)})},computeButtonRange:function(a){var c=a.type,b=a.count||1,
d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[c])a._range=d[c]*b;else if("month"===c||"year"===c)a._range=864E5*{month:30,year:365}[c]*b},setInputValue:function(a,b){var c=this.chart.options.rangeSelector,d=this[a+"Input"];A(b)&&(d.previousValue=d.HCTime,d.HCTime=b);d.value=J(c.inputEditDateFormat||"%Y-%m-%d",d.HCTime);this[a+"DateBox"].attr({text:J(c.inputDateFormat||"%b %e, %Y",d.HCTime)})},showInput:function(a){var c=this.inputGroup,b=this[a+"DateBox"];C(this[a+"Input"],
{left:c.translateX+b.x+"px",top:c.translateY+"px",width:b.width-2+"px",height:b.height-2+"px",border:"2px solid silver"})},hideInput:function(a){C(this[a+"Input"],{border:0,width:"1px",height:"1px"});this.setInputValue(a)},drawInput:function(a){function b(){var a=m.value,b=(f.inputDateParser||Date.parse)(a),l=d.xAxis[0],h=d.scroller&&d.scroller.xAxis?d.scroller.xAxis:l,e=h.dataMin,h=h.dataMax;b!==m.previousValue&&(m.previousValue=b,n(b)||(b=a.split("-"),b=Date.UTC(E(b[0]),E(b[1])-1,E(b[2]))),n(b)&&
(q||(b+=6E4*(new Date).getTimezoneOffset()),k?b>c.maxInput.HCTime?b=void 0:b<e&&(b=e):b<c.minInput.HCTime?b=void 0:b>h&&(b=h),void 0!==b&&l.setExtremes(k?b:l.min,k?l.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))}var c=this,d=c.chart,e=d.renderer,f=d.options.rangeSelector,g=c.div,k="min"===a,m,t,y=this.inputGroup;this[a+"Label"]=t=e.label(r.lang[k?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(y);y.offset+=t.width+5;this[a+
"DateBox"]=e=e.label("",y.offset).addClass("highcharts-range-input").attr({padding:2,width:f.inputBoxWidth||90,height:f.inputBoxHeight||17,stroke:f.inputBoxBorderColor||"#cccccc","stroke-width":1,"text-align":"center"}).on("click",function(){c.showInput(a);c[a+"Input"].focus()}).add(y);y.offset+=e.width+(k?10:0);this[a+"Input"]=m=G("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:d.plotTop+"px"},g);m.onfocus=function(){c.showInput(a)};m.onblur=function(){c.hideInput(a)};m.onchange=
b;m.onkeypress=function(a){13===a.keyCode&&b()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a=f((b.buttonPosition||{}).y,a.plotTop-a.axisOffset[0]-b.height);return{buttonTop:a,inputTop:a-10}},getYTDExtremes:function(a,b,d){var c=new D(a),l=c[D.hcGetFullYear]();d=d?D.UTC(l,0,1):+new D(l,0,1);b=Math.max(b||0,d);c=c.getTime();return{max:Math.min(a||c,c),min:b}},render:function(a,h){var c=this,e=c.chart,g=e.renderer,k=e.container,n=e.options,m=n.exporting&&!1!==n.exporting.enabled&&
n.navigation&&n.navigation.buttonOptions,q=n.rangeSelector,t=c.buttons,n=r.lang,y=c.div,y=c.inputGroup,u=q.buttonTheme,w=q.buttonPosition||{},x=q.inputEnabled,C=u&&u.states,E=e.plotLeft,B,F=this.getPosition(),D=c.group,J=c.rendered;!1!==q.enabled&&(J||(c.group=D=g.g("range-selector-buttons").add(),c.zoomText=g.text(n.rangeSelectorZoom,f(w.x,E),15).css(q.labelStyle).add(D),B=f(w.x,E)+c.zoomText.getBBox().width+5,d(c.buttonOptions,function(a,b){t[b]=g.button(a.text,B,0,function(){c.clickButton(b);c.isActive=
!0},u,C&&C.hover,C&&C.select,C&&C.disabled).attr({"text-align":"center"}).add(D);B+=t[b].width+f(q.buttonSpacing,5)}),!1!==x&&(c.div=y=G("div",null,{position:"relative",height:0,zIndex:1}),k.parentNode.insertBefore(y,k),c.inputGroup=y=g.g("input-group").add(),y.offset=0,c.drawInput("min"),c.drawInput("max"))),c.updateButtonStates(),D[J?"animate":"attr"]({translateY:F.buttonTop}),!1!==x&&(y.align(b({y:F.inputTop,width:y.offset,x:m&&F.inputTop<(m.y||0)+m.height-e.spacing[0]?-40:0},q.inputPosition),
!0,e.spacingBox),A(x)||(e=D.getBBox(),y[y.alignAttr.translateX<e.x+e.width+10?"hide":"show"]()),c.setInputValue("min",a),c.setInputValue("max",h)),c.rendered=!0)},update:function(a){var b=this.chart;g(!0,b.options.rangeSelector,a);this.destroy();this.init(b)},destroy:function(){var b=this,d=b.minInput,l=b.maxInput;b.unMouseDown();b.unResize();F(b.buttons);d&&(d.onfocus=d.onblur=d.onchange=null);l&&(l.onfocus=l.onblur=l.onchange=null);a.objectEach(b,function(a,c){a&&"chart"!==c&&(a.destroy?a.destroy():
a.nodeType&&k(this[c]));a!==B.prototype[c]&&(b[c]=null)},this)}};t.prototype.toFixedRange=function(a,b,d,e){var c=this.chart&&this.chart.fixedRange;a=f(d,this.translate(a,!0,!this.horiz));b=f(e,this.translate(b,!0,!this.horiz));d=c&&(b-a)/c;.7<d&&1.3>d&&(e?a=b-c:b=a+c);n(a)||(a=b=void 0);return{min:a,max:b}};t.prototype.minFromRange=function(){var a=this.range,b={month:"Month",year:"FullYear"}[a.type],d,e=this.max,g,k,m=function(a,c){var d=new Date(a),e=d["get"+b]();d["set"+b](e+c);e===d["get"+b]()&&
d.setDate(0);return d.getTime()-a};n(a)?(d=e-a,k=a):(d=e+m(e,-a.count),this.chart&&(this.chart.fixedRange=e-d));g=f(this.dataMin,Number.MIN_VALUE);n(d)||(d=g);d<=g&&(d=g,void 0===k&&(k=m(d,a.count)),this.newMax=Math.min(d+k,this.dataMax));n(e)||(d=void 0);return d};u(w.prototype,"init",function(a,b,d){m(this,"init",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new B(this))});a.call(this,b,d)});w.prototype.callbacks.push(function(a){function b(){c=a.xAxis[0].getExtremes();n(c.min)&&
d.render(c.min,c.max)}var c,d=a.rangeSelector,e,f;d&&(f=m(a.xAxis[0],"afterSetExtremes",function(a){d.render(a.min,a.max)}),e=m(a,"redraw",b),b());m(a,"destroy",function(){d&&(e(),f())})});a.RangeSelector=B})(K);(function(a){var B=a.arrayMax,m=a.arrayMin,t=a.Axis,w=a.Chart,C=a.defined,G=a.each,J=a.format,r=a.grep,q=a.inArray,A=a.isNumber,F=a.isString,k=a.map,d=a.merge,b=a.pick,e=a.Point,D=a.Series,n=a.splat,g=a.SVGRenderer,f=a.wrap,E=D.prototype,x=E.init,u=E.processData,c=e.prototype.tooltipFormatter;
a.StockChart=a.stockChart=function(c,e,f){var l=F(c)||c.nodeName,h=arguments[l?1:0],g=h.series,m=a.getOptions(),q,z=b(h.navigator&&h.navigator.enabled,m.navigator.enabled,!0),t=z?{startOnTick:!1,endOnTick:!1}:null,r={marker:{enabled:!1,radius:2}},u={shadow:!1,borderWidth:0};h.xAxis=k(n(h.xAxis||{}),function(a){return d({minPadding:0,maxPadding:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"},showLastLabel:!0},m.xAxis,a,{type:"datetime",categories:null},t)});h.yAxis=k(n(h.yAxis||{}),function(a){q=
b(a.opposite,!0);return d({labels:{y:-2},opposite:q,showLastLabel:!1,title:{text:null}},m.yAxis,a)});h.series=null;h=d({chart:{panning:!0,pinchType:"x"},navigator:{enabled:z},scrollbar:{enabled:b(m.scrollbar.enabled,!0)},rangeSelector:{enabled:b(m.rangeSelector.enabled,!0)},title:{text:null},tooltip:{shared:!0,crosshairs:!0},legend:{enabled:!1},plotOptions:{line:r,spline:r,area:r,areaspline:r,arearange:r,areasplinerange:r,column:u,columnrange:u,candlestick:u,ohlc:u}},h,{isStock:!0});h.series=g;return l?
new w(c,h,f):new w(h,e)};f(t.prototype,"autoLabelAlign",function(a){var b=this.chart,c=this.options,b=b._labelPanes=b._labelPanes||{},d=this.options.labels;return this.chart.options.isStock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled)?(15===d.x&&(d.x=0),void 0===d.align&&(d.align="right"),b[c]=this,"right"):a.apply(this,[].slice.call(arguments,1))});f(t.prototype,"destroy",function(a){var b=this.chart,c=this.options&&this.options.top+","+this.options.height;c&&b._labelPanes&&b._labelPanes[c]===
this&&delete b._labelPanes[c];return a.apply(this,Array.prototype.slice.call(arguments,1))});f(t.prototype,"getPlotLinePath",function(c,d,e,f,g,m){var h=this,l=this.isLinked&&!this.series?this.linkedParent.series:this.series,p=h.chart,n=p.renderer,t=h.left,r=h.top,z,v,u,w,x=[],I=[],B,D;if("xAxis"!==h.coll&&"yAxis"!==h.coll)return c.apply(this,[].slice.call(arguments,1));I=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=h.options[b];return A(a)?[p[b][a]]:F(a)?[p.get(a)]:k(l,function(a){return a[b]})}(h.coll);
G(h.isXAxis?p.yAxis:p.xAxis,function(a){if(C(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=C(a.options[b])?p[b][a.options[b]]:p[b][0];h===b&&I.push(a)}});B=I.length?[]:[h.isXAxis?p.yAxis[0]:p.xAxis[0]];G(I,function(b){-1!==q(b,B)||a.find(B,function(a){return a.pos===b.pos&&a.len&&b.len})||B.push(b)});D=b(m,h.translate(d,null,null,f));A(D)&&(h.horiz?G(B,function(a){var b;v=a.pos;w=v+a.len;z=u=Math.round(D+h.transB);if(z<t||z>t+h.width)g?z=u=Math.min(Math.max(t,
z),t+h.width):b=!0;b||x.push("M",z,v,"L",u,w)}):G(B,function(a){var b;z=a.pos;u=z+a.len;v=w=Math.round(r+h.height-D);if(v<r||v>r+h.height)g?v=w=Math.min(Math.max(r,v),h.top+h.height):b=!0;b||x.push("M",z,v,"L",u,w)}));return 0<x.length?n.crispPolyLine(x,e||1):null});t.prototype.getPlotBandPath=function(a,b){b=this.getPlotLinePath(b,null,null,!0);a=this.getPlotLinePath(a,null,null,!0);var c=[],d;if(a&&b)if(a.toString()===b.toString())c=a,c.flat=!0;else for(d=0;d<a.length;d+=6)c.push("M",a[d+1],a[d+
2],"L",a[d+4],a[d+5],b[d+4],b[d+5],b[d+1],b[d+2],"z");else c=null;return c};g.prototype.crispPolyLine=function(a,b){var c;for(c=0;c<a.length;c+=6)a[c+1]===a[c+4]&&(a[c+1]=a[c+4]=Math.round(a[c+1])-b%2/2),a[c+2]===a[c+5]&&(a[c+2]=a[c+5]=Math.round(a[c+2])+b%2/2);return a};f(t.prototype,"hideCrosshair",function(a,b){a.call(this,b);this.crossLabel&&(this.crossLabel=this.crossLabel.hide())});f(t.prototype,"drawCrosshair",function(a,c,d){var e,f;a.call(this,c,d);if(C(this.crosshair.label)&&this.crosshair.label.enabled&&
this.cross){a=this.chart;var h=this.options.crosshair.label,g=this.horiz;e=this.opposite;f=this.left;var l=this.top,k=this.crossLabel,m,n=h.format,q="",t="inside"===this.options.tickPosition,r=!1!==this.crosshair.snap,u=0;c||(c=this.cross&&this.cross.e);m=g?"center":e?"right"===this.labelAlign?"right":"left":"left"===this.labelAlign?"left":"center";k||(k=this.crossLabel=a.renderer.label(null,null,null,h.shape||"callout").addClass("highcharts-crosshair-label"+(this.series[0]&&" highcharts-color-"+
this.series[0].colorIndex)).attr({align:h.align||m,padding:b(h.padding,8),r:b(h.borderRadius,3),zIndex:2}).add(this.labelGroup));g?(m=r?d.plotX+f:c.chartX,l+=e?0:this.height):(m=e?this.width+f:0,l=r?d.plotY+l:c.chartY);n||h.formatter||(this.isDatetimeAxis&&(q="%b %d, %Y"),n="{value"+(q?":"+q:"")+"}");c=r?d[this.isXAxis?"x":"y"]:this.toValue(g?c.chartX:c.chartY);k.attr({text:n?J(n,{value:c}):h.formatter.call(this,c),x:m,y:l,visibility:"visible"});c=k.getBBox();if(g){if(t&&!e||!t&&e)l=k.y-c.height}else l=
k.y-c.height/2;g?(e=f-c.x,f=f+this.width-c.x):(e="left"===this.labelAlign?f:0,f="right"===this.labelAlign?f+this.width:a.chartWidth);k.translateX<e&&(u=e-k.translateX);k.translateX+c.width>=f&&(u=-(k.translateX+c.width-f));k.attr({x:m+u,y:l,anchorX:g?m:this.opposite?0:a.chartWidth,anchorY:g?this.opposite?a.chartHeight:0:l+c.height/2})}});E.init=function(){x.apply(this,arguments);this.setCompare(this.options.compare)};E.setCompare=function(a){this.modifyValue="value"===a||"percent"===a?function(b,
c){var d=this.compareValue;if(void 0!==b&&void 0!==d)return b="value"===a?b-d:b/d*100-(100===this.options.compareBase?0:100),c&&(c.change=b),b}:null;this.userOptions.compare=a;this.chart.hasRendered&&(this.isDirty=!0)};E.processData=function(){var a,b=-1,c,d,e,f;u.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,e=d.length,this.pointArrayMap&&(b=q("close",this.pointArrayMap),-1===b&&(b=q(this.pointValKey||"y",this.pointArrayMap))),a=0;a<e-1;a++)if(f=
d[a]&&-1<b?d[a][b]:d[a],A(f)&&c[a+1]>=this.xAxis.min&&0!==f){this.compareValue=f;break}};f(E,"getExtremes",function(a){var b;a.apply(this,[].slice.call(arguments,1));this.modifyValue&&(b=[this.modifyValue(this.dataMin),this.modifyValue(this.dataMax)],this.dataMin=m(b),this.dataMax=B(b))});t.prototype.setCompare=function(a,c){this.isXAxis||(G(this.series,function(b){b.setCompare(a)}),b(c,!0)&&this.chart.redraw())};e.prototype.tooltipFormatter=function(d){d=d.replace("{point.change}",(0<this.change?
"+":"")+a.numberFormat(this.change,b(this.series.tooltipOptions.changeDecimals,2)));return c.apply(this,[d])};f(D.prototype,"render",function(a){this.chart.is3d&&this.chart.is3d()||this.chart.polar||!this.xAxis||this.xAxis.isRadial||(!this.clipBox&&this.animate?(this.clipBox=d(this.chart.clipBox),this.clipBox.width=this.xAxis.len,this.clipBox.height=this.yAxis.len):this.chart[this.sharedClipKey]?this.chart[this.sharedClipKey].attr({width:this.xAxis.len,height:this.yAxis.len}):this.clipBox&&(this.clipBox.width=
this.xAxis.len,this.clipBox.height=this.yAxis.len));a.call(this)});f(w.prototype,"getSelectedPoints",function(a){var b=a.call(this);G(this.series,function(a){a.hasGroupedData&&(b=b.concat(r(a.points||[],function(a){return a.selected})))});return b});f(w.prototype,"update",function(a,b){"scrollbar"in b&&this.navigator&&(d(!0,this.options.scrollbar,b.scrollbar),this.navigator.update({},!1),delete b.scrollbar);return a.apply(this,Array.prototype.slice.call(arguments,1))})})(K)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/stock.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":125,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","addEvent","Axis","Chart","css","dateFormat","defined","each","extend","noop","timeUnits","wrap","Series","prototype","proceed","xAxis","apply","Array","slice","call","arguments","series","options","ordinal","ordinalIndex","normalizedInterval","min","max","startOfWeek","positions","closestDistance","findHigherRanks","start","end","segmentPositions","higherRanks","hasCrossedHigherRank","posLength","outsideMax","groupPositions","lastGroupPosition","Number","MAX_VALUE","tickPixelIntervalOption","tickPixelInterval","breaks","length","undefined","shift","concat","info","unitRange","hour","i","translatedArr","lastTranslated","distances","translated","translate","sort","medianDistance","Math","floor","distance","abs","itemToRemove","splice","beforeSetTickPositions","len","ordinalPositions","useOrdinal","dist","extremes","axis","getExtremes","maxIndex","hasBreaks","isXAxis","isOrdinal","ignoreHiddenSeries","chart","visible","takeOrdinalPosition","processedXData","a","b","keepOrdinalPadding","minIndex","ordinal2lin","ordinalSlope","slope","ordinalOffset","groupIntervalFactor","val2lin","val","toIndex","ordinalLength","ret","lin2val","fromIndex","linearEquivalentLeft","linearEquivalentRight","getExtendedPositions","grouping","currentDataGrouping","key","count","unitName","fakeAxis","fakeSeries","dataMin","dataMax","xData","destroyGroupedData","dataGrouping","enabled","forced","approximation","units","processData","push","getGroupIntervalFactor","xMin","xMax","median","postProcessTickInterval","tickInterval","closestPointRange","e","chartX","runBase","mouseDownX","hoverPoints","movedUnits","translationSlope","extendedAxis","searchAxisRight","point","setState","searchAxisLeft","fixedRange","trimmedRange","toFixedRange","setExtremes","trigger","container","cursor","stripArguments","drawPointsWrapped","drawBreaks","yAxis","pick","pointArrayMap","isArray","fireEvent","isInBreak","brk","repeat","Infinity","from","to","test","inclusive","isInAnyBreak","testKeep","inbrk","keep","showPoints","tickPositions","newPositions","userOptions","isBroken","axis.val2lin","nval","breakArray","axis.lin2val","axis.setExtremes","newMin","newMax","redraw","animation","eventArguments","setAxisTranslation","axis.setAxisTranslation","saveOld","breakArrayT","inBrk","userMin","userMax","pointRangePadding","value","move","size","breakSize","unitLength","staticScale","transA","minPixelPadding","minPointOffset","points","connectNulls","nullGap","y","x","data","destroyElements","H.Series.prototype.drawBreaks","keys","threshold","eventName","toUpperCase","gappedPath","H.Series.prototype.gappedPath","gapSize","xRange","gapUnit","isNull","stacking","stack","stacks","stackKey","StackItem","stackLabels","total","getGraphPath","seriesTypes","column","arrayMax","arrayMin","defaultPlotOptions","format","isNumber","merge","Point","Tooltip","seriesProto","baseProcessData","baseGeneratePoints","generatePoints","baseDestroy","destroy","commonOptions","groupPixelWidth","dateTimeLabelFormats","millisecond","second","minute","day","week","month","year","specificOptions","line","spline","area","areaspline","arearange","areasplinerange","columnrange","candlestick","ohlc","defaultDataGroupingUnits","approximations","sum","arr","hasNulls","average","averages","open","high","low","close","range","groupData","seriesProto.groupData","yData","dataOptions","groupedXData","groupedYData","groupMap","dataLength","pointX","groupedY","handleYData","values","approximationFn","type","pointArrayMapLength","pos","valuesLen","dataGroupInfo","j","index","cropStart","pointClass","applyOptions","pointY","seriesProto.processData","dataGroupingOptions","groupingEnabled","allowDG","isStock","hasGroupedData","forceCrop","hasProcessed","processedYData","plotSizeX","getGroupPixelWidth","isDirty","interval","getTimeTicks","normalizeTimeTickInterval","groupedData","smoothed","totalRange","seriesProto.destroyGroupedData","seriesProto.generatePoints","dataGroup","error","labelConfig","isFooter","tooltipOptions","xDateFormat","xDateFormatEnd","labelFormats","tooltip","getXDateFormat","formattedKey","seriesProto.destroy","itemOptions","plotOptions","defaultOptions","requireSorting","Axis.prototype.getGroupPixelWidth","doGrouping","dgOptions","setDataGrouping","Axis.prototype.setDataGrouping","update","seriesOptions","seriesType","lineWidth","pointFormat","directTouch","toYData","pointValKey","hasModifyValue","modifyValue","toPixels","tooltipPos","plotHigh","plotTop","drawPoints","plotOpen","crispCorr","halfWidth","path","graphic","crispX","isNew","plotY","renderer","add","group","strokeWidth","round","plotX","shapeArgs","width","yBottom","plotClose","d","addClass","getClassName","animate","candlestickOptions","states","hover","topBox","hasBottomWhisker","bottomBox","hasTopWhisker","TrackerMixin","symbols","SVGRenderer","stableSort","pointRange","shape","stackDistance","textAlign","sorted","noSharedTooltip","trackerGroups","init","lastPoint","optionsOnSeries","onSeries","get","onKey","step","onData","xAxisExt","xOffset","leftPoint","lastX","rightPoint","pointXOffset","barW","substr","stackIndex","chartHeight","bottom","opposite","height","offset","top","optionsY","anchorX","anchorY","outsideRight","label","useHTML","attr","align","markerGroup","div","text","title","inverted","plotLeft","SVGElement","on","drawTracker","drawTrackerPoint","element","raised","_y","otherPoint","buildKDTree","setClip","flag","symbols.flag","w","h","labelTopOrBottomY","Scrollbar","correctFloat","destroyObjectProperties","hasTouch","isTouchDevice","removeEvent","swapXY","defaultScrollbarOptions","barBorderRadius","buttonBorderRadius","liveRedraw","svg","margin","minWidth","zIndex","scrollbar","vertical","temp","scrollbarButtons","render","initEvents","addEvents","scroller","g","translateY","track","rect","r","trackBorderRadius","trackBorderWidth","scrollbarGroup","scrollbarRifles","scrollbarStrokeWidth","drawScrollbarButton","position","yOffset","method","rendered","barWidth","translateX","tempElem","crisp","setRange","fullWidth","fromPX","newSize","hasDragged","ceil","calculatedWidth","newPos","newRiflesPos","scrollbarTop","scrollbarLeft","hide","show","showFull","mouseMoveHandler","scroller.mouseMoveHandler","normalizedEvent","pointer","normalize","direction","initPositions","grabbedCenter","touches","chartPosition","cursorToScrollbarPosition","scrollPosition","change","updatePosition","DOMType","DOMEvent","mouseUpHandler","scroller.mouseUpHandler","chartY","mouseDownHandler","scroller.mouseDownHandler","mousePosition","buttonToMinClick","scroller.buttonToMinClick","buttonToMaxClick","scroller.buttonToMaxClick","trackClick","scroller.trackClick","left","minWidthDifference","buttonsOrder","buttons","bar","_events","ownerDocument","args","removeEvents","prop","horiz","startOnTick","endOnTick","unitedMin","unitedMax","reversed","scrollMin","scrollMax","titleOffset","scrollbarsOffsets","axisTitleMargin","offsetsIndex","isNaN","axisOffset","Navigator","erase","grep","isObject","numExt","extreme","numbers","navigator","maskInside","defaultSeriesType","compare","dataLabels","id","className","lineColor","marker","shadow","tickLength","labels","crosshair","minPadding","maxPadding","tickWidth","drawHandle","verb","handles","parseInt","getHandlePath","drawOutline","zoomedMin","zoomedMax","navigatorOptions","outlineWidth","outline","halfOutline","outlineCorrection","outlineHeight","scrollbarHeight","navigatorSize","navigatorTop","verticalMin","drawMasks","navigatorHeight","shades","shade","renderElements","navigatorGroup","visibility","hasMask","baseSeries","navigatorSeries","pxMin","pxMax","scrollbarXAxis","fake","navigatorEnabled","minRange","plotWidth","plotHeight","navigatorWidth","toValue","grabbedLeft","grabbedRight","fixedWidth","addMouseEvents","eventsToUnbind","onMouseMove","onMouseUp","getPartsEvents","modifyNavigatorAxisExtremes","events","name","navigatorItem","shadesMousedown","navigatorPosition","fixedMax","dragOffset","getUnionExtremes","ext","handlesMousedown","baseXAxis","reverse","otherHandlePos","fixedExtreme","pageX","setTimeout","fixedMin","triggerOp","unbind","removeBaseSeriesEvents","adaptToUpdatedData","updatedDataHandler","modifyBaseAxisExtremes","chartOptions","scrollbarOptions","scrollbarEnabled","setBaseSeries","xAxisIndex","yAxisIndex","baseXaxis","extraMargin","isDirtyBox","isX","zoomEnabled","offsets","alignTicks","updateNavigatorSeries","scrollTrackWidth","valueRange","addBaseSeriesEvents","addChartEvents","returnFalseOnNoBaseSeries","baseAxis","navAxis","navAxisOptions","baseAxisOptions","baseSeriesOptions","isInternal","showInNavigator","baseOptions","mergedNavSeriesOptions","chartNavigatorSeriesOptions","baseNavigatorOptions","navSeriesMixin","enableMouseTracking","linkedTo","padXAxis","showInLegend","navSeries","base","inArray","linkedNavSeries","userNavOptions","navigatorSeriesData","hasNavigatorData","initSeries","splat","userSeriesOptions","color","colors","remove","unionExtremes","baseExtremes","baseDataMin","baseDataMax","stickToMin","stickToMax","hasSetExtremes","eventArgs","pointStart","setData","axes","s","coll","zoomType","rangeSelector","resetZoomButton","previousZoom","callback","legend","legendOptions","chartWidth","spacing","verticalAlign","floating","legendHeight","setAxisSize","turboThreshold","newOptions","callbacks","RangeSelector","createElement","useUTC","global","discardElement","HCDate","Date","pInt","buttonTheme","padding","inputPosition","lang","rangeSelectorZoom","rangeSelectorFrom","rangeSelectorTo","clickButton","rangeOptions","buttonOptions","baseXAxisOptions","_range","rangeMin","minSetting","rangeSetting","forcedDataGrouping","ctx","minFromRange","MIN_VALUE","ytdExtremes","getYTDExtremes","setSelected","rangeSelectorButton","resetMinAndRange","selected","defaultButtons","selectedOption","blurInputs","minInput","maxInput","blur","extraTopMargin","unMouseDown","unResize","computeButtonRange","updateButtonStates","actualRange","hasNoData","hasVisibleSeries","ytdMin","ytdMax","selectedExists","allButtonsEnabled","button","state","isSelected","isTooGreatRange","isTooSmallRange","isYTDButNotSelected","isAllButAlreadyShowingAll","isSameRange","disable","select","fixedTimes","setInputValue","time","input","previousValue","HCTime","inputEditDateFormat","inputDateFormat","showInput","inputGroup","dateBox","border","hideInput","drawInput","updateExtremes","inputValue","inputDateParser","parse","chartAxis","dataAxis","split","UTC","getTimezoneOffset","isMin","inputBoxWidth","inputBoxHeight","stroke","inputBoxBorderColor","focus","onfocus","input.onfocus","onblur","input.onblur","onchange","onkeypress","input.onkeypress","event","keyCode","getPosition","buttonTop","buttonPosition","inputTop","now","hcGetFullYear","startOfYear","getTime","navButtonOptions","exporting","navigation","inputEnabled","buttonLeft","buttonGroup","zoomText","labelStyle","getBBox","isActive","disabled","buttonSpacing","parentNode","insertBefore","spacingBox","buttonBBox","alignAttr","rSelector","objectEach","nodeType","Axis.prototype.toFixedRange","changeRatio","Axis.prototype.minFromRange","timeName","getTrueRange","date","basePeriod","setDate","renderRangeSelector","unbindRender","unbindSetExtremes","destroyEvents","isString","map","seriesInit","seriesProcessData","pointTooltipFormatter","tooltipFormatter","StockChart","stockChart","H.stockChart","c","hasRenderToArg","nodeName","getOptions","disableStartOnTick","lineOptions","radius","columnOptions","borderWidth","xAxisOptions","overflow","showLastLabel","categories","yAxisOptions","panning","pinchType","shared","crosshairs","panes","_labelPanes","labelOptions","old","force","translatedValue","isLinked","linkedParent","axisLeft","axisTop","x1","y1","x2","y2","result","uniqueAxes","transVal","getAxis","otherColl","opt","axes2","A","indexOf","rax","axis2","find","unique","skip","transB","crispPolyLine","getPlotBandPath","Axis.prototype.getPlotBandPath","toPath","getPlotLinePath","toString","flat","SVGRenderer.prototype.crispPolyLine","crossLabel","cross","posx","formatOption","formatFormat","tickInside","tickPosition","snap","labelAlign","colorIndex","borderRadius","labelGroup","posy","formatter","isDatetimeAxis","crossBox","right","seriesProto.init","setCompare","seriesProto.setCompare","compareValue","compareBase","hasRendered","keyIndex","Axis.prototype.setCompare","Point.prototype.tooltipFormatter","replace","numberFormat","changeDecimals","is3d","polar","isRadial","clipBox","sharedClipKey","serie"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/stock.src.js
@@ -0,0 +1,7033 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* Highstock as a plugin for Highcharts
*
* (c) 2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Axis = H.Axis,
Chart = H.Chart,
css = H.css,
dateFormat = H.dateFormat,
defined = H.defined,
each = H.each,
extend = H.extend,
noop = H.noop,
Series = H.Series,
timeUnits = H.timeUnits,
wrap = H.wrap;
 
/* ****************************************************************************
* Start ordinal axis logic *
*****************************************************************************/
 
 
wrap(Series.prototype, 'init', function(proceed) {
var series = this,
xAxis;
 
// call the original function
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
xAxis = series.xAxis;
 
// Destroy the extended ordinal index on updated data
if (xAxis && xAxis.options.ordinal) {
addEvent(series, 'updatedData', function() {
delete xAxis.ordinalIndex;
});
}
});
 
/**
* In an ordinal axis, there might be areas with dense consentrations of points, then large
* gaps between some. Creating equally distributed ticks over this entire range
* may lead to a huge number of ticks that will later be removed. So instead, break the
* positions up in segments, find the tick positions for each segment then concatenize them.
* This method is used from both data grouping logic and X axis tick position logic.
*/
wrap(Axis.prototype, 'getTimeTicks', function(proceed, normalizedInterval, min, max, startOfWeek, positions, closestDistance, findHigherRanks) {
 
var start = 0,
end,
segmentPositions,
higherRanks = {},
hasCrossedHigherRank,
info,
posLength,
outsideMax,
groupPositions = [],
lastGroupPosition = -Number.MAX_VALUE,
tickPixelIntervalOption = this.options.tickPixelInterval;
 
// The positions are not always defined, for example for ordinal positions when data
// has regular interval (#1557, #2090)
if ((!this.options.ordinal && !this.options.breaks) || !positions || positions.length < 3 || min === undefined) {
return proceed.call(this, normalizedInterval, min, max, startOfWeek);
}
 
// Analyze the positions array to split it into segments on gaps larger than 5 times
// the closest distance. The closest distance is already found at this point, so
// we reuse that instead of computing it again.
posLength = positions.length;
 
for (end = 0; end < posLength; end++) {
 
outsideMax = end && positions[end - 1] > max;
 
if (positions[end] < min) { // Set the last position before min
start = end;
}
 
if (end === posLength - 1 || positions[end + 1] - positions[end] > closestDistance * 5 || outsideMax) {
 
// For each segment, calculate the tick positions from the getTimeTicks utility
// function. The interval will be the same regardless of how long the segment is.
if (positions[end] > lastGroupPosition) { // #1475
 
segmentPositions = proceed.call(this, normalizedInterval, positions[start], positions[end], startOfWeek);
 
// Prevent duplicate groups, for example for multiple segments within one larger time frame (#1475)
while (segmentPositions.length && segmentPositions[0] <= lastGroupPosition) {
segmentPositions.shift();
}
if (segmentPositions.length) {
lastGroupPosition = segmentPositions[segmentPositions.length - 1];
}
 
groupPositions = groupPositions.concat(segmentPositions);
}
// Set start of next segment
start = end + 1;
}
 
if (outsideMax) {
break;
}
}
 
// Get the grouping info from the last of the segments. The info is the same for
// all segments.
info = segmentPositions.info;
 
// Optionally identify ticks with higher rank, for example when the ticks
// have crossed midnight.
if (findHigherRanks && info.unitRange <= timeUnits.hour) {
end = groupPositions.length - 1;
 
// Compare points two by two
for (start = 1; start < end; start++) {
if (dateFormat('%d', groupPositions[start]) !== dateFormat('%d', groupPositions[start - 1])) {
higherRanks[groupPositions[start]] = 'day';
hasCrossedHigherRank = true;
}
}
 
// If the complete array has crossed midnight, we want to mark the first
// positions also as higher rank
if (hasCrossedHigherRank) {
higherRanks[groupPositions[0]] = 'day';
}
info.higherRanks = higherRanks;
}
 
// Save the info
groupPositions.info = info;
 
 
 
// Don't show ticks within a gap in the ordinal axis, where the space between
// two points is greater than a portion of the tick pixel interval
if (findHigherRanks && defined(tickPixelIntervalOption)) { // check for squashed ticks
 
var length = groupPositions.length,
i = length,
itemToRemove,
translated,
translatedArr = [],
lastTranslated,
medianDistance,
distance,
distances = [];
 
// Find median pixel distance in order to keep a reasonably even distance between
// ticks (#748)
while (i--) {
translated = this.translate(groupPositions[i]);
if (lastTranslated) {
distances[i] = lastTranslated - translated;
}
translatedArr[i] = lastTranslated = translated;
}
distances.sort();
medianDistance = distances[Math.floor(distances.length / 2)];
if (medianDistance < tickPixelIntervalOption * 0.6) {
medianDistance = null;
}
 
// Now loop over again and remove ticks where needed
i = groupPositions[length - 1] > max ? length - 1 : length; // #817
lastTranslated = undefined;
while (i--) {
translated = translatedArr[i];
distance = Math.abs(lastTranslated - translated);
// #4175 - when axis is reversed, the distance, is negative but
// tickPixelIntervalOption positive, so we need to compare the same values
 
// Remove ticks that are closer than 0.6 times the pixel interval from the one to the right,
// but not if it is close to the median distance (#748).
if (lastTranslated && distance < tickPixelIntervalOption * 0.8 &&
(medianDistance === null || distance < medianDistance * 0.8)) {
 
// Is this a higher ranked position with a normal position to the right?
if (higherRanks[groupPositions[i]] && !higherRanks[groupPositions[i + 1]]) {
 
// Yes: remove the lower ranked neighbour to the right
itemToRemove = i + 1;
lastTranslated = translated; // #709
 
} else {
 
// No: remove this one
itemToRemove = i;
}
 
groupPositions.splice(itemToRemove, 1);
 
} else {
lastTranslated = translated;
}
}
}
return groupPositions;
});
 
// Extend the Axis prototype
extend(Axis.prototype, /** @lends Axis.prototype */ {
 
/**
* Calculate the ordinal positions before tick positions are calculated.
*/
beforeSetTickPositions: function() {
var axis = this,
len,
ordinalPositions = [],
useOrdinal = false,
dist,
extremes = axis.getExtremes(),
min = extremes.min,
max = extremes.max,
minIndex,
maxIndex,
slope,
hasBreaks = axis.isXAxis && !!axis.options.breaks,
isOrdinal = axis.options.ordinal,
ignoreHiddenSeries = axis.chart.options.chart.ignoreHiddenSeries,
i;
 
// apply the ordinal logic
if (isOrdinal || hasBreaks) { // #4167 YAxis is never ordinal ?
 
each(axis.series, function(series, i) {
 
if ((!ignoreHiddenSeries || series.visible !== false) && (series.takeOrdinalPosition !== false || hasBreaks)) {
 
// concatenate the processed X data into the existing positions, or the empty array
ordinalPositions = ordinalPositions.concat(series.processedXData);
len = ordinalPositions.length;
 
// remove duplicates (#1588)
ordinalPositions.sort(function(a, b) {
return a - b; // without a custom function it is sorted as strings
});
 
if (len) {
i = len - 1;
while (i--) {
if (ordinalPositions[i] === ordinalPositions[i + 1]) {
ordinalPositions.splice(i, 1);
}
}
}
}
 
});
 
// cache the length
len = ordinalPositions.length;
 
// Check if we really need the overhead of mapping axis data against the ordinal positions.
// If the series consist of evenly spaced data any way, we don't need any ordinal logic.
if (len > 2) { // two points have equal distance by default
dist = ordinalPositions[1] - ordinalPositions[0];
i = len - 1;
while (i-- && !useOrdinal) {
if (ordinalPositions[i + 1] - ordinalPositions[i] !== dist) {
useOrdinal = true;
}
}
 
// When zooming in on a week, prevent axis padding for weekends even though the data within
// the week is evenly spaced.
if (!axis.options.keepOrdinalPadding && (ordinalPositions[0] - min > dist || max - ordinalPositions[ordinalPositions.length - 1] > dist)) {
useOrdinal = true;
}
}
 
// Record the slope and offset to compute the linear values from the array index.
// Since the ordinal positions may exceed the current range, get the start and
// end positions within it (#719, #665b)
if (useOrdinal) {
 
// Register
axis.ordinalPositions = ordinalPositions;
 
// This relies on the ordinalPositions being set. Use Math.max
// and Math.min to prevent padding on either sides of the data.
minIndex = axis.ordinal2lin( // #5979
Math.max(
min,
ordinalPositions[0]
),
true
);
maxIndex = Math.max(axis.ordinal2lin(
Math.min(
max,
ordinalPositions[ordinalPositions.length - 1]
),
true
), 1); // #3339
 
// Set the slope and offset of the values compared to the indices in the ordinal positions
axis.ordinalSlope = slope = (max - min) / (maxIndex - minIndex);
axis.ordinalOffset = min - (minIndex * slope);
 
} else {
axis.ordinalPositions = axis.ordinalSlope = axis.ordinalOffset = undefined;
}
}
axis.isOrdinal = isOrdinal && useOrdinal; // #3818, #4196, #4926
axis.groupIntervalFactor = null; // reset for next run
},
/**
* Translate from a linear axis value to the corresponding ordinal axis position. If there
* are no gaps in the ordinal axis this will be the same. The translated value is the value
* that the point would have if the axis were linear, using the same min and max.
*
* @param Number val The axis value
* @param Boolean toIndex Whether to return the index in the ordinalPositions or the new value
*/
val2lin: function(val, toIndex) {
var axis = this,
ordinalPositions = axis.ordinalPositions,
ret;
 
if (!ordinalPositions) {
ret = val;
 
} else {
 
var ordinalLength = ordinalPositions.length,
i,
distance,
ordinalIndex;
 
// first look for an exact match in the ordinalpositions array
i = ordinalLength;
while (i--) {
if (ordinalPositions[i] === val) {
ordinalIndex = i;
break;
}
}
 
// if that failed, find the intermediate position between the two nearest values
i = ordinalLength - 1;
while (i--) {
if (val > ordinalPositions[i] || i === 0) { // interpolate
distance = (val - ordinalPositions[i]) / (ordinalPositions[i + 1] - ordinalPositions[i]); // something between 0 and 1
ordinalIndex = i + distance;
break;
}
}
ret = toIndex ?
ordinalIndex :
axis.ordinalSlope * (ordinalIndex || 0) + axis.ordinalOffset;
}
return ret;
},
/**
* Translate from linear (internal) to axis value
*
* @param Number val The linear abstracted value
* @param Boolean fromIndex Translate from an index in the ordinal positions rather than a value
*/
lin2val: function(val, fromIndex) {
var axis = this,
ordinalPositions = axis.ordinalPositions,
ret;
 
if (!ordinalPositions) { // the visible range contains only equally spaced values
ret = val;
 
} else {
 
var ordinalSlope = axis.ordinalSlope,
ordinalOffset = axis.ordinalOffset,
i = ordinalPositions.length - 1,
linearEquivalentLeft,
linearEquivalentRight,
distance;
 
 
// Handle the case where we translate from the index directly, used only
// when panning an ordinal axis
if (fromIndex) {
 
if (val < 0) { // out of range, in effect panning to the left
val = ordinalPositions[0];
} else if (val > i) { // out of range, panning to the right
val = ordinalPositions[i];
} else { // split it up
i = Math.floor(val);
distance = val - i; // the decimal
}
 
// Loop down along the ordinal positions. When the linear equivalent of i matches
// an ordinal position, interpolate between the left and right values.
} else {
while (i--) {
linearEquivalentLeft = (ordinalSlope * i) + ordinalOffset;
if (val >= linearEquivalentLeft) {
linearEquivalentRight = (ordinalSlope * (i + 1)) + ordinalOffset;
distance = (val - linearEquivalentLeft) / (linearEquivalentRight - linearEquivalentLeft); // something between 0 and 1
break;
}
}
}
 
// If the index is within the range of the ordinal positions, return the associated
// or interpolated value. If not, just return the value
return distance !== undefined && ordinalPositions[i] !== undefined ?
ordinalPositions[i] + (distance ? distance * (ordinalPositions[i + 1] - ordinalPositions[i]) : 0) :
val;
}
return ret;
},
/**
* Get the ordinal positions for the entire data set. This is necessary in chart panning
* because we need to find out what points or data groups are available outside the
* visible range. When a panning operation starts, if an index for the given grouping
* does not exists, it is created and cached. This index is deleted on updated data, so
* it will be regenerated the next time a panning operation starts.
*/
getExtendedPositions: function() {
var axis = this,
chart = axis.chart,
grouping = axis.series[0].currentDataGrouping,
ordinalIndex = axis.ordinalIndex,
key = grouping ? grouping.count + grouping.unitName : 'raw',
extremes = axis.getExtremes(),
fakeAxis,
fakeSeries;
 
// If this is the first time, or the ordinal index is deleted by updatedData,
// create it.
if (!ordinalIndex) {
ordinalIndex = axis.ordinalIndex = {};
}
 
 
if (!ordinalIndex[key]) {
 
// Create a fake axis object where the extended ordinal positions are emulated
fakeAxis = {
series: [],
chart: chart,
getExtremes: function() {
return {
min: extremes.dataMin,
max: extremes.dataMax
};
},
options: {
ordinal: true
},
val2lin: Axis.prototype.val2lin, // #2590
ordinal2lin: Axis.prototype.ordinal2lin // #6276
};
 
// Add the fake series to hold the full data, then apply processData to it
each(axis.series, function(series) {
fakeSeries = {
xAxis: fakeAxis,
xData: series.xData,
chart: chart,
destroyGroupedData: noop
};
fakeSeries.options = {
dataGrouping: grouping ? {
enabled: true,
forced: true,
approximation: 'open', // doesn't matter which, use the fastest
units: [
[grouping.unitName, [grouping.count]]
]
} : {
enabled: false
}
};
series.processData.apply(fakeSeries);
 
fakeAxis.series.push(fakeSeries);
});
 
// Run beforeSetTickPositions to compute the ordinalPositions
axis.beforeSetTickPositions.apply(fakeAxis);
 
// Cache it
ordinalIndex[key] = fakeAxis.ordinalPositions;
}
return ordinalIndex[key];
},
 
/**
* Find the factor to estimate how wide the plot area would have been if ordinal
* gaps were included. This value is used to compute an imagined plot width in order
* to establish the data grouping interval.
*
* A real world case is the intraday-candlestick
* example. Without this logic, it would show the correct data grouping when viewing
* a range within each day, but once moving the range to include the gap between two
* days, the interval would include the cut-away night hours and the data grouping
* would be wrong. So the below method tries to compensate by identifying the most
* common point interval, in this case days.
*
* An opposite case is presented in issue #718. We have a long array of daily data,
* then one point is appended one hour after the last point. We expect the data grouping
* not to change.
*
* In the future, if we find cases where this estimation doesn't work optimally, we
* might need to add a second pass to the data grouping logic, where we do another run
* with a greater interval if the number of data groups is more than a certain fraction
* of the desired group count.
*/
getGroupIntervalFactor: function(xMin, xMax, series) {
var i,
processedXData = series.processedXData,
len = processedXData.length,
distances = [],
median,
groupIntervalFactor = this.groupIntervalFactor;
 
// Only do this computation for the first series, let the other inherit it (#2416)
if (!groupIntervalFactor) {
 
// Register all the distances in an array
for (i = 0; i < len - 1; i++) {
distances[i] = processedXData[i + 1] - processedXData[i];
}
 
// Sort them and find the median
distances.sort(function(a, b) {
return a - b;
});
median = distances[Math.floor(len / 2)];
 
// Compensate for series that don't extend through the entire axis extent. #1675.
xMin = Math.max(xMin, processedXData[0]);
xMax = Math.min(xMax, processedXData[len - 1]);
 
this.groupIntervalFactor = groupIntervalFactor = (len * median) / (xMax - xMin);
}
 
// Return the factor needed for data grouping
return groupIntervalFactor;
},
 
/**
* Make the tick intervals closer because the ordinal gaps make the ticks spread out or cluster
*/
postProcessTickInterval: function(tickInterval) {
// Problem: http://jsfiddle.net/highcharts/FQm4E/1/
// This is a case where this algorithm doesn't work optimally. In this case, the
// tick labels are spread out per week, but all the gaps reside within weeks. So
// we have a situation where the labels are courser than the ordinal gaps, and
// thus the tick interval should not be altered
var ordinalSlope = this.ordinalSlope,
ret;
 
 
if (ordinalSlope) {
if (!this.options.breaks) {
ret = tickInterval / (ordinalSlope / this.closestPointRange);
} else {
ret = this.closestPointRange;
}
} else {
ret = tickInterval;
}
return ret;
}
});
 
// Record this to prevent overwriting by broken-axis module (#5979)
Axis.prototype.ordinal2lin = Axis.prototype.val2lin;
 
// Extending the Chart.pan method for ordinal axes
wrap(Chart.prototype, 'pan', function(proceed, e) {
var chart = this,
xAxis = chart.xAxis[0],
chartX = e.chartX,
runBase = false;
 
if (xAxis.options.ordinal && xAxis.series.length) {
 
var mouseDownX = chart.mouseDownX,
extremes = xAxis.getExtremes(),
dataMax = extremes.dataMax,
min = extremes.min,
max = extremes.max,
trimmedRange,
hoverPoints = chart.hoverPoints,
closestPointRange = xAxis.closestPointRange,
pointPixelWidth = xAxis.translationSlope * (xAxis.ordinalSlope || closestPointRange),
movedUnits = (mouseDownX - chartX) / pointPixelWidth, // how many ordinal units did we move?
extendedAxis = {
ordinalPositions: xAxis.getExtendedPositions()
}, // get index of all the chart's points
ordinalPositions,
searchAxisLeft,
lin2val = xAxis.lin2val,
val2lin = xAxis.val2lin,
searchAxisRight;
 
if (!extendedAxis.ordinalPositions) { // we have an ordinal axis, but the data is equally spaced
runBase = true;
 
} else if (Math.abs(movedUnits) > 1) {
 
// Remove active points for shared tooltip
if (hoverPoints) {
each(hoverPoints, function(point) {
point.setState();
});
}
 
if (movedUnits < 0) {
searchAxisLeft = extendedAxis;
searchAxisRight = xAxis.ordinalPositions ? xAxis : extendedAxis;
} else {
searchAxisLeft = xAxis.ordinalPositions ? xAxis : extendedAxis;
searchAxisRight = extendedAxis;
}
 
// In grouped data series, the last ordinal position represents the grouped data, which is
// to the left of the real data max. If we don't compensate for this, we will be allowed
// to pan grouped data series passed the right of the plot area.
ordinalPositions = searchAxisRight.ordinalPositions;
if (dataMax > ordinalPositions[ordinalPositions.length - 1]) {
ordinalPositions.push(dataMax);
}
 
// Get the new min and max values by getting the ordinal index for the current extreme,
// then add the moved units and translate back to values. This happens on the
// extended ordinal positions if the new position is out of range, else it happens
// on the current x axis which is smaller and faster.
chart.fixedRange = max - min;
trimmedRange = xAxis.toFixedRange(null, null,
lin2val.apply(searchAxisLeft, [
val2lin.apply(searchAxisLeft, [min, true]) + movedUnits, // the new index
true // translate from index
]),
lin2val.apply(searchAxisRight, [
val2lin.apply(searchAxisRight, [max, true]) + movedUnits, // the new index
true // translate from index
])
);
 
// Apply it if it is within the available data range
if (trimmedRange.min >= Math.min(extremes.dataMin, min) && trimmedRange.max <= Math.max(dataMax, max)) {
xAxis.setExtremes(trimmedRange.min, trimmedRange.max, true, false, {
trigger: 'pan'
});
}
 
chart.mouseDownX = chartX; // set new reference for next run
css(chart.container, {
cursor: 'move'
});
}
 
} else {
runBase = true;
}
 
// revert to the linear chart.pan version
if (runBase) {
// call the original function
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
}
});
 
/* ****************************************************************************
* End ordinal axis logic *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2009-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
 
var pick = H.pick,
wrap = H.wrap,
each = H.each,
extend = H.extend,
isArray = H.isArray,
fireEvent = H.fireEvent,
Axis = H.Axis,
Series = H.Series;
 
function stripArguments() {
return Array.prototype.slice.call(arguments, 1);
}
 
extend(Axis.prototype, {
isInBreak: function(brk, val) {
var ret,
repeat = brk.repeat || Infinity,
from = brk.from,
length = brk.to - brk.from,
test = (val >= from ? (val - from) % repeat : repeat - ((from - val) % repeat));
 
if (!brk.inclusive) {
ret = test < length && test !== 0;
} else {
ret = test <= length;
}
return ret;
},
 
isInAnyBreak: function(val, testKeep) {
 
var breaks = this.options.breaks,
i = breaks && breaks.length,
inbrk,
keep,
ret;
 
 
if (i) {
 
while (i--) {
if (this.isInBreak(breaks[i], val)) {
inbrk = true;
if (!keep) {
keep = pick(breaks[i].showPoints, this.isXAxis ? false : true);
}
}
}
 
if (inbrk && testKeep) {
ret = inbrk && !keep;
} else {
ret = inbrk;
}
}
return ret;
}
});
 
wrap(Axis.prototype, 'setTickPositions', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
 
if (this.options.breaks) {
var axis = this,
tickPositions = this.tickPositions,
info = this.tickPositions.info,
newPositions = [],
i;
 
for (i = 0; i < tickPositions.length; i++) {
if (!axis.isInAnyBreak(tickPositions[i])) {
newPositions.push(tickPositions[i]);
}
}
 
this.tickPositions = newPositions;
this.tickPositions.info = info;
}
});
 
wrap(Axis.prototype, 'init', function(proceed, chart, userOptions) {
var axis = this,
breaks;
// Force Axis to be not-ordinal when breaks are defined
if (userOptions.breaks && userOptions.breaks.length) {
userOptions.ordinal = false;
}
proceed.call(this, chart, userOptions);
breaks = this.options.breaks;
axis.isBroken = (isArray(breaks) && !!breaks.length);
if (axis.isBroken) {
axis.val2lin = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.to <= val) {
nval -= brk.len;
} else if (brk.from >= val) {
break;
} else if (axis.isInBreak(brk, val)) {
nval -= (val - brk.from);
break;
}
}
 
return nval;
};
 
axis.lin2val = function(val) {
var nval = val,
brk,
i;
 
for (i = 0; i < axis.breakArray.length; i++) {
brk = axis.breakArray[i];
if (brk.from >= nval) {
break;
} else if (brk.to < nval) {
nval += brk.len;
} else if (axis.isInBreak(brk, nval)) {
nval += brk.len;
}
}
return nval;
};
 
axis.setExtremes = function(newMin, newMax, redraw, animation, eventArguments) {
// If trying to set extremes inside a break, extend it to before and after the break ( #3857 )
while (this.isInAnyBreak(newMin)) {
newMin -= this.closestPointRange;
}
while (this.isInAnyBreak(newMax)) {
newMax -= this.closestPointRange;
}
Axis.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);
};
 
axis.setAxisTranslation = function(saveOld) {
Axis.prototype.setAxisTranslation.call(this, saveOld);
 
var breaks = axis.options.breaks,
breakArrayT = [], // Temporary one
breakArray = [],
length = 0,
inBrk,
repeat,
min = axis.userMin || axis.min,
max = axis.userMax || axis.max,
pointRangePadding = pick(axis.pointRangePadding, 0),
start,
i;
 
// Min & max check (#4247)
each(breaks, function(brk) {
repeat = brk.repeat || Infinity;
if (axis.isInBreak(brk, min)) {
min += (brk.to % repeat) - (min % repeat);
}
if (axis.isInBreak(brk, max)) {
max -= (max % repeat) - (brk.from % repeat);
}
});
 
// Construct an array holding all breaks in the axis
each(breaks, function(brk) {
start = brk.from;
repeat = brk.repeat || Infinity;
 
while (start - repeat > min) {
start -= repeat;
}
while (start < min) {
start += repeat;
}
 
for (i = start; i < max; i += repeat) {
breakArrayT.push({
value: i,
move: 'in'
});
breakArrayT.push({
value: i + (brk.to - brk.from),
move: 'out',
size: brk.breakSize
});
}
});
 
breakArrayT.sort(function(a, b) {
var ret;
if (a.value === b.value) {
ret = (a.move === 'in' ? 0 : 1) - (b.move === 'in' ? 0 : 1);
} else {
ret = a.value - b.value;
}
return ret;
});
 
// Simplify the breaks
inBrk = 0;
start = min;
 
each(breakArrayT, function(brk) {
inBrk += (brk.move === 'in' ? 1 : -1);
 
if (inBrk === 1 && brk.move === 'in') {
start = brk.value;
}
if (inBrk === 0) {
breakArray.push({
from: start,
to: brk.value,
len: brk.value - start - (brk.size || 0)
});
length += brk.value - start - (brk.size || 0);
}
});
 
axis.breakArray = breakArray;
 
// Used with staticScale, and below, the actual axis length when
// breaks are substracted.
axis.unitLength = max - min - length + pointRangePadding;
 
fireEvent(axis, 'afterBreaks');
 
if (axis.options.staticScale) {
axis.transA = axis.options.staticScale;
} else if (axis.unitLength) {
axis.transA *= (max - axis.min + pointRangePadding) /
axis.unitLength;
}
 
if (pointRangePadding) {
axis.minPixelPadding = axis.transA * axis.minPointOffset;
}
 
axis.min = min;
axis.max = max;
};
}
});
 
wrap(Series.prototype, 'generatePoints', function(proceed) {
 
proceed.apply(this, stripArguments(arguments));
 
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis,
points = series.points,
point,
i = points.length,
connectNulls = series.options.connectNulls,
nullGap;
 
 
if (xAxis && yAxis && (xAxis.options.breaks || yAxis.options.breaks)) {
while (i--) {
point = points[i];
 
nullGap = point.y === null && connectNulls === false; // respect nulls inside the break (#4275)
if (!nullGap && (xAxis.isInAnyBreak(point.x, true) || yAxis.isInAnyBreak(point.y, true))) {
points.splice(i, 1);
if (this.data[i]) {
this.data[i].destroyElements(); // removes the graphics for this point if they exist
}
}
}
}
 
});
 
function drawPointsWrapped(proceed) {
proceed.apply(this);
this.drawBreaks(this.xAxis, ['x']);
this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
}
 
H.Series.prototype.drawBreaks = function(axis, keys) {
var series = this,
points = series.points,
breaks,
threshold,
eventName,
y;
 
if (!axis) {
return; // #5950
}
 
each(keys, function(key) {
breaks = axis.breakArray || [];
threshold = axis.isXAxis ? axis.min : pick(series.options.threshold, axis.min);
each(points, function(point) {
y = pick(point['stack' + key.toUpperCase()], point[key]);
each(breaks, function(brk) {
eventName = false;
 
if ((threshold < brk.from && y > brk.to) || (threshold > brk.from && y < brk.from)) {
eventName = 'pointBreak';
} else if ((threshold < brk.from && y > brk.from && y < brk.to) || (threshold > brk.from && y > brk.to && y < brk.from)) { // point falls inside the break
eventName = 'pointInBreak';
}
if (eventName) {
fireEvent(axis, eventName, {
point: point,
brk: brk
});
}
});
});
});
};
 
 
/**
* Extend getGraphPath by identifying gaps in the data so that we can draw a gap
* in the line or area. This was moved from ordinal axis module to broken axis
* module as of #5045.
*/
H.Series.prototype.gappedPath = function() {
var gapSize = this.options.gapSize,
points = this.points.slice(),
i = points.length - 1,
yAxis = this.yAxis,
xRange,
stack;
 
/**
* Defines when to display a gap in the graph, together with the `gapUnit`
* option.
*
* When the `gapUnit` is `relative` (default), a gap size of 5 means
* that if the distance between two points is greater than five times
* that of the two closest points, the graph will be broken.
*
* When the `gapUnit` is `value`, the gap is based on absolute axis values,
* which on a datetime axis is milliseconds.
*
* In practice, this option is most often used to visualize gaps in
* time series. In a stock chart, intraday data is available for daytime
* hours, while gaps will appear in nights and weekends.
*
* @type {Number}
* @see [xAxis.breaks](#xAxis.breaks)
* @sample {highstock} stock/plotoptions/series-gapsize/
* Setting the gap size to 2 introduces gaps for weekends in daily
* datasets.
* @default 0
* @product highstock
* @apioption plotOptions.series.gapSize
*/
 
/**
* Together with `gapSize`, this option defines where to draw gaps in the
* graph.
*
* @type {String}
* @see [gapSize](plotOptions.series.gapSize)
* @default relative
* @validvalues ["relative", "value"]
* @since 5.0.13
* @product highstock
* @apioption plotOptions.series.gapUnit
*/
 
if (gapSize && i > 0) { // #5008
 
// Gap unit is relative
if (this.options.gapUnit !== 'value') {
gapSize *= this.closestPointRange;
}
 
// extension for ordinal breaks
while (i--) {
if (points[i + 1].x - points[i].x > gapSize) {
xRange = (points[i].x + points[i + 1].x) / 2;
 
points.splice( // insert after this one
i + 1,
0, {
isNull: true,
x: xRange
}
);
 
// For stacked chart generate empty stack items, #6546
if (this.options.stacking) {
stack = yAxis.stacks[this.stackKey][xRange] = new H.StackItem(
yAxis,
yAxis.options.stackLabels,
false,
xRange,
this.stack
);
stack.total = 0;
}
}
}
}
 
// Call base method
return this.getGraphPath(points);
};
 
wrap(H.seriesTypes.column.prototype, 'drawPoints', drawPointsWrapped);
wrap(H.Series.prototype, 'drawPoints', drawPointsWrapped);
 
}(Highcharts));
(function() {
 
 
}());
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var arrayMax = H.arrayMax,
arrayMin = H.arrayMin,
Axis = H.Axis,
defaultPlotOptions = H.defaultPlotOptions,
defined = H.defined,
each = H.each,
extend = H.extend,
format = H.format,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
Point = H.Point,
Series = H.Series,
Tooltip = H.Tooltip,
wrap = H.wrap;
 
/* ****************************************************************************
* Start data grouping module *
******************************************************************************/
 
var seriesProto = Series.prototype,
baseProcessData = seriesProto.processData,
baseGeneratePoints = seriesProto.generatePoints,
baseDestroy = seriesProto.destroy,
 
/**
*
*/
commonOptions = {
approximation: 'average', // average, open, high, low, close, sum
//enabled: null, // (true for stock charts, false for basic),
//forced: undefined,
groupPixelWidth: 2,
// the first one is the point or start value, the second is the start value if we're dealing with range,
// the third one is the end value if dealing with a range
dateTimeLabelFormats: {
millisecond: ['%A, %b %e, %H:%M:%S.%L', '%A, %b %e, %H:%M:%S.%L', '-%H:%M:%S.%L'],
second: ['%A, %b %e, %H:%M:%S', '%A, %b %e, %H:%M:%S', '-%H:%M:%S'],
minute: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],
hour: ['%A, %b %e, %H:%M', '%A, %b %e, %H:%M', '-%H:%M'],
day: ['%A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],
week: ['Week from %A, %b %e, %Y', '%A, %b %e', '-%A, %b %e, %Y'],
month: ['%B %Y', '%B', '-%B %Y'],
year: ['%Y', '%Y', '-%Y']
}
// smoothed = false, // enable this for navigator series only
},
 
specificOptions = { // extends common options
line: {},
spline: {},
area: {},
areaspline: {},
column: {
approximation: 'sum',
groupPixelWidth: 10
},
arearange: {
approximation: 'range'
},
areasplinerange: {
approximation: 'range'
},
columnrange: {
approximation: 'range',
groupPixelWidth: 10
},
candlestick: {
approximation: 'ohlc',
groupPixelWidth: 10
},
ohlc: {
approximation: 'ohlc',
groupPixelWidth: 5
}
},
 
// units are defined in a separate array to allow complete overriding in case of a user option
defaultDataGroupingUnits = H.defaultDataGroupingUnits = [
[
'millisecond', // unit name
[1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples
],
[
'second', [1, 2, 5, 10, 15, 30]
],
[
'minute', [1, 2, 5, 10, 15, 30]
],
[
'hour', [1, 2, 3, 4, 6, 8, 12]
],
[
'day', [1]
],
[
'week', [1]
],
[
'month', [1, 3, 6]
],
[
'year',
null
]
],
 
 
/**
* Define the available approximation types. The data grouping
* approximations takes an array or numbers as the first parameter. In case
* of ohlc, four arrays are sent in as four parameters. Each array consists
* only of numbers. In case null values belong to the group, the property
* .hasNulls will be set to true on the array.
*/
approximations = {
sum: function(arr) {
var len = arr.length,
ret;
 
// 1. it consists of nulls exclusively
if (!len && arr.hasNulls) {
ret = null;
// 2. it has a length and real values
} else if (len) {
ret = 0;
while (len--) {
ret += arr[len];
}
}
// 3. it has zero length, so just return undefined
// => doNothing()
 
return ret;
},
average: function(arr) {
var len = arr.length,
ret = approximations.sum(arr);
 
// If we have a number, return it divided by the length. If not,
// return null or undefined based on what the sum method finds.
if (isNumber(ret) && len) {
ret = ret / len;
}
 
return ret;
},
// The same as average, but for series with multiple values, like area
// ranges.
averages: function() { // #5479
var ret = [];
 
each(arguments, function(arr) {
ret.push(approximations.average(arr));
});
 
return ret;
},
open: function(arr) {
return arr.length ? arr[0] : (arr.hasNulls ? null : undefined);
},
high: function(arr) {
return arr.length ? arrayMax(arr) : (arr.hasNulls ? null : undefined);
},
low: function(arr) {
return arr.length ? arrayMin(arr) : (arr.hasNulls ? null : undefined);
},
close: function(arr) {
return arr.length ? arr[arr.length - 1] : (arr.hasNulls ? null : undefined);
},
// ohlc and range are special cases where a multidimensional array is input and an array is output
ohlc: function(open, high, low, close) {
open = approximations.open(open);
high = approximations.high(high);
low = approximations.low(low);
close = approximations.close(close);
 
if (isNumber(open) || isNumber(high) || isNumber(low) || isNumber(close)) {
return [open, high, low, close];
}
// else, return is undefined
},
range: function(low, high) {
low = approximations.low(low);
high = approximations.high(high);
 
if (isNumber(low) || isNumber(high)) {
return [low, high];
} else if (low === null && high === null) {
return null;
}
// else, return is undefined
}
};
 
 
/**
* Takes parallel arrays of x and y data and groups the data into intervals
* defined by groupPositions, a collection of starting x values for each group.
*/
seriesProto.groupData = function(xData, yData, groupPositions, approximation) {
var series = this,
data = series.data,
dataOptions = series.options.data,
groupedXData = [],
groupedYData = [],
groupMap = [],
dataLength = xData.length,
pointX,
pointY,
groupedY,
// when grouping the fake extended axis for panning,
// we don't need to consider y
handleYData = !!yData,
values = [],
approximationFn = typeof approximation === 'function' ?
approximation :
approximations[approximation] ||
// if the approximation is not found use default series type
// approximation (#2914)
(
specificOptions[series.type] &&
approximations[specificOptions[series.type].approximation]
) || approximations[commonOptions.approximation],
pointArrayMap = series.pointArrayMap,
pointArrayMapLength = pointArrayMap && pointArrayMap.length,
pos = 0,
start = 0,
valuesLen,
i, j;
 
// Calculate values array size from pointArrayMap length
if (pointArrayMapLength) {
each(pointArrayMap, function() {
values.push([]);
});
} else {
values.push([]);
}
valuesLen = pointArrayMapLength || 1;
 
// Start with the first point within the X axis range (#2696)
for (i = 0; i <= dataLength; i++) {
if (xData[i] >= groupPositions[0]) {
break;
}
}
 
for (i; i <= dataLength; i++) {
 
// when a new group is entered, summarize and initiate
// the previous group
while ((
groupPositions[pos + 1] !== undefined &&
xData[i] >= groupPositions[pos + 1]
) || i === dataLength) { // get the last group
 
// get group x and y
pointX = groupPositions[pos];
series.dataGroupInfo = {
start: start,
length: values[0].length
};
groupedY = approximationFn.apply(series, values);
 
// push the grouped data
if (groupedY !== undefined) {
groupedXData.push(pointX);
groupedYData.push(groupedY);
groupMap.push(series.dataGroupInfo);
}
 
// reset the aggregate arrays
start = i;
for (j = 0; j < valuesLen; j++) {
values[j].length = 0; // faster than values[j] = []
values[j].hasNulls = false;
}
 
// Advance on the group positions
pos += 1;
 
// don't loop beyond the last group
if (i === dataLength) {
break;
}
}
 
// break out
if (i === dataLength) {
break;
}
 
// for each raw data point, push it to an array that contains all values
// for this specific group
if (pointArrayMap) {
 
var index = series.cropStart + i,
point = (data && data[index]) ||
series.pointClass.prototype.applyOptions.apply({
series: series
}, [dataOptions[index]]),
val;
 
for (j = 0; j < pointArrayMapLength; j++) {
val = point[pointArrayMap[j]];
if (isNumber(val)) {
values[j].push(val);
} else if (val === null) {
values[j].hasNulls = true;
}
}
 
} else {
pointY = handleYData ? yData[i] : null;
 
if (isNumber(pointY)) {
values[0].push(pointY);
} else if (pointY === null) {
values[0].hasNulls = true;
}
}
}
 
return [groupedXData, groupedYData, groupMap];
};
 
/**
* Extend the basic processData method, that crops the data to the current zoom
* range, with data grouping logic.
*/
seriesProto.processData = function() {
var series = this,
chart = series.chart,
options = series.options,
dataGroupingOptions = options.dataGrouping,
groupingEnabled = series.allowDG !== false && dataGroupingOptions &&
pick(dataGroupingOptions.enabled, chart.options.isStock),
visible = series.visible || !chart.options.chart.ignoreHiddenSeries,
hasGroupedData,
skip;
 
// run base method
series.forceCrop = groupingEnabled; // #334
series.groupPixelWidth = null; // #2110
series.hasProcessed = true; // #2692
 
// skip if processData returns false or if grouping is disabled (in that order)
skip = baseProcessData.apply(series, arguments) === false || !groupingEnabled;
if (!skip) {
series.destroyGroupedData();
 
var i,
processedXData = series.processedXData,
processedYData = series.processedYData,
plotSizeX = chart.plotSizeX,
xAxis = series.xAxis,
ordinal = xAxis.options.ordinal,
groupPixelWidth = series.groupPixelWidth = xAxis.getGroupPixelWidth && xAxis.getGroupPixelWidth();
 
// Execute grouping if the amount of points is greater than the limit defined in groupPixelWidth
if (groupPixelWidth) {
hasGroupedData = true;
 
series.isDirty = true; // force recreation of point instances in series.translate, #5699
series.points = null; // #6709
 
var extremes = xAxis.getExtremes(),
xMin = extremes.min,
xMax = extremes.max,
groupIntervalFactor = (ordinal && xAxis.getGroupIntervalFactor(xMin, xMax, series)) || 1,
interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) * groupIntervalFactor,
groupPositions = xAxis.getTimeTicks(
xAxis.normalizeTimeTickInterval(interval, dataGroupingOptions.units || defaultDataGroupingUnits),
Math.min(xMin, processedXData[0]), // Processed data may extend beyond axis (#4907)
Math.max(xMax, processedXData[processedXData.length - 1]),
xAxis.options.startOfWeek,
processedXData,
series.closestPointRange
),
groupedData = seriesProto.groupData.apply(series, [processedXData, processedYData, groupPositions, dataGroupingOptions.approximation]),
groupedXData = groupedData[0],
groupedYData = groupedData[1];
 
// prevent the smoothed data to spill out left and right, and make
// sure data is not shifted to the left
if (dataGroupingOptions.smoothed) {
i = groupedXData.length - 1;
groupedXData[i] = Math.min(groupedXData[i], xMax);
while (i-- && i > 0) {
groupedXData[i] += interval / 2;
}
groupedXData[0] = Math.max(groupedXData[0], xMin);
}
 
// record what data grouping values were used
series.currentDataGrouping = groupPositions.info;
series.closestPointRange = groupPositions.info.totalRange;
series.groupMap = groupedData[2];
 
// Make sure the X axis extends to show the first group (#2533)
// But only for visible series (#5493, #6393)
if (defined(groupedXData[0]) && groupedXData[0] < xAxis.dataMin && visible) {
if (xAxis.min === xAxis.dataMin) {
xAxis.min = groupedXData[0];
}
xAxis.dataMin = groupedXData[0];
}
 
// set series props
series.processedXData = groupedXData;
series.processedYData = groupedYData;
} else {
series.currentDataGrouping = series.groupMap = null;
}
series.hasGroupedData = hasGroupedData;
}
};
 
/**
* Destroy the grouped data points. #622, #740
*/
seriesProto.destroyGroupedData = function() {
 
var groupedData = this.groupedData;
 
// clear previous groups
each(groupedData || [], function(point, i) {
if (point) {
groupedData[i] = point.destroy ? point.destroy() : null;
}
});
this.groupedData = null;
};
 
/**
* Override the generatePoints method by adding a reference to grouped data
*/
seriesProto.generatePoints = function() {
 
baseGeneratePoints.apply(this);
 
// record grouped data in order to let it be destroyed the next time processData runs
this.destroyGroupedData(); // #622
this.groupedData = this.hasGroupedData ? this.points : null;
};
 
/**
* Override point prototype to throw a warning when trying to update grouped points
*/
wrap(Point.prototype, 'update', function(proceed) {
if (this.dataGroup) {
H.error(24);
} else {
proceed.apply(this, [].slice.call(arguments, 1));
}
});
 
/**
* Extend the original method, make the tooltip's header reflect the grouped range
*/
wrap(Tooltip.prototype, 'tooltipFooterHeaderFormatter', function(proceed, labelConfig, isFooter) {
var tooltip = this,
series = labelConfig.series,
options = series.options,
tooltipOptions = series.tooltipOptions,
dataGroupingOptions = options.dataGrouping,
xDateFormat = tooltipOptions.xDateFormat,
xDateFormatEnd,
xAxis = series.xAxis,
dateFormat = H.dateFormat,
currentDataGrouping,
dateTimeLabelFormats,
labelFormats,
formattedKey;
 
// apply only to grouped series
if (xAxis && xAxis.options.type === 'datetime' && dataGroupingOptions && isNumber(labelConfig.key)) {
 
// set variables
currentDataGrouping = series.currentDataGrouping;
dateTimeLabelFormats = dataGroupingOptions.dateTimeLabelFormats;
 
// if we have grouped data, use the grouping information to get the right format
if (currentDataGrouping) {
labelFormats = dateTimeLabelFormats[currentDataGrouping.unitName];
if (currentDataGrouping.count === 1) {
xDateFormat = labelFormats[0];
} else {
xDateFormat = labelFormats[1];
xDateFormatEnd = labelFormats[2];
}
// if not grouped, and we don't have set the xDateFormat option, get the best fit,
// so if the least distance between points is one minute, show it, but if the
// least distance is one day, skip hours and minutes etc.
} else if (!xDateFormat && dateTimeLabelFormats) {
xDateFormat = tooltip.getXDateFormat(labelConfig, tooltipOptions, xAxis);
}
 
// now format the key
formattedKey = dateFormat(xDateFormat, labelConfig.key);
if (xDateFormatEnd) {
formattedKey += dateFormat(xDateFormatEnd, labelConfig.key + currentDataGrouping.totalRange - 1);
}
 
// return the replaced format
return format(tooltipOptions[(isFooter ? 'footer' : 'header') + 'Format'], {
point: extend(labelConfig.point, {
key: formattedKey
}),
series: series
});
 
}
 
// else, fall back to the regular formatter
return proceed.call(tooltip, labelConfig, isFooter);
});
 
/**
* Extend the series destroyer
*/
seriesProto.destroy = function() {
var series = this,
groupedData = series.groupedData || [],
i = groupedData.length;
 
while (i--) {
if (groupedData[i]) {
groupedData[i].destroy();
}
}
baseDestroy.apply(series);
};
 
 
// Handle default options for data grouping. This must be set at runtime because some series types are
// defined after this.
wrap(seriesProto, 'setOptions', function(proceed, itemOptions) {
 
var options = proceed.call(this, itemOptions),
type = this.type,
plotOptions = this.chart.options.plotOptions,
defaultOptions = defaultPlotOptions[type].dataGrouping;
 
if (specificOptions[type]) { // #1284
if (!defaultOptions) {
defaultOptions = merge(commonOptions, specificOptions[type]);
}
 
options.dataGrouping = merge(
defaultOptions,
plotOptions.series && plotOptions.series.dataGrouping, // #1228
plotOptions[type].dataGrouping, // Set by the StockChart constructor
itemOptions.dataGrouping
);
}
 
if (this.chart.options.isStock) {
this.requireSorting = true;
}
 
return options;
});
 
 
/**
* When resetting the scale reset the hasProccessed flag to avoid taking previous data grouping
* of neighbour series into accound when determining group pixel width (#2692).
*/
wrap(Axis.prototype, 'setScale', function(proceed) {
proceed.call(this);
each(this.series, function(series) {
series.hasProcessed = false;
});
});
 
/**
* Get the data grouping pixel width based on the greatest defined individual width
* of the axis' series, and if whether one of the axes need grouping.
*/
Axis.prototype.getGroupPixelWidth = function() {
 
var series = this.series,
len = series.length,
i,
groupPixelWidth = 0,
doGrouping = false,
dataLength,
dgOptions;
 
// If multiple series are compared on the same x axis, give them the same
// group pixel width (#334)
i = len;
while (i--) {
dgOptions = series[i].options.dataGrouping;
if (dgOptions) {
groupPixelWidth = Math.max(groupPixelWidth, dgOptions.groupPixelWidth);
 
}
}
 
// If one of the series needs grouping, apply it to all (#1634)
i = len;
while (i--) {
dgOptions = series[i].options.dataGrouping;
 
if (dgOptions && series[i].hasProcessed) { // #2692
 
dataLength = (series[i].processedXData || series[i].data).length;
 
// Execute grouping if the amount of points is greater than the limit defined in groupPixelWidth
if (series[i].groupPixelWidth || dataLength > (this.chart.plotSizeX / groupPixelWidth) || (dataLength && dgOptions.forced)) {
doGrouping = true;
}
}
}
 
return doGrouping ? groupPixelWidth : 0;
};
 
/**
* Highstock only. Force data grouping on all the axis' series.
*
* @param {SeriesDatagroupingOptions} [dataGrouping]
* A `dataGrouping` configuration. Use `false` to disable data grouping
* dynamically.
* @param {Boolean} [redraw=true]
* Whether to redraw the chart or wait for a later call to {@link
* Chart#redraw}.
*
* @function setDataGrouping
* @memberOf Axis.prototype
*/
Axis.prototype.setDataGrouping = function(dataGrouping, redraw) {
var i;
 
redraw = pick(redraw, true);
 
if (!dataGrouping) {
dataGrouping = {
forced: false,
units: null
};
}
 
// Axis is instantiated, update all series
if (this instanceof Axis) {
i = this.series.length;
while (i--) {
this.series[i].update({
dataGrouping: dataGrouping
}, false);
}
 
// Axis not yet instanciated, alter series options
} else {
each(this.chart.options.series, function(seriesOptions) {
seriesOptions.dataGrouping = dataGrouping;
}, false);
}
 
if (redraw) {
this.chart.redraw();
}
};
 
 
 
/* ****************************************************************************
* End data grouping module *
******************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var each = H.each,
Point = H.Point,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
/**
* The ohlc series type.
*
* @constructor seriesTypes.ohlc
* @augments seriesTypes.column
*/
/**
* @extends {plotOptions.column}
* @optionparent plotOptions.ohlc
*/
seriesType('ohlc', 'column', {
 
/**
* The pixel width of the line/border. Defaults to `1`.
*
* @type {Number}
* @sample {highstock} stock/plotoptions/ohlc-linewidth/ A greater line width
* @default 1
* @product highstock
*/
lineWidth: 1,
 
/**
*/
tooltip: {
 
pointFormat: '<span class="highcharts-color-{point.colorIndex}">\u25CF</span> <b> {series.name}</b><br/>' +
'Open: {point.open}<br/>' +
'High: {point.high}<br/>' +
'Low: {point.low}<br/>' +
'Close: {point.close}<br/>'
 
},
 
/**
*/
threshold: null
 
 
}, /** @lends seriesTypes.ohlc */ {
directTouch: false,
pointArrayMap: ['open', 'high', 'low', 'close'], // array point configs are mapped to this
toYData: function(point) { // return a plain array for speedy calculation
return [point.open, point.high, point.low, point.close];
},
pointValKey: 'close',
 
 
 
/**
* Translate data points from raw values x and y to plotX and plotY
*/
translate: function() {
var series = this,
yAxis = series.yAxis,
hasModifyValue = !!series.modifyValue,
translated = ['plotOpen', 'plotHigh', 'plotLow', 'plotClose', 'yBottom']; // translate OHLC for
 
seriesTypes.column.prototype.translate.apply(series);
 
// Do the translation
each(series.points, function(point) {
each([point.open, point.high, point.low, point.close, point.low], function(value, i) {
if (value !== null) {
if (hasModifyValue) {
value = series.modifyValue(value);
}
point[translated[i]] = yAxis.toPixels(value, true);
}
});
 
// Align the tooltip to the high value to avoid covering the point
point.tooltipPos[1] =
point.plotHigh + yAxis.pos - series.chart.plotTop;
});
},
 
/**
* Draw the data points
*/
drawPoints: function() {
var series = this,
points = series.points,
chart = series.chart;
 
 
each(points, function(point) {
var plotOpen,
plotClose,
crispCorr,
halfWidth,
path,
graphic = point.graphic,
crispX,
isNew = !graphic;
 
if (point.plotY !== undefined) {
 
// Create and/or update the graphic
if (!graphic) {
point.graphic = graphic = chart.renderer.path()
.add(series.group);
}
 
 
 
// crisp vector coordinates
crispCorr = (graphic.strokeWidth() % 2) / 2;
crispX = Math.round(point.plotX) - crispCorr; // #2596
halfWidth = Math.round(point.shapeArgs.width / 2);
 
// the vertical stem
path = [
'M',
crispX, Math.round(point.yBottom),
'L',
crispX, Math.round(point.plotHigh)
];
 
// open
if (point.open !== null) {
plotOpen = Math.round(point.plotOpen) + crispCorr;
path.push(
'M',
crispX,
plotOpen,
'L',
crispX - halfWidth,
plotOpen
);
}
 
// close
if (point.close !== null) {
plotClose = Math.round(point.plotClose) + crispCorr;
path.push(
'M',
crispX,
plotClose,
'L',
crispX + halfWidth,
plotClose
);
}
 
graphic[isNew ? 'attr' : 'animate']({
d: path
})
.addClass(point.getClassName(), true);
 
}
 
 
});
 
},
 
animate: null // Disable animation
 
/**
* @constructor seriesTypes.ohlc.prototype.pointClass
* @extends {Point}
*/
}, /** @lends seriesTypes.ohlc.prototype.pointClass.prototype */ {
/**
* Extend the parent method by adding up or down to the class name.
*/
getClassName: function() {
return Point.prototype.getClassName.call(this) +
(this.open < this.close ? ' highcharts-point-up' : ' highcharts-point-down');
}
});
/* ****************************************************************************
* End OHLC series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var defaultPlotOptions = H.defaultPlotOptions,
each = H.each,
merge = H.merge,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes;
 
/**
* @extends {plotOptions.ohlc}
* @products highstock
* @optionparent plotOptions.candlestick
*/
var candlestickOptions = {
 
/**
*/
states: {
 
/**
* @extends plotOptions.column.states.hover
* @product highstock
*/
hover: {
 
/**
* The pixel width of the line/border around the candlestick. Defaults
* to `2`.
*
* @type {Number}
* @default 2
* @product highstock
*/
lineWidth: 2
}
},
 
/**
*/
tooltip: defaultPlotOptions.ohlc.tooltip,
 
/**
*/
threshold: null
 
 
};
 
/**
* The candlestick series type.
*
* @constructor seriesTypes.candlestick
* @augments seriesTypes.ohlc
*/
seriesType('candlestick', 'ohlc', merge(
defaultPlotOptions.column,
candlestickOptions
), /** @lends seriesTypes.candlestick */ {
 
/**
* Draw the data points
*/
drawPoints: function() {
var series = this, //state = series.state,
points = series.points,
chart = series.chart;
 
 
each(points, function(point) {
 
var graphic = point.graphic,
plotOpen,
plotClose,
topBox,
bottomBox,
hasTopWhisker,
hasBottomWhisker,
crispCorr,
crispX,
path,
halfWidth,
isNew = !graphic;
 
if (point.plotY !== undefined) {
 
if (!graphic) {
point.graphic = graphic = chart.renderer.path()
.add(series.group);
}
 
 
 
// Crisp vector coordinates
crispCorr = (graphic.strokeWidth() % 2) / 2;
crispX = Math.round(point.plotX) - crispCorr; // #2596
plotOpen = point.plotOpen;
plotClose = point.plotClose;
topBox = Math.min(plotOpen, plotClose);
bottomBox = Math.max(plotOpen, plotClose);
halfWidth = Math.round(point.shapeArgs.width / 2);
hasTopWhisker = Math.round(topBox) !== Math.round(point.plotHigh);
hasBottomWhisker = bottomBox !== point.yBottom;
topBox = Math.round(topBox) + crispCorr;
bottomBox = Math.round(bottomBox) + crispCorr;
 
// Create the path. Due to a bug in Chrome 49, the path is first instanciated
// with no values, then the values pushed. For unknown reasons, instanciated
// the path array with all the values would lead to a crash when updating
// frequently (#5193).
path = [];
path.push(
'M',
crispX - halfWidth, bottomBox,
'L',
crispX - halfWidth, topBox,
'L',
crispX + halfWidth, topBox,
'L',
crispX + halfWidth, bottomBox,
'Z', // Use a close statement to ensure a nice rectangle #2602
'M',
crispX, topBox,
'L',
crispX, hasTopWhisker ? Math.round(point.plotHigh) : topBox, // #460, #2094
'M',
crispX, bottomBox,
'L',
crispX, hasBottomWhisker ? Math.round(point.yBottom) : bottomBox // #460, #2094
);
 
graphic[isNew ? 'attr' : 'animate']({
d: path
})
.addClass(point.getClassName(), true);
 
}
});
 
}
 
 
});
 
/* ****************************************************************************
* End Candlestick series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
each = H.each,
merge = H.merge,
noop = H.noop,
Renderer = H.Renderer,
Series = H.Series,
seriesType = H.seriesType,
seriesTypes = H.seriesTypes,
SVGRenderer = H.SVGRenderer,
TrackerMixin = H.TrackerMixin,
VMLRenderer = H.VMLRenderer,
symbols = SVGRenderer.prototype.symbols,
stableSort = H.stableSort;
 
/**
* The flags series type.
*
* @constructor seriesTypes.flags
* @augments seriesTypes.column
*/
/**
* @extends {plotOptions.column}
* @optionparent plotOptions.flags
*/
seriesType('flags', 'column', {
 
/**
*/
pointRange: 0, // #673
//radius: 2,
 
/**
* The shape of the marker. Can be one of "flag", "circlepin", "squarepin",
* or an image on the format `url(/path-to-image.jpg)`. Individual
* shapes can also be set for each point.
*
* @validvalue ["flag", "circlepin", "squarepin"]
* @type {String}
* @sample {highstock} stock/plotoptions/flags/ Different shapes
* @default flag
* @product highstock
*/
shape: 'flag',
 
/**
* When multiple flags in the same series fall on the same value, this
* number determines the vertical offset between them.
*
* @type {Number}
* @sample {highstock} stock/plotoptions/flags-stackdistance/ A greater stack distance
* @default 12
* @product highstock
*/
stackDistance: 12,
 
/**
* Text alignment for the text inside the flag.
*
* @validvalue ["left", "center", "right"]
* @type {String}
* @default center
* @since 5.0.0
* @product highstock
*/
textAlign: 'center',
 
/**
* Specific tooltip options for flag series. Flag series tooltips are
* different from most other types in that a flag doesn't have a data
* value, so the tooltip rather displays the `text` option for each
* point.
*
* @type {Object}
* @extends plotOptions.series.tooltip
* @excluding changeDecimals,valueDecimals,valuePrefix,valueSuffix
* @product highstock
*/
tooltip: {
 
/**
*/
pointFormat: '{point.text}<br/>'
},
 
/**
*/
threshold: null,
 
/**
* The y position of the top left corner of the flag relative to either
* the series (if onSeries is defined), or the x axis. Defaults to
* `-30`.
*
* @type {Number}
* @default -30
* @product highstock
*/
y: -30
 
 
}, /** @lends seriesTypes.flags.prototype */ {
sorted: false,
noSharedTooltip: true,
allowDG: false,
takeOrdinalPosition: false, // #1074
trackerGroups: ['markerGroup'],
forceCrop: true,
/**
* Inherit the initialization from base Series.
*/
init: Series.prototype.init,
 
 
 
/**
* Extend the translate method by placing the point on the related series
*/
translate: function() {
 
seriesTypes.column.prototype.translate.apply(this);
 
var series = this,
options = series.options,
chart = series.chart,
points = series.points,
cursor = points.length - 1,
point,
lastPoint,
optionsOnSeries = options.onSeries,
onSeries = optionsOnSeries && chart.get(optionsOnSeries),
onKey = options.onKey || 'y',
step = onSeries && onSeries.options.step,
onData = onSeries && onSeries.points,
i = onData && onData.length,
xAxis = series.xAxis,
yAxis = series.yAxis,
xAxisExt = xAxis.getExtremes(),
xOffset = 0,
leftPoint,
lastX,
rightPoint,
currentDataGrouping;
 
// relate to a master series
if (onSeries && onSeries.visible && i) {
xOffset = (onSeries.pointXOffset || 0) + (onSeries.barW || 0) / 2;
currentDataGrouping = onSeries.currentDataGrouping;
lastX = onData[i - 1].x + (currentDataGrouping ? currentDataGrouping.totalRange : 0); // #2374
 
// sort the data points
stableSort(points, function(a, b) {
return (a.x - b.x);
});
 
onKey = 'plot' + onKey[0].toUpperCase() + onKey.substr(1);
while (i-- && points[cursor]) {
point = points[cursor];
leftPoint = onData[i];
if (leftPoint.x <= point.x && leftPoint[onKey] !== undefined) {
if (point.x <= lastX) { // #803
 
point.plotY = leftPoint[onKey];
 
// interpolate between points, #666
if (leftPoint.x < point.x && !step) {
rightPoint = onData[i + 1];
if (rightPoint && rightPoint[onKey] !== undefined) {
point.plotY +=
((point.x - leftPoint.x) / (rightPoint.x - leftPoint.x)) * // the distance ratio, between 0 and 1
(rightPoint[onKey] - leftPoint[onKey]); // the y distance
}
}
}
cursor--;
i++; // check again for points in the same x position
if (cursor < 0) {
break;
}
}
}
}
 
// Add plotY position and handle stacking
each(points, function(point, i) {
 
var stackIndex;
 
// Undefined plotY means the point is either on axis, outside series
// range or hidden series. If the series is outside the range of the
// x axis it should fall through with an undefined plotY, but then
// we must remove the shapeArgs (#847).
if (point.plotY === undefined) {
if (point.x >= xAxisExt.min && point.x <= xAxisExt.max) {
// we're inside xAxis range
point.plotY = chart.chartHeight - xAxis.bottom -
(xAxis.opposite ? xAxis.height : 0) +
xAxis.offset - yAxis.top; // #3517
} else {
point.shapeArgs = {}; // 847
}
}
point.plotX += xOffset; // #2049
// if multiple flags appear at the same x, order them into a stack
lastPoint = points[i - 1];
if (lastPoint && lastPoint.plotX === point.plotX) {
if (lastPoint.stackIndex === undefined) {
lastPoint.stackIndex = 0;
}
stackIndex = lastPoint.stackIndex + 1;
}
point.stackIndex = stackIndex; // #3639
});
 
 
},
 
/**
* Draw the markers
*/
drawPoints: function() {
var series = this,
points = series.points,
chart = series.chart,
renderer = chart.renderer,
plotX,
plotY,
options = series.options,
optionsY = options.y,
shape,
i,
point,
graphic,
stackIndex,
anchorX,
anchorY,
outsideRight,
yAxis = series.yAxis;
 
i = points.length;
while (i--) {
point = points[i];
outsideRight = point.plotX > series.xAxis.len;
plotX = point.plotX;
stackIndex = point.stackIndex;
shape = point.options.shape || options.shape;
plotY = point.plotY;
 
if (plotY !== undefined) {
plotY = point.plotY + optionsY - (stackIndex !== undefined && stackIndex * options.stackDistance);
}
anchorX = stackIndex ? undefined : point.plotX; // skip connectors for higher level stacked points
anchorY = stackIndex ? undefined : point.plotY;
 
graphic = point.graphic;
 
// Only draw the point if y is defined and the flag is within the visible area
if (plotY !== undefined && plotX >= 0 && !outsideRight) {
 
// Create the flag
if (!graphic) {
graphic = point.graphic = renderer.label(
'',
null,
null,
shape,
null,
null,
options.useHTML
)
 
.attr({
align: shape === 'flag' ? 'left' : 'center',
width: options.width,
height: options.height,
'text-align': options.textAlign
})
.addClass('highcharts-point')
.add(series.markerGroup);
 
// Add reference to the point for tracker (#6303)
if (point.graphic.div) {
point.graphic.div.point = point;
}
 
 
}
 
if (plotX > 0) { // #3119
plotX -= graphic.strokeWidth() % 2; // #4285
}
 
// Plant the flag
graphic.attr({
text: point.options.title || options.title || 'A',
x: plotX,
y: plotY,
anchorX: anchorX,
anchorY: anchorY
});
 
// Set the tooltip anchor position
point.tooltipPos = chart.inverted ? [yAxis.len + yAxis.pos - chart.plotLeft - plotY, series.xAxis.len - plotX] : [plotX, plotY + yAxis.pos - chart.plotTop]; // #6327
 
} else if (graphic) {
point.graphic = graphic.destroy();
}
 
}
 
// Might be a mix of SVG and HTML and we need events for both (#6303)
if (options.useHTML) {
H.wrap(series.markerGroup, 'on', function(proceed) {
return H.SVGElement.prototype.on.apply(
proceed.apply(this, [].slice.call(arguments, 1)), // for HTML
[].slice.call(arguments, 1)); // and for SVG
});
}
 
},
 
/**
* Extend the column trackers with listeners to expand and contract stacks
*/
drawTracker: function() {
var series = this,
points = series.points;
 
TrackerMixin.drawTrackerPoint.apply(this);
 
// Bring each stacked flag up on mouse over, this allows readability of vertically
// stacked elements as well as tight points on the x axis. #1924.
each(points, function(point) {
var graphic = point.graphic;
if (graphic) {
addEvent(graphic.element, 'mouseover', function() {
 
// Raise this point
if (point.stackIndex > 0 && !point.raised) {
point._y = graphic.y;
graphic.attr({
y: point._y - 8
});
point.raised = true;
}
 
// Revert other raised points
each(points, function(otherPoint) {
if (otherPoint !== point && otherPoint.raised && otherPoint.graphic) {
otherPoint.graphic.attr({
y: otherPoint._y
});
otherPoint.raised = false;
}
});
});
}
});
},
 
animate: noop, // Disable animation
buildKDTree: noop,
setClip: noop
 
});
 
// create the flag icon with anchor
symbols.flag = function(x, y, w, h, options) {
var anchorX = (options && options.anchorX) || x,
anchorY = (options && options.anchorY) || y;
 
return [
'M', anchorX, anchorY,
'L', x, y + h,
x, y,
x + w, y,
x + w, y + h,
x, y + h,
'Z'
];
};
 
// create the circlepin and squarepin icons with anchor
each(['circle', 'square'], function(shape) {
symbols[shape + 'pin'] = function(x, y, w, h, options) {
 
var anchorX = options && options.anchorX,
anchorY = options && options.anchorY,
path,
labelTopOrBottomY;
 
// For single-letter flags, make sure circular flags are not taller than their width
if (shape === 'circle' && h > w) {
x -= Math.round((h - w) / 2);
w = h;
}
 
path = symbols[shape](x, y, w, h);
 
if (anchorX && anchorY) {
// if the label is below the anchor, draw the connecting line from the top edge of the label
// otherwise start drawing from the bottom edge
labelTopOrBottomY = (y > anchorY) ? y : y + h;
path.push('M', anchorX, labelTopOrBottomY, 'L', anchorX, anchorY);
}
 
return path;
};
});
 
 
/* ****************************************************************************
* End Flags series code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Axis = H.Axis,
correctFloat = H.correctFloat,
defaultOptions = H.defaultOptions,
defined = H.defined,
destroyObjectProperties = H.destroyObjectProperties,
each = H.each,
fireEvent = H.fireEvent,
hasTouch = H.hasTouch,
isTouchDevice = H.isTouchDevice,
merge = H.merge,
pick = H.pick,
removeEvent = H.removeEvent,
svg = H.svg,
wrap = H.wrap,
swapXY;
 
/**
*
* The scrollbar is a means of panning over the X axis of a chart.
*
* In [styled mode](http://www.highcharts.com/docs/chart-design-
* and-style/style-by-css), all the presentational options for the
* scrollbar are replaced by the classes `.highcharts-scrollbar-
* thumb`, `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-
* button`, `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-
* track`.
*
* @product highstock
* @optionparent scrollbar
*/
var defaultScrollbarOptions = {
//enabled: true
 
/**
* The height of the scrollbar. The height also applies to the width
* of the scroll arrows so that they are always squares. Defaults to
* 20 for touch devices and 14 for mouse devices.
*
* @type {Number}
* @sample {highstock} stock/scrollbar/height/ A 30px scrollbar
* @product highstock
*/
height: isTouchDevice ? 20 : 14,
// trackBorderRadius: 0
 
/**
* The border rounding radius of the bar.
*
* @type {Number}
* @sample {highstock} stock/scrollbar/style/ Scrollbar styling
* @default 0
* @product highstock
*/
barBorderRadius: 0,
 
/**
* The corner radius of the scrollbar buttons.
*
* @type {Number}
* @sample {highstock} stock/scrollbar/style/ Scrollbar styling
* @default 0
* @product highstock
*/
buttonBorderRadius: 0,
 
/**
* Whether to redraw the main chart as the scrollbar or the navigator
* zoomed window is moved. Defaults to `true` for modern browsers and
* `false` for legacy IE browsers as well as mobile devices.
*
* @type {Boolean}
* @since 1.3
* @product highstock
*/
liveRedraw: svg && !isTouchDevice,
 
/**
*/
margin: 10,
 
/**
* The minimum width of the scrollbar.
*
* @type {Number}
* @default 6
* @since 1.2.5
* @product highstock
*/
minWidth: 6,
//showFull: true,
//size: null,
 
/**
*/
step: 0.2,
 
/**
*/
zIndex: 3
 
};
 
defaultOptions.scrollbar = merge(true, defaultScrollbarOptions, defaultOptions.scrollbar);
 
/**
* When we have vertical scrollbar, rifles and arrow in buttons should be rotated.
* The same method is used in Navigator's handles, to rotate them.
* @param {Array} path - path to be rotated
* @param {Boolean} vertical - if vertical scrollbar, swap x-y values
*/
H.swapXY = swapXY = function(path, vertical) {
var i,
len = path.length,
temp;
 
if (vertical) {
for (i = 0; i < len; i += 3) {
temp = path[i + 1];
path[i + 1] = path[i + 2];
path[i + 2] = temp;
}
}
 
return path;
};
 
/**
* A reusable scrollbar, internally used in Highstock's navigator and optionally
* on individual axes.
*
* @class
* @param {Object} renderer
* @param {Object} options
* @param {Object} chart
*/
function Scrollbar(renderer, options, chart) { // docs
this.init(renderer, options, chart);
}
 
Scrollbar.prototype = {
 
init: function(renderer, options, chart) {
 
this.scrollbarButtons = [];
 
this.renderer = renderer;
 
this.userOptions = options;
this.options = merge(defaultScrollbarOptions, options);
 
this.chart = chart;
 
this.size = pick(this.options.size, this.options.height); // backward compatibility
 
// Init
if (options.enabled) {
this.render();
this.initEvents();
this.addEvents();
}
},
 
/**
* Render scrollbar with all required items.
*/
render: function() {
var scroller = this,
renderer = scroller.renderer,
options = scroller.options,
size = scroller.size,
group;
 
// Draw the scrollbar group
scroller.group = group = renderer.g('scrollbar').attr({
zIndex: options.zIndex,
translateY: -99999
}).add();
 
// Draw the scrollbar track:
scroller.track = renderer.rect()
.addClass('highcharts-scrollbar-track')
.attr({
x: 0,
r: options.trackBorderRadius || 0,
height: size,
width: size
}).add(group);
 
 
this.trackBorderWidth = scroller.track.strokeWidth();
scroller.track.attr({
y: -this.trackBorderWidth % 2 / 2
});
 
 
// Draw the scrollbar itself
scroller.scrollbarGroup = renderer.g().add(group);
 
scroller.scrollbar = renderer.rect()
.addClass('highcharts-scrollbar-thumb')
.attr({
height: size,
width: size,
r: options.barBorderRadius || 0
}).add(scroller.scrollbarGroup);
 
scroller.scrollbarRifles = renderer.path(
swapXY([
'M', -3, size / 4,
'L', -3, 2 * size / 3,
'M',
0, size / 4,
'L',
0, 2 * size / 3,
'M',
3, size / 4,
'L',
3, 2 * size / 3
], options.vertical))
.addClass('highcharts-scrollbar-rifles')
.add(scroller.scrollbarGroup);
 
 
scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();
scroller.scrollbarGroup.translate(-scroller.scrollbarStrokeWidth % 2 / 2, -scroller.scrollbarStrokeWidth % 2 / 2);
 
// Draw the buttons:
scroller.drawScrollbarButton(0);
scroller.drawScrollbarButton(1);
},
 
/**
* Position the scrollbar, method called from a parent with defined dimensions
* @param {Number} x - x-position on the chart
* @param {Number} y - y-position on the chart
* @param {Number} width - width of the scrollbar
* @param {Number} height - height of the scorllbar
*/
position: function(x, y, width, height) {
var scroller = this,
options = scroller.options,
vertical = options.vertical,
xOffset = height,
yOffset = 0,
method = scroller.rendered ? 'animate' : 'attr';
 
scroller.x = x;
scroller.y = y + this.trackBorderWidth;
scroller.width = width; // width with buttons
scroller.height = height;
scroller.xOffset = xOffset;
scroller.yOffset = yOffset;
 
// If Scrollbar is a vertical type, swap options:
if (vertical) {
scroller.width = scroller.yOffset = width = yOffset = scroller.size;
scroller.xOffset = xOffset = 0;
scroller.barWidth = height - width * 2; // width without buttons
scroller.x = x = x + scroller.options.margin;
} else {
scroller.height = scroller.xOffset = height = xOffset = scroller.size;
scroller.barWidth = width - height * 2; // width without buttons
scroller.y = scroller.y + scroller.options.margin;
}
 
// Set general position for a group:
scroller.group[method]({
translateX: x,
translateY: scroller.y
});
 
// Resize background/track:
scroller.track[method]({
width: width,
height: height
});
 
// Move right/bottom button ot it's place:
scroller.scrollbarButtons[1][method]({
translateX: vertical ? 0 : width - xOffset,
translateY: vertical ? height - yOffset : 0
});
},
 
/**
* Draw the scrollbar buttons with arrows
* @param {Number} index 0 is left, 1 is right
*/
drawScrollbarButton: function(index) {
var scroller = this,
renderer = scroller.renderer,
scrollbarButtons = scroller.scrollbarButtons,
options = scroller.options,
size = scroller.size,
group,
tempElem;
 
group = renderer.g().add(scroller.group);
scrollbarButtons.push(group);
 
// Create a rectangle for the scrollbar button
tempElem = renderer.rect()
.addClass('highcharts-scrollbar-button')
.add(group);
 
 
 
// Place the rectangle based on the rendered stroke width
tempElem.attr(tempElem.crisp({
x: -0.5,
y: -0.5,
width: size + 1, // +1 to compensate for crispifying in rect method
height: size + 1,
r: options.buttonBorderRadius
}, tempElem.strokeWidth()));
 
// Button arrow
tempElem = renderer
.path(swapXY([
'M',
size / 2 + (index ? -1 : 1),
size / 2 - 3,
'L',
size / 2 + (index ? -1 : 1),
size / 2 + 3,
'L',
size / 2 + (index ? 2 : -2),
size / 2
], options.vertical))
.addClass('highcharts-scrollbar-arrow')
.add(scrollbarButtons[index]);
 
 
},
 
/**
* Set scrollbar size, with a given scale.
* @param {Number} from - scale (0-1) where bar should start
* @param {Number} to - scale (0-1) where bar should end
*/
setRange: function(from, to) {
var scroller = this,
options = scroller.options,
vertical = options.vertical,
minWidth = options.minWidth,
fullWidth = scroller.barWidth,
fromPX,
toPX,
newPos,
newSize,
newRiflesPos,
method = this.rendered && !this.hasDragged ? 'animate' : 'attr';
 
if (!defined(fullWidth)) {
return;
}
 
from = Math.max(from, 0);
fromPX = Math.ceil(fullWidth * from);
toPX = fullWidth * Math.min(to, 1);
scroller.calculatedWidth = newSize = correctFloat(toPX - fromPX);
 
// We need to recalculate position, if minWidth is used
if (newSize < minWidth) {
fromPX = (fullWidth - minWidth + newSize) * from;
newSize = minWidth;
}
newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);
newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2
 
// Store current position:
scroller.from = from;
scroller.to = to;
 
if (!vertical) {
scroller.scrollbarGroup[method]({
translateX: newPos
});
scroller.scrollbar[method]({
width: newSize
});
scroller.scrollbarRifles[method]({
translateX: newRiflesPos
});
scroller.scrollbarLeft = newPos;
scroller.scrollbarTop = 0;
} else {
scroller.scrollbarGroup[method]({
translateY: newPos
});
scroller.scrollbar[method]({
height: newSize
});
scroller.scrollbarRifles[method]({
translateY: newRiflesPos
});
scroller.scrollbarTop = newPos;
scroller.scrollbarLeft = 0;
}
 
if (newSize <= 12) {
scroller.scrollbarRifles.hide();
} else {
scroller.scrollbarRifles.show(true);
}
 
// Show or hide the scrollbar based on the showFull setting
if (options.showFull === false) {
if (from <= 0 && to >= 1) {
scroller.group.hide();
} else {
scroller.group.show();
}
}
 
scroller.rendered = true;
},
 
/**
* Init events methods, so we have an access to the Scrollbar itself
*/
initEvents: function() {
var scroller = this;
/**
* Event handler for the mouse move event.
*/
scroller.mouseMoveHandler = function(e) {
var normalizedEvent = scroller.chart.pointer.normalize(e),
options = scroller.options,
direction = options.vertical ? 'chartY' : 'chartX',
initPositions = scroller.initPositions,
scrollPosition,
chartPosition,
change;
 
// In iOS, a mousemove event with e.pageX === 0 is fired when holding the finger
// down in the center of the scrollbar. This should be ignored.
if (scroller.grabbedCenter && (!e.touches || e.touches[0][direction] !== 0)) { // #4696, scrollbar failed on Android
chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];
scrollPosition = scroller[direction];
 
change = chartPosition - scrollPosition;
 
scroller.hasDragged = true;
scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);
 
if (scroller.hasDragged) {
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMType: e.type,
DOMEvent: e
});
}
}
};
 
/**
* Event handler for the mouse up event.
*/
scroller.mouseUpHandler = function(e) {
if (scroller.hasDragged) {
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMType: e.type,
DOMEvent: e
});
}
scroller.grabbedCenter = scroller.hasDragged = scroller.chartX = scroller.chartY = null;
};
 
scroller.mouseDownHandler = function(e) {
var normalizedEvent = scroller.chart.pointer.normalize(e),
mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);
 
scroller.chartX = mousePosition.chartX;
scroller.chartY = mousePosition.chartY;
scroller.initPositions = [scroller.from, scroller.to];
 
scroller.grabbedCenter = true;
};
 
scroller.buttonToMinClick = function(e) {
var range = correctFloat(scroller.to - scroller.from) * scroller.options.step;
scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMEvent: e
});
};
 
scroller.buttonToMaxClick = function(e) {
var range = (scroller.to - scroller.from) * scroller.options.step;
scroller.updatePosition(scroller.from + range, scroller.to + range);
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMEvent: e
});
};
 
scroller.trackClick = function(e) {
var normalizedEvent = scroller.chart.pointer.normalize(e),
range = scroller.to - scroller.from,
top = scroller.y + scroller.scrollbarTop,
left = scroller.x + scroller.scrollbarLeft;
 
if ((scroller.options.vertical && normalizedEvent.chartY > top) ||
(!scroller.options.vertical && normalizedEvent.chartX > left)) {
// On the top or on the left side of the track:
scroller.updatePosition(scroller.from + range, scroller.to + range);
} else {
// On the bottom or the right side of the track:
scroller.updatePosition(scroller.from - range, scroller.to - range);
}
 
fireEvent(scroller, 'changed', {
from: scroller.from,
to: scroller.to,
trigger: 'scrollbar',
DOMEvent: e
});
};
},
 
/**
* Get normalized (0-1) cursor position over the scrollbar
* @param {Event} normalizedEvent - normalized event, with chartX and chartY values
* @return {Object} Local position {chartX, chartY}
*/
cursorToScrollbarPosition: function(normalizedEvent) {
var scroller = this,
options = scroller.options,
minWidthDifference = options.minWidth > scroller.calculatedWidth ? options.minWidth : 0; // minWidth distorts translation
 
return {
chartX: (normalizedEvent.chartX - scroller.x - scroller.xOffset) / (scroller.barWidth - minWidthDifference),
chartY: (normalizedEvent.chartY - scroller.y - scroller.yOffset) / (scroller.barWidth - minWidthDifference)
};
},
 
/**
* Update position option in the Scrollbar, with normalized 0-1 scale
*/
updatePosition: function(from, to) {
if (to > 1) {
from = correctFloat(1 - correctFloat(to - from));
to = 1;
}
 
if (from < 0) {
to = correctFloat(to - from);
from = 0;
}
 
this.from = from;
this.to = to;
},
 
/**
* Update the scrollbar with new options
*/
update: function(options) {
this.destroy();
this.init(this.chart.renderer, merge(true, this.options, options), this.chart);
},
 
/**
* Set up the mouse and touch events for the Scrollbar
*/
addEvents: function() {
var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],
buttons = this.scrollbarButtons,
bar = this.scrollbarGroup.element,
track = this.track.element,
mouseDownHandler = this.mouseDownHandler,
mouseMoveHandler = this.mouseMoveHandler,
mouseUpHandler = this.mouseUpHandler,
_events;
 
// Mouse events
_events = [
[buttons[buttonsOrder[0]].element, 'click', this.buttonToMinClick],
[buttons[buttonsOrder[1]].element, 'click', this.buttonToMaxClick],
[track, 'click', this.trackClick],
[bar, 'mousedown', mouseDownHandler],
[bar.ownerDocument, 'mousemove', mouseMoveHandler],
[bar.ownerDocument, 'mouseup', mouseUpHandler]
];
 
// Touch events
if (hasTouch) {
_events.push(
[bar, 'touchstart', mouseDownHandler], [bar.ownerDocument, 'touchmove', mouseMoveHandler], [bar.ownerDocument, 'touchend', mouseUpHandler]
);
}
 
// Add them all
each(_events, function(args) {
addEvent.apply(null, args);
});
this._events = _events;
},
 
/**
* Removes the event handlers attached previously with addEvents.
*/
removeEvents: function() {
each(this._events, function(args) {
removeEvent.apply(null, args);
});
this._events.length = 0;
},
 
/**
* Destroys allocated elements.
*/
destroy: function() {
 
var scroller = this.chart.scroller;
 
// Disconnect events added in addEvents
this.removeEvents();
 
// Destroy properties
each(['track', 'scrollbarRifles', 'scrollbar', 'scrollbarGroup', 'group'], function(prop) {
if (this[prop] && this[prop].destroy) {
this[prop] = this[prop].destroy();
}
}, this);
 
if (scroller && this === scroller.scrollbar) { // #6421, chart may have more scrollbars
scroller.scrollbar = null;
 
// Destroy elements in collection
destroyObjectProperties(scroller.scrollbarButtons);
}
}
};
 
/**
* Wrap axis initialization and create scrollbar if enabled:
*/
wrap(Axis.prototype, 'init', function(proceed) {
var axis = this;
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
if (axis.options.scrollbar && axis.options.scrollbar.enabled) {
// Predefined options:
axis.options.scrollbar.vertical = !axis.horiz;
axis.options.startOnTick = axis.options.endOnTick = false;
 
axis.scrollbar = new Scrollbar(axis.chart.renderer, axis.options.scrollbar, axis.chart);
 
addEvent(axis.scrollbar, 'changed', function(e) {
var unitedMin = Math.min(pick(axis.options.min, axis.min), axis.min, axis.dataMin),
unitedMax = Math.max(pick(axis.options.max, axis.max), axis.max, axis.dataMax),
range = unitedMax - unitedMin,
to,
from;
 
if ((axis.horiz && !axis.reversed) || (!axis.horiz && axis.reversed)) {
to = unitedMin + range * this.to;
from = unitedMin + range * this.from;
} else {
// y-values in browser are reversed, but this also applies for reversed horizontal axis:
to = unitedMin + range * (1 - this.from);
from = unitedMin + range * (1 - this.to);
}
 
axis.setExtremes(from, to, true, false, e);
});
}
});
 
/**
* Wrap rendering axis, and update scrollbar if one is created:
*/
wrap(Axis.prototype, 'render', function(proceed) {
var axis = this,
scrollMin = Math.min(
pick(axis.options.min, axis.min),
axis.min,
pick(axis.dataMin, axis.min) // #6930
),
scrollMax = Math.max(
pick(axis.options.max, axis.max),
axis.max,
pick(axis.dataMax, axis.max) // #6930
),
scrollbar = axis.scrollbar,
titleOffset = axis.titleOffset || 0,
offsetsIndex,
from,
to;
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
if (scrollbar) {
 
if (axis.horiz) {
scrollbar.position(
axis.left,
axis.top + axis.height + 2 + axis.chart.scrollbarsOffsets[1] +
(axis.opposite ?
0 :
titleOffset + axis.axisTitleMargin + axis.offset
),
axis.width,
axis.height
);
offsetsIndex = 1;
} else {
scrollbar.position(
axis.left + axis.width + 2 + axis.chart.scrollbarsOffsets[0] +
(axis.opposite ?
titleOffset + axis.axisTitleMargin + axis.offset :
0
),
axis.top,
axis.width,
axis.height
);
offsetsIndex = 0;
}
 
if ((!axis.opposite && !axis.horiz) || (axis.opposite && axis.horiz)) {
axis.chart.scrollbarsOffsets[offsetsIndex] +=
axis.scrollbar.size + axis.scrollbar.options.margin;
}
 
if (isNaN(scrollMin) || isNaN(scrollMax) || !defined(axis.min) || !defined(axis.max)) {
scrollbar.setRange(0, 0); // default action: when there is not extremes on the axis, but scrollbar exists, make it full size
} else {
from = (axis.min - scrollMin) / (scrollMax - scrollMin);
to = (axis.max - scrollMin) / (scrollMax - scrollMin);
 
if ((axis.horiz && !axis.reversed) || (!axis.horiz && axis.reversed)) {
scrollbar.setRange(from, to);
} else {
scrollbar.setRange(1 - to, 1 - from); // inverse vertical axis
}
}
}
});
 
/**
* Make space for a scrollbar
*/
wrap(Axis.prototype, 'getOffset', function(proceed) {
var axis = this,
index = axis.horiz ? 2 : 1,
scrollbar = axis.scrollbar;
 
proceed.apply(axis, Array.prototype.slice.call(arguments, 1));
 
if (scrollbar) {
axis.chart.scrollbarsOffsets = [0, 0]; // reset scrollbars offsets
axis.chart.axisOffset[index] += scrollbar.size + scrollbar.options.margin;
}
});
 
/**
* Destroy scrollbar when connected to the specific axis
*/
wrap(Axis.prototype, 'destroy', function(proceed) {
if (this.scrollbar) {
this.scrollbar = this.scrollbar.destroy();
}
 
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
H.Scrollbar = Scrollbar;
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
/* ****************************************************************************
* Start Navigator code *
*****************************************************************************/
var addEvent = H.addEvent,
Axis = H.Axis,
Chart = H.Chart,
color = H.color,
defaultDataGroupingUnits = H.defaultDataGroupingUnits,
defaultOptions = H.defaultOptions,
defined = H.defined,
destroyObjectProperties = H.destroyObjectProperties,
each = H.each,
erase = H.erase,
error = H.error,
extend = H.extend,
grep = H.grep,
hasTouch = H.hasTouch,
isArray = H.isArray,
isNumber = H.isNumber,
isObject = H.isObject,
merge = H.merge,
pick = H.pick,
removeEvent = H.removeEvent,
Scrollbar = H.Scrollbar,
Series = H.Series,
seriesTypes = H.seriesTypes,
wrap = H.wrap,
swapXY = H.swapXY,
 
units = [].concat(defaultDataGroupingUnits), // copy
defaultSeriesType,
 
// Finding the min or max of a set of variables where we don't know if they are defined,
// is a pattern that is repeated several places in Highcharts. Consider making this
// a global utility method.
numExt = function(extreme) {
var numbers = grep(arguments, isNumber);
if (numbers.length) {
return Math[extreme].apply(0, numbers);
}
};
 
// add more resolution to units
units[4] = ['day', [1, 2, 3, 4]]; // allow more days
units[5] = ['week', [1, 2, 3]]; // allow more weeks
 
defaultSeriesType = seriesTypes.areaspline === undefined ? 'line' : 'areaspline';
 
extend(defaultOptions, {
 
/**
* The navigator is a small series below the main series, displaying
* a view of the entire data set. It provides tools to zoom in and
* out on parts of the data as well as panning across the dataset.
*
* @optionparent navigator
* @product highstock
*/
navigator: {
//enabled: true,
 
/**
* The height of the navigator.
*
* @type {Number}
* @sample {highstock} stock/navigator/height/ A higher navigator
* @default 40
* @product highstock
*/
height: 40,
 
/**
* The distance from the nearest element, the X axis or X axis labels.
*
* @type {Number}
* @sample {highstock} stock/navigator/margin/ A margin of 2 draws the navigator closer to the X axis labels
* @default 25
* @product highstock
*/
margin: 25,
 
/**
* Whether the mask should be inside the range marking the zoomed
* range, or outside. In Highstock 1.x it was always `false`.
*
* @type {Boolean}
* @sample {highstock} stock/navigator/maskinside-false/ False, mask outside
* @default true
* @since 2.0
* @product highstock
*/
maskInside: true,
 
 
/**
* Options for the navigator series. Available options are the same
* as any series, documented at [plotOptions](#plotOptions.series)
* and [series](#series).
*
* Unless data is explicitly defined on navigator.series, the data
* is borrowed from the first series in the chart.
*
* Default series options for the navigator series are:
*
* <pre>series: {
* type: 'areaspline',
* color: '#4572A7',
* fillOpacity: 0.05,
* dataGrouping: {
* smoothed: true
* },
* lineWidth: 1,
* marker: {
* enabled: false
* }
* }</pre>
*
* @type {Object}
* @see In [styled mode](http://www.highcharts.com/docs/chart-design-and-
* style/style-by-css), the navigator series is styled with the `.
* highcharts-navigator-series` class.
* @sample {highstock} stock/navigator/series-data/ Using a separate data set for the navigator
* @sample {highstock} stock/navigator/series/ A green navigator series
* @product highstock
*/
series: {
 
/**
*/
type: defaultSeriesType,
 
 
/**
*/
compare: null,
 
/**
*/
dataGrouping: {
 
/**
*/
approximation: 'average',
 
/**
*/
enabled: true,
 
/**
*/
groupPixelWidth: 2,
 
/**
*/
smoothed: true,
 
/**
*/
units: units
},
 
/**
*/
dataLabels: {
 
/**
*/
enabled: false,
 
/**
*/
zIndex: 2 // #1839
},
 
/**
*/
id: 'highcharts-navigator-series',
 
/**
*/
className: 'highcharts-navigator-series',
 
/**
*/
lineColor: null, // Allow color setting while disallowing default candlestick setting (#4602)
 
/**
*/
marker: {
 
/**
*/
enabled: false
},
 
/**
*/
pointRange: 0,
 
/**
*/
shadow: false,
 
/**
*/
threshold: null
},
//top: undefined,
//opposite: undefined,
 
/**
* Options for the navigator X axis. Available options are the same
* as any X axis, documented at [xAxis](#xAxis). Default series options
* for the navigator xAxis are:
*
* <pre>xAxis: {
* tickWidth: 0,
* lineWidth: 0,
* gridLineWidth: 1,
* tickPixelInterval: 200,
* labels: {
* align: 'left',
* style: {
* color: '#888'
* },
* x: 3,
* y: -4
* }
* }</pre>
*
* @type {Object}
* @product highstock
*/
xAxis: {
 
/**
*/
className: 'highcharts-navigator-xaxis',
 
/**
*/
tickLength: 0,
 
 
/**
*/
tickPixelInterval: 200,
 
/**
*/
labels: {
 
/**
*/
align: 'left',
 
 
/**
*/
x: 3,
 
/**
*/
y: -4
},
 
/**
*/
crosshair: false
},
 
/**
* Options for the navigator Y axis. Available options are the same
* as any y axis, documented at [yAxis](#yAxis). Default series options
* for the navigator yAxis are:
*
* <pre>yAxis: {
* gridLineWidth: 0,
* startOnTick: false,
* endOnTick: false,
* minPadding: 0.1,
* maxPadding: 0.1,
* labels: {
* enabled: false
* },
* title: {
* text: null
* },
* tickWidth: 0
* }</pre>
*
* @type {Object}
* @product highstock
*/
yAxis: {
 
/**
*/
className: 'highcharts-navigator-yaxis',
 
 
/**
*/
startOnTick: false,
 
/**
*/
endOnTick: false,
 
/**
*/
minPadding: 0.1,
 
/**
*/
maxPadding: 0.1,
 
/**
*/
labels: {
 
/**
*/
enabled: false
},
 
/**
*/
crosshair: false,
 
/**
*/
title: {
 
/**
*/
text: null
},
 
/**
*/
tickLength: 0,
 
/**
*/
tickWidth: 0
}
}
});
 
/**
* The Navigator class
* @param {Object} chart - Chart object
* @class
*/
function Navigator(chart) {
this.init(chart);
}
 
Navigator.prototype = {
/**
* Draw one of the handles on the side of the zoomed range in the navigator
* @param {Number} x The x center for the handle
* @param {Number} index 0 for left and 1 for right
* @param {Boolean} inverted flag for chart.inverted
* @param {String} verb use 'animate' or 'attr'
*/
drawHandle: function(x, index, inverted, verb) {
var navigator = this;
 
// Place it
navigator.handles[index][verb](inverted ? {
translateX: Math.round(navigator.left + navigator.height / 2 - 8),
translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5)
} : {
translateX: Math.round(navigator.left + parseInt(x, 10)),
translateY: Math.round(navigator.top + navigator.height / 2 - 8)
});
},
 
/**
* Draw one of the handles on the side of the zoomed range in the navigator
* @param {Boolean} inverted flag for chart.inverted
* @returns {Array} Path to be used in a handle
*/
getHandlePath: function(inverted) {
return swapXY([
'M', -4.5, 0.5,
'L',
3.5, 0.5,
'L',
3.5, 15.5,
'L', -4.5, 15.5,
'L', -4.5, 0.5,
'M', -1.5, 4,
'L', -1.5, 12,
'M',
0.5, 4,
'L',
0.5, 12
], inverted);
},
/**
* Render outline around the zoomed range
* @param {Number} zoomedMin in pixels position where zoomed range starts
* @param {Number} zoomedMax in pixels position where zoomed range ends
* @param {Boolean} inverted flag if chart is inverted
* @param {String} verb use 'animate' or 'attr'
*/
drawOutline: function(zoomedMin, zoomedMax, inverted, verb) {
var navigator = this,
maskInside = navigator.navigatorOptions.maskInside,
outlineWidth = navigator.outline.strokeWidth(),
halfOutline = outlineWidth / 2,
outlineCorrection = (outlineWidth % 2) / 2, // #5800
outlineHeight = navigator.outlineHeight,
scrollbarHeight = navigator.scrollbarHeight,
navigatorSize = navigator.size,
left = navigator.left - scrollbarHeight,
navigatorTop = navigator.top,
verticalMin,
path;
 
if (inverted) {
left -= halfOutline;
verticalMin = navigatorTop + zoomedMax + outlineCorrection;
zoomedMax = navigatorTop + zoomedMin + outlineCorrection;
 
path = [
'M',
left + outlineHeight,
navigatorTop - scrollbarHeight - outlineCorrection, // top edge
'L',
left + outlineHeight,
verticalMin, // top right of zoomed range
'L',
left,
verticalMin, // top left of z.r.
'L',
left,
zoomedMax, // bottom left of z.r.
'L',
left + outlineHeight,
zoomedMax, // bottom right of z.r.
'L',
left + outlineHeight,
navigatorTop + navigatorSize + scrollbarHeight // bottom edge
].concat(maskInside ? [
'M',
left + outlineHeight,
verticalMin - halfOutline, // upper left of zoomed range
'L',
left + outlineHeight,
zoomedMax + halfOutline // upper right of z.r.
] : []);
} else {
zoomedMin += left + scrollbarHeight - outlineCorrection;
zoomedMax += left + scrollbarHeight - outlineCorrection;
navigatorTop += halfOutline;
 
path = [
'M',
left,
navigatorTop, // left
'L',
zoomedMin,
navigatorTop, // upper left of zoomed range
'L',
zoomedMin,
navigatorTop + outlineHeight, // lower left of z.r.
'L',
zoomedMax,
navigatorTop + outlineHeight, // lower right of z.r.
'L',
zoomedMax,
navigatorTop, // upper right of z.r.
'L',
left + navigatorSize + scrollbarHeight * 2,
navigatorTop // right
].concat(maskInside ? [
'M',
zoomedMin - halfOutline,
navigatorTop, // upper left of zoomed range
'L',
zoomedMax + halfOutline,
navigatorTop // upper right of z.r.
] : []);
}
navigator.outline[verb]({
d: path
});
},
 
/**
* Render outline around the zoomed range
* @param {Number} zoomedMin in pixels position where zoomed range starts
* @param {Number} zoomedMax in pixels position where zoomed range ends
* @param {Boolean} inverted flag if chart is inverted
* @param {String} verb use 'animate' or 'attr'
*/
drawMasks: function(zoomedMin, zoomedMax, inverted, verb) {
var navigator = this,
left = navigator.left,
top = navigator.top,
navigatorHeight = navigator.height,
height,
width,
x,
y;
 
// Determine rectangle position & size
// According to (non)inverted position:
if (inverted) {
x = [left, left, left];
y = [top, top + zoomedMin, top + zoomedMax];
width = [navigatorHeight, navigatorHeight, navigatorHeight];
height = [
zoomedMin,
zoomedMax - zoomedMin,
navigator.size - zoomedMax
];
} else {
x = [left, left + zoomedMin, left + zoomedMax];
y = [top, top, top];
width = [
zoomedMin,
zoomedMax - zoomedMin,
navigator.size - zoomedMax
];
height = [navigatorHeight, navigatorHeight, navigatorHeight];
}
each(navigator.shades, function(shade, i) {
shade[verb]({
x: x[i],
y: y[i],
width: width[i],
height: height[i]
});
});
},
 
/**
* Generate DOM elements for a navigator:
* - main navigator group
* - all shades
* - outline
* - handles
*/
renderElements: function() {
var navigator = this,
navigatorOptions = navigator.navigatorOptions,
maskInside = navigatorOptions.maskInside,
chart = navigator.chart,
inverted = chart.inverted,
renderer = chart.renderer,
navigatorGroup;
 
// Create the main navigator group
navigator.navigatorGroup = navigatorGroup = renderer.g('navigator')
.attr({
zIndex: 8,
visibility: 'hidden'
})
.add();
 
 
 
 
// Create masks, each mask will get events and fill:
each([!maskInside, maskInside, !maskInside], function(hasMask, index) {
navigator.shades[index] = renderer.rect()
.addClass('highcharts-navigator-mask' +
(index === 1 ? '-inside' : '-outside'))
 
.add(navigatorGroup);
});
 
// Create the outline:
navigator.outline = renderer.path()
.addClass('highcharts-navigator-outline')
 
.add(navigatorGroup);
 
// Create the handlers:
each([0, 1], function(index) {
navigator.handles[index] = renderer
.path(navigator.getHandlePath(inverted))
// zIndex = 6 for right handle, 7 for left.
// Can't be 10, because of the tooltip in inverted chart #2908
.attr({
zIndex: 7 - index
})
.addClass(
'highcharts-navigator-handle highcharts-navigator-handle-' + ['left', 'right'][index]
).add(navigatorGroup);
 
 
});
},
 
/**
* Update navigator
* @param {Object} options Options to merge in when updating navigator
*/
update: function(options) {
// Remove references to old navigator series in base series
each(this.series || [], function(series) {
if (series.baseSeries) {
delete series.baseSeries.navigatorSeries;
}
});
// Destroy and rebuild navigator
this.destroy();
var chartOptions = this.chart.options;
merge(true, chartOptions.navigator, this.options, options);
this.init(this.chart);
},
 
/**
* Render the navigator
* @param {Number} min X axis value minimum
* @param {Number} max X axis value maximum
* @param {Number} pxMin Pixel value minimum
* @param {Number} pxMax Pixel value maximum
*/
render: function(min, max, pxMin, pxMax) {
var navigator = this,
chart = navigator.chart,
navigatorWidth,
scrollbarLeft,
scrollbarTop,
scrollbarHeight = navigator.scrollbarHeight,
navigatorSize,
xAxis = navigator.xAxis,
scrollbarXAxis = xAxis.fake ? chart.xAxis[0] : xAxis,
navigatorEnabled = navigator.navigatorEnabled,
zoomedMin,
zoomedMax,
rendered = navigator.rendered,
inverted = chart.inverted,
verb,
newMin,
newMax,
minRange = chart.xAxis[0].minRange;
 
// Don't redraw while moving the handles (#4703).
if (this.hasDragged && !defined(pxMin)) {
return;
}
 
// Don't render the navigator until we have data (#486, #4202, #5172).
if (!isNumber(min) || !isNumber(max)) {
// However, if navigator was already rendered, we may need to resize
// it. For example hidden series, but visible navigator (#6022).
if (rendered) {
pxMin = 0;
pxMax = xAxis.width;
} else {
return;
}
}
 
navigator.left = pick(
xAxis.left,
// in case of scrollbar only, without navigator
chart.plotLeft + scrollbarHeight + (inverted ? chart.plotWidth : 0)
);
 
navigator.size = zoomedMax = navigatorSize = pick(
xAxis.len,
(inverted ? chart.plotHeight : chart.plotWidth) - 2 * scrollbarHeight
);
 
if (inverted) {
navigatorWidth = scrollbarHeight;
} else {
navigatorWidth = navigatorSize + 2 * scrollbarHeight;
}
 
// Get the pixel position of the handles
pxMin = pick(pxMin, xAxis.toPixels(min, true));
pxMax = pick(pxMax, xAxis.toPixels(max, true));
 
if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) { // Verify (#1851, #2238)
pxMin = 0;
pxMax = navigatorWidth;
}
 
// Are we below the minRange? (#2618, #6191)
newMin = xAxis.toValue(pxMin, true);
newMax = xAxis.toValue(pxMax, true);
if (Math.abs(newMax - newMin) < minRange) {
if (this.grabbedLeft) {
pxMin = xAxis.toPixels(newMax - minRange, true);
} else if (this.grabbedRight) {
pxMax = xAxis.toPixels(newMin + minRange, true);
} else {
return;
}
}
 
// Handles are allowed to cross, but never exceed the plot area
navigator.zoomedMax = Math.min(Math.max(pxMin, pxMax, 0), zoomedMax);
navigator.zoomedMin = Math.min(
Math.max(
navigator.fixedWidth ?
navigator.zoomedMax - navigator.fixedWidth :
Math.min(pxMin, pxMax),
0
),
zoomedMax
);
 
navigator.range = navigator.zoomedMax - navigator.zoomedMin;
 
zoomedMax = Math.round(navigator.zoomedMax);
zoomedMin = Math.round(navigator.zoomedMin);
 
if (navigatorEnabled) {
navigator.navigatorGroup.attr({
visibility: 'visible'
});
// Place elements
verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';
 
navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);
navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);
navigator.drawHandle(zoomedMin, 0, inverted, verb);
navigator.drawHandle(zoomedMax, 1, inverted, verb);
}
 
if (navigator.scrollbar) {
if (inverted) {
scrollbarTop = navigator.top - scrollbarHeight;
scrollbarLeft = navigator.left - scrollbarHeight +
(navigatorEnabled || !scrollbarXAxis.opposite ? 0 :
// Multiple axes has offsets:
(scrollbarXAxis.titleOffset || 0) +
// Self margin from the axis.title
scrollbarXAxis.axisTitleMargin
);
scrollbarHeight = navigatorSize + 2 * scrollbarHeight;
} else {
scrollbarTop = navigator.top +
(navigatorEnabled ? navigator.height : -scrollbarHeight);
scrollbarLeft = navigator.left - scrollbarHeight;
}
// Reposition scrollbar
navigator.scrollbar.position(
scrollbarLeft,
scrollbarTop,
navigatorWidth,
scrollbarHeight
);
// Keep scale 0-1
navigator.scrollbar.setRange(
// Use real value, not rounded because range can be very small (#1716)
navigator.zoomedMin / navigatorSize,
navigator.zoomedMax / navigatorSize
);
}
navigator.rendered = true;
},
 
/**
* Set up the mouse and touch events for the navigator
*/
addMouseEvents: function() {
var navigator = this,
chart = navigator.chart,
container = chart.container,
eventsToUnbind = [],
mouseMoveHandler,
mouseUpHandler;
 
/**
* Create mouse events' handlers.
* Make them as separate functions to enable wrapping them:
*/
navigator.mouseMoveHandler = mouseMoveHandler = function(e) {
navigator.onMouseMove(e);
};
navigator.mouseUpHandler = mouseUpHandler = function(e) {
navigator.onMouseUp(e);
};
 
// Add shades and handles mousedown events
eventsToUnbind = navigator.getPartsEvents('mousedown');
// Add mouse move and mouseup events. These are bind to doc/container,
// because Navigator.grabbedSomething flags are stored in mousedown events:
eventsToUnbind.push(
addEvent(container, 'mousemove', mouseMoveHandler),
addEvent(container.ownerDocument, 'mouseup', mouseUpHandler)
);
 
// Touch events
if (hasTouch) {
eventsToUnbind.push(
addEvent(container, 'touchmove', mouseMoveHandler),
addEvent(container.ownerDocument, 'touchend', mouseUpHandler)
);
eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));
}
 
navigator.eventsToUnbind = eventsToUnbind;
 
// Data events
if (navigator.series && navigator.series[0]) {
eventsToUnbind.push(
addEvent(navigator.series[0].xAxis, 'foundExtremes', function() {
chart.navigator.modifyNavigatorAxisExtremes();
})
);
}
},
 
/**
* Generate events for handles and masks
* @param {String} eventName Event name handler, 'mousedown' or 'touchstart'
* @returns {Array} An array of arrays: [DOMElement, eventName, callback].
*/
getPartsEvents: function(eventName) {
var navigator = this,
events = [];
each(['shades', 'handles'], function(name) {
each(navigator[name], function(navigatorItem, index) {
events.push(
addEvent(
navigatorItem.element,
eventName,
function(e) {
navigator[name + 'Mousedown'](e, index);
}
)
);
});
});
return events;
},
 
/**
* Mousedown on a shaded mask, either:
* - will be stored for future drag&drop
* - will directly shift to a new range
*
* @param {Object} e Mouse event
* @param {Number} index Index of a mask in Navigator.shades array
*/
shadesMousedown: function(e, index) {
e = this.chart.pointer.normalize(e);
 
var navigator = this,
chart = navigator.chart,
xAxis = navigator.xAxis,
zoomedMin = navigator.zoomedMin,
navigatorPosition = navigator.left,
navigatorSize = navigator.size,
range = navigator.range,
chartX = e.chartX,
fixedMax,
ext,
left;
 
// For inverted chart, swap some options:
if (chart.inverted) {
chartX = e.chartY;
navigatorPosition = navigator.top;
}
 
if (index === 1) {
// Store information for drag&drop
navigator.grabbedCenter = chartX;
navigator.fixedWidth = range;
navigator.dragOffset = chartX - zoomedMin;
} else {
// Shift the range by clicking on shaded areas
left = chartX - navigatorPosition - range / 2;
if (index === 0) {
left = Math.max(0, left);
} else if (index === 2 && left + range >= navigatorSize) {
left = navigatorSize - range;
fixedMax = navigator.getUnionExtremes().dataMax; // #2293, #3543
}
if (left !== zoomedMin) { // it has actually moved
navigator.fixedWidth = range; // #1370
 
ext = xAxis.toFixedRange(left, left + range, null, fixedMax);
chart.xAxis[0].setExtremes(
Math.min(ext.min, ext.max),
Math.max(ext.min, ext.max),
true,
null, // auto animation
{
trigger: 'navigator'
}
);
}
}
},
 
/**
* Mousedown on a handle mask.
* Will store necessary information for drag&drop.
*
* @param {Object} e Mouse event
* @param {Number} index Index of a handle in Navigator.handles array
*/
handlesMousedown: function(e, index) {
e = this.chart.pointer.normalize(e);
 
var navigator = this,
chart = navigator.chart,
baseXAxis = chart.xAxis[0],
// For reversed axes, min and max are chagned,
// so the other extreme should be stored
reverse = (chart.inverted && !baseXAxis.reversed) ||
(!chart.inverted && baseXAxis.reversed);
 
if (index === 0) {
// Grab the left handle
navigator.grabbedLeft = true;
navigator.otherHandlePos = navigator.zoomedMax;
navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;
} else {
// Grab the right handle
navigator.grabbedRight = true;
navigator.otherHandlePos = navigator.zoomedMin;
navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;
}
 
chart.fixedRange = null;
},
/**
* Mouse move event based on x/y mouse position.
* @param {Object} e Mouse event
*/
onMouseMove: function(e) {
var navigator = this,
chart = navigator.chart,
left = navigator.left,
navigatorSize = navigator.navigatorSize,
range = navigator.range,
dragOffset = navigator.dragOffset,
inverted = chart.inverted,
chartX;
 
 
// In iOS, a mousemove event with e.pageX === 0 is fired when holding the finger
// down in the center of the scrollbar. This should be ignored.
if (!e.touches || e.touches[0].pageX !== 0) { // #4696, scrollbar failed on Android
 
e = chart.pointer.normalize(e);
chartX = e.chartX;
 
// Swap some options for inverted chart
if (inverted) {
left = navigator.top;
chartX = e.chartY;
}
 
// Drag left handle or top handle
if (navigator.grabbedLeft) {
navigator.hasDragged = true;
navigator.render(
0,
0,
chartX - left,
navigator.otherHandlePos
);
// Drag right handle or bottom handle
} else if (navigator.grabbedRight) {
navigator.hasDragged = true;
navigator.render(
0,
0,
navigator.otherHandlePos,
chartX - left
);
// Drag scrollbar or open area in navigator
} else if (navigator.grabbedCenter) {
navigator.hasDragged = true;
if (chartX < dragOffset) { // outside left
chartX = dragOffset;
} else if (chartX > navigatorSize + dragOffset - range) { // outside right
chartX = navigatorSize + dragOffset - range;
}
 
navigator.render(
0,
0,
chartX - dragOffset,
chartX - dragOffset + range
);
}
if (navigator.hasDragged && navigator.scrollbar && navigator.scrollbar.options.liveRedraw) {
e.DOMType = e.type; // DOMType is for IE8 because it can't read type async
setTimeout(function() {
navigator.onMouseUp(e);
}, 0);
}
}
},
 
/**
* Mouse up event based on x/y mouse position.
* @param {Object} e Mouse event
*/
onMouseUp: function(e) {
var navigator = this,
chart = navigator.chart,
xAxis = navigator.xAxis,
scrollbar = navigator.scrollbar,
fixedMin,
fixedMax,
ext,
DOMEvent = e.DOMEvent || e;
 
if (
// MouseUp is called for both, navigator and scrollbar (that order),
// which causes calling afterSetExtremes twice. Prevent first call
// by checking if scrollbar is going to set new extremes (#6334)
(navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||
e.trigger === 'scrollbar'
) {
// When dragging one handle, make sure the other one doesn't change
if (navigator.zoomedMin === navigator.otherHandlePos) {
fixedMin = navigator.fixedExtreme;
} else if (navigator.zoomedMax === navigator.otherHandlePos) {
fixedMax = navigator.fixedExtreme;
}
// Snap to right edge (#4076)
if (navigator.zoomedMax === navigator.size) {
fixedMax = navigator.getUnionExtremes().dataMax;
}
ext = xAxis.toFixedRange(
navigator.zoomedMin,
navigator.zoomedMax,
fixedMin,
fixedMax
);
 
if (defined(ext.min)) {
chart.xAxis[0].setExtremes(
Math.min(ext.min, ext.max),
Math.max(ext.min, ext.max),
true,
navigator.hasDragged ? false : null, // Run animation when clicking buttons, scrollbar track etc, but not when dragging handles or scrollbar
{
trigger: 'navigator',
triggerOp: 'navigator-drag',
DOMEvent: DOMEvent // #1838
}
);
}
}
 
if (e.DOMType !== 'mousemove') {
navigator.grabbedLeft = navigator.grabbedRight =
navigator.grabbedCenter = navigator.fixedWidth =
navigator.fixedExtreme = navigator.otherHandlePos =
navigator.hasDragged = navigator.dragOffset = null;
}
},
 
/**
* Removes the event handlers attached previously with addEvents.
*/
removeEvents: function() {
if (this.eventsToUnbind) {
each(this.eventsToUnbind, function(unbind) {
unbind();
});
this.eventsToUnbind = undefined;
}
this.removeBaseSeriesEvents();
},
 
/**
* Remove data events.
*/
removeBaseSeriesEvents: function() {
var baseSeries = this.baseSeries || [];
if (this.navigatorEnabled && baseSeries[0]) {
if (this.navigatorOptions.adaptToUpdatedData !== false) {
each(baseSeries, function(series) {
removeEvent(series, 'updatedData', this.updatedDataHandler);
}, this);
}
 
// We only listen for extremes-events on the first baseSeries
if (baseSeries[0].xAxis) {
removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);
}
}
},
 
/**
* Initiate the Navigator object
*/
init: function(chart) {
var chartOptions = chart.options,
navigatorOptions = chartOptions.navigator,
navigatorEnabled = navigatorOptions.enabled,
scrollbarOptions = chartOptions.scrollbar,
scrollbarEnabled = scrollbarOptions.enabled,
height = navigatorEnabled ? navigatorOptions.height : 0,
scrollbarHeight = scrollbarEnabled ? scrollbarOptions.height : 0;
 
this.handles = [];
this.shades = [];
 
this.chart = chart;
this.setBaseSeries();
 
this.height = height;
this.scrollbarHeight = scrollbarHeight;
this.scrollbarEnabled = scrollbarEnabled;
this.navigatorEnabled = navigatorEnabled;
this.navigatorOptions = navigatorOptions;
this.scrollbarOptions = scrollbarOptions;
this.outlineHeight = height + scrollbarHeight;
 
this.opposite = pick(navigatorOptions.opposite, !navigatorEnabled && chart.inverted); // #6262
 
var navigator = this,
baseSeries = navigator.baseSeries,
xAxisIndex = chart.xAxis.length,
yAxisIndex = chart.yAxis.length,
baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis || chart.xAxis[0];
 
// Make room for the navigator, can be placed around the chart:
chart.extraMargin = {
type: navigator.opposite ? 'plotTop' : 'marginBottom',
value: (navigatorEnabled || !chart.inverted ? navigator.outlineHeight : 0) + navigatorOptions.margin
};
if (chart.inverted) {
chart.extraMargin.type = navigator.opposite ? 'marginRight' : 'plotLeft';
}
chart.isDirtyBox = true;
 
if (navigator.navigatorEnabled) {
// an x axis is required for scrollbar also
navigator.xAxis = new Axis(chart, merge({
// inherit base xAxis' break and ordinal options
breaks: baseXaxis.options.breaks,
ordinal: baseXaxis.options.ordinal
}, navigatorOptions.xAxis, {
id: 'navigator-x-axis',
yAxis: 'navigator-y-axis',
isX: true,
type: 'datetime',
index: xAxisIndex,
offset: 0,
keepOrdinalPadding: true, // #2436
startOnTick: false,
endOnTick: false,
minPadding: 0,
maxPadding: 0,
zoomEnabled: false
}, chart.inverted ? {
offsets: [scrollbarHeight, 0, -scrollbarHeight, 0],
width: height
} : {
offsets: [0, -scrollbarHeight, 0, scrollbarHeight],
height: height
}));
 
navigator.yAxis = new Axis(chart, merge(navigatorOptions.yAxis, {
id: 'navigator-y-axis',
alignTicks: false,
offset: 0,
index: yAxisIndex,
zoomEnabled: false
}, chart.inverted ? {
width: height
} : {
height: height
}));
 
// If we have a base series, initialize the navigator series
if (baseSeries || navigatorOptions.series.data) {
navigator.updateNavigatorSeries();
 
// If not, set up an event to listen for added series
} else if (chart.series.length === 0) {
 
wrap(chart, 'redraw', function(proceed, animation) {
// We've got one, now add it as base and reset chart.redraw
if (chart.series.length > 0 && !navigator.series) {
navigator.setBaseSeries();
chart.redraw = proceed; // reset
}
proceed.call(chart, animation);
});
}
 
// Render items, so we can bind events to them:
navigator.renderElements();
// Add mouse events
navigator.addMouseEvents();
 
// in case of scrollbar only, fake an x axis to get translation
} else {
navigator.xAxis = {
translate: function(value, reverse) {
var axis = chart.xAxis[0],
ext = axis.getExtremes(),
scrollTrackWidth = axis.len - 2 * scrollbarHeight,
min = numExt('min', axis.options.min, ext.dataMin),
valueRange = numExt('max', axis.options.max, ext.dataMax) - min;
 
return reverse ?
// from pixel to value
(value * valueRange / scrollTrackWidth) + min :
// from value to pixel
scrollTrackWidth * (value - min) / valueRange;
},
toPixels: function(value) {
return this.translate(value);
},
toValue: function(value) {
return this.translate(value, true);
},
toFixedRange: Axis.prototype.toFixedRange,
fake: true
};
}
 
 
// Initialize the scrollbar
if (chart.options.scrollbar.enabled) {
chart.scrollbar = navigator.scrollbar = new Scrollbar(
chart.renderer,
merge(chart.options.scrollbar, {
margin: navigator.navigatorEnabled ? 0 : 10,
vertical: chart.inverted
}),
chart
);
addEvent(navigator.scrollbar, 'changed', function(e) {
var range = navigator.size,
to = range * this.to,
from = range * this.from;
 
navigator.hasDragged = navigator.scrollbar.hasDragged;
navigator.render(0, 0, from, to);
 
if (chart.options.scrollbar.liveRedraw || e.DOMType !== 'mousemove') {
setTimeout(function() {
navigator.onMouseUp(e);
});
}
});
}
 
// Add data events
navigator.addBaseSeriesEvents();
// Add redraw events
navigator.addChartEvents();
},
 
/**
* Get the union data extremes of the chart - the outer data extremes of the base
* X axis and the navigator axis.
* @param {boolean} returnFalseOnNoBaseSeries - as the param says.
*/
getUnionExtremes: function(returnFalseOnNoBaseSeries) {
var baseAxis = this.chart.xAxis[0],
navAxis = this.xAxis,
navAxisOptions = navAxis.options,
baseAxisOptions = baseAxis.options,
ret;
 
if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
ret = {
dataMin: pick( // #4053
navAxisOptions && navAxisOptions.min,
numExt(
'min',
baseAxisOptions.min,
baseAxis.dataMin,
navAxis.dataMin,
navAxis.min
)
),
dataMax: pick(
navAxisOptions && navAxisOptions.max,
numExt(
'max',
baseAxisOptions.max,
baseAxis.dataMax,
navAxis.dataMax,
navAxis.max
)
)
};
}
return ret;
},
 
/**
* Set the base series and update the navigator series from this. With a bit
* of modification we should be able to make this an API method to be called
* from the outside
* @param {Object} baseSeriesOptions - additional series options for a navigator
*/
setBaseSeries: function(baseSeriesOptions) {
var chart = this.chart,
baseSeries = this.baseSeries = [];
 
baseSeriesOptions = baseSeriesOptions || chart.options && chart.options.navigator.baseSeries || 0;
 
// Iterate through series and add the ones that should be shown in navigator.
each(chart.series || [], function(series, i) {
if (!series.options.isInternal && // Don't include existing nav series
(
series.options.showInNavigator ||
(
i === baseSeriesOptions ||
series.options.id === baseSeriesOptions
) &&
series.options.showInNavigator !== false
)
) {
baseSeries.push(series);
}
});
 
// When run after render, this.xAxis already exists
if (this.xAxis && !this.xAxis.fake) {
this.updateNavigatorSeries();
}
},
 
/*
* Update series in the navigator from baseSeries, adding new if does not
* exist.
*/
updateNavigatorSeries: function() {
var navigator = this,
chart = navigator.chart,
baseSeries = navigator.baseSeries,
baseOptions,
mergedNavSeriesOptions,
chartNavigatorSeriesOptions = navigator.navigatorOptions.series,
baseNavigatorOptions,
navSeriesMixin = {
enableMouseTracking: false,
index: null, // #6162
linkedTo: null, // #6734
group: 'nav', // for columns
padXAxis: false,
xAxis: 'navigator-x-axis',
yAxis: 'navigator-y-axis',
showInLegend: false,
stacking: false, // #4823
isInternal: true,
visible: true
},
// Remove navigator series that are no longer in the baseSeries
navigatorSeries = navigator.series = H.grep(
navigator.series || [],
function(navSeries) {
var base = navSeries.baseSeries;
if (H.inArray(base, baseSeries) < 0) { // Not in array
// If there is still a base series connected to this series,
// remove event handler and reference.
if (base) {
removeEvent(
base,
'updatedData',
navigator.updatedDataHandler
);
delete base.navigatorSeries;
}
// Kill the nav series
navSeries.destroy();
return false;
}
return true;
}
);
 
// Go through each base series and merge the options to create new series
if (baseSeries && baseSeries.length) {
each(baseSeries, function(base, i) {
var linkedNavSeries = base.navigatorSeries,
userNavOptions = !isArray(chartNavigatorSeriesOptions) ?
chartNavigatorSeriesOptions : {};
 
// Don't update if the series exists in nav and we have disabled
// adaptToUpdatedData.
if (
linkedNavSeries &&
navigator.navigatorOptions.adaptToUpdatedData === false
) {
return;
}
 
navSeriesMixin.name = 'Navigator ' + (i + 1);
 
baseOptions = base.options || {};
baseNavigatorOptions = baseOptions.navigatorOptions || {};
mergedNavSeriesOptions = merge(
baseOptions,
navSeriesMixin,
userNavOptions,
baseNavigatorOptions
);
 
// Merge data separately. Do a slice to avoid mutating the navigator options from base series (#4923).
var navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data;
navigator.hasNavigatorData = navigator.hasNavigatorData || !!navigatorSeriesData;
mergedNavSeriesOptions.data = navigatorSeriesData || baseOptions.data && baseOptions.data.slice(0);
 
// Update or add the series
if (linkedNavSeries) {
linkedNavSeries.update(mergedNavSeriesOptions);
} else {
base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);
base.navigatorSeries.baseSeries = base; // Store ref
navigatorSeries.push(base.navigatorSeries);
}
});
}
 
// If user has defined data (and no base series) or explicitly defined
// navigator.series as an array, we create these series on top of any
// base series.
if (
chartNavigatorSeriesOptions.data &&
!(baseSeries && baseSeries.length) ||
isArray(chartNavigatorSeriesOptions)
) {
navigator.hasNavigatorData = false;
// Allow navigator.series to be an array
chartNavigatorSeriesOptions = H.splat(chartNavigatorSeriesOptions);
each(chartNavigatorSeriesOptions, function(userSeriesOptions, i) {
mergedNavSeriesOptions = merge({
// Since we don't have a base series to pull color from,
// try to fake it by using color from series with same
// index. Otherwise pull from the colors array. We need
// an explicit color as otherwise updates will increment
// color counter and we'll get a new color for each
// update of the nav series.
color: chart.series[i] &&
!chart.series[i].options.isInternal &&
chart.series[i].color ||
chart.options.colors[i] ||
chart.options.colors[0]
},
userSeriesOptions,
navSeriesMixin
);
mergedNavSeriesOptions.data = userSeriesOptions.data;
if (mergedNavSeriesOptions.data) {
navigator.hasNavigatorData = true;
navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));
}
});
}
 
this.addBaseSeriesEvents();
},
 
/**
* Add data events.
* For example when main series is updated we need to recalculate extremes
*/
addBaseSeriesEvents: function() {
var navigator = this,
baseSeries = navigator.baseSeries || [];
 
// Bind modified extremes event to first base's xAxis only.
// In event of > 1 base-xAxes, the navigator will ignore those.
// Adding this multiple times to the same axis is no problem, as
// duplicates should be discarded by the browser.
if (baseSeries[0] && baseSeries[0].xAxis) {
addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);
}
 
each(baseSeries, function(base) {
// Link base series show/hide to navigator series visibility
addEvent(base, 'show', function() {
if (this.navigatorSeries) {
this.navigatorSeries.show();
}
});
addEvent(base, 'hide', function() {
if (this.navigatorSeries) {
this.navigatorSeries.hide();
}
});
 
// Respond to updated data in the base series, unless explicitily
// not adapting to data changes.
if (this.navigatorOptions.adaptToUpdatedData !== false) {
if (base.xAxis) {
addEvent(base, 'updatedData', this.updatedDataHandler);
}
}
 
// Handle series removal
addEvent(base, 'remove', function() {
if (this.navigatorSeries) {
erase(navigator.series, this.navigatorSeries);
this.navigatorSeries.remove(false);
delete this.navigatorSeries;
}
});
}, this);
},
 
/**
* Set the navigator x axis extremes to reflect the total. The navigator extremes
* should always be the extremes of the union of all series in the chart as
* well as the navigator series.
*/
modifyNavigatorAxisExtremes: function() {
var xAxis = this.xAxis,
unionExtremes;
 
if (xAxis.getExtremes) {
unionExtremes = this.getUnionExtremes(true);
if (unionExtremes && (unionExtremes.dataMin !== xAxis.min || unionExtremes.dataMax !== xAxis.max)) {
xAxis.min = unionExtremes.dataMin;
xAxis.max = unionExtremes.dataMax;
}
}
},
 
/**
* Hook to modify the base axis extremes with information from the Navigator
*/
modifyBaseAxisExtremes: function() {
var baseXAxis = this,
navigator = baseXAxis.chart.navigator,
baseExtremes = baseXAxis.getExtremes(),
baseMin = baseExtremes.min,
baseMax = baseExtremes.max,
baseDataMin = baseExtremes.dataMin,
baseDataMax = baseExtremes.dataMax,
range = baseMax - baseMin,
stickToMin = navigator.stickToMin,
stickToMax = navigator.stickToMax,
newMax,
newMin,
navigatorSeries = navigator.series && navigator.series[0],
hasSetExtremes = !!baseXAxis.setExtremes,
 
// When the extremes have been set by range selector button, don't stick to min or max.
// The range selector buttons will handle the extremes. (#5489)
unmutable = baseXAxis.eventArgs && baseXAxis.eventArgs.trigger === 'rangeSelectorButton';
 
if (!unmutable) {
 
// If the zoomed range is already at the min, move it to the right as new data
// comes in
if (stickToMin) {
newMin = baseDataMin;
newMax = newMin + range;
}
 
// If the zoomed range is already at the max, move it to the right as new data
// comes in
if (stickToMax) {
newMax = baseDataMax;
if (!stickToMin) { // if stickToMin is true, the new min value is set above
newMin = Math.max(
newMax - range,
navigatorSeries && navigatorSeries.xData ?
navigatorSeries.xData[0] : -Number.MAX_VALUE
);
}
}
 
// Update the extremes
if (hasSetExtremes && (stickToMin || stickToMax)) {
if (isNumber(newMin)) {
baseXAxis.min = baseXAxis.userMin = newMin;
baseXAxis.max = baseXAxis.userMax = newMax;
}
}
}
 
// Reset
navigator.stickToMin = navigator.stickToMax = null;
},
 
/**
* Handler for updated data on the base series. When data is modified, the navigator series
* must reflect it. This is called from the Chart.redraw function before axis and series
* extremes are computed.
*/
updatedDataHandler: function() {
var navigator = this.chart.navigator,
baseSeries = this,
navigatorSeries = this.navigatorSeries;
 
// If the scrollbar is scrolled all the way to the right, keep right as new data
// comes in.
navigator.stickToMax = Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
 
// Detect whether the zoomed area should stick to the minimum or maximum. If the current
// axis minimum falls outside the new updated dataset, we must adjust.
navigator.stickToMin = isNumber(baseSeries.xAxis.min) &&
(baseSeries.xAxis.min <= baseSeries.xData[0]) &&
(!this.chart.fixedRange || !navigator.stickToMax);
 
// Set the navigator series data to the new data of the base series
if (navigatorSeries && !navigator.hasNavigatorData) {
navigatorSeries.options.pointStart = baseSeries.xData[0];
navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414
}
},
 
/**
* Add chart events, like redrawing navigator, when chart requires that.
*/
addChartEvents: function() {
addEvent(this.chart, 'redraw', function() {
// Move the scrollbar after redraw, like after data updata even if axes don't redraw
var navigator = this.navigator,
xAxis = navigator && (
navigator.baseSeries &&
navigator.baseSeries[0] &&
navigator.baseSeries[0].xAxis ||
navigator.scrollbar && this.xAxis[0]
); // #5709
 
if (xAxis) {
navigator.render(xAxis.min, xAxis.max);
}
});
},
 
/**
* Destroys allocated elements.
*/
destroy: function() {
 
// Disconnect events added in addEvents
this.removeEvents();
 
if (this.xAxis) {
erase(this.chart.xAxis, this.xAxis);
erase(this.chart.axes, this.xAxis);
}
if (this.yAxis) {
erase(this.chart.yAxis, this.yAxis);
erase(this.chart.axes, this.yAxis);
}
// Destroy series
each(this.series || [], function(s) {
if (s.destroy) {
s.destroy();
}
});
 
// Destroy properties
each([
'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',
'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',
'rendered'
], function(prop) {
if (this[prop] && this[prop].destroy) {
this[prop].destroy();
}
this[prop] = null;
}, this);
 
// Destroy elements in collection
each([this.handles], function(coll) {
destroyObjectProperties(coll);
}, this);
}
};
 
H.Navigator = Navigator;
 
/**
* For Stock charts, override selection zooming with some special features because
* X axis zooming is already allowed by the Navigator and Range selector.
*/
wrap(Axis.prototype, 'zoom', function(proceed, newMin, newMax) {
var chart = this.chart,
chartOptions = chart.options,
zoomType = chartOptions.chart.zoomType,
previousZoom,
navigator = chartOptions.navigator,
rangeSelector = chartOptions.rangeSelector,
ret;
 
if (this.isXAxis && ((navigator && navigator.enabled) ||
(rangeSelector && rangeSelector.enabled))) {
 
// For x only zooming, fool the chart.zoom method not to create the zoom button
// because the property already exists
if (zoomType === 'x') {
chart.resetZoomButton = 'blocked';
 
// For y only zooming, ignore the X axis completely
} else if (zoomType === 'y') {
ret = false;
 
// For xy zooming, record the state of the zoom before zoom selection, then when
// the reset button is pressed, revert to this state
} else if (zoomType === 'xy') {
previousZoom = this.previousZoom;
if (defined(newMin)) {
this.previousZoom = [this.min, this.max];
} else if (previousZoom) {
newMin = previousZoom[0];
newMax = previousZoom[1];
delete this.previousZoom;
}
}
 
}
return ret !== undefined ? ret : proceed.call(this, newMin, newMax);
});
 
// Initialize navigator for stock charts
wrap(Chart.prototype, 'init', function(proceed, options, callback) {
 
addEvent(this, 'beforeRender', function() {
var options = this.options;
if (options.navigator.enabled || options.scrollbar.enabled) {
this.scroller = this.navigator = new Navigator(this);
}
});
 
proceed.call(this, options, callback);
 
});
 
/**
* For stock charts, extend the Chart.setChartSize method so that we can set the final top position
* of the navigator once the height of the chart, including the legend, is determined. #367.
* We can't use Chart.getMargins, because labels offsets are not calculated yet.
*/
wrap(Chart.prototype, 'setChartSize', function(proceed) {
 
var legend = this.legend,
navigator = this.navigator,
scrollbarHeight,
legendOptions,
xAxis,
yAxis;
 
proceed.apply(this, [].slice.call(arguments, 1));
 
if (navigator) {
legendOptions = legend.options;
xAxis = navigator.xAxis;
yAxis = navigator.yAxis;
scrollbarHeight = navigator.scrollbarHeight;
 
// Compute the top position
if (this.inverted) {
navigator.left = navigator.opposite ?
this.chartWidth - scrollbarHeight - navigator.height :
this.spacing[3] + scrollbarHeight;
navigator.top = this.plotTop + scrollbarHeight;
} else {
navigator.left = this.plotLeft + scrollbarHeight;
navigator.top = navigator.navigatorOptions.top ||
this.chartHeight - navigator.height - scrollbarHeight - this.spacing[2] -
(legendOptions.verticalAlign === 'bottom' && legendOptions.enabled && !legendOptions.floating ?
legend.legendHeight + pick(legendOptions.margin, 10) : 0);
}
 
if (xAxis && yAxis) { // false if navigator is disabled (#904)
 
if (this.inverted) {
xAxis.options.left = yAxis.options.left = navigator.left;
} else {
xAxis.options.top = yAxis.options.top = navigator.top;
}
 
xAxis.setAxisSize();
yAxis.setAxisSize();
}
}
});
 
// Pick up badly formatted point options to addPoint
wrap(Series.prototype, 'addPoint', function(proceed, options, redraw, shift, animation) {
var turboThreshold = this.options.turboThreshold;
if (turboThreshold && this.xData.length > turboThreshold && isObject(options, true) && this.chart.navigator) {
error(20, true);
}
proceed.call(this, options, redraw, shift, animation);
});
 
// Handle adding new series
wrap(Chart.prototype, 'addSeries', function(proceed, options, redraw, animation) {
var series = proceed.call(this, options, false, animation);
if (this.navigator) {
this.navigator.setBaseSeries(); // Recompute which series should be shown in navigator, and add them
}
if (pick(redraw, true)) {
this.redraw();
}
return series;
});
 
// Handle updating series
wrap(Series.prototype, 'update', function(proceed, newOptions, redraw) {
proceed.call(this, newOptions, false);
if (this.chart.navigator && !this.options.isInternal) {
this.chart.navigator.setBaseSeries();
}
if (pick(redraw, true)) {
this.chart.redraw();
}
});
 
Chart.prototype.callbacks.push(function(chart) {
var extremes,
navigator = chart.navigator;
 
// Initiate the navigator
if (navigator) {
extremes = chart.xAxis[0].getExtremes();
navigator.render(extremes.min, extremes.max);
}
});
 
/* ****************************************************************************
* End Navigator code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var addEvent = H.addEvent,
Axis = H.Axis,
Chart = H.Chart,
css = H.css,
createElement = H.createElement,
dateFormat = H.dateFormat,
defaultOptions = H.defaultOptions,
useUTC = defaultOptions.global.useUTC,
defined = H.defined,
destroyObjectProperties = H.destroyObjectProperties,
discardElement = H.discardElement,
each = H.each,
extend = H.extend,
fireEvent = H.fireEvent,
HCDate = H.Date,
isNumber = H.isNumber,
merge = H.merge,
pick = H.pick,
pInt = H.pInt,
splat = H.splat,
wrap = H.wrap;
 
/* ****************************************************************************
* Start Range Selector code *
*****************************************************************************/
extend(defaultOptions, {
 
/**
* The range selector is a tool for selecting ranges to display within
* the chart. It provides buttons to select preconfigured ranges in
* the chart, like 1 day, 1 week, 1 month etc. It also provides input
* boxes where min and max dates can be manually input.
*
* @optionparent rangeSelector
* @product highstock
*/
rangeSelector: {
// allButtonsEnabled: false,
// enabled: true,
// buttons: {Object}
// buttonSpacing: 0,
 
/**
* A collection of attributes for the buttons. The object takes SVG
* attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,
* a collection of CSS properties for the text.
*
* The object can also be extended with states, so you can set presentational
* options for `hover`, `select` or `disabled` button states.
*
* CSS styles for the text label.
*
* In [styled mode](http://www.highcharts.com/docs/chart-design-and-
* style/style-by-css), the buttons are styled by the `.highcharts-
* range-selector-buttons .highcharts-button` rule with its different
* states.
*
* @type {Object}
* @sample {highstock} stock/rangeselector/styling/ Styling the buttons and inputs
* @product highstock
*/
buttonTheme: {
 
/**
*/
'stroke-width': 0,
 
/**
*/
width: 28,
 
/**
*/
height: 18,
 
/**
*/
padding: 2,
 
/**
*/
zIndex: 7 // #484, #852
},
 
/**
* The height of the range selector, used to reserve space for buttons
* and input.
*
* @type {Number}
* @default 35
* @since 2.1.9
* @product highstock
*/
height: 35, // reserved space for buttons and input
 
/**
* Positioning for the input boxes. Allowed properties are `align`,
* `verticalAlign`, `x` and `y`.
*
* @type {Object}
* @default { align: "right" }
* @since 1.2.5
* @product highstock
*/
inputPosition: {
 
/**
*/
align: 'right'
},
// inputDateFormat: '%b %e, %Y',
// inputEditDateFormat: '%Y-%m-%d',
// inputEnabled: true,
// selected: undefined
 
}
});
 
defaultOptions.lang = merge(
defaultOptions.lang,
/**
* Language object. The language object is global and it can't be set
* on each chart initiation. Instead, use `Highcharts.setOptions` to
* set it before any chart is initialized.
*
* <pre>Highcharts.setOptions({
* lang: {
* months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
* 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
*
* weekdays: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi',
* 'Samedi']
* }
* });</pre>
*
* @optionparent lang
* @product highstock
*/
{
 
/**
* The text for the label for the range selector buttons.
*
* @type {String}
* @default Zoom
* @product highstock
*/
rangeSelectorZoom: 'Zoom',
 
/**
* The text for the label for the "from" input box in the range
* selector.
*
* @type {String}
* @default From
* @product highstock
*/
rangeSelectorFrom: 'From',
 
/**
* The text for the label for the "to" input box in the range selector.
*
* @type {String}
* @default To
* @product highstock
*/
rangeSelectorTo: 'To'
}
);
 
/**
* The range selector.
* @class
* @param {Object} chart
*/
function RangeSelector(chart) {
 
// Run RangeSelector
this.init(chart);
}
 
RangeSelector.prototype = {
/**
* The method to run when one of the buttons in the range selectors is clicked
* @param {Number} i The index of the button
* @param {Object} rangeOptions
* @param {Boolean} redraw
*/
clickButton: function(i, redraw) {
var rangeSelector = this,
chart = rangeSelector.chart,
rangeOptions = rangeSelector.buttonOptions[i],
baseAxis = chart.xAxis[0],
unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {},
dataMin = unionExtremes.dataMin,
dataMax = unionExtremes.dataMax,
newMin,
newMax = baseAxis && Math.round(Math.min(baseAxis.max, pick(dataMax, baseAxis.max))), // #1568
type = rangeOptions.type,
baseXAxisOptions,
range = rangeOptions._range,
rangeMin,
minSetting,
rangeSetting,
ctx,
ytdExtremes,
dataGrouping = rangeOptions.dataGrouping;
 
if (dataMin === null || dataMax === null) { // chart has no data, base series is removed
return;
}
 
// Set the fixed range before range is altered
chart.fixedRange = range;
 
// Apply dataGrouping associated to button
if (dataGrouping) {
this.forcedDataGrouping = true;
Axis.prototype.setDataGrouping.call(baseAxis || {
chart: this.chart
}, dataGrouping, false);
}
 
// Apply range
if (type === 'month' || type === 'year') {
if (!baseAxis) {
// This is set to the user options and picked up later when the axis is instantiated
// so that we know the min and max.
range = rangeOptions;
} else {
ctx = {
range: rangeOptions,
max: newMax,
dataMin: dataMin,
dataMax: dataMax
};
newMin = baseAxis.minFromRange.call(ctx);
if (isNumber(ctx.newMax)) {
newMax = ctx.newMax;
}
}
 
// Fixed times like minutes, hours, days
} else if (range) {
newMin = Math.max(newMax - range, dataMin);
newMax = Math.min(newMin + range, dataMax);
 
} else if (type === 'ytd') {
 
// On user clicks on the buttons, or a delayed action running from the beforeRender
// event (below), the baseAxis is defined.
if (baseAxis) {
// When "ytd" is the pre-selected button for the initial view, its calculation
// is delayed and rerun in the beforeRender event (below). When the series
// are initialized, but before the chart is rendered, we have access to the xData
// array (#942).
if (dataMax === undefined) {
dataMin = Number.MAX_VALUE;
dataMax = Number.MIN_VALUE;
each(chart.series, function(series) {
var xData = series.xData; // reassign it to the last item
dataMin = Math.min(xData[0], dataMin);
dataMax = Math.max(xData[xData.length - 1], dataMax);
});
redraw = false;
}
ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, useUTC);
newMin = rangeMin = ytdExtremes.min;
newMax = ytdExtremes.max;
 
// "ytd" is pre-selected. We don't yet have access to processed point and extremes data
// (things like pointStart and pointInterval are missing), so we delay the process (#942)
} else {
addEvent(chart, 'beforeRender', function() {
rangeSelector.clickButton(i);
});
return;
}
} else if (type === 'all' && baseAxis) {
newMin = dataMin;
newMax = dataMax;
}
rangeSelector.setSelected(i);
 
// Update the chart
if (!baseAxis) {
// Axis not yet instanciated. Temporarily set min and range
// options and remove them on chart load (#4317).
baseXAxisOptions = splat(chart.options.xAxis)[0];
rangeSetting = baseXAxisOptions.range;
baseXAxisOptions.range = range;
minSetting = baseXAxisOptions.min;
baseXAxisOptions.min = rangeMin;
addEvent(chart, 'load', function resetMinAndRange() {
baseXAxisOptions.range = rangeSetting;
baseXAxisOptions.min = minSetting;
});
} else {
// Existing axis object. Set extremes after render time.
baseAxis.setExtremes(
newMin,
newMax,
pick(redraw, 1),
null, // auto animation
{
trigger: 'rangeSelectorButton',
rangeSelectorButton: rangeOptions
}
);
}
},
 
/**
* Set the selected option. This method only sets the internal flag, it doesn't
* update the buttons or the actual zoomed range.
*/
setSelected: function(selected) {
this.selected = this.options.selected = selected;
},
 
/**
* The default buttons for pre-selecting time frames
*/
defaultButtons: [{
type: 'month',
count: 1,
text: '1m'
}, {
type: 'month',
count: 3,
text: '3m'
}, {
type: 'month',
count: 6,
text: '6m'
}, {
type: 'ytd',
text: 'YTD'
}, {
type: 'year',
count: 1,
text: '1y'
}, {
type: 'all',
text: 'All'
}],
 
/**
* Initialize the range selector
*/
init: function(chart) {
var rangeSelector = this,
options = chart.options.rangeSelector,
buttonOptions = options.buttons || [].concat(rangeSelector.defaultButtons),
selectedOption = options.selected,
blurInputs = function() {
var minInput = rangeSelector.minInput,
maxInput = rangeSelector.maxInput;
if (minInput && minInput.blur) { //#3274 in some case blur is not defined
fireEvent(minInput, 'blur'); //#3274
}
if (maxInput && maxInput.blur) { //#3274 in some case blur is not defined
fireEvent(maxInput, 'blur'); //#3274
}
};
 
rangeSelector.chart = chart;
rangeSelector.options = options;
rangeSelector.buttons = [];
 
chart.extraTopMargin = options.height;
rangeSelector.buttonOptions = buttonOptions;
 
this.unMouseDown = addEvent(chart.container, 'mousedown', blurInputs);
this.unResize = addEvent(chart, 'resize', blurInputs);
 
// Extend the buttonOptions with actual range
each(buttonOptions, rangeSelector.computeButtonRange);
 
// zoomed range based on a pre-selected button index
if (selectedOption !== undefined && buttonOptions[selectedOption]) {
this.clickButton(selectedOption, false);
}
 
 
addEvent(chart, 'load', function() {
// If a data grouping is applied to the current button, release it when extremes change
addEvent(chart.xAxis[0], 'setExtremes', function(e) {
if (this.max - this.min !== chart.fixedRange && e.trigger !== 'rangeSelectorButton' &&
e.trigger !== 'updatedData' && rangeSelector.forcedDataGrouping) {
this.setDataGrouping(false, false);
}
});
});
},
 
/**
* Dynamically update the range selector buttons after a new range has been set
*/
updateButtonStates: function() {
var rangeSelector = this,
chart = this.chart,
baseAxis = chart.xAxis[0],
actualRange = Math.round(baseAxis.max - baseAxis.min),
hasNoData = !baseAxis.hasVisibleSeries,
day = 24 * 36e5, // A single day in milliseconds
unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis,
dataMin = unionExtremes.dataMin,
dataMax = unionExtremes.dataMax,
ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, useUTC),
ytdMin = ytdExtremes.min,
ytdMax = ytdExtremes.max,
selected = rangeSelector.selected,
selectedExists = isNumber(selected),
allButtonsEnabled = rangeSelector.options.allButtonsEnabled,
buttons = rangeSelector.buttons;
 
each(rangeSelector.buttonOptions, function(rangeOptions, i) {
var range = rangeOptions._range,
type = rangeOptions.type,
count = rangeOptions.count || 1,
button = buttons[i],
state = 0,
disable,
select,
isSelected = i === selected,
// Disable buttons where the range exceeds what is allowed in the current view
isTooGreatRange = range > dataMax - dataMin,
// Disable buttons where the range is smaller than the minimum range
isTooSmallRange = range < baseAxis.minRange,
// Do not select the YTD button if not explicitly told so
isYTDButNotSelected = false,
// Disable the All button if we're already showing all
isAllButAlreadyShowingAll = false,
isSameRange = range === actualRange;
// Months and years have a variable range so we check the extremes
if (
(type === 'month' || type === 'year') &&
(actualRange >= {
month: 28,
year: 365
}[type] * day * count) &&
(actualRange <= {
month: 31,
year: 366
}[type] * day * count)
) {
isSameRange = true;
} else if (type === 'ytd') {
isSameRange = (ytdMax - ytdMin) === actualRange;
isYTDButNotSelected = !isSelected;
} else if (type === 'all') {
isSameRange = baseAxis.max - baseAxis.min >= dataMax - dataMin;
isAllButAlreadyShowingAll = !isSelected && selectedExists && isSameRange;
}
// The new zoom area happens to match the range for a button - mark it selected.
// This happens when scrolling across an ordinal gap. It can be seen in the intraday
// demos when selecting 1h and scroll across the night gap.
disable = (!allButtonsEnabled &&
(
isTooGreatRange ||
isTooSmallRange ||
isAllButAlreadyShowingAll ||
hasNoData
)
);
select = (
(isSelected && isSameRange) ||
(isSameRange && !selectedExists && !isYTDButNotSelected)
);
 
if (disable) {
state = 3;
} else if (select) {
selectedExists = true; // Only one button can be selected
state = 2;
}
 
// If state has changed, update the button
if (button.state !== state) {
button.setState(state);
}
});
},
 
/**
* Compute and cache the range for an individual button
*/
computeButtonRange: function(rangeOptions) {
var type = rangeOptions.type,
count = rangeOptions.count || 1,
 
// these time intervals have a fixed number of milliseconds, as opposed
// to month, ytd and year
fixedTimes = {
millisecond: 1,
second: 1000,
minute: 60 * 1000,
hour: 3600 * 1000,
day: 24 * 3600 * 1000,
week: 7 * 24 * 3600 * 1000
};
 
// Store the range on the button object
if (fixedTimes[type]) {
rangeOptions._range = fixedTimes[type] * count;
} else if (type === 'month' || type === 'year') {
rangeOptions._range = {
month: 30,
year: 365
}[type] * 24 * 36e5 * count;
}
},
 
/**
* Set the internal and displayed value of a HTML input for the dates
* @param {String} name
* @param {Number} time
*/
setInputValue: function(name, time) {
var options = this.chart.options.rangeSelector,
input = this[name + 'Input'];
 
if (defined(time)) {
input.previousValue = input.HCTime;
input.HCTime = time;
}
 
input.value = dateFormat(
options.inputEditDateFormat || '%Y-%m-%d',
input.HCTime
);
this[name + 'DateBox'].attr({
text: dateFormat(options.inputDateFormat || '%b %e, %Y', input.HCTime)
});
},
 
showInput: function(name) {
var inputGroup = this.inputGroup,
dateBox = this[name + 'DateBox'];
 
css(this[name + 'Input'], {
left: (inputGroup.translateX + dateBox.x) + 'px',
top: inputGroup.translateY + 'px',
width: (dateBox.width - 2) + 'px',
height: (dateBox.height - 2) + 'px',
border: '2px solid silver'
});
},
 
hideInput: function(name) {
css(this[name + 'Input'], {
border: 0,
width: '1px',
height: '1px'
});
this.setInputValue(name);
},
 
/**
* Draw either the 'from' or the 'to' HTML input box of the range selector
* @param {Object} name
*/
drawInput: function(name) {
var rangeSelector = this,
chart = rangeSelector.chart,
chartStyle = chart.renderer.style || {},
renderer = chart.renderer,
options = chart.options.rangeSelector,
lang = defaultOptions.lang,
div = rangeSelector.div,
isMin = name === 'min',
input,
label,
dateBox,
inputGroup = this.inputGroup;
 
function updateExtremes() {
var inputValue = input.value,
value = (options.inputDateParser || Date.parse)(inputValue),
chartAxis = chart.xAxis[0],
dataAxis = chart.scroller && chart.scroller.xAxis ? chart.scroller.xAxis : chartAxis,
dataMin = dataAxis.dataMin,
dataMax = dataAxis.dataMax;
if (value !== input.previousValue) {
input.previousValue = value;
// If the value isn't parsed directly to a value by the browser's Date.parse method,
// like YYYY-MM-DD in IE, try parsing it a different way
if (!isNumber(value)) {
value = inputValue.split('-');
value = Date.UTC(pInt(value[0]), pInt(value[1]) - 1, pInt(value[2]));
}
 
if (isNumber(value)) {
 
// Correct for timezone offset (#433)
if (!useUTC) {
value = value + new Date().getTimezoneOffset() * 60 * 1000;
}
 
// Validate the extremes. If it goes beyound the data min or max, use the
// actual data extreme (#2438).
if (isMin) {
if (value > rangeSelector.maxInput.HCTime) {
value = undefined;
} else if (value < dataMin) {
value = dataMin;
}
} else {
if (value < rangeSelector.minInput.HCTime) {
value = undefined;
} else if (value > dataMax) {
value = dataMax;
}
}
 
// Set the extremes
if (value !== undefined) {
chartAxis.setExtremes(
isMin ? value : chartAxis.min,
isMin ? chartAxis.max : value,
undefined,
undefined, {
trigger: 'rangeSelectorInput'
}
);
}
}
}
}
 
// Create the text label
this[name + 'Label'] = label = renderer.label(lang[isMin ? 'rangeSelectorFrom' : 'rangeSelectorTo'], this.inputGroup.offset)
.addClass('highcharts-range-label')
.attr({
padding: 2
})
.add(inputGroup);
inputGroup.offset += label.width + 5;
 
// Create an SVG label that shows updated date ranges and and records click events that
// bring in the HTML input.
this[name + 'DateBox'] = dateBox = renderer.label('', inputGroup.offset)
.addClass('highcharts-range-input')
.attr({
padding: 2,
width: options.inputBoxWidth || 90,
height: options.inputBoxHeight || 17,
stroke: options.inputBoxBorderColor || '#cccccc',
'stroke-width': 1,
'text-align': 'center'
})
.on('click', function() {
rangeSelector.showInput(name); // If it is already focused, the onfocus event doesn't fire (#3713)
rangeSelector[name + 'Input'].focus();
})
.add(inputGroup);
inputGroup.offset += dateBox.width + (isMin ? 10 : 0);
 
 
// Create the HTML input element. This is rendered as 1x1 pixel then set to the right size
// when focused.
this[name + 'Input'] = input = createElement('input', {
name: name,
className: 'highcharts-range-selector',
type: 'text'
}, {
top: chart.plotTop + 'px' // prevent jump on focus in Firefox
}, div);
 
 
 
// Blow up the input box
input.onfocus = function() {
rangeSelector.showInput(name);
};
// Hide away the input box
input.onblur = function() {
rangeSelector.hideInput(name);
};
 
// handle changes in the input boxes
input.onchange = updateExtremes;
 
input.onkeypress = function(event) {
// IE does not fire onchange on enter
if (event.keyCode === 13) {
updateExtremes();
}
};
},
 
/**
* Get the position of the range selector buttons and inputs. This can be overridden from outside for custom positioning.
*/
getPosition: function() {
var chart = this.chart,
options = chart.options.rangeSelector,
buttonTop = pick((options.buttonPosition || {}).y, chart.plotTop - chart.axisOffset[0] - options.height);
 
return {
buttonTop: buttonTop,
inputTop: buttonTop - 10
};
},
/**
* Get the extremes of YTD.
* Will choose dataMax if its value is lower than the current timestamp.
* Will choose dataMin if its value is higher than the timestamp for
* the start of current year.
* @param {number} dataMax
* @param {number} dataMin
* @return {object} Returns min and max for the YTD
*/
getYTDExtremes: function(dataMax, dataMin, useUTC) {
var min,
now = new HCDate(dataMax),
year = now[HCDate.hcGetFullYear](),
startOfYear = useUTC ? HCDate.UTC(year, 0, 1) : +new HCDate(year, 0, 1); // eslint-disable-line new-cap
min = Math.max(dataMin || 0, startOfYear);
now = now.getTime();
return {
max: Math.min(dataMax || now, now),
min: min
};
},
 
/**
* Render the range selector including the buttons and the inputs. The first time render
* is called, the elements are created and positioned. On subsequent calls, they are
* moved and updated.
* @param {Number} min X axis minimum
* @param {Number} max X axis maximum
*/
render: function(min, max) {
 
var rangeSelector = this,
chart = rangeSelector.chart,
renderer = chart.renderer,
container = chart.container,
chartOptions = chart.options,
navButtonOptions = chartOptions.exporting && chartOptions.exporting.enabled !== false &&
chartOptions.navigation && chartOptions.navigation.buttonOptions,
options = chartOptions.rangeSelector,
buttons = rangeSelector.buttons,
lang = defaultOptions.lang,
div = rangeSelector.div,
inputGroup = rangeSelector.inputGroup,
buttonTheme = options.buttonTheme,
buttonPosition = options.buttonPosition || {},
inputEnabled = options.inputEnabled,
states = buttonTheme && buttonTheme.states,
plotLeft = chart.plotLeft,
buttonLeft,
pos = this.getPosition(),
buttonGroup = rangeSelector.group,
buttonBBox,
rendered = rangeSelector.rendered;
 
if (options.enabled === false) {
return;
}
 
// create the elements
if (!rendered) {
 
rangeSelector.group = buttonGroup = renderer.g('range-selector-buttons').add();
 
rangeSelector.zoomText = renderer.text(lang.rangeSelectorZoom, pick(buttonPosition.x, plotLeft), 15)
.css(options.labelStyle)
.add(buttonGroup);
 
// button starting position
buttonLeft = pick(buttonPosition.x, plotLeft) + rangeSelector.zoomText.getBBox().width + 5;
 
each(rangeSelector.buttonOptions, function(rangeOptions, i) {
buttons[i] = renderer.button(
rangeOptions.text,
buttonLeft,
0,
function() {
rangeSelector.clickButton(i);
rangeSelector.isActive = true;
},
buttonTheme,
states && states.hover,
states && states.select,
states && states.disabled
)
.attr({
'text-align': 'center'
})
.add(buttonGroup);
 
// increase button position for the next button
buttonLeft += buttons[i].width + pick(options.buttonSpacing, 5);
});
 
// first create a wrapper outside the container in order to make
// the inputs work and make export correct
if (inputEnabled !== false) {
rangeSelector.div = div = createElement('div', null, {
position: 'relative',
height: 0,
zIndex: 1 // above container
});
 
container.parentNode.insertBefore(div, container);
 
// Create the group to keep the inputs
rangeSelector.inputGroup = inputGroup = renderer.g('input-group')
.add();
inputGroup.offset = 0;
 
rangeSelector.drawInput('min');
rangeSelector.drawInput('max');
}
}
rangeSelector.updateButtonStates();
 
// Set or update the group position
buttonGroup[rendered ? 'animate' : 'attr']({
translateY: pos.buttonTop
});
 
if (inputEnabled !== false) {
 
// Update the alignment to the updated spacing box
inputGroup.align(extend({
y: pos.inputTop,
width: inputGroup.offset,
// Detect collision with the exporting buttons
x: navButtonOptions && (pos.inputTop < (navButtonOptions.y || 0) + navButtonOptions.height - chart.spacing[0]) ?
-40 : 0
}, options.inputPosition), true, chart.spacingBox);
 
// Hide if overlapping - inputEnabled is null or undefined
if (!defined(inputEnabled)) {
buttonBBox = buttonGroup.getBBox();
inputGroup[inputGroup.alignAttr.translateX < buttonBBox.x + buttonBBox.width + 10 ? 'hide' : 'show']();
}
 
// Set or reset the input values
rangeSelector.setInputValue('min', min);
rangeSelector.setInputValue('max', max);
}
 
rangeSelector.rendered = true;
},
 
/**
* Update the range selector with new options
*/
update: function(options) {
var chart = this.chart;
merge(true, chart.options.rangeSelector, options);
this.destroy();
this.init(chart);
},
 
/**
* Destroys allocated elements.
*/
destroy: function() {
var rSelector = this,
minInput = rSelector.minInput,
maxInput = rSelector.maxInput;
 
rSelector.unMouseDown();
rSelector.unResize();
 
// Destroy elements in collections
destroyObjectProperties(rSelector.buttons);
 
// Clear input element events
if (minInput) {
minInput.onfocus = minInput.onblur = minInput.onchange = null;
}
if (maxInput) {
maxInput.onfocus = maxInput.onblur = maxInput.onchange = null;
}
 
// Destroy HTML and SVG elements
H.objectEach(rSelector, function(val, key) {
if (val && key !== 'chart') {
if (val.destroy) { // SVGElement
val.destroy();
} else if (val.nodeType) { // HTML element
discardElement(this[key]);
}
}
if (val !== RangeSelector.prototype[key]) {
rSelector[key] = null;
}
}, this);
}
};
 
/**
* Add logic to normalize the zoomed range in order to preserve the pressed state of range selector buttons
*/
Axis.prototype.toFixedRange = function(pxMin, pxMax, fixedMin, fixedMax) {
var fixedRange = this.chart && this.chart.fixedRange,
newMin = pick(fixedMin, this.translate(pxMin, true, !this.horiz)),
newMax = pick(fixedMax, this.translate(pxMax, true, !this.horiz)),
changeRatio = fixedRange && (newMax - newMin) / fixedRange;
 
// If the difference between the fixed range and the actual requested range is
// too great, the user is dragging across an ordinal gap, and we need to release
// the range selector button.
if (changeRatio > 0.7 && changeRatio < 1.3) {
if (fixedMax) {
newMin = newMax - fixedRange;
} else {
newMax = newMin + fixedRange;
}
}
if (!isNumber(newMin)) { // #1195
newMin = newMax = undefined;
}
 
return {
min: newMin,
max: newMax
};
};
 
/**
* Get the axis min value based on the range option and the current max. For
* stock charts this is extended via the {@link RangeSelector} so that if the
* selected range is a multiple of months or years, it is compensated for
* various month lengths.
*
* @return {number} The new minimum value.
*/
Axis.prototype.minFromRange = function() {
var rangeOptions = this.range,
type = rangeOptions.type,
timeName = {
month: 'Month',
year: 'FullYear'
}[type],
min,
max = this.max,
dataMin,
range,
// Get the true range from a start date
getTrueRange = function(base, count) {
var date = new Date(base),
basePeriod = date['get' + timeName]();
 
date['set' + timeName](basePeriod + count);
 
if (basePeriod === date['get' + timeName]()) {
date.setDate(0); // #6537
}
 
return date.getTime() - base;
};
 
if (isNumber(rangeOptions)) {
min = max - rangeOptions;
range = rangeOptions;
} else {
min = max + getTrueRange(max, -rangeOptions.count);
 
// Let the fixedRange reflect initial settings (#5930)
if (this.chart) {
this.chart.fixedRange = max - min;
}
}
 
dataMin = pick(this.dataMin, Number.MIN_VALUE);
if (!isNumber(min)) {
min = dataMin;
}
if (min <= dataMin) {
min = dataMin;
if (range === undefined) { // #4501
range = getTrueRange(min, rangeOptions.count);
}
this.newMax = Math.min(min + range, this.dataMax);
}
if (!isNumber(max)) {
min = undefined;
}
return min;
 
};
 
// Initialize scroller for stock charts
wrap(Chart.prototype, 'init', function(proceed, options, callback) {
 
addEvent(this, 'init', function() {
if (this.options.rangeSelector.enabled) {
this.rangeSelector = new RangeSelector(this);
}
});
 
proceed.call(this, options, callback);
 
});
 
Chart.prototype.callbacks.push(function(chart) {
var extremes,
rangeSelector = chart.rangeSelector,
unbindRender,
unbindSetExtremes;
 
function renderRangeSelector() {
extremes = chart.xAxis[0].getExtremes();
if (isNumber(extremes.min)) {
rangeSelector.render(extremes.min, extremes.max);
}
}
 
if (rangeSelector) {
// redraw the scroller on setExtremes
unbindSetExtremes = addEvent(
chart.xAxis[0],
'afterSetExtremes',
function(e) {
rangeSelector.render(e.min, e.max);
}
);
 
// redraw the scroller chart resize
unbindRender = addEvent(chart, 'redraw', renderRangeSelector);
 
// do it now
renderRangeSelector();
}
 
// Remove resize/afterSetExtremes at chart destroy
addEvent(chart, 'destroy', function destroyEvents() {
if (rangeSelector) {
unbindRender();
unbindSetExtremes();
}
});
});
 
 
H.RangeSelector = RangeSelector;
 
/* ****************************************************************************
* End Range Selector code *
*****************************************************************************/
 
}(Highcharts));
(function(H) {
/**
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
*/
var arrayMax = H.arrayMax,
arrayMin = H.arrayMin,
Axis = H.Axis,
Chart = H.Chart,
defined = H.defined,
each = H.each,
extend = H.extend,
format = H.format,
grep = H.grep,
inArray = H.inArray,
isNumber = H.isNumber,
isString = H.isString,
map = H.map,
merge = H.merge,
pick = H.pick,
Point = H.Point,
Renderer = H.Renderer,
Series = H.Series,
splat = H.splat,
SVGRenderer = H.SVGRenderer,
VMLRenderer = H.VMLRenderer,
wrap = H.wrap,
 
 
seriesProto = Series.prototype,
seriesInit = seriesProto.init,
seriesProcessData = seriesProto.processData,
pointTooltipFormatter = Point.prototype.tooltipFormatter;
 
/**
* Factory function for creating new stock charts. Creates a new {@link Chart|
* Chart} object with different default options than the basic Chart.
*
* @function #stockChart
* @memberOf Highcharts
*
* @param {String|HTMLDOMElement} renderTo
* The DOM element to render to, or its id.
* @param {Options} options
* The chart options structure as described in the {@link
* https://api.highcharts.com/highstock|options reference}.
* @param {Function} callback
* A function to execute when the chart object is finished loading and
* rendering. In most cases the chart is built in one thread, but in
* Internet Explorer version 8 or less the chart is sometimes initialized
* before the document is ready, and in these cases the chart object
* will not be finished synchronously. As a consequence, code that
* relies on the newly built Chart object should always run in the
* callback. Defining a {@link https://api.highcharts.com/highstock/chart.events.load|
* chart.event.load} handler is equivalent.
*
* @return {Chart}
* The chart object.
*
* @example
* var chart = Highcharts.stockChart('container', {
* series: [{
* data: [1, 2, 3, 4, 5, 6, 7, 8, 9],
* pointInterval: 24 * 60 * 60 * 1000
* }]
* });
*/
H.StockChart = H.stockChart = function(a, b, c) {
var hasRenderToArg = isString(a) || a.nodeName,
options = arguments[hasRenderToArg ? 1 : 0],
seriesOptions = options.series, // to increase performance, don't merge the data
defaultOptions = H.getOptions(),
opposite,
 
// Always disable startOnTick:true on the main axis when the navigator
// is enabled (#1090)
navigatorEnabled = pick(
options.navigator && options.navigator.enabled,
defaultOptions.navigator.enabled,
true
),
disableStartOnTick = navigatorEnabled ? {
startOnTick: false,
endOnTick: false
} : null,
 
lineOptions = {
 
marker: {
enabled: false,
radius: 2
}
// gapSize: 0
},
columnOptions = {
shadow: false,
borderWidth: 0
};
 
// apply X axis options to both single and multi y axes
options.xAxis = map(splat(options.xAxis || {}), function(xAxisOptions) {
return merge({ // defaults
minPadding: 0,
maxPadding: 0,
ordinal: true,
title: {
text: null
},
labels: {
overflow: 'justify'
},
showLastLabel: true
},
defaultOptions.xAxis, // #3802
xAxisOptions, // user options
{ // forced options
type: 'datetime',
categories: null
},
disableStartOnTick
);
});
 
// apply Y axis options to both single and multi y axes
options.yAxis = map(splat(options.yAxis || {}), function(yAxisOptions) {
opposite = pick(yAxisOptions.opposite, true);
return merge({ // defaults
labels: {
y: -2
},
opposite: opposite,
showLastLabel: false,
title: {
text: null
}
},
defaultOptions.yAxis, // #3802
yAxisOptions // user options
);
});
 
options.series = null;
 
options = merge({
chart: {
panning: true,
pinchType: 'x'
},
navigator: {
enabled: navigatorEnabled
},
scrollbar: {
// #4988 - check if setOptions was called
enabled: pick(defaultOptions.scrollbar.enabled, true)
},
rangeSelector: {
// #4988 - check if setOptions was called
enabled: pick(defaultOptions.rangeSelector.enabled, true)
},
title: {
text: null
},
tooltip: {
shared: true,
crosshairs: true
},
legend: {
enabled: false
},
 
plotOptions: {
line: lineOptions,
spline: lineOptions,
area: lineOptions,
areaspline: lineOptions,
arearange: lineOptions,
areasplinerange: lineOptions,
column: columnOptions,
columnrange: columnOptions,
candlestick: columnOptions,
ohlc: columnOptions
}
 
},
 
options, // user's options
 
{ // forced options
isStock: true // internal flag
}
);
 
options.series = seriesOptions;
 
return hasRenderToArg ?
new Chart(a, options, c) :
new Chart(options, b);
};
 
// Override the automatic label alignment so that the first Y axis' labels
// are drawn on top of the grid line, and subsequent axes are drawn outside
wrap(Axis.prototype, 'autoLabelAlign', function(proceed) {
var chart = this.chart,
options = this.options,
panes = chart._labelPanes = chart._labelPanes || {},
key,
labelOptions = this.options.labels;
if (this.chart.options.isStock && this.coll === 'yAxis') {
key = options.top + ',' + options.height;
if (!panes[key] && labelOptions.enabled) { // do it only for the first Y axis of each pane
if (labelOptions.x === 15) { // default
labelOptions.x = 0;
}
if (labelOptions.align === undefined) {
labelOptions.align = 'right';
}
panes[key] = this;
return 'right';
}
}
return proceed.apply(this, [].slice.call(arguments, 1));
});
 
// Clear axis from label panes (#6071)
wrap(Axis.prototype, 'destroy', function(proceed) {
var chart = this.chart,
key = this.options && (this.options.top + ',' + this.options.height);
 
if (key && chart._labelPanes && chart._labelPanes[key] === this) {
delete chart._labelPanes[key];
}
 
return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
// Override getPlotLinePath to allow for multipane charts
wrap(Axis.prototype, 'getPlotLinePath', function(proceed, value, lineWidth, old, force, translatedValue) {
var axis = this,
series = (this.isLinked && !this.series ? this.linkedParent.series : this.series),
chart = axis.chart,
renderer = chart.renderer,
axisLeft = axis.left,
axisTop = axis.top,
x1,
y1,
x2,
y2,
result = [],
axes = [], //#3416 need a default array
axes2,
uniqueAxes,
transVal;
 
/**
* Return the other axis based on either the axis option or on related series.
*/
function getAxis(coll) {
var otherColl = coll === 'xAxis' ? 'yAxis' : 'xAxis',
opt = axis.options[otherColl];
 
// Other axis indexed by number
if (isNumber(opt)) {
return [chart[otherColl][opt]];
}
 
// Other axis indexed by id (like navigator)
if (isString(opt)) {
return [chart.get(opt)];
}
 
// Auto detect based on existing series
return map(series, function(s) {
return s[otherColl];
});
}
 
// Ignore in case of colorAxis or zAxis. #3360, #3524, #6720
if (axis.coll !== 'xAxis' && axis.coll !== 'yAxis') {
return proceed.apply(this, [].slice.call(arguments, 1));
}
 
// Get the related axes based on series
axes = getAxis(axis.coll);
 
// Get the related axes based options.*Axis setting #2810
axes2 = (axis.isXAxis ? chart.yAxis : chart.xAxis);
each(axes2, function(A) {
if (defined(A.options.id) ? A.options.id.indexOf('navigator') === -1 : true) {
var a = (A.isXAxis ? 'yAxis' : 'xAxis'),
rax = (defined(A.options[a]) ? chart[a][A.options[a]] : chart[a][0]);
 
if (axis === rax) {
axes.push(A);
}
}
});
 
 
// Remove duplicates in the axes array. If there are no axes in the axes array,
// we are adding an axis without data, so we need to populate this with grid
// lines (#2796).
uniqueAxes = axes.length ? [] : [axis.isXAxis ? chart.yAxis[0] : chart.xAxis[0]]; //#3742
each(axes, function(axis2) {
if (
inArray(axis2, uniqueAxes) === -1 &&
// Do not draw on axis which overlap completely. #5424
!H.find(uniqueAxes, function(unique) {
return unique.pos === axis2.pos && unique.len && axis2.len;
})
) {
uniqueAxes.push(axis2);
}
});
 
transVal = pick(translatedValue, axis.translate(value, null, null, old));
if (isNumber(transVal)) {
if (axis.horiz) {
each(uniqueAxes, function(axis2) {
var skip;
 
y1 = axis2.pos;
y2 = y1 + axis2.len;
x1 = x2 = Math.round(transVal + axis.transB);
 
if (x1 < axisLeft || x1 > axisLeft + axis.width) { // outside plot area
if (force) {
x1 = x2 = Math.min(Math.max(axisLeft, x1), axisLeft + axis.width);
} else {
skip = true;
}
}
if (!skip) {
result.push('M', x1, y1, 'L', x2, y2);
}
});
} else {
each(uniqueAxes, function(axis2) {
var skip;
 
x1 = axis2.pos;
x2 = x1 + axis2.len;
y1 = y2 = Math.round(axisTop + axis.height - transVal);
 
if (y1 < axisTop || y1 > axisTop + axis.height) { // outside plot area
if (force) {
y1 = y2 = Math.min(Math.max(axisTop, y1), axis.top + axis.height);
} else {
skip = true;
}
}
if (!skip) {
result.push('M', x1, y1, 'L', x2, y2);
}
});
}
}
return result.length > 0 ?
renderer.crispPolyLine(result, lineWidth || 1) :
null; //#3557 getPlotLinePath in regular Highcharts also returns null
});
 
// Override getPlotBandPath to allow for multipane charts
Axis.prototype.getPlotBandPath = function(from, to) {
var toPath = this.getPlotLinePath(to, null, null, true),
path = this.getPlotLinePath(from, null, null, true),
result = [],
i;
 
if (path && toPath) {
if (path.toString() === toPath.toString()) {
// #6166
result = path;
result.flat = true;
} else {
// Go over each subpath
for (i = 0; i < path.length; i += 6) {
result.push(
'M', path[i + 1], path[i + 2],
'L', path[i + 4], path[i + 5],
toPath[i + 4], toPath[i + 5],
toPath[i + 1], toPath[i + 2],
'z'
);
}
}
} else { // outside the axis area
result = null;
}
 
return result;
};
 
// Function to crisp a line with multiple segments
SVGRenderer.prototype.crispPolyLine = function(points, width) {
// points format: ['M', 0, 0, 'L', 100, 0]
// normalize to a crisp line
var i;
for (i = 0; i < points.length; i = i + 6) {
if (points[i + 1] === points[i + 4]) {
// Substract due to #1129. Now bottom and left axis gridlines behave the same.
points[i + 1] = points[i + 4] = Math.round(points[i + 1]) - (width % 2 / 2);
}
if (points[i + 2] === points[i + 5]) {
points[i + 2] = points[i + 5] = Math.round(points[i + 2]) + (width % 2 / 2);
}
}
return points;
};
 
 
// Wrapper to hide the label
wrap(Axis.prototype, 'hideCrosshair', function(proceed, i) {
 
proceed.call(this, i);
 
if (this.crossLabel) {
this.crossLabel = this.crossLabel.hide();
}
});
 
// Wrapper to draw the label
wrap(Axis.prototype, 'drawCrosshair', function(proceed, e, point) {
 
// Draw the crosshair
proceed.call(this, e, point);
 
// Check if the label has to be drawn
if (!defined(this.crosshair.label) || !this.crosshair.label.enabled || !this.cross) {
return;
}
 
var chart = this.chart,
options = this.options.crosshair.label, // the label's options
horiz = this.horiz, // axis orientation
opposite = this.opposite, // axis position
left = this.left, // left position
top = this.top, // top position
crossLabel = this.crossLabel, // reference to the svgElement
posx,
posy,
crossBox,
formatOption = options.format,
formatFormat = '',
limit,
align,
tickInside = this.options.tickPosition === 'inside',
snap = this.crosshair.snap !== false,
value,
offset = 0;
 
// Use last available event (#5287)
if (!e) {
e = this.cross && this.cross.e;
}
 
align = (horiz ? 'center' : opposite ?
(this.labelAlign === 'right' ? 'right' : 'left') :
(this.labelAlign === 'left' ? 'left' : 'center'));
 
// If the label does not exist yet, create it.
if (!crossLabel) {
crossLabel = this.crossLabel = chart.renderer.label(null, null, null, options.shape || 'callout')
.addClass('highcharts-crosshair-label' +
(this.series[0] && ' highcharts-color-' + this.series[0].colorIndex))
.attr({
align: options.align || align,
padding: pick(options.padding, 8),
r: pick(options.borderRadius, 3),
zIndex: 2
})
.add(this.labelGroup);
 
 
}
 
if (horiz) {
posx = snap ? point.plotX + left : e.chartX;
posy = top + (opposite ? 0 : this.height);
} else {
posx = opposite ? this.width + left : 0;
posy = snap ? point.plotY + top : e.chartY;
}
 
if (!formatOption && !options.formatter) {
if (this.isDatetimeAxis) {
formatFormat = '%b %d, %Y';
}
formatOption = '{value' + (formatFormat ? ':' + formatFormat : '') + '}';
}
 
// Show the label
value = snap ? point[this.isXAxis ? 'x' : 'y'] : this.toValue(horiz ? e.chartX : e.chartY);
crossLabel.attr({
text: formatOption ? format(formatOption, {
value: value
}) : options.formatter.call(this, value),
x: posx,
y: posy,
visibility: 'visible'
});
 
crossBox = crossLabel.getBBox();
 
// now it is placed we can correct its position
if (horiz) {
if ((tickInside && !opposite) || (!tickInside && opposite)) {
posy = crossLabel.y - crossBox.height;
}
} else {
posy = crossLabel.y - (crossBox.height / 2);
}
 
// check the edges
if (horiz) {
limit = {
left: left - crossBox.x,
right: left + this.width - crossBox.x
};
} else {
limit = {
left: this.labelAlign === 'left' ? left : 0,
right: this.labelAlign === 'right' ? left + this.width : chart.chartWidth
};
}
 
// left edge
if (crossLabel.translateX < limit.left) {
offset = limit.left - crossLabel.translateX;
}
// right edge
if (crossLabel.translateX + crossBox.width >= limit.right) {
offset = -(crossLabel.translateX + crossBox.width - limit.right);
}
 
// show the crosslabel
crossLabel.attr({
x: posx + offset,
y: posy,
// First set x and y, then anchorX and anchorY, when box is actually calculated, #5702
anchorX: horiz ? posx : (this.opposite ? 0 : chart.chartWidth),
anchorY: horiz ? (this.opposite ? chart.chartHeight : 0) : posy + crossBox.height / 2
});
});
 
/* ****************************************************************************
* Start value compare logic *
*****************************************************************************/
 
/**
* Extend series.init by adding a method to modify the y value used for plotting
* on the y axis. This method is called both from the axis when finding dataMin
* and dataMax, and from the series.translate method.
*/
seriesProto.init = function() {
 
// Call base method
seriesInit.apply(this, arguments);
 
// Set comparison mode
this.setCompare(this.options.compare);
};
 
/**
* Highstock only. Set the {@link
* http://api.highcharts.com/highstock/plotOptions.series.compare|
* compare} mode of the series after render time. In most cases it is more
* useful running {@link Axis#setCompare} on the X axis to update all its
* series.
*
* @function setCompare
* @memberOf Series.prototype
*
* @param {String} compare
* Can be one of `null`, `"percent"` or `"value"`.
*/
seriesProto.setCompare = function(compare) {
 
// Set or unset the modifyValue method
this.modifyValue = (compare === 'value' || compare === 'percent') ? function(value, point) {
var compareValue = this.compareValue;
 
if (value !== undefined && compareValue !== undefined) { // #2601, #5814
 
// Get the modified value
if (compare === 'value') {
value -= compareValue;
 
// Compare percent
} else {
value = 100 * (value / compareValue) -
(this.options.compareBase === 100 ? 0 : 100);
}
 
// record for tooltip etc.
if (point) {
point.change = value;
}
 
return value;
}
} : null;
 
// Survive to export, #5485
this.userOptions.compare = compare;
 
// Mark dirty
if (this.chart.hasRendered) {
this.isDirty = true;
}
 
};
 
/**
* Extend series.processData by finding the first y value in the plot area,
* used for comparing the following values
*/
seriesProto.processData = function() {
var series = this,
i,
keyIndex = -1,
processedXData,
processedYData,
length,
compareValue;
 
// call base method
seriesProcessData.apply(this, arguments);
 
if (series.xAxis && series.processedYData) { // not pies
 
// local variables
processedXData = series.processedXData;
processedYData = series.processedYData;
length = processedYData.length;
 
// For series with more than one value (range, OHLC etc), compare against
// close or the pointValKey (#4922, #3112)
if (series.pointArrayMap) {
// Use close if present (#3112)
keyIndex = inArray('close', series.pointArrayMap);
if (keyIndex === -1) {
keyIndex = inArray(series.pointValKey || 'y', series.pointArrayMap);
}
}
 
// find the first value for comparison
for (i = 0; i < length - 1; i++) {
compareValue = processedYData[i] && keyIndex > -1 ?
processedYData[i][keyIndex] :
processedYData[i];
if (isNumber(compareValue) && processedXData[i + 1] >= series.xAxis.min && compareValue !== 0) {
series.compareValue = compareValue;
break;
}
}
}
};
 
/**
* Modify series extremes
*/
wrap(seriesProto, 'getExtremes', function(proceed) {
var extremes;
 
proceed.apply(this, [].slice.call(arguments, 1));
 
if (this.modifyValue) {
extremes = [this.modifyValue(this.dataMin), this.modifyValue(this.dataMax)];
this.dataMin = arrayMin(extremes);
this.dataMax = arrayMax(extremes);
}
});
 
/**
* Highstock only. Set the compare mode on all series belonging to an Y axis
* after render time.
*
* @param {String} compare
* The compare mode. Can be one of `null`, `"value"` or `"percent"`.
* @param {Boolean} [redraw=true]
* Whether to redraw the chart or to wait for a later call to {@link
* Chart#redraw},
*
* @function setCompare
* @memberOf Axis.prototype
*
* @see {@link https://api.highcharts.com/highstock/series.plotOptions.compare|
* series.plotOptions.compare}
*
* @sample stock/members/axis-setcompare/
* Set compoare
*/
Axis.prototype.setCompare = function(compare, redraw) {
if (!this.isXAxis) {
each(this.series, function(series) {
series.setCompare(compare);
});
if (pick(redraw, true)) {
this.chart.redraw();
}
}
};
 
/**
* Extend the tooltip formatter by adding support for the point.change variable
* as well as the changeDecimals option
*/
Point.prototype.tooltipFormatter = function(pointFormat) {
var point = this;
 
pointFormat = pointFormat.replace(
'{point.change}',
(point.change > 0 ? '+' : '') +
H.numberFormat(point.change, pick(point.series.tooltipOptions.changeDecimals, 2))
);
 
return pointTooltipFormatter.apply(this, [pointFormat]);
};
 
/* ****************************************************************************
* End value compare logic *
*****************************************************************************/
 
 
/**
* Extend the Series prototype to create a separate series clip box. This is
* related to using multiple panes, and a future pane logic should incorporate
* this feature (#2754).
*/
wrap(Series.prototype, 'render', function(proceed) {
// Only do this on not 3d (#2939, #5904) nor polar (#6057) charts, and only
// if the series type handles clipping in the animate method (#2975).
if (!(this.chart.is3d && this.chart.is3d()) &&
!this.chart.polar &&
this.xAxis &&
!this.xAxis.isRadial // Gauge, #6192
) {
 
// First render, initial clip box
if (!this.clipBox && this.animate) {
this.clipBox = merge(this.chart.clipBox);
this.clipBox.width = this.xAxis.len;
this.clipBox.height = this.yAxis.len;
 
// On redrawing, resizing etc, update the clip rectangle
} else if (this.chart[this.sharedClipKey]) {
this.chart[this.sharedClipKey].attr({
width: this.xAxis.len,
height: this.yAxis.len
});
// #3111
} else if (this.clipBox) {
this.clipBox.width = this.xAxis.len;
this.clipBox.height = this.yAxis.len;
}
}
proceed.call(this);
});
 
wrap(Chart.prototype, 'getSelectedPoints', function(proceed) {
var points = proceed.call(this);
 
each(this.series, function(serie) {
// series.points - for grouped points (#6445)
if (serie.hasGroupedData) {
points = points.concat(grep(serie.points || [], function(point) {
return point.selected;
}));
}
});
return points;
});
 
wrap(Chart.prototype, 'update', function(proceed, options) {
// Use case: enabling scrollbar from a disabled state.
// Scrollbar needs to be initialized from a controller, Navigator in this
// case (#6615)
if ('scrollbar' in options && this.navigator) {
merge(true, this.options.scrollbar, options.scrollbar);
this.navigator.update({}, false);
delete options.scrollbar;
}
 
return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/treemap.js
@@ -0,0 +1,29 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
 
(c) 2014 Highsoft AS
Authors: Jon Arild Nygard / Oystein Moseng
 
License: www.highcharts.com/license
*/
(function(n){"object"===typeof module&&module.exports?module.exports=n:n(Highcharts)})(function(n){(function(f){var n=f.seriesType,t=f.seriesTypes,D=f.map,v=f.merge,E=f.extend,y=f.noop,m=f.each,w=f.grep,F=f.isNumber,z=f.isString,k=f.pick,u=f.Series,G=f.stableSort,H=function(a,c,b){b=b||this;f.objectEach(a,function(e,d){c.call(b,e,d,a)})},A=function(a,c,b,e){e=e||this;a=a||[];m(a,function(d,g){b=c.call(e,b,d,g,a)});return b},x=function(a,c,b){b=b||this;a=c.call(b,a);!1!==a&&x(a,c,b)};n("treemap","scatter",
{showInLegend:!1,marker:!1,dataLabels:{enabled:!0,defer:!1,verticalAlign:"middle",formatter:function(){return this.point.name||this.point.id},inside:!0},tooltip:{headerFormat:"",pointFormat:"\x3cb\x3e{point.name}\x3c/b\x3e: {point.value}\x3c/b\x3e\x3cbr/\x3e"},ignoreHiddenPoint:!0,layoutAlgorithm:"sliceAndDice",layoutStartingDirection:"vertical",alternateStartingDirection:!1,levelIsConstant:!0,drillUpButton:{position:{align:"right",x:-10,y:10}}},{pointArrayMap:["value"],axisTypes:t.heatmap?["xAxis",
"yAxis","colorAxis"]:["xAxis","yAxis"],directTouch:!0,optionalAxis:"colorAxis",getSymbol:y,parallelArrays:["x","y","value","colorValue"],colorKey:"colorValue",translateColors:t.heatmap&&t.heatmap.prototype.translateColors,trackerGroups:["group","dataLabelsGroup"],getListOfParents:function(a,c){a=A(a,function(a,c,d){c=k(c.parent,"");void 0===a[c]&&(a[c]=[]);a[c].push(d);return a},{});H(a,function(a,e,d){""!==e&&-1===f.inArray(e,c)&&(m(a,function(a){d[""].push(a)}),delete d[e])});return a},getTree:function(){var a=
D(this.data,function(a){return a.id}),a=this.getListOfParents(this.data,a);this.nodeMap=[];return this.buildNode("",-1,0,a,null)},init:function(a,c){u.prototype.init.call(this,a,c);this.options.allowDrillToNode&&f.addEvent(this,"click",this.onClickDrillToNode)},buildNode:function(a,c,b,e,d){var g=this,h=[],B=g.points[c],C;m(e[a]||[],function(c){C=g.buildNode(g.points[c].id,c,b+1,e,a);h.push(C)});c={id:a,i:c,children:h,level:b,parent:d,visible:!1};g.nodeMap[c.id]=c;B&&(B.node=c);return c},setTreeValues:function(a){var c=
this,b=c.options,e=0,d=[],g,h=c.points[a.i];m(a.children,function(a){a=c.setTreeValues(a);d.push(a);a.ignore||(e+=a.val)});G(d,function(a,b){return a.sortIndex-b.sortIndex});g=k(h&&h.options.value,e);h&&(h.value=g);E(a,{children:d,childrenTotal:e,ignore:!(k(h&&h.visible,!0)&&0<g),isLeaf:a.visible&&!e,levelDynamic:a.level-(b.levelIsConstant?c.nodeMap[c.rootNode].level:0),name:k(h&&h.name,""),sortIndex:k(h&&h.sortIndex,-g),val:g});return a},calculateChildrenAreas:function(a,c){var b=this,e=b.options,
d=this.levelMap[a.levelDynamic+1],g=k(b[d&&d.layoutAlgorithm]&&d.layoutAlgorithm,e.layoutAlgorithm),h=e.alternateStartingDirection,f=[];a=w(a.children,function(a){return!a.ignore});d&&d.layoutStartingDirection&&(c.direction="vertical"===d.layoutStartingDirection?0:1);f=b[g](c,a);m(a,function(a,d){d=f[d];a.values=v(d,{val:a.childrenTotal,direction:h?1-c.direction:c.direction});a.pointValues=v(d,{x:d.x/b.axisRatio,width:d.width/b.axisRatio});a.children.length&&b.calculateChildrenAreas(a,a.values)})},
setPointValues:function(){var a=this.xAxis,c=this.yAxis;m(this.points,function(b){var e=b.node,d=e.pointValues,g,h;d&&e.visible?(e=Math.round(a.translate(d.x,0,0,0,1))-0,g=Math.round(a.translate(d.x+d.width,0,0,0,1))-0,h=Math.round(c.translate(d.y,0,0,0,1))-0,d=Math.round(c.translate(d.y+d.height,0,0,0,1))-0,b.shapeType="rect",b.shapeArgs={x:Math.min(e,g),y:Math.min(h,d),width:Math.abs(g-e),height:Math.abs(d-h)},b.plotX=b.shapeArgs.x+b.shapeArgs.width/2,b.plotY=b.shapeArgs.y+b.shapeArgs.height/2):
(delete b.plotX,delete b.plotY)})},setColorRecursive:function(a,c,b){var e=this,d,g;a&&(d=e.points[a.i],g=e.levelMap[a.levelDynamic],c=k(d&&d.options.color,g&&g.color,c,e.color),b=k(d&&d.options.colorIndex,g&&g.colorIndex,b,e.colorIndex),d&&(d.color=c,d.colorIndex=b),a.children.length&&m(a.children,function(a){e.setColorRecursive(a,c,b)}))},algorithmGroup:function(a,c,b,e){this.height=a;this.width=c;this.plot=e;this.startDirection=this.direction=b;this.lH=this.nH=this.lW=this.nW=this.total=0;this.elArr=
[];this.lP={total:0,lH:0,nH:0,lW:0,nW:0,nR:0,lR:0,aspectRatio:function(a,b){return Math.max(a/b,b/a)}};this.addElement=function(a){this.lP.total=this.elArr[this.elArr.length-1];this.total+=a;0===this.direction?(this.lW=this.nW,this.lP.lH=this.lP.total/this.lW,this.lP.lR=this.lP.aspectRatio(this.lW,this.lP.lH),this.nW=this.total/this.height,this.lP.nH=this.lP.total/this.nW,this.lP.nR=this.lP.aspectRatio(this.nW,this.lP.nH)):(this.lH=this.nH,this.lP.lW=this.lP.total/this.lH,this.lP.lR=this.lP.aspectRatio(this.lP.lW,
this.lH),this.nH=this.total/this.width,this.lP.nW=this.lP.total/this.nH,this.lP.nR=this.lP.aspectRatio(this.lP.nW,this.nH));this.elArr.push(a)};this.reset=function(){this.lW=this.nW=0;this.elArr=[];this.total=0}},algorithmCalcPoints:function(a,c,b,e){var d,g,h,f,k=b.lW,p=b.lH,l=b.plot,n,q=0,r=b.elArr.length-1;c?(k=b.nW,p=b.nH):n=b.elArr[b.elArr.length-1];m(b.elArr,function(a){if(c||q<r)0===b.direction?(d=l.x,g=l.y,h=k,f=a/h):(d=l.x,g=l.y,f=p,h=a/f),e.push({x:d,y:g,width:h,height:f}),0===b.direction?
l.y+=f:l.x+=h;q+=1});b.reset();0===b.direction?b.width-=k:b.height-=p;l.y=l.parent.y+(l.parent.height-b.height);l.x=l.parent.x+(l.parent.width-b.width);a&&(b.direction=1-b.direction);c||b.addElement(n)},algorithmLowAspectRatio:function(a,c,b){var e=[],d=this,g,h={x:c.x,y:c.y,parent:c},f=0,k=b.length-1,p=new this.algorithmGroup(c.height,c.width,c.direction,h);m(b,function(b){g=b.val/c.val*c.height*c.width;p.addElement(g);p.lP.nR>p.lP.lR&&d.algorithmCalcPoints(a,!1,p,e,h);f===k&&d.algorithmCalcPoints(a,
!0,p,e,h);f+=1});return e},algorithmFill:function(a,c,b){var e=[],d,g=c.direction,h=c.x,f=c.y,k=c.width,p=c.height,l,n,q,r;m(b,function(b){d=b.val/c.val*c.height*c.width;l=h;n=f;0===g?(r=p,q=d/r,k-=q,h+=q):(q=k,r=d/q,p-=r,f+=r);e.push({x:l,y:n,width:q,height:r});a&&(g=1-g)});return e},strip:function(a,c){return this.algorithmLowAspectRatio(!1,a,c)},squarified:function(a,c){return this.algorithmLowAspectRatio(!0,a,c)},sliceAndDice:function(a,c){return this.algorithmFill(!0,a,c)},stripes:function(a,
c){return this.algorithmFill(!1,a,c)},translate:function(){var a=this,c=a.rootNode=k(a.rootNode,a.options.rootId,""),b,e;u.prototype.translate.call(a);a.levelMap=A(a.options.levels,function(a,b){a[b.level]=b;return a},{});e=a.tree=a.getTree();b=a.nodeMap[c];""===c||b&&b.children.length||(a.drillToNode("",!1),c=a.rootNode,b=a.nodeMap[c]);x(a.nodeMap[a.rootNode],function(b){var c=!1,d=b.parent;b.visible=!0;if(d||""===d)c=a.nodeMap[d];return c});x(a.nodeMap[a.rootNode].children,function(a){var b=!1;
m(a,function(a){a.visible=!0;a.children.length&&(b=(b||[]).concat(a.children))});return b});a.setTreeValues(e);a.axisRatio=a.xAxis.len/a.yAxis.len;a.nodeMap[""].pointValues=c={x:0,y:0,width:100,height:100};a.nodeMap[""].values=c=v(c,{width:c.width*a.axisRatio,direction:"vertical"===a.options.layoutStartingDirection?0:1,val:e.val});a.calculateChildrenAreas(e,c);a.colorAxis?a.translateColors():a.options.colorByPoint||a.setColorRecursive(a.tree);a.options.allowDrillToNode&&(b=b.pointValues,a.xAxis.setExtremes(b.x,
b.x+b.width,!1),a.yAxis.setExtremes(b.y,b.y+b.height,!1),a.xAxis.setScale(),a.yAxis.setScale());a.setPointValues()},drawDataLabels:function(){var a=this,c=w(a.points,function(a){return a.node.visible}),b,e;m(c,function(c){e=a.levelMap[c.node.levelDynamic];b={style:{}};c.node.isLeaf||(b.enabled=!1);e&&e.dataLabels&&(b=v(b,e.dataLabels),a._hasPointLabels=!0);c.shapeArgs&&(b.style.width=c.shapeArgs.width,c.dataLabel&&c.dataLabel.css({width:c.shapeArgs.width+"px"}));c.dlOptions=v(b,c.options.dataLabels)});
u.prototype.drawDataLabels.call(this)},alignDataLabel:function(a){t.column.prototype.alignDataLabel.apply(this,arguments);a.dataLabel&&a.dataLabel.attr({zIndex:(a.node.zIndex||0)+1})},drawPoints:function(){var a=this,c=w(a.points,function(a){return a.node.visible});m(c,function(b){var c="levelGroup-"+b.node.levelDynamic;a[c]||(a[c]=a.chart.renderer.g(c).attr({zIndex:1E3-b.node.levelDynamic}).add(a.group));b.group=a[c]});t.column.prototype.drawPoints.call(this);a.options.allowDrillToNode&&m(c,function(b){b.graphic&&
(b.drillId=a.options.interactByLeaf?a.drillToByLeaf(b):a.drillToByGroup(b))})},onClickDrillToNode:function(a){var c=(a=a.point)&&a.drillId;z(c)&&(a.setState(""),this.drillToNode(c))},drillToByGroup:function(a){var c=!1;1!==a.node.level-this.nodeMap[this.rootNode].level||a.node.isLeaf||(c=a.id);return c},drillToByLeaf:function(a){var c=!1;if(a.node.parent!==this.rootNode&&a.node.isLeaf)for(a=a.node;!c;)a=this.nodeMap[a.parent],a.parent===this.rootNode&&(c=a.id);return c},drillUp:function(){var a=this.nodeMap[this.rootNode];
a&&z(a.parent)&&this.drillToNode(a.parent)},drillToNode:function(a,c){var b=this.nodeMap[a];this.rootNode=a;""===a?this.drillUpButton=this.drillUpButton.destroy():this.showDrillUpButton(b&&b.name||a);this.isDirty=!0;k(c,!0)&&this.chart.redraw()},showDrillUpButton:function(a){var c=this;a=a||"\x3c Back";var b=c.options.drillUpButton,e,d;b.text&&(a=b.text);this.drillUpButton?this.drillUpButton.attr({text:a}).align():(d=(e=b.theme)&&e.states,this.drillUpButton=this.chart.renderer.button(a,null,null,
function(){c.drillUp()},e,d&&d.hover,d&&d.select).attr({align:b.position.align,zIndex:7}).add().align(b.position,!1,b.relativeTo||"plotBox"))},buildKDTree:y,drawLegendSymbol:f.LegendSymbolMixin.drawRectangle,getExtremes:function(){u.prototype.getExtremes.call(this,this.colorValueData);this.valueMin=this.dataMin;this.valueMax=this.dataMax;u.prototype.getExtremes.call(this)},getExtremesFromAll:!0,bindAxes:function(){var a={endOnTick:!1,gridLineWidth:0,lineWidth:0,min:0,dataMin:0,minPadding:0,max:100,
dataMax:100,maxPadding:0,startOnTick:!1,title:null,tickPositions:[]};u.prototype.bindAxes.call(this);f.extend(this.yAxis.options,a);f.extend(this.xAxis.options,a)}},{getClassName:function(){var a=f.Point.prototype.getClassName.call(this),c=this.series,b=c.options;this.node.level<=c.nodeMap[c.rootNode].level?a+=" highcharts-above-level":this.node.isLeaf||k(b.interactByLeaf,!b.allowDrillToNode)?this.node.isLeaf||(a+=" highcharts-internal-node"):a+=" highcharts-internal-node-interactive";return a},isValid:function(){return F(this.value)},
setState:function(a){f.Point.prototype.setState.call(this,a);this.graphic&&this.graphic.attr({zIndex:"hover"===a?1:0})},setVisible:t.pie.prototype.pointClass.prototype.setVisible})})(n)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/treemap.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":29,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","seriesType","seriesTypes","map","merge","extend","noop","each","grep","isNumber","isString","pick","Series","stableSort","eachObject","list","func","context","objectEach","val","key","call","reduce","arr","previous","current","i","recursive","item","next","showInLegend","marker","dataLabels","enabled","defer","verticalAlign","formatter","point","name","id","inside","tooltip","headerFormat","pointFormat","ignoreHiddenPoint","layoutAlgorithm","layoutStartingDirection","alternateStartingDirection","levelIsConstant","drillUpButton","position","align","x","y","pointArrayMap","axisTypes","heatmap","directTouch","optionalAxis","getSymbol","parallelArrays","colorKey","translateColors","prototype","trackerGroups","getListOfParents","data","ids","listOfParents","prev","curr","parent","undefined","push","children","inArray","child","getTree","allIds","d","parentList","series","nodeMap","buildNode","init","chart","options","allowDrillToNode","addEvent","onClickDrillToNode","level","points","node","visible","setTreeValues","tree","childrenTotal","ignore","a","b","sortIndex","value","isLeaf","levelDynamic","rootNode","calculateChildrenAreas","area","levelMap","algorithm","alternate","childrenValues","n","direction","index","values","pointValues","axisRatio","width","length","setPointValues","xAxis","yAxis","x2","y1","x1","Math","round","translate","crispCorr","y2","height","shapeType","shapeArgs","min","abs","plotX","plotY","setColorRecursive","color","colorIndex","algorithmGroup","h","w","p","plot","startDirection","lH","nH","lW","nW","total","elArr","lP","nR","lR","aspectRatio","max","addElement","this.addElement","el","reset","this.reset","algorithmCalcPoints","directionChange","last","group","childrenArea","pX","pY","pW","pH","gW","gH","keep","end","algorithmLowAspectRatio","pTot","algorithmFill","strip","squarified","sliceAndDice","stripes","rootId","levels","drillToNode","concat","len","seriesArea","colorAxis","colorByPoint","setExtremes","setScale","drawDataLabels","style","_hasPointLabels","dataLabel","css","dlOptions","alignDataLabel","column","apply","arguments","attr","zIndex","drawPoints","groupKey","renderer","g","add","graphic","drillId","interactByLeaf","drillToByLeaf","drillToByGroup","event","setState","nodeParent","drillUp","redraw","destroy","showDrillUpButton","isDirty","backText","buttonOptions","states","text","theme","button","hover","select","relativeTo","buildKDTree","drawLegendSymbol","LegendSymbolMixin","drawRectangle","getExtremes","colorValueData","valueMin","dataMin","valueMax","dataMax","getExtremesFromAll","bindAxes","treeAxis","endOnTick","gridLineWidth","lineWidth","minPadding","maxPadding","startOnTick","title","tickPositions","getClassName","className","Point","isValid","state","setVisible","pie","pointClass"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/treemap.src.js
@@ -0,0 +1,1060 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
*
* (c) 2014 Highsoft AS
* Authors: Jon Arild Nygard / Oystein Moseng
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2014 Highsoft AS
* Authors: Jon Arild Nygard / Oystein Moseng
*
* License: www.highcharts.com/license
*/
 
var seriesType = H.seriesType,
seriesTypes = H.seriesTypes,
map = H.map,
merge = H.merge,
extend = H.extend,
noop = H.noop,
each = H.each,
grep = H.grep,
isNumber = H.isNumber,
isString = H.isString,
pick = H.pick,
Series = H.Series,
stableSort = H.stableSort,
color = H.Color,
eachObject = function(list, func, context) {
context = context || this;
H.objectEach(list, function(val, key) {
func.call(context, val, key, list);
});
},
reduce = function(arr, func, previous, context) {
context = context || this;
arr = arr || []; // @note should each be able to handle empty values automatically?
each(arr, function(current, i) {
previous = func.call(context, previous, current, i, arr);
});
return previous;
},
// @todo find correct name for this function.
// @todo Similar to reduce, this function is likely redundant
recursive = function(item, func, context) {
var next;
context = context || this;
next = func.call(context, item);
if (next !== false) {
recursive(next, func, context);
}
};
 
// The Treemap series type
/**
* @extends {plotOptions.scatter}
* @optionparent plotOptions.treemap
*/
seriesType('treemap', 'scatter', {
 
/**
* Whether to display this series type or specific series item in the
* legend.
*
* @type {Boolean}
* @default false
* @product highcharts
*/
showInLegend: false,
 
/**
*/
marker: false,
 
/**
* @extends plotOptions.heatmap.dataLabels
* @since 4.1.0
* @product highcharts
*/
dataLabels: {
 
/**
* Enable or disable the data labels.
*
* @type {Boolean}
* @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/ Data labels enabled
* @default true
* @since 4.1.0
* @product highcharts
*/
enabled: true,
 
/**
* Whether to defer displaying the data labels until the initial series
* animation has finished.
*
* @type {Boolean}
* @default false
* @since 4.1.0
* @product highcharts
*/
defer: false,
 
/**
* The vertical alignment of a data label. Can be one of top, middle
* or bottom. The default value depends on the data, for instance
* in a column chart, the label is above positive values and below
* negative values.
*
* @type {String}
* @default middle
* @since 4.1.0
* @product highcharts
*/
verticalAlign: 'middle',
 
/**
*/
formatter: function() { // #2945
return this.point.name || this.point.id;
},
 
/**
* Whether to align the data label inside the box or to the actual
* value point.
*
* @type {Boolean}
* @default true
* @since 4.1.0
* @product highcharts
*/
inside: true
},
 
/**
* @extends plotOptions.heatmap.tooltip
* @since 4.1.0
* @product highcharts
*/
tooltip: {
 
/**
* The HTML of the tooltip header line. Variables are enclosed by
* curly brackets. Available variables are point.key, series.name,
* series.color and other members from the point and series objects.
* The point.key variable contains the category name, x value or
* datetime string depending on the type of axis. For datetime axes,
* the point.key date format can be set using tooltip.xDateFormat.
*
* @type {String}
* @sample {highcharts} highcharts/tooltip/footerformat/ A HTML table in the tooltip
* @default ""
* @since 4.1.0
* @product highcharts
*/
headerFormat: '',
 
/**
* The HTML of the point's line in the tooltip. Variables are enclosed
* by curly brackets. Available variables are point.x, point.y, series.
* name and series.color and other properties on the same form. Furthermore,
* point.y can be extended by the tooltip.yPrefix and tooltip.ySuffix
* variables. This can also be overridden for each series, which makes
* it a good hook for displaying units.
*
* @type {String}
* @sample {highcharts} highcharts/tooltip/pointformat/ A different point format with value suffix
* @default "&#60;b&#62;{point.name}&#60;/b&#62;: {point.value}&#60;/b&#62;&#60;br/&#62;"
* @since 4.1.0
* @product highcharts
*/
pointFormat: '<b>{point.name}</b>: {point.value}</b><br/>'
},
 
/**
* Whether to ignore hidden points when the layout algorithm runs.
* If `false`, hidden points will leave open spaces.
*
* @type {Boolean}
* @default true
* @since 5.0.8
* @product highcharts
*/
ignoreHiddenPoint: true,
 
/**
* This option decides which algorithm is used for setting position
* and dimensions of the points. Can be one of `sliceAndDice`, `stripes`,
* `squarified` or `strip`.
*
* @validvalue ["sliceAndDice", "stripes", "squarified", "strip"]
* @type {String}
* @see [How to write your own algorithm](http://www.highcharts.com/docs/chart-
* and-series-types/treemap)
* @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-sliceanddice/ SliceAndDice by default
* @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-stripes/ Stripes
* @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-squarified/ Squarified
* @sample {highcharts} highcharts/plotoptions/treemap-layoutalgorithm-strip/ Strip
* @default sliceAndDice
* @since 4.1.0
* @product highcharts
*/
layoutAlgorithm: 'sliceAndDice',
 
/**
* Defines which direction the layout algorithm will start drawing.
* Possible values are "vertical" and "horizontal".
*
* @validvalue ["vertical", "horizontal"]
* @type {String}
* @default vertical
* @since 4.1.0
* @product highcharts
*/
layoutStartingDirection: 'vertical',
 
/**
* Enabling this option will make the treemap alternate the drawing
* direction between vertical and horizontal. The next levels starting
* direction will always be the opposite of the previous.
*
* @type {Boolean}
* @sample {highcharts} highcharts/plotoptions/treemap-alternatestartingdirection-true/ Enabled
* @default false
* @since 4.1.0
* @product highcharts
*/
alternateStartingDirection: false,
 
/**
* Used together with the levels and allowDrillToNode options. When
* set to false the first level visible when drilling is considered
* to be level one. Otherwise the level will be the same as the tree
* structure.
*
* @validvalue [true, false]
* @type {Boolean}
* @default true
* @since 4.1.0
* @product highcharts
*/
levelIsConstant: true,
 
/**
*/
drillUpButton: {
 
/**
*/
position: {
 
/**
*/
align: 'right',
 
/**
*/
x: -10,
 
/**
*/
y: 10
}
},
 
 
// Prototype members
}, {
pointArrayMap: ['value'],
axisTypes: seriesTypes.heatmap ? ['xAxis', 'yAxis', 'colorAxis'] : ['xAxis', 'yAxis'],
directTouch: true,
optionalAxis: 'colorAxis',
getSymbol: noop,
parallelArrays: ['x', 'y', 'value', 'colorValue'],
colorKey: 'colorValue', // Point color option key
translateColors: seriesTypes.heatmap && seriesTypes.heatmap.prototype.translateColors,
trackerGroups: ['group', 'dataLabelsGroup'],
/**
* Creates an object map from parent id to childrens index.
* @param {Array} data List of points set in options.
* @param {string} data[].parent Parent id of point.
* @param {Array} ids List of all point ids.
* @return {Object} Map from parent id to children index in data.
*/
getListOfParents: function(data, ids) {
var listOfParents = reduce(data, function(prev, curr, i) {
var parent = pick(curr.parent, '');
if (prev[parent] === undefined) {
prev[parent] = [];
}
prev[parent].push(i);
return prev;
}, {});
 
// If parent does not exist, hoist parent to root of tree.
eachObject(listOfParents, function(children, parent, list) {
if ((parent !== '') && (H.inArray(parent, ids) === -1)) {
each(children, function(child) {
list[''].push(child);
});
delete list[parent];
}
});
return listOfParents;
},
/**
* Creates a tree structured object from the series points
*/
getTree: function() {
var series = this,
allIds = map(this.data, function(d) {
return d.id;
}),
parentList = series.getListOfParents(this.data, allIds);
 
series.nodeMap = [];
return series.buildNode('', -1, 0, parentList, null);
},
init: function(chart, options) {
var series = this;
Series.prototype.init.call(series, chart, options);
if (series.options.allowDrillToNode) {
H.addEvent(series, 'click', series.onClickDrillToNode);
}
},
buildNode: function(id, i, level, list, parent) {
var series = this,
children = [],
point = series.points[i],
node,
child;
 
// Actions
each((list[id] || []), function(i) {
child = series.buildNode(series.points[i].id, i, (level + 1), list, id);
children.push(child);
});
node = {
id: id,
i: i,
children: children,
level: level,
parent: parent,
visible: false // @todo move this to better location
};
series.nodeMap[node.id] = node;
if (point) {
point.node = node;
}
return node;
},
setTreeValues: function(tree) {
var series = this,
options = series.options,
childrenTotal = 0,
children = [],
val,
point = series.points[tree.i];
 
// First give the children some values
each(tree.children, function(child) {
child = series.setTreeValues(child);
children.push(child);
if (!child.ignore) {
childrenTotal += child.val;
}
});
// Sort the children
stableSort(children, function(a, b) {
return a.sortIndex - b.sortIndex;
});
// Set the values
val = pick(point && point.options.value, childrenTotal);
if (point) {
point.value = val;
}
extend(tree, {
children: children,
childrenTotal: childrenTotal,
// Ignore this node if point is not visible
ignore: !(pick(point && point.visible, true) && (val > 0)),
isLeaf: tree.visible && !childrenTotal,
levelDynamic: tree.level - (options.levelIsConstant ? series.nodeMap[series.rootNode].level : 0),
name: pick(point && point.name, ''),
sortIndex: pick(point && point.sortIndex, -val),
val: val
});
return tree;
},
/**
* Recursive function which calculates the area for all children of a node.
* @param {Object} node The node which is parent to the children.
* @param {Object} area The rectangular area of the parent.
*/
calculateChildrenAreas: function(parent, area) {
var series = this,
options = series.options,
level = this.levelMap[parent.levelDynamic + 1],
algorithm = pick((series[level && level.layoutAlgorithm] && level.layoutAlgorithm), options.layoutAlgorithm),
alternate = options.alternateStartingDirection,
childrenValues = [],
children;
 
// Collect all children which should be included
children = grep(parent.children, function(n) {
return !n.ignore;
});
 
if (level && level.layoutStartingDirection) {
area.direction = level.layoutStartingDirection === 'vertical' ? 0 : 1;
}
childrenValues = series[algorithm](area, children);
each(children, function(child, index) {
var values = childrenValues[index];
child.values = merge(values, {
val: child.childrenTotal,
direction: (alternate ? 1 - area.direction : area.direction)
});
child.pointValues = merge(values, {
x: (values.x / series.axisRatio),
width: (values.width / series.axisRatio)
});
// If node has children, then call method recursively
if (child.children.length) {
series.calculateChildrenAreas(child, child.values);
}
});
},
setPointValues: function() {
var series = this,
xAxis = series.xAxis,
yAxis = series.yAxis;
each(series.points, function(point) {
var node = point.node,
values = node.pointValues,
x1,
x2,
y1,
y2,
crispCorr = 0;
 
 
 
// Points which is ignored, have no values.
if (values && node.visible) {
x1 = Math.round(xAxis.translate(values.x, 0, 0, 0, 1)) - crispCorr;
x2 = Math.round(xAxis.translate(values.x + values.width, 0, 0, 0, 1)) - crispCorr;
y1 = Math.round(yAxis.translate(values.y, 0, 0, 0, 1)) - crispCorr;
y2 = Math.round(yAxis.translate(values.y + values.height, 0, 0, 0, 1)) - crispCorr;
// Set point values
point.shapeType = 'rect';
point.shapeArgs = {
x: Math.min(x1, x2),
y: Math.min(y1, y2),
width: Math.abs(x2 - x1),
height: Math.abs(y2 - y1)
};
point.plotX = point.shapeArgs.x + (point.shapeArgs.width / 2);
point.plotY = point.shapeArgs.y + (point.shapeArgs.height / 2);
} else {
// Reset visibility
delete point.plotX;
delete point.plotY;
}
});
},
setColorRecursive: function(node, color, colorIndex) {
var series = this,
point,
level;
if (node) {
point = series.points[node.i];
level = series.levelMap[node.levelDynamic];
// Select either point color, level color or inherited color.
color = pick(
point && point.options.color,
level && level.color,
color,
series.color
);
colorIndex = pick(
point && point.options.colorIndex,
level && level.colorIndex,
colorIndex,
series.colorIndex
);
 
if (point) {
point.color = color;
point.colorIndex = colorIndex;
}
 
// Do it all again with the children
if (node.children.length) {
each(node.children, function(child) {
series.setColorRecursive(child, color, colorIndex);
});
}
}
},
algorithmGroup: function(h, w, d, p) {
this.height = h;
this.width = w;
this.plot = p;
this.direction = d;
this.startDirection = d;
this.total = 0;
this.nW = 0;
this.lW = 0;
this.nH = 0;
this.lH = 0;
this.elArr = [];
this.lP = {
total: 0,
lH: 0,
nH: 0,
lW: 0,
nW: 0,
nR: 0,
lR: 0,
aspectRatio: function(w, h) {
return Math.max((w / h), (h / w));
}
};
this.addElement = function(el) {
this.lP.total = this.elArr[this.elArr.length - 1];
this.total = this.total + el;
if (this.direction === 0) {
// Calculate last point old aspect ratio
this.lW = this.nW;
this.lP.lH = this.lP.total / this.lW;
this.lP.lR = this.lP.aspectRatio(this.lW, this.lP.lH);
// Calculate last point new aspect ratio
this.nW = this.total / this.height;
this.lP.nH = this.lP.total / this.nW;
this.lP.nR = this.lP.aspectRatio(this.nW, this.lP.nH);
} else {
// Calculate last point old aspect ratio
this.lH = this.nH;
this.lP.lW = this.lP.total / this.lH;
this.lP.lR = this.lP.aspectRatio(this.lP.lW, this.lH);
// Calculate last point new aspect ratio
this.nH = this.total / this.width;
this.lP.nW = this.lP.total / this.nH;
this.lP.nR = this.lP.aspectRatio(this.lP.nW, this.nH);
}
this.elArr.push(el);
};
this.reset = function() {
this.nW = 0;
this.lW = 0;
this.elArr = [];
this.total = 0;
};
},
algorithmCalcPoints: function(directionChange, last, group, childrenArea) {
var pX,
pY,
pW,
pH,
gW = group.lW,
gH = group.lH,
plot = group.plot,
keep,
i = 0,
end = group.elArr.length - 1;
if (last) {
gW = group.nW;
gH = group.nH;
} else {
keep = group.elArr[group.elArr.length - 1];
}
each(group.elArr, function(p) {
if (last || (i < end)) {
if (group.direction === 0) {
pX = plot.x;
pY = plot.y;
pW = gW;
pH = p / pW;
} else {
pX = plot.x;
pY = plot.y;
pH = gH;
pW = p / pH;
}
childrenArea.push({
x: pX,
y: pY,
width: pW,
height: pH
});
if (group.direction === 0) {
plot.y = plot.y + pH;
} else {
plot.x = plot.x + pW;
}
}
i = i + 1;
});
// Reset variables
group.reset();
if (group.direction === 0) {
group.width = group.width - gW;
} else {
group.height = group.height - gH;
}
plot.y = plot.parent.y + (plot.parent.height - group.height);
plot.x = plot.parent.x + (plot.parent.width - group.width);
if (directionChange) {
group.direction = 1 - group.direction;
}
// If not last, then add uncalculated element
if (!last) {
group.addElement(keep);
}
},
algorithmLowAspectRatio: function(directionChange, parent, children) {
var childrenArea = [],
series = this,
pTot,
plot = {
x: parent.x,
y: parent.y,
parent: parent
},
direction = parent.direction,
i = 0,
end = children.length - 1,
group = new this.algorithmGroup(parent.height, parent.width, direction, plot); // eslint-disable-line new-cap
// Loop through and calculate all areas
each(children, function(child) {
pTot = (parent.width * parent.height) * (child.val / parent.val);
group.addElement(pTot);
if (group.lP.nR > group.lP.lR) {
series.algorithmCalcPoints(directionChange, false, group, childrenArea, plot);
}
// If last child, then calculate all remaining areas
if (i === end) {
series.algorithmCalcPoints(directionChange, true, group, childrenArea, plot);
}
i = i + 1;
});
return childrenArea;
},
algorithmFill: function(directionChange, parent, children) {
var childrenArea = [],
pTot,
direction = parent.direction,
x = parent.x,
y = parent.y,
width = parent.width,
height = parent.height,
pX,
pY,
pW,
pH;
each(children, function(child) {
pTot = (parent.width * parent.height) * (child.val / parent.val);
pX = x;
pY = y;
if (direction === 0) {
pH = height;
pW = pTot / pH;
width = width - pW;
x = x + pW;
} else {
pW = width;
pH = pTot / pW;
height = height - pH;
y = y + pH;
}
childrenArea.push({
x: pX,
y: pY,
width: pW,
height: pH
});
if (directionChange) {
direction = 1 - direction;
}
});
return childrenArea;
},
strip: function(parent, children) {
return this.algorithmLowAspectRatio(false, parent, children);
},
squarified: function(parent, children) {
return this.algorithmLowAspectRatio(true, parent, children);
},
sliceAndDice: function(parent, children) {
return this.algorithmFill(true, parent, children);
},
stripes: function(parent, children) {
return this.algorithmFill(false, parent, children);
},
translate: function() {
var series = this,
rootId = series.rootNode = pick(series.rootNode, series.options.rootId, ''),
rootNode,
pointValues,
seriesArea,
tree,
val;
 
// Call prototype function
Series.prototype.translate.call(series);
// Create a object map from level to options
series.levelMap = reduce(series.options.levels, function(arr, item) {
arr[item.level] = item;
return arr;
}, {});
tree = series.tree = series.getTree(); // @todo Only if series.isDirtyData is true
rootNode = series.nodeMap[rootId];
if (
rootId !== '' &&
(!rootNode || !rootNode.children.length)
) {
series.drillToNode('', false);
rootId = series.rootNode;
rootNode = series.nodeMap[rootId];
}
// Parents of the root node is by default visible
recursive(series.nodeMap[series.rootNode], function(node) {
var next = false,
p = node.parent;
node.visible = true;
if (p || p === '') {
next = series.nodeMap[p];
}
return next;
});
// Children of the root node is by default visible
recursive(series.nodeMap[series.rootNode].children, function(children) {
var next = false;
each(children, function(child) {
child.visible = true;
if (child.children.length) {
next = (next || []).concat(child.children);
}
});
return next;
});
series.setTreeValues(tree);
 
// Calculate plotting values.
series.axisRatio = (series.xAxis.len / series.yAxis.len);
series.nodeMap[''].pointValues = pointValues = {
x: 0,
y: 0,
width: 100,
height: 100
};
series.nodeMap[''].values = seriesArea = merge(pointValues, {
width: (pointValues.width * series.axisRatio),
direction: (series.options.layoutStartingDirection === 'vertical' ? 0 : 1),
val: tree.val
});
series.calculateChildrenAreas(tree, seriesArea);
 
// Logic for point colors
if (series.colorAxis) {
series.translateColors();
} else if (!series.options.colorByPoint) {
series.setColorRecursive(series.tree);
}
 
// Update axis extremes according to the root node.
if (series.options.allowDrillToNode) {
val = rootNode.pointValues;
series.xAxis.setExtremes(val.x, val.x + val.width, false);
series.yAxis.setExtremes(val.y, val.y + val.height, false);
series.xAxis.setScale();
series.yAxis.setScale();
}
 
// Assign values to points.
series.setPointValues();
},
/**
* Extend drawDataLabels with logic to handle custom options related to the treemap series:
* - Points which is not a leaf node, has dataLabels disabled by default.
* - Options set on series.levels is merged in.
* - Width of the dataLabel is set to match the width of the point shape.
*/
drawDataLabels: function() {
var series = this,
points = grep(series.points, function(n) {
return n.node.visible;
}),
options,
level;
each(points, function(point) {
level = series.levelMap[point.node.levelDynamic];
// Set options to new object to avoid problems with scope
options = {
style: {}
};
 
// If not a leaf, then label should be disabled as default
if (!point.node.isLeaf) {
options.enabled = false;
}
 
// If options for level exists, include them as well
if (level && level.dataLabels) {
options = merge(options, level.dataLabels);
series._hasPointLabels = true;
}
 
// Set dataLabel width to the width of the point shape.
if (point.shapeArgs) {
options.style.width = point.shapeArgs.width;
if (point.dataLabel) {
point.dataLabel.css({
width: point.shapeArgs.width + 'px'
});
}
}
 
// Merge custom options with point options
point.dlOptions = merge(options, point.options.dataLabels);
});
Series.prototype.drawDataLabels.call(this);
},
 
/**
* Over the alignment method by setting z index
*/
alignDataLabel: function(point) {
seriesTypes.column.prototype.alignDataLabel.apply(this, arguments);
if (point.dataLabel) {
// point.node.zIndex could be undefined (#6956)
point.dataLabel.attr({
zIndex: (point.node.zIndex || 0) + 1
});
}
},
 
 
 
/**
* Extending ColumnSeries drawPoints
*/
drawPoints: function() {
var series = this,
points = grep(series.points, function(n) {
return n.node.visible;
});
 
each(points, function(point) {
var groupKey = 'levelGroup-' + point.node.levelDynamic;
if (!series[groupKey]) {
series[groupKey] = series.chart.renderer.g(groupKey)
.attr({
zIndex: 1000 - point.node.levelDynamic // @todo Set the zIndex based upon the number of levels, instead of using 1000
})
.add(series.group);
}
point.group = series[groupKey];
 
});
// Call standard drawPoints
seriesTypes.column.prototype.drawPoints.call(this);
 
// If drillToNode is allowed, set a point cursor on clickables & add drillId to point
if (series.options.allowDrillToNode) {
each(points, function(point) {
if (point.graphic) {
point.drillId = series.options.interactByLeaf ? series.drillToByLeaf(point) : series.drillToByGroup(point);
}
});
}
},
/**
* Add drilling on the suitable points
*/
onClickDrillToNode: function(event) {
var series = this,
point = event.point,
drillId = point && point.drillId;
// If a drill id is returned, add click event and cursor.
if (isString(drillId)) {
point.setState(''); // Remove hover
series.drillToNode(drillId);
}
},
/**
* Finds the drill id for a parent node.
* Returns false if point should not have a click event
* @param {Object} point
* @return {String|Boolean} Drill to id or false when point should not have a click event
*/
drillToByGroup: function(point) {
var series = this,
drillId = false;
if ((point.node.level - series.nodeMap[series.rootNode].level) === 1 && !point.node.isLeaf) {
drillId = point.id;
}
return drillId;
},
/**
* Finds the drill id for a leaf node.
* Returns false if point should not have a click event
* @param {Object} point
* @return {String|Boolean} Drill to id or false when point should not have a click event
*/
drillToByLeaf: function(point) {
var series = this,
drillId = false,
nodeParent;
if ((point.node.parent !== series.rootNode) && (point.node.isLeaf)) {
nodeParent = point.node;
while (!drillId) {
nodeParent = series.nodeMap[nodeParent.parent];
if (nodeParent.parent === series.rootNode) {
drillId = nodeParent.id;
}
}
}
return drillId;
},
drillUp: function() {
var series = this,
node = series.nodeMap[series.rootNode];
if (node && isString(node.parent)) {
series.drillToNode(node.parent);
}
},
drillToNode: function(id, redraw) {
var series = this,
nodeMap = series.nodeMap,
node = nodeMap[id];
series.rootNode = id;
if (id === '') {
series.drillUpButton = series.drillUpButton.destroy();
} else {
series.showDrillUpButton((node && node.name || id));
}
this.isDirty = true; // Force redraw
if (pick(redraw, true)) {
this.chart.redraw();
}
},
showDrillUpButton: function(name) {
var series = this,
backText = (name || '< Back'),
buttonOptions = series.options.drillUpButton,
attr,
states;
 
if (buttonOptions.text) {
backText = buttonOptions.text;
}
if (!this.drillUpButton) {
attr = buttonOptions.theme;
states = attr && attr.states;
 
this.drillUpButton = this.chart.renderer.button(
backText,
null,
null,
function() {
series.drillUp();
},
attr,
states && states.hover,
states && states.select
)
.attr({
align: buttonOptions.position.align,
zIndex: 7
})
.add()
.align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox');
} else {
this.drillUpButton.attr({
text: backText
})
.align();
}
},
buildKDTree: noop,
drawLegendSymbol: H.LegendSymbolMixin.drawRectangle,
getExtremes: function() {
// Get the extremes from the value data
Series.prototype.getExtremes.call(this, this.colorValueData);
this.valueMin = this.dataMin;
this.valueMax = this.dataMax;
 
// Get the extremes from the y data
Series.prototype.getExtremes.call(this);
},
getExtremesFromAll: true,
bindAxes: function() {
var treeAxis = {
endOnTick: false,
gridLineWidth: 0,
lineWidth: 0,
min: 0,
dataMin: 0,
minPadding: 0,
max: 100,
dataMax: 100,
maxPadding: 0,
startOnTick: false,
title: null,
tickPositions: []
};
Series.prototype.bindAxes.call(this);
H.extend(this.yAxis.options, treeAxis);
H.extend(this.xAxis.options, treeAxis);
}
 
// Point class
}, {
getClassName: function() {
var className = H.Point.prototype.getClassName.call(this),
series = this.series,
options = series.options;
 
// Above the current level
if (this.node.level <= series.nodeMap[series.rootNode].level) {
className += ' highcharts-above-level';
 
} else if (!this.node.isLeaf && !pick(options.interactByLeaf, !options.allowDrillToNode)) {
className += ' highcharts-internal-node-interactive';
 
} else if (!this.node.isLeaf) {
className += ' highcharts-internal-node';
}
return className;
},
isValid: function() {
return isNumber(this.value);
},
setState: function(state) {
H.Point.prototype.setState.call(this, state);
 
// Graphic does not exist when point is not visible.
if (this.graphic) {
this.graphic.attr({
zIndex: state === 'hover' ? 1 : 0
});
}
},
setVisible: seriesTypes.pie.prototype.pointClass.prototype.setVisible
});
 
}(Highcharts));
}));
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/xrange-series.js
@@ -0,0 +1,15 @@
/*
Highcharts JS v5.0.14 (2017-07-28)
X-range series
 
(c) 2010-2017 Torstein Honsi, Lars A. V. Cabrera
 
--- WORK IN PROGRESS ---
 
License: www.highcharts.com/license
*/
(function(g){"object"===typeof module&&module.exports?module.exports=g:g(Highcharts)})(function(g){(function(d){var g=d.getOptions().plotOptions,m=d.seriesTypes.column,k=d.each,p=d.extendClass,q=d.isNumber,v=d.isObject,n=d.merge,r=d.pick,t=d.seriesTypes,w=d.wrap,x=d.Axis,u=d.Point,y=d.Series;g.xrange=n(g.column,{tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.yCategory}\x3c/b\x3e\x3cbr/\x3e'}});t.xrange=p(m,{pointClass:p(u,{getLabelConfig:function(){var f=
u.prototype.getLabelConfig.call(this);f.x2=this.x2;f.yCategory=this.yCategory=this.series.yAxis.categories&&this.series.yAxis.categories[this.y];return f}}),type:"xrange",forceDL:!0,parallelArrays:["x","x2","y"],requireSorting:!1,animate:t.line.prototype.animate,getColumnMetrics:function(){function f(){k(h.series,function(b){var a=b.xAxis;b.xAxis=b.yAxis;b.yAxis=a})}var e,h=this.chart;f();this.yAxis.closestPointRange=1;e=m.prototype.getColumnMetrics.call(this);f();return e},cropData:function(f,e,
h,b){e=y.prototype.cropData.call(this,this.x2Data,e,h,b);e.xData=f.slice(e.start,e.end);return e},translate:function(){m.prototype.translate.apply(this,arguments);var f=this.xAxis,e=this.columnMetrics,h=this.options.minPointLength||0;k(this.points,function(b){var a=b.plotX,c=r(b.x2,b.x+(b.len||0)),c=f.toPixels(c,!0),d=c-a,l;h&&(l=h-d,0>l&&(l=0),a-=l/2,c+=l/2);a=Math.max(a,-10);c=Math.min(Math.max(c,-10),f.len+10);c<a&&(c=a);b.shapeArgs={x:a,y:b.plotY+e.offset,width:c-a,height:e.width};b.tooltipPos[0]+=
d/2;b.tooltipPos[1]-=e.width/2;if(c=b.partialFill)v(c)&&(c=c.amount),q(c)||(c=0),a=b.shapeArgs,b.partShapeArgs={x:a.x,y:a.y+1,width:a.width*c,height:a.height-2}})},drawPoints:function(){var f=this,e=this.chart,d=e.renderer,b=e.pointCount<(f.options.animationLimit||250)?"animate":"attr";k(f.points,function(a){var c=a.graphic,e=a.shapeType,h=a.shapeArgs,g=a.partShapeArgs;if(q(a.plotY)&&null!==a.y)if(c){if(a.graphicOriginal[b](n(h)),g)a.graphicOverlay[b](n(g))}else a.graphic=c=d.g("point").attr({"class":a.getClassName()}).add(a.group||
f.group),a.graphicOriginal=d[e](h).addClass("highcharts-partfill-original").add(c),g&&(a.graphicOverlay=d[e](g).addClass("highcharts-partfill-overlay").add(c));else c&&(a.graphic=c.destroy())})}});w(x.prototype,"getSeriesExtremes",function(d){var e=this.series,f,b;d.call(this);this.isXAxis&&"xrange"===e.type&&(f=r(this.dataMax,Number.MIN_VALUE),k(this.series,function(a){k(a.x2Data||[],function(a){a>f&&(f=a,b=!0)})}),b&&(this.dataMax=f))})})(g)});
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/xrange-series.js.map
@@ -0,0 +1,8 @@
{
"version":3,
"file":"",
"lineCount":15,
"mappings":"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",
"sources":["Input_0"],
"names":["factory","module","exports","Highcharts","H","defaultPlotOptions","getOptions","plotOptions","columnType","seriesTypes","column","each","extendClass","isNumber","isObject","merge","pick","wrap","Axis","Point","Series","xrange","tooltip","pointFormat","pointClass","getLabelConfig","cfg","prototype","call","x2","yCategory","series","yAxis","categories","y","type","forceDL","parallelArrays","requireSorting","animate","line","getColumnMetrics","swapAxes","chart","s","xAxis","metrics","closestPointRange","cropData","xData","yData","min","max","crop","x2Data","slice","start","end","translate","apply","arguments","columnMetrics","minPointLength","options","points","point","plotX","posX","x","len","plotX2","toPixels","width","widthDifference","Math","shapeArgs","plotY","offset","height","tooltipPos","partialFill","amount","partShapeArgs","drawPoints","renderer","verb","pointCount","animationLimit","graphic","shapeType","graphicOriginal","graphicOverlay","g","attr","getClassName","add","group","addClass","destroy","proceed","axis","dataMax","modMax","isXAxis","Number","MIN_VALUE","val"]
}
/doctor/004_doctor/doctor/node_modules/highcharts/js/modules/xrange-series.src.js
@@ -0,0 +1,258 @@
/**
* @license Highcharts JS v5.0.14 (2017-07-28)
* X-range series
*
* (c) 2010-2017 Torstein Honsi, Lars A. V. Cabrera
*
* --- WORK IN PROGRESS ---
*
* License: www.highcharts.com/license
*/
'use strict';
(function(factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function(Highcharts) {
(function(H) {
/**
* (c) 2014-2017 Highsoft AS
* Authors: Torstein Honsi, Lars A. V. Cabrera
*
* License: www.highcharts.com/license
*/
 
var defaultPlotOptions = H.getOptions().plotOptions,
color = H.Color,
columnType = H.seriesTypes.column,
each = H.each,
extendClass = H.extendClass,
isNumber = H.isNumber,
isObject = H.isObject,
merge = H.merge,
pick = H.pick,
seriesTypes = H.seriesTypes,
wrap = H.wrap,
Axis = H.Axis,
Point = H.Point,
Series = H.Series,
pointFormat = '<span style="color:{point.color}">' +
'\u25CF' +
'</span> {series.name}: <b>{point.yCategory}</b><br/>',
xrange = 'xrange';
 
defaultPlotOptions.xrange = merge(defaultPlotOptions.column, {
tooltip: {
pointFormat: pointFormat
}
});
seriesTypes.xrange = extendClass(columnType, {
pointClass: extendClass(Point, {
// Add x2 and yCategory to the available properties for tooltip formats
getLabelConfig: function() {
var cfg = Point.prototype.getLabelConfig.call(this);
 
cfg.x2 = this.x2;
cfg.yCategory = this.yCategory = this.series.yAxis.categories && this.series.yAxis.categories[this.y];
return cfg;
}
}),
type: xrange,
forceDL: true,
parallelArrays: ['x', 'x2', 'y'],
requireSorting: false,
animate: seriesTypes.line.prototype.animate,
 
/**
* Borrow the column series metrics, but with swapped axes. This gives free access
* to features like groupPadding, grouping, pointWidth etc.
*/
getColumnMetrics: function() {
var metrics,
chart = this.chart;
 
function swapAxes() {
each(chart.series, function(s) {
var xAxis = s.xAxis;
s.xAxis = s.yAxis;
s.yAxis = xAxis;
});
}
 
swapAxes();
 
this.yAxis.closestPointRange = 1;
metrics = columnType.prototype.getColumnMetrics.call(this);
 
swapAxes();
 
return metrics;
},
 
/**
* Override cropData to show a point where x is outside visible range
* but x2 is outside.
*/
cropData: function(xData, yData, min, max) {
 
// Replace xData with x2Data to find the appropriate cropStart
var cropData = Series.prototype.cropData,
crop = cropData.call(this, this.x2Data, yData, min, max);
 
// Re-insert the cropped xData
crop.xData = xData.slice(crop.start, crop.end);
 
return crop;
},
 
translate: function() {
columnType.prototype.translate.apply(this, arguments);
var series = this,
xAxis = series.xAxis,
metrics = series.columnMetrics,
minPointLength = series.options.minPointLength || 0;
 
each(series.points, function(point) {
var plotX = point.plotX,
posX = pick(point.x2, point.x + (point.len || 0)),
plotX2 = xAxis.toPixels(posX, true),
width = plotX2 - plotX,
widthDifference,
shapeArgs,
partialFill;
 
if (minPointLength) {
widthDifference = minPointLength - width;
if (widthDifference < 0) {
widthDifference = 0;
}
plotX -= widthDifference / 2;
plotX2 += widthDifference / 2;
}
 
plotX = Math.max(plotX, -10);
plotX2 = Math.min(Math.max(plotX2, -10), xAxis.len + 10);
 
if (plotX2 < plotX) { // #6107
plotX2 = plotX;
}
 
point.shapeArgs = {
x: plotX,
y: point.plotY + metrics.offset,
width: plotX2 - plotX,
height: metrics.width
};
point.tooltipPos[0] += width / 2;
point.tooltipPos[1] -= metrics.width / 2;
 
// Add a partShapeArgs to the point, based on the shapeArgs property
partialFill = point.partialFill;
if (partialFill) {
// Get the partial fill amount
if (isObject(partialFill)) {
partialFill = partialFill.amount;
}
// If it was not a number, assume 0
if (!isNumber(partialFill)) {
partialFill = 0;
}
shapeArgs = point.shapeArgs;
point.partShapeArgs = {
x: shapeArgs.x,
y: shapeArgs.y + 1,
width: shapeArgs.width * partialFill,
height: shapeArgs.height - 2
};
}
});
},
 
drawPoints: function() {
var series = this,
chart = this.chart,
options = series.options,
renderer = chart.renderer,
animationLimit = options.animationLimit || 250,
verb = chart.pointCount < animationLimit ? 'animate' : 'attr';
 
// draw the columns
each(series.points, function(point) {
var plotY = point.plotY,
graphic = point.graphic,
type = point.shapeType,
shapeArgs = point.shapeArgs,
partShapeArgs = point.partShapeArgs,
seriesOpts = series.options,
pfOptions = point.partialFill,
fill,
state = point.selected && 'select',
cutOff = options.stacking && !options.borderRadius;
 
if (isNumber(plotY) && point.y !== null) {
if (graphic) { // update
point.graphicOriginal[verb](
merge(shapeArgs)
);
if (partShapeArgs) {
point.graphicOverlay[verb](
merge(partShapeArgs)
);
}
 
} else {
point.graphic = graphic = renderer.g('point')
.attr({
'class': point.getClassName()
})
.add(point.group || series.group);
 
point.graphicOriginal = renderer[type](shapeArgs)
.addClass('highcharts-partfill-original')
.add(graphic);
if (partShapeArgs) {
point.graphicOverlay = renderer[type](partShapeArgs)
.addClass('highcharts-partfill-overlay')
.add(graphic);
}
}
 
 
 
} else if (graphic) {
point.graphic = graphic.destroy(); // #1269
}
});
}
});
 
/**
* Max x2 should be considered in xAxis extremes
*/
wrap(Axis.prototype, 'getSeriesExtremes', function(proceed) {
var axis = this,
series = axis.series,
dataMax,
modMax;
 
proceed.call(this);
if (axis.isXAxis && series.type === xrange) {
dataMax = pick(axis.dataMax, Number.MIN_VALUE);
each(this.series, function(series) {
each(series.x2Data || [], function(val) {
if (val > dataMax) {
dataMax = val;
modMax = true;
}
});
});
if (modMax) {
axis.dataMax = dataMax;
}
}
});
 
}(Highcharts));
}));