corrade-nucleus-nucleons
/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, '&') |
.replace(/</g, '<') |
.replace(/>/g, '>') |
.replace(/"/g, '"') |
.replace(/'/g, ''') |
.replace(/\//g, '/'); |
} |
// 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":"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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"] |
} |
/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\(("|")(\S+)("|")\)/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(/ /g,"\u00a0").replace(/­/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\(("|")(\S+)("|")\)/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(/ /g, '\u00A0') // no-break space |
.replace(/­/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); |
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<') |
.replace(/>/g, '>'); |
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":"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,IAQLC,EAAaD,CAAAC,WARR,CASLC,EAAOF,CAAAE,KATF,CAULC,EAAWH,CAAAG,SAVN,CAWLC,EAAOJ,CAAAI,KAXF,CAYLC,EAAOL,CAAAK,KAZF,CAaLC,EAAON,CAAAM,KAbF,CAcLC,EAAQP,CAAAO,MAdH,CAeLC,EAAOR,CAAAQ,KA4BXF,EAAAG,UAAAC,YAAA,CAA6BC,QAAQ,EAAG,CAAA,IAChCC,EAAO,IADyB,CAEhCC,EAAa,EAFmB,CAGhCC,EAAU,CAAA,CAEdZ,EAAA,CAAK,IAAAa,MAAAC,KAAL,CAAsB,QAAQ,CAACC,CAAD,CAAYC,CAAZ,CAAmB,CACzCD,CAAAE,KAAJ,GAAuBP,CAAAO,KAAvB,GACQF,CAAJ,GAAkBL,CAAlB,CAEIC,CAFJ,CAEgBK,CAFhB,CAMwB,CANxB,EAMWL,CANX,EAM6BK,CAN7B,CAMqCL,CANrC,GASIC,CATJ,CASc,CAAA,CATd,CADJ,CAD6C,CAAjD,CAkBA,OAAOA,EAvB6B,CA+BxCN,EAAAC,UAAAW,cAAA,CAA+BC,QAAQ,EAAG,CACtC,MAAO,KAAAC,MAAAC,QAAA,EAAAC,MAD+B,CAa1ClB,EAAAG,UAAAgB,kBAAA,CAAmCC,QAAQ,CAACC,CAAD,CAAQ,CAAA,IAC3CC,EAAgB,IAAAA,cAD2B,CAE3CC,EAAQ,IAAAA,MAFmC,CAG3CC,EAAiB,CAErB;GAAKA,CAAA,IAAAA,eAAL,EAA4BH,CAA5B,CACIzB,CAAA,CAAK0B,CAAL,CAAoB,QAAQ,CAACG,CAAD,CAAO,CAE/B,CADAA,CACA,CADOF,CAAA,CAAME,CAAN,CACP,GAAYA,CAAAC,YAAZ,CAA+BF,CAA/B,GACIA,CADJ,CACqBC,CAAAC,YADrB,CAF+B,CAAnC,CAMA,CAAA,IAAAF,eAAA,CAAsBA,CAE1B,OAAO,KAAAA,eAdwC,CAoBnDxB,EAAAG,UAAAwB,SAAA,CAA0BC,QAAQ,EAAG,CAAA,IAE7BC,EADOvB,IACIG,MAAAoB,SAFkB,CAG7BC,EAFOxB,IAEMwB,WAHgB,CAI7BC,EAHOzB,IAGCyB,MAJqB,CAK7BC,EAJO1B,IAII0B,SALkB,CAM7BC,EALO3B,IAKG2B,QANmB,CAO7BC,EAAmBD,CAAAE,MAPU,CAS7BC,CARO9B,KAaX8B,SAAA,CAAgBA,CAAhB,CAbW9B,IAYD+B,QAAAA,EACV,EAAsCvC,CAAA,CAAKmC,CAAAK,UAAL,CAAwB,CAAA,CAAxB,CAGtCL,EAAAE,MAAA,CAAgB,EAhBL7B,KAkBNiC,UAAL,GA6BI,CA5BAC,CA4BA,CA5BYN,CAAAM,UA4BZ,IA1BIA,CA0BJ,CA1BgB,CAACT,CAAA,CAAQ,CACjBU,IAAK,MADY,CAEjBC,OAAQ,QAFS,CAGjBC,KAAM,OAHW,CAAR,CAIT,CACAF,IAAKT,CAAA,CAAW,OAAX,CAAqB,MAD1B,CAEAU,OAAQ,QAFR,CAGAC,KAAMX,CAAA,CAAW,MAAX,CAAoB,OAH1B,CAJQ,EAQTE,CAAAU,MARS,CA0BhB,EA/COtC,IA+BPiC,UAgBA;AAhBiBV,CAAAgB,KAAA,CACTX,CAAAW,KADS,CAET,CAFS,CAGT,CAHS,CAITX,CAAAY,QAJS,CAAAC,KAAA,CAMP,CACFC,OAAQ,CADN,CAEFC,SAAUf,CAAAe,SAAVA,EAAuC,CAFrC,CAGFL,MAAOJ,CAHL,CANO,CAAAU,SAAA,CAWH,uBAXG,CAAAC,IAAA,CAeRrB,CAfQ,CAgBjB,CA/COxB,IA+CPiC,UAAAa,MAAA,CAAuB,CAAA,CA7B3B,CAlBW9C,KAoDXiC,UAAA,CAAeH,CAAA,CAAW,MAAX,CAAoB,MAAnC,CAAA,CAA2C,CAAA,CAA3C,CArDiC,CA2DrC1C,EAAA2D,YAAA,CAAgB,CAEZC,EAAGA,QAAQ,CAACC,CAAD,CAAY,CACfC,CAAAA,CAAO,IAAIC,IAAJ,CAASF,CAAT,CADQ,KAEfG,EAA2B,CAArB,GAAAF,CAAAG,UAAA,EAAA,CAAyB,CAAzB,CAA6BH,CAAAG,UAAA,EAFpB,CAGfC,EAAOJ,CAAAK,QAAA,EAHQ,CAIfC,EAAc,IAAIL,IAAJ,CAASD,CAAAO,eAAA,EAAT,CAAgC,CAAhC,CAAmC,CAAnC,CAAuC,EAAvC,CAElBP,EAAAQ,QAAA,CAAaR,CAAAS,WAAA,EAAb,CAAiC,CAAjC,CAAqCP,CAArC,CAEA,OAAO,EAAP,CAAWQ,IAAAC,MAAA,CADCD,IAAAC,MAAAC,EAAYR,CAAZQ,CAAmBN,CAAnBM,EAAkC,KAAlCA,CACD,CAAuB,CAAvB,CARQ,CAFX,CAaZC,EAAGA,QAAQ,CAACd,CAAD,CAAY,CACnB,MAAO5D,EAAA,CAAW,IAAX,CAAiB4D,CAAjB,CAA4B,CAAA,CAA5B,CAAAe,OAAA,CAAyC,CAAzC,CADY,CAbX,CA2BhBvE,EAAA,CAAKG,CAAAC,UAAL,CAAqB,UAArB,CAAiC,QAAQ,CAACoE,CAAD,CAAU,CAAA,IAC3CjE,EAAO,IAAAA,KADoC,CAE3CkE,EAA6CC,IAAAA,EAA7CD;AAAiBlE,CAAA2B,QAAAyC,WAF0B,CAG3CpD,EAAgBhB,CAAAgB,cAH2B,CAK3CqD,EAAa,IAAAC,IAAbD,GADWrD,CAAAuD,CAAcvD,CAAAwD,OAAdD,CAAqC,CAArCA,CAGf,EAAKE,CAAAzE,CAAA2B,QAAA8C,KAAL,EAA0BP,CAA1B,EAA4CG,CAA5C,GACIJ,CAAAS,MAAA,CAAc,IAAd,CAR2C,CAAnD,CAoBAjF,EAAA,CAAKG,CAAAC,UAAL,CAAqB,kBAArB,CAAyC,QAAQ,CAACoE,CAAD,CAAUU,CAAV,CAAaC,CAAb,CAAgBlE,CAAhB,CAAuB,CAAA,IAChEmE,EAASZ,CAAAS,MAAA,CAAc,IAAd,CAAoBI,KAAAjF,UAAAkF,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CADuD,CAEhEjF,EAAO,IAAAA,KAFyD,CAGhE2B,EAAU3B,CAAA2B,QAHsD,CAIhEuD,EAAevD,CAAAuD,aAAfA,EAAuC,CAJyB,CAQhEC,CARgE,CAShEC,CAMAzD,EAAA8C,KAAJ,GACIU,CAKA,CALWxD,CAAA0D,OAAAC,MAAAH,SAKX,CAJAC,CAIA,CAJepF,CAAAG,MAAAoB,SAAAgE,YAAA,CAAgCJ,CAAhC,CAA0CzE,CAA1C,CAIf,CAHA8E,CAGA,CAHOJ,CAAAK,EAGP,CAFAC,CAEA,CAFON,CAAAO,EAEP,CAAI3F,CAAAyB,MAAJ,EAAyC0C,IAAAA,EAAzC,GAAkBxC,CAAAyC,WAAlB,EAEIwB,CAOI,CAPS5F,CAAA6F,UAAAlF,QAAA,EAAAmF,OAOT,CANJC,CAMI,CANK,IAAAzB,IAML,CANgBY,CAMhB,CAN+B,CAM/B,CALJL,CAAAF,EAKI,CALO3E,CAAAgG,UAAA,CAAeD,CAAf,CAKP,CALgC/F,CAAAiG,KAKhC,CAJJC,CAII,CAJWN,CAIX,CAJwB,CAIxB,CAJ8BF,CAI9B,CAJqC,CAIrC,CAJ0C9B,IAAAuC,IAAA,CAAST,CAAT,CAAgBF,CAAhB,CAI1C,CAAAX,CAAAD,EAAA,CA9NPwB,CA6NG,GAAIpG,CAAAO,KAAJ,CACeqE,CADf,CACmBsB,CADnB,CAGetB,CAHf,CAGmBsB,CAXvB;CAe+B/B,IAAAA,EAQvB,GARAxC,CAAAyC,WAQA,GAPA2B,CACA,CADS,IAAAzB,IACT,CADqBY,CACrB,CADoC,CACpC,CAAAL,CAAAD,EAAA,CAAW5E,CAAAgG,UAAA,CAAeD,CAAf,CAAX,CAAoC/F,CAAAoG,IAApC,CAAgDZ,CAAhD,CAAuD,CAMvD,EAFJa,CAEI,CAFI,IAAA7F,cAAA,EAEJ,CAF2B,CAE3B,CAFiCR,CAAAkB,eAEjC,CAFuD,CAEvD,CAAA2D,CAAAF,EAAA,CAzONsB,CAwOE,GAAIjG,CAAAO,KAAJ,CACIsE,CAAAF,EADJ,CACgB0B,CADhB,CAGIxB,CAAAF,EAHJ,CAGgB0B,CAzBpB,CANJ,CAmCA,OAAOxB,EAlD6D,CAAxE,CA6DApF,EAAA,CAAKC,CAAAG,UAAL,CAAqB,UAArB,CAAiC,QAAQ,CAACoE,CAAD,CAAU,CAAA,IAE3CY,EAASZ,CAAAS,MAAA,CADF1E,IACE,CAAoB8E,KAAAjF,UAAAkF,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAFkC,CAG3CqB,CAFOtG,KAKP2B,QAAA8C,KAAJ,EAA0BhD,CALfzB,IAKeyB,MAA1B,GACI6E,CAMA,CANiE,CAMjE,CANgB1C,IAAAuC,IAAA,CANTnG,IAMkBuG,uBAAAlB,OAAAV,EAAT,CAMhB,CAZO3E,IAOFkB,eAKL,GAZOlB,IAQHkB,eAIJ,CAZOlB,IAQmBa,kBAAA,EAI1B,EAFA2F,CAEA,CAZOxG,IAUIkB,eAEX,CAFiCoF,CAEjC,CAAAzB,CAAA,CAAO,CAAP,CAAA,CAAY2B,CAPhB,CASA,OAAO3B,EAfwC,CAAnD,CAyBApF,EAAA,CAAKC,CAAAG,UAAL,CAAqB,WAArB,CAAkC,QAAQ,CAACoE,CAAD,CAAU,CAAA,IAE5CwC,EADOzG,IACMG,MAAAsG,WAF+B;AAG5ClG,EAFOP,IAEAO,KAHqC,CAI5CqF,CAJ4C,CAK5Cc,CAL4C,CAM5C/E,EALO3B,IAKG2B,QANkC,CAO5CC,EAAmBD,CAAAE,MAPyB,CAQ5CR,EAAWO,CAAXP,EACAO,CAAAW,KADAlB,EAE6B,CAAA,CAF7BA,GAEAO,CAAA+E,QATO3G,KAWP2B,QAAA8C,KAAJ,EAAyBlF,CAAA,CAXdS,IAWuB2B,QAAAE,MAAT,CAAzB,EAEI6E,CAiBA,CA9BO1G,IAaI0G,SAAA,CAAc,MAAd,CAAA,CAAsB,CAAtB,CAiBX,CAhBID,CAAA,CAAWlG,CAAX,CAgBJ,EAhBwBmG,CAgBxB,GAfId,CAeJ,CAfiBa,CAAA,CAAWlG,CAAX,CAejB,CAfoCmG,CAepC,EAZIrF,CAYJ,EA9BOrB,IAqBHqB,SAAA,EASJ,CANA4C,CAAAS,MAAA,CAxBO1E,IAwBP,CAAoB8E,KAAAjF,UAAAkF,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAMA,CAJAwB,CAAA,CAAWlG,CAAX,CAIA,CAJmBf,CAAA,CAAKoG,CAAL,CAAiBa,CAAA,CAAWlG,CAAX,CAAjB,CAInB,CAAAoB,CAAAE,MAAA,CAAgBD,CAnBpB,EAsBIqC,CAAAS,MAAA,CAjCO1E,IAiCP,CAAoB8E,KAAAjF,UAAAkF,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAlC4C,CAApD,CA4CAxF,EAAA,CAAKC,CAAAG,UAAL,CAAqB,gBAArB,CAAuC,QAAQ,CAACoE,CAAD,CAAU,CACjD,IAAAtC,QAAA8C,KAAJ,GACI,IAAAmC,cACA,CADqB,CACrB,CAAA,IAAAjF,QAAA0D,OAAA1C,SAAA,CAA+B,CAFnC,CAIAsB,EAAAS,MAAA,CAAc,IAAd,CALqD,CAAzD,CAaAjF,EAAA,CAAKC,CAAAG,UAAL,CAAqB,YAArB,CAAmC,QAAQ,CAACoE,CAAD,CAAU4C,CAAV,CAAuB,CAE1DA,CAAApC,KAAJ,EADWzE,IACayB,MAAxB;CACIoF,CAAAC,YAEA,CAF0B,CAAA,CAE1B,CADAD,CAAAE,WACA,CADyB,CACzB,CAAAF,CAAAG,UAAA,CAAwB,CAAA,CAH5B,CAKA/C,EAAAS,MAAA,CAAc,IAAd,CAAoBI,KAAAjF,UAAAkF,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAP8D,CAAlE,CAgBAxF,EAAA,CAAKC,CAAAG,UAAL,CAAqB,QAArB,CAA+B,QAAQ,CAACoE,CAAD,CAAU,CAAA,IAEzCtC,EADO3B,IACG2B,QAF+B,CAGzC2E,CAHyC,CAKzCW,CALyC,CAOzCC,CAPyC,CAQzCC,CARyC,CASzCC,CATyC,CAUzCC,CAVyC,CAWzC9F,EAVOvB,IAUIG,MAAAoB,SAGf,IAAII,CAAA8C,KAAJ,CAmCI,IAlCA6B,CAkCI,CAlC6D,CAkC7D,CAlCY1C,IAAAuC,IAAA,CAdTnG,IAckBuG,uBAAAlB,OAAAV,EAAT,CAkCZ,CAjCJ6B,CAiCI,CAhDGxG,IAeIkB,eAiCP,CAjC6BoF,CAiC7B,CAhCJW,CAgCI,CAhCQtF,CAAAsF,UAgCR,CAhDGjH,IAmBHsH,UA6BA,EAhDGtH,IAoBHsH,UAAAC,QAAA,EA4BA,CAvBJtD,CAAAS,MAAA,CAzBO1E,IAyBP,CAuBI,CArBJwH,CAqBI,CAhDGxH,IA2BQ6F,UAAAlF,QAAA,EAqBX,CAhDGX,IA8BHyB,MAkBA,GAhDGzB,IA+BHsH,UAiBA,CAjBiB/F,CAAAkG,KAAA,CAAc,CACvB,GADuB,CAEvBD,CAAA7C,EAFuB,CA/B5B3E,IAiCsBY,MAFM,CAEO,CAFP,CAGvB4G,CAAA5C,EAHuB,CAIvB,GAJuB,CAKvB4C,CAAA7C,EALuB,CA/B5B3E,IAoCsBY,MALM,CAKO,CALP,CAMvB4G,CAAA5C,EANuB,CAMN4C,CAAA1B,OANM,CAAd,CAAArD,KAAA,CAQP,CACFiF,OAAQ/F,CAAAgG,UAARD;AAA6B,SAD3B,CAEF,eAAgB/F,CAAAiG,UAAhB,EAAqC,CAFnC,CAGFlF,OAAQ,CAHN,CAIFmF,MAAO,WAJL,CARO,CAAAhF,IAAA,CA/Bd7C,IA6CM6F,UAdQ,CAiBjB,EAhDG7F,IAgDHF,YAAA,EAAA,EAhDGE,IAgDmB8H,SAAtB,GAhDG9H,IAiDCyB,MAKAwF,GAHAT,CAGAS,CAHWO,CAAA1B,OAGXmB,CAHiC,CAGjCA,EAAAA,CANJ,CAAJ,CAMmB,CACXc,CAAA,CAvDD/H,IAuDYgI,YAAA,CAAiBf,CAAjB,CACXG,EAAA,CAAcW,CAAAE,QAAA,CAAiB,GAAjB,CAAd,CAAsC,CACtCZ,EAAA,CAAYU,CAAAE,QAAA,CAAiB,GAAjB,CAAZ,CAAoC,CACpCf,EAAA,CAAca,CAAAE,QAAA,CAAiB,GAAjB,CAAd,CAAsC,CACtCd,EAAA,CAAYY,CAAAE,QAAA,CAAiB,GAAjB,CAAZ,CAAoC,CAGpC,IA9ZP7B,CA8ZO,GA9DDpG,IA8DKO,KAAJ,EA3ZN0F,CA2ZM,GA9DDjG,IA8DmCO,KAAlC,CACIiG,CAAA,CAAW,CAACA,CA/DjBxG,KAmEKyB,MAAJ,EACIsG,CAAA,CAASb,CAAT,CACA,EADgDV,CAChD,CAAAuB,CAAA,CAASZ,CAAT,CAAA,EAA4CX,CAFhD,GAKIuB,CAAA,CAASX,CAAT,CACA,EADgDZ,CAChD,CAAAuB,CAAA,CAASV,CAAT,CAAA,EAA4Cb,CANhD,CAnEDxG,KA4EMkI,cAAL,CA5EDlI,IAqFKkI,cAAAC,QAAA,CAA2B,CACvBC,EAAGL,CADoB,CAA3B,CATJ,CA5ED/H,IA6EKkI,cADJ,CACyB3G,CAAAkG,KAAA,CAAcM,CAAd,CAAAtF,KAAA,CACX,CACFiF,OAAQ/F,CAAA0G,UADN,CAEF,eAAgBpB,CAFd,CAGFvE,OAAQ,CAHN,CADW,CAAAG,IAAA,CA7E1B7C,IAmFc6F,UANY,CA7E1B7F,KA2FC8H,SAAA,CA3FD9H,IA2Fe8B,SAAA;AAAgB,MAAhB,CAAyB,MAAvC,CAAA,CAA+C,CAAA,CAA/C,CArCW,CANnB,CAnCJ,IAkFImC,EAAAS,MAAA,CA/FO1E,IA+FP,CAhGyC,CAAjD,CA2GAP,EAAA,CAAKE,CAAAE,UAAL,CAAsB,QAAtB,CAAgC,QAAQ,CAACoE,CAAD,CAAU,CAAA,IAG1CqE,EAA4B,EAA5BA,CAAiC,EAHS,CAI1C/C,CAJ0C,CAK1CJ,CAEJ7F,EAAA,CAAK,IAAAc,KAAL,CAAgB,QAAQ,CAACJ,CAAD,CAAO,CAC3B,IAAI2B,EAAU3B,CAAA2B,QACVA,EAAA8C,KAAJ,GACIU,CAoBA,CApBWxD,CAAA0D,OAAAC,MAAAH,SAoBX,CAnBAI,CAmBA,CAnBcvF,CAAAG,MAAAoB,SAAAgE,YAAA,CAAgCJ,CAAhC,CAmBd,CAfqB,UAerB,GAfIxD,CAAA4G,KAeJ,GAdI5G,CAAA6G,MAcJ,CAdoB,CACZ,CAAC,aAAD,CAAgB,CAAC,CAAD,CAAhB,CADY,CAEZ,CAAC,QAAD,CAAW,CAAC,CAAD,CAAX,CAFY,CAGZ,CAAC,QAAD,CAAW,CAAC,CAAD,CAAX,CAHY,CAIZ,CAAC,MAAD,CAAS,CAAC,CAAD,CAAT,CAJY,CAKZ,CAAC,KAAD,CAAQ,CAAC,CAAD,CAAR,CALY,CAMZ,CAAC,MAAD,CAAS,CAAC,CAAD,CAAT,CANY,CAOZ,CAAC,OAAD,CAAU,CAAC,CAAD,CAAV,CAPY,CAQZ,CAAC,MAAD,CAAS,IAAT,CARY,CAcpB,EAAIxI,CAAAyB,MAAJ,CACIE,CAAA8G,WADJ,CACyB9G,CAAA+G,WADzB,EAEQnD,CAAAI,EAFR,CAEwB2C,CAFxB,EAII3G,CAAAiG,UACA,CADoB,CACpB,CAAKjG,CAAAsF,UAAL,GACItF,CAAAsF,UADJ,CACwB,CADxB,CALJ,CArBJ,CAF2B,CAA/B,CAoCAhD,EAAAS,MAAA,CAAc,IAAd,CA3C8C,CAAlD,CA/dS,CAAZ,CAAA,CA6gBCvF,CA7gBD,CADkB,CANtB;", |
"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":"A;;;;;;;AAQC,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,CAo8BA,UAAQ,CAACiN,CAAD,CAAI,CAaT,IAAI7M,EAAO6M,CAAA7M,KAEX6M,EAAArB,KAAA,CAAOqB,CAAAtM,KAAAK,UAAP,CAAyB,MAAzB,CAAiC,QAAQ,CAAC8K,CAAD,CAAU7K,CAAV,CAAmB,CACxD6K,CAAA3B,KAAA,CAAa,IAAb,CAAmBlJ,CAAnB,CAEIA,EAAAiM,IAAJ,EACI,IAAAC,QAAA,EAJoD,CAA5D,CAQAF,EAAAlM,OAAA,CAASkM,CAAAtM,KAAAK,UAAT,CAA2B,CAIvBoM,YAAaA,QAAQ,CAACC,CAAD,CAAOC,CAAP,CAAe,CAAA,IAC5B5K,EAAI,CADwB,CAE5B6K,EAAW,CAFiB,CAG5Bd,CAH4B,CAI5Be,CAJ4B,CAK5BC,EAAa,CAAC,CAAD,CAAI,CAAJ,CALe,CAM5BC,EAAa,CAAC,CAAD,CAAI,CAAJ,CANe,CAO5BC,CAP4B,CAS5BC,CAT4B,CAU5BC,EAAkBA,QAAQ,CAACC,CAAD,CAAIC,CAAJ,CAAO,CAC7B,MAAO,CACHA,CAAAC,EADG,CACGF,CAAA,CAAE,CAAF,CADH,CACUC,CAAAE,EADV,CACgBH,CAAA,CAAE,CAAF,CADhB,CACuBC,CAAAG,EADvB,CAEHH,CAAAI,EAFG,CAEGL,CAAA,CAAE,CAAF,CAFH,CAEUC,CAAAK,EAFV,CAEgBN,CAAA,CAAE,CAAF,CAFhB,CAEuBC,CAAAM,EAFvB,CADsB,CAOrChB,EAAA,CAAOA,CAAA3I,QAAA,CAEM,kBAFN,CAE0B,QAAQ,CAACsJ,CAAD,CAAI,CACrC,MAAO,CAACA,CAD6B,CAFtC,CAAAtJ,QAAA,CAMM,aANN,CAMqB,MANrB,CAAAA,QAAA,CAQM,IARN,CAQY,IARZ,CAAAA,QAAA,CAUM,MAVN;AAUc,EAVd,CAAAA,QAAA,CAU0B,MAV1B,CAUkC,EAVlC,CAAAA,QAAA,CAYM,MAZN,CAYc,GAZd,CAAAC,MAAA,CAeI,OAfJ,CAkBP,IAAoB,CAApB,GAAI0I,CAAA3L,OAAJ,CACI,MAAO,EAIX,KAAKgB,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB2K,CAAA3L,OAAhB,CAA6BgB,CAAA,EAA7B,CAII,GAHA4L,CAGA,CAHW,UAAA5G,KAAA,CAAgB2F,CAAA,CAAK3K,CAAL,CAAhB,CAGX,CAAc,CACVkL,CAAA,CAAWP,CAAA,CAAK3K,CAAL,CACX8K,EAAA,CAAY,CAGZ,IAAiB,GAAjB,GAAII,CAAJ,EAAqC,GAArC,GAAwBA,CAAxB,CACIJ,CAAA,CAAY,CAIC,IAAjB,GAAII,CAAJ,CACIF,CADJ,CACiB,CAACpF,UAAA,CAAW+E,CAAA,CAAK3K,CAAL,CAAS,CAAT,CAAX,CAAD,CAA2BgL,CAAA,CAAW,CAAX,CAA3B,CAA0CpF,UAAA,CAAW+E,CAAA,CAAK3K,CAAL,CAAS,CAAT,CAAX,CAA1C,CAAoEgL,CAAA,CAAW,CAAX,CAApE,CADjB,CAEwB,GAFxB,GAEWE,CAFX,GAGIF,CAHJ,CAGiB,CAACpF,UAAA,CAAW+E,CAAA,CAAK3K,CAAL,CAAS,CAAT,CAAX,CAAD,CAA0B4F,UAAA,CAAW+E,CAAA,CAAK3K,CAAL,CAAS,CAAT,CAAX,CAA1B,CAHjB,CAOA,IAAiB,GAAjB,GAAIkL,CAAJ,EAAqC,GAArC,GAAwBA,CAAxB,EAAyD,GAAzD,GAA4CA,CAA5C,CACIP,CAAA,CAAK3K,CAAL,CACA,CADUkL,CAAAW,YAAA,EACV,CAAAZ,CAAA,CAAa,CAAA,CAFjB,KAGO,IAAiB,GAAjB,GAAIC,CAAJ,EAAqC,GAArC,GAAwBA,CAAxB,EAAyD,GAAzD,GAA4CA,CAA5C,CACHD,CAAA,CAAa,CAAA,CADV,KAKA,IAAiB,GAAjB,GAAIC,CAAJ,CACHD,CAEA,CAFa,CAAA,CAEb,CADAN,CAAA,CAAK3K,CAAL,CACA,CADU,GACV,CAAA2K,CAAAnC,OAAA,CAAYxI,CAAZ,CAAgB,CAAhB,CAAmB,CAAnB,CAAsB,CAAtB,CAHG,KAIA,IAAiB,GAAjB,GAAIkL,CAAJ,CACHD,CAEA,CAFa,CAAA,CAEb,CADAN,CAAA,CAAK3K,CAAL,CACA,CADU,GACV,CAAA2K,CAAAnC,OAAA,CAAYxI,CAAZ,CAAgB,CAAhB,CAAmB,CAAnB,CAAsB,CAAtB,CAHG,KAIA,IAAiB,GAAjB,GAAIkL,CAAJ,CACHD,CAEA,CAFa,CAAA,CAEb,CADAN,CAAA,CAAK3K,CAAL,CACA,CADU,GACV;AAAA2K,CAAAnC,OAAA,CAAYxI,CAAZ,CAAgB,CAAhB,CAAmB,CAAnB,CAHG,KAIA,IAAiB,GAAjB,GAAIkL,CAAJ,CACHD,CAEA,CAFa,CAAA,CAEb,CADAN,CAAA,CAAK3K,CAAL,CACA,CADU,GACV,CAAA2K,CAAAnC,OAAA,CAAYxI,CAAZ,CAAgB,CAAhB,CAAmB,CAAnB,CAHG,KAIA,IAAiB,GAAjB,GAAIkL,CAAJ,EAAqC,GAArC,GAAwBA,CAAxB,CACHD,CAEA,CAFa,CAAA,CAEb,CADAN,CAAA,CAAK3K,CAAL,CACA,CADU,GACV,CAAA2K,CAAAnC,OAAA,CAAYxI,CAAZ,CAAgB,CAAhB,CAAmB,CAAnB,CAAsB+K,CAAA,CAAW,CAAX,CAAtB,CAHG,KAIA,IAAiB,GAAjB,GAAIG,CAAJ,EAAqC,GAArC,GAAwBA,CAAxB,CACHD,CAEA,CAFa,CAAA,CAEb,CADAN,CAAA,CAAK3K,CAAL,CACA,CADU,GACV,CAAA2K,CAAAnC,OAAA,CAAYxI,CAAZ,CAAgB,CAAhB,CAAmB,CAAnB,CAAsB+K,CAAA,CAAW,CAAX,CAAtB,CAHG,KAIA,IAAiB,GAAjB,GAAIG,CAAJ,EAAqC,GAArC,GAAwBA,CAAxB,CACHH,CAAA,CAAaC,CAlDP,CAAd,IAuDIL,EAAA,CAAK3K,CAAL,CAqBA,CArBU4F,UAAA,CAAW+E,CAAA,CAAK3K,CAAL,CAAX,CAqBV,CApBIiL,CAoBJ,GAnBIN,CAAA,CAAK3K,CAAL,CAmBJ,EAnBe+K,CAAA,CAAWF,CAAX,CAAsB,CAAtB,CAmBf,EAfqB,CAerB,GAfIA,CAeJ,CAfe,CAef,EAbQD,CAaR,GAboBK,CAAAA,CAapB,EAbgD,GAahD,GAbmCC,CAanC,EAb2D,CAa3D,CAbuDlL,CAavD,IAZQ+J,CAEA,CAFQoB,CAAA,CAAgB,CAACR,CAAA,CAAK3K,CAAL,CAAS,CAAT,CAAD,CAAc2K,CAAA,CAAK3K,CAAL,CAAd,CAAhB,CAAwC4K,CAAxC,CAER,CADAD,CAAA,CAAK3K,CAAL,CAAS,CAAT,CACA,CADc+J,CAAA,CAAM,CAAN,CACd,CAAAY,CAAA,CAAK3K,CAAL,CAAA,CAAU+J,CAAA,CAAM,CAAN,CAUlB,EAAIc,CAAJ,GAAiBC,CAAjB,CAA6B,CAA7B,EAEIC,CAEA,CAFa,CAACJ,CAAA,CAAK3K,CAAL,CAAS,CAAT,CAAD,CAAc2K,CAAA,CAAK3K,CAAL,CAAd,CAEb,CAAA6K,CAAA,CAAW,CAJf,EAMIA,CANJ,EAMgB,CAOD,SAAvB,GAAI,MAAOF,EAAA,CAAK,CAAL,CAAX,EAAkD,CAAlD,EAAmCA,CAAA3L,OAAnC,GACI2L,CAAAjE,QAAA,CAAa,GAAb,CACA,CAAAiE,CAAAnC,OAAA,CAAY,CAAZ,CAAe,CAAf,CAAkB,GAAlB,CAFJ,CAIA,OAAOmC,EAzIyB,CAJb,CAmJvBmB,aAAcA,QAAQ,CAACC,CAAD,CAAM,CACxBrO,CAAA,CAAKqO,CAAL,CAAU,QAAQ,CAAChC,CAAD,CAAQ,CACtB,IAAIY,EAAOZ,CAAAY,KAAX;AAGAA,EAAOA,CAAAqB,KAAA,CAAU,GAAV,CAHP,CAMArB,EAAOA,CAAA3I,QAAA,CAAa,iBAAb,CAAgC,IAAhC,CAGP+H,EAAAY,KAAA,CAAaA,CAVS,CAA1B,CAaA,OAAOoB,EAdiB,CAnJL,CAwKvBE,WAAYA,QAAQ,CAACF,CAAD,CAAMG,CAAN,CAAa,CAAA,IACzBC,EAAW5B,CAAA9K,YAAA2M,IAAA9N,UADc,CAEzB+N,CAFyB,CAGzBC,CAGJD,EAAA,CAAa,CACT1G,MAAO,CAGH4G,UAAWhC,CAAAiC,KAAAlO,UAAAiO,UAHR,CAIHhO,QAAS,EAJN,CAKHkO,gBAAiB,CALd,CADE,CASTC,MAAO,CAGHH,UAAWhC,CAAAiC,KAAAlO,UAAAiO,UAHR,CAIHhO,QAAS,EAJN,CAKHkO,gBAAiB,CALd,CATE,CAoBbN,EAAAQ,OAAAlF,KAAA,CAAqB4E,CAArB,CAAiCN,CAAjC,CAEAO,EAAA,CAAWjI,IAAAC,IAAA,CAAS+H,CAAAO,KAAT,CAA2BP,CAAAQ,KAA3B,CAA4CR,CAAAS,KAA5C,CAA8DT,CAAAU,KAA9D,CACXb,EAAA,CAAQA,CAAR,EAAiB,GACjBc,EAAA,CAASd,CAAT,CAAiBI,CAEjBD,EAAA1G,MAAAqH,OAAA,CAA0BX,CAAAK,MAAAM,OAA1B,CAAoDA,CACpDX,EAAA1G,MAAAsH,IAAA,CAAuBZ,CAAAK,MAAAO,IAAvB,CAA8Cf,CAC9CG,EAAA1G,MAAAjB,IAAA,CAAuB2H,CAAAQ,KACvBR,EAAAK,MAAAhI,IAAA,EAAwB2H,CAAAU,KAAxB,CAA0Cb,CAA1C,EAAmDc,CAEnDtP,EAAA,CAAKqO,CAAL,CAAU,QAAQ,CAAChC,CAAD,CAAQ,CAAA,IAElB/J,CAFkB,CAGlB2K,CACJZ,EAAAY,KAAA,CAAaA,CAAb,CAAoBwB,CAAAe,cAAAzF,KAAA,CAA4B4E,CAA5B;AAAwCtC,CAAAY,KAAxC,CAAoD,CAAA,CAApD,CAEpB,KADA3K,CACA,CADI2K,CAAA3L,OACJ,CAAOgB,CAAA,EAAP,CAAA,CAC2B,QAAvB,GAAI,MAAO2K,EAAA,CAAK3K,CAAL,CAAX,GACI2K,CAAA,CAAK3K,CAAL,CADJ,CACcqE,IAAA8I,MAAA,CAAWxC,CAAA,CAAK3K,CAAL,CAAX,CADd,CAIJ,QAAO+J,CAAAqD,UAXe,CAA1B,CAeA,OAAOrB,EApDsB,CAxKV,CAmOvBtB,QAASA,QAAQ,EAAG,CAKhB4C,QAASA,EAAmB,CAACC,CAAD,CAAS,CACjC,MAAOC,MAAAjP,UAAAkP,MAAA/F,KAAA,CAA2B6F,CAAAxK,qBAAA,CAA4B,MAA5B,CAA3B,CAAA2K,OAAA,CACKF,KAAAjP,UAAAkP,MAAA/F,KAAA,CAA2B6F,CAAAxK,qBAAA,CAA4B,SAA5B,CAA3B,CADL,CAAA2K,OAAA,CAEKF,KAAAjP,UAAAkP,MAAA/F,KAAA,CAA2B6F,CAAAxK,qBAAA,CAA4B,MAA5B,CAA3B,CAFL,CAD0B,CAMrC4K,QAASA,EAAiB,CAACC,CAAD,CAAO,CAC7B,GAAsB,MAAtB,GAAIA,CAAAC,SAAJ,CACI,MAAOD,EAAAE,aAAA,CAAkB,GAAlB,CAEX,IAAsB,SAAtB,GAAIF,CAAAC,SAAJ,CACI,MAAOD,EAAAE,aAAA,CAAkB,QAAlB,CAEX,IAAsB,MAAtB,GAAIF,CAAAC,SAAJ,CAA8B,CAAA,IACtBvN,EAAI,CAACsN,CAAAE,aAAA,CAAkB,GAAlB,CADiB;AAEtBC,EAAI,CAACH,CAAAE,aAAA,CAAkB,GAAlB,CAFiB,CAGtBE,EAAI,CAACJ,CAAAE,aAAA,CAAkB,OAAlB,CACLG,EAAAA,CAAI,CAACL,CAAAE,aAAA,CAAkB,QAAlB,CAGT,OAAO,CAACxN,CAAD,CAAIyN,CAAJ,CAAOzN,CAAP,CAAW0N,CAAX,CAAcD,CAAd,CAAiBzN,CAAjB,CAAqB0N,CAArB,CAAwBD,CAAxB,CAA4BE,CAA5B,CAA+B3N,CAA/B,CAAkCyN,CAAlC,CAAsCE,CAAtC,CAAyC3N,CAAzC,CAA4CyN,CAA5C,CAAA9B,KAAA,CAAoD,GAApD,CAPmB,CAPD,CAkBjCiC,QAASA,EAAY,CAACC,CAAD,CAAO,CACpBC,CAAAA,CAAMD,CAAAE,OAAA,EACV,IAAK,CAAAC,KAAA,CAAMF,CAAAxC,EAAN,CAAL,CACI,MAAOwC,EAHa,CAQ5BG,QAASA,EAAO,CAACJ,CAAD,CAAO,CAAA,IACfK,EAAOL,CAAApL,qBAAA,CAA0B,MAA1B,CAIX,QAHI0L,CAGJ,CAHcD,CAAA,CAAK,CAAL,CAGd,EAHyBA,CAAA,CAAK,CAAL,CAAAzL,qBAAA,CAA6B,MAA7B,CAGzB,GAFsB0L,CAAA,CAAQ,CAAR,CAEtB,EAFoCA,CAAA,CAAQ,CAAR,CAAAC,UAEpC,EAAeP,CAAAL,aAAA,CAAkB,gBAAlB,CAAf,EAAsDK,CAAAL,aAAA,CAAkB,IAAlB,CAAtD,EAAiFK,CAAAL,aAAA,CAAkB,OAAlB,CAL9D,CAQvBa,QAASA,EAAO,CAACR,CAAD,CAAO,CACnB,MAAO,CAAC,sBAAAlJ,KAAA,CAA4BkJ,CAAAL,aAAA,CAAkB,OAAlB,CAA5B,CAAR,EAAiG,MAAjG,GAAmEK,CAAAL,aAAA,CAAkB,MAAlB,CADhD,CAIvBc,QAASA,EAAS,CAACC,CAAD,CAAM,CAAA,IAEhB7C;AAAM,EAFU,CAGhB8C,CAHgB,CAIhBC,CAJgB,CAKhBC,CALgB,CAMhBC,CANgB,CAOhBC,CAGJhH,EAAAiH,OAAA,CAAcjH,CAAAiH,OAAd,EAA6BC,CAAA,CAAE,aAAF,CAAAC,IAAA,CACpB,CACDvE,SAAU,UADT,CAEDwE,IAAK,SAFJ,CADoB,CAAAC,SAAA,CAKfH,CAAA,CAAE1R,QAAA8R,KAAF,CALe,CAM7BtH,EAAAiH,OAAAM,KAAA,CAAiBZ,CAAjB,CACAA,EAAA,CAAMO,CAAA,CAAE,KAAF,CAASlH,CAAAiH,OAAT,CAAA,CAAsB,CAAtB,CAENN,EAAAa,gBAAA,CAAoB,SAApB,CAGAX,EAAA,CAAWzB,CAAA,CAAoBuB,CAApB,CAGXlR,EAAA,CAAK,CAAC,MAAD,CAAS,UAAT,CAAL,CAA2B,QAAQ,CAACkQ,CAAD,CAAW,CAC1ClQ,CAAA,CAAKkR,CAAA9L,qBAAA,CAAyB8K,CAAzB,CAAL,CAAyC,QAAQ,CAACN,CAAD,CAAS,CACtD5P,CAAA,CAAK4P,CAAAxK,qBAAA,CAA4B,MAA5B,CAAL,CAA0C,QAAQ,CAAC6H,CAAD,CAAO,CACrDA,CAAA+E,KAAA,CAAY,CAAA,CADyC,CAAzD,CADsD,CAA1D,CAD0C,CAA9C,CASAhS,EAAA,CAAKoR,CAAL,CAAe,QAAQ,CAACnE,CAAD,CAAO3K,CAAP,CAAU,CAC7B,GAAK0P,CAAA/E,CAAA+E,KAAL,CAAgB,CAAA,IACRC,EAAc,EAIV,EAAR,CAAI3P,CAAJ,EAAa2K,CAAAiF,WAAb,GAAiCf,CAAjC,GACII,CADJ,CACmB,CAAA,CADnB,CAOA,KAJAJ,CAIA,CAJgBlE,CAAAiF,WAIhB,CAAOA,CAAP,CAAA,CACID,CAAAzP,KAAA,CAAiB0P,CAAjB,CACA,CAAAA,CAAA,CAAaA,CAAAA,WAEjBD,EAAAlJ,QAAA,EAEA,IAAKsI,CAAL,CAGI,IAAK7G,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB6G,CAAA/P,OAAhB,CAAsCkJ,CAAA,EAAtC,CACQ6G,CAAA,CAAc7G,CAAd,CAAJ,GAAyByH,CAAA,CAAYzH,CAAZ,CAAzB,GACI6G,CADJ,CACoBA,CAAAvB,MAAA,CAAoB,CAApB;AAAuBtF,CAAvB,CADpB,CAJR,KACI6G,EAAA,CAAgBY,CAnBR,CADa,CAAjC,CA8BAX,EAAA,CAAqBD,CAAA,CAAcA,CAAA/P,OAAd,CAAqC,CAArC,CAGjBiQ,EAAJ,EACIvR,CAAA,CAAKsR,CAAAlM,qBAAA,CAAwC,GAAxC,CAAL,CAAmD,QAAQ,CAAC+M,CAAD,CAAI,CAAA,IACvDC,EAAY,EAD2C,CAEvDC,CAEJrS,EAAA,CAAK2P,CAAA,CAAoBwC,CAApB,CAAL,CAA6B,QAAQ,CAAClF,CAAD,CAAO,CACnCA,CAAA+E,KAAL,GACII,CAQA,CARYA,CAAArC,OAAA,CACRxF,CAAAyC,YAAA,CAAiBgD,CAAA,CAAkB/C,CAAlB,CAAjB,CAA0CsD,CAAA,CAAatD,CAAb,CAA1C,CADQ,CAQZ,CAJI+D,CAAA,CAAQ/D,CAAR,CAIJ,GAHIoF,CAGJ,CAHkB,CAAA,CAGlB,EAAApF,CAAA+E,KAAA,CAAY,CAAA,CAThB,CADwC,CAA5C,CAaA3D,EAAA7L,KAAA,CAAS,CACLQ,KAAM4N,CAAA,CAAQuB,CAAR,CADD,CAELlF,KAAMmF,CAFD,CAGLpB,QAASqB,CAHJ,CAAT,CAjB2D,CAA/D,CA0BJrS,EAAA,CAAKoR,CAAL,CAAe,QAAQ,CAACnE,CAAD,CAAO,CACrBA,CAAA+E,KAAL,EACI3D,CAAA7L,KAAA,CAAS,CACLQ,KAAM4N,CAAA,CAAQ3D,CAAR,CADD,CAELA,KAAM1C,CAAAyC,YAAA,CAAiBgD,CAAA,CAAkB/C,CAAlB,CAAjB,CAA0CsD,CAAA,CAAatD,CAAb,CAA1C,CAFD,CAGL+D,QAASA,CAAA,CAAQ/D,CAAR,CAHJ,CAAT,CAFsB,CAA9B,CAWA1C,EAAAgE,WAAA,CAAgBF,CAAhB,CAGAxN,EAAA6C,SAAA,CAAiB,CACbnB,OAAQ,CAAC,CACLgI,KAAM8D,CADD,CAAD,CADK,CAAjB,CA5GoB,CAjDR,IAEZ9D,EAAO,IAFK,CAGZ1J,EAAU,IAAAA,QAiKuB,GAArC,GAAIA,CAAAiM,IAAArI,QAAA,CAAoB,SAApB,CAAJ,CACIwM,CAAA,CAAUpQ,CAAAiM,IAAV,CADJ,CAGIlH,MAAAC,KAAA,CAAY,CACRE,IAAKlF,CAAAiM,IADG,CAERhH,SAAU,MAFF,CAGRI,QAAS+K,CAHD,CAAZ,CAvKY,CAnOG,CAA3B,CAvBS,CAAZ,CAAA,CA0aCrR,CA1aD,CAr8BkB,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","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 "<b>{point.name}</b>: {point.value}</b><br/>" |
* @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)); |
})); |