corrade-nucleus-nucleons
/base/000_base/node_modules/highcharts/js/modules/accessibility.js |
---|
@@ -0,0 +1,48 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
Accessibility module |
(c) 2010-2017 Highsoft AS |
Author: Oystein Moseng |
License: www.highcharts.com/license |
*/ |
(function(q){"object"===typeof module&&module.exports?module.exports=q:q(Highcharts)})(function(q){(function(e){function q(a){return a.replace(/&/g,"\x26amp;").replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;").replace(/"/g,"\x26quot;").replace(/'/g,"\x26#x27;").replace(/\//g,"\x26#x2F;")}function z(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 y=e.win,l=y.document, |
g=e.each,A=e.erase,u=e.addEvent,B=e.removeEvent,x=e.fireEvent,C=e.dateFormat,w=e.merge,r={"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"]},D={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}}});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&&z(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=r[this.type]||r["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&&C(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),u(this,"remove",function(){var a=this,b=!1;g(c.series,function(f){f!==a&&0>c.types.indexOf(a.type)&&(b=!0)});b||A(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."+(D[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,E=d&&d.series.connectEnds&&b>f.length-3?2:1;if(!c[0]||!c[0].points)return!1;if(!d)return c[0].points[0].highlight();if(f[b]!==d)for(var 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?E:-1)]||c&&c.points[a?0:c.points.length-(c.connectEnds?2:1)];return void 0===b?!1:b.isNull&&this.options.accessibility.keyboardNavigation.skipNullPoints||b.series.options.skipKeyboardNavigation? |
(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]&&x(c[this.highlightedLegendItemIx].legendGroup.element,"mouseout");this.highlightedLegendItemIx=a;return c[a]?(c[a].legendGroup.element.focus&&c[a].legendGroup.element.focus(),x(c[a].legendGroup.element,"mouseover"),!0):!1};e.Chart.prototype.hideExportMenu=function(){var a=this.exportDivElements;if(a){g(a,function(a){x(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.keyCodeMap=b.keyCodeMap;this.move=b.move;this.validate=b.validate;this.init=b.init;this.transformTabs=!1!==b.transformTabs}function c(c,d){return new a(w({keyCodeMap:c,move:function(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}},d))}function d(a){a=a||y.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([[[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(a){var c=b.series&&b.series[b.series.length-1],c=c&&c.points&&c.points[c.points.length-1];0>a&&c&&c.highlight()}}),c([[[37,38],function(){for(var a=b.highlightedExportItem||0,c=!0, |
d=b.series;a--;)if(b.highlightExportItem(a)){c=!1;break}if(c)return b.hideExportMenu(),d&&d.length&&(a=d[d.length-1],a.points.length&&a.points[a.points.length-1].highlight()),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([[[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(a,b){a.element.setAttribute("tabindex",-1);a.element.setAttribute("role","button");a.element.setAttribute("aria-label", |
"Zoom "+(b?"out":"")+"chart")});c.element.focus&&c.element.focus();c.setState(2);b.focusedMapNavButtonIx=0<a?0:1}}),c([[[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([[[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([[[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)},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");u(b.renderTo,"keydown",d);u(b,"destroy",function(){B(b.renderTo,"keydown",d)})};e.Chart.prototype.addScreenReaderRegion=function(a,c){var d=this,b=d.series,e=d.options,g=e.accessibility,m=d.screenReaderRegion=l.createElement("div"),k=l.createElement("h4"),n=l.createElement("a"),v=l.createElement("h4"),t={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(),p=b[0]&&r[b[0].type]|| |
r["default"];m.setAttribute("id",a);m.setAttribute("role","region");m.setAttribute("aria-label","Chart screen reader information.");m.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?q(e.title.text):"Chart")+(e.subtitle&&e.subtitle.text?". "+q(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"+p[0]+" with "+b[0].points.length+" "+(1===b[0].points.length?p[1]:p[2])+".\x3c/div\x3e":"")+(h.xAxis?"\x3cdiv\x3e"+h.xAxis+"\x3c/div\x3e":"")+(h.yAxis?"\x3cdiv\x3e"+h.yAxis+"\x3c/div\x3e":"");d.getCSV&&(n.innerHTML="View as data table.",n.href="#"+c,n.setAttribute("tabindex","-1"),n.onclick= |
g.onTableAnchorClick||function(){d.viewData();l.getElementById(c).focus()},k.appendChild(n),m.appendChild(k));v.innerHTML="Chart graphic.";d.renderTo.insertBefore(v,d.renderTo.firstChild);d.renderTo.insertBefore(m,d.renderTo.firstChild);w(!0,v.style,t);w(!0,m.style,t)};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"),k=a.container.getElementsByTagName("desc")[0], |
m=a.container.getElementsByTagName("text"),r="highcharts-title-"+a.index,n="highcharts-data-table-"+a.index,v="highcharts-information-region-"+a.index,t=c.title.text||"Chart",h=c.exporting&&c.exporting.csv&&c.exporting.csv.columnHeaderFormatter,p=[];b.textContent=q(t);b.id=r;k.parentNode.insertBefore(b,k);a.renderTo.setAttribute("role","region");a.renderTo.setAttribute("aria-label","Interactive chart. "+t+". Use up and down arrows to navigate with most screen readers.");if(a.exportSVGElements&&a.exportSVGElements[0]&& |
a.exportSVGElements[0].element){var u=a.exportSVGElements[0].element.onclick,b=a.exportSVGElements[0].element.parentNode;a.exportSVGElements[0].element.onclick=function(){u.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(m,function(a){a.setAttribute("aria-hidden","true")});a.addScreenReaderRegion(v,n);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=p[p.length-1];1<c&&(d&&d.text)!==a.name&&p.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"'+n+'" summary\x3d"Table representation of chart"\x3e\x3ccaption\x3e'+t+"\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(n),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")}); |
p.length&&(g(p,function(a){f+='\x3cth scope\x3d"col" colspan\x3d"'+a.span+'"\x3e'+a.text+"\x3c/th\x3e"}),c.insertAdjacentHTML("afterbegin",f))}})}})})(q)}); |
/base/000_base/node_modules/highcharts/js/modules/accessibility.js.map |
---|
@@ -0,0 +1,8 @@ |
{ |
"version":3, |
"file":"", |
"lineCount":48, |
"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","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","forwardSkipAmount","connectEnds","newSeries","newPoint","skipNullPoints","skipKeyboardNavigation","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","transformTabs","navModuleFactory","keyMap","keyboardNavigationModuleIndex","newModule","keyboardNavigationModules","slipNextTab","keydownHandler","ev","e","event","curNavModule","which","keyCode","run","preventDefault","navModule","handled","shiftKey","codeSet","firePointEvent","lastSeries","lastPoint","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/accessibility.src.js |
---|
@@ -0,0 +1,1138 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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 = []; |
} |
// Default a11y options |
H.setOptions({ |
accessibility: { |
enabled: true, |
pointDescriptionThreshold: 30, // set to false to disable |
keyboardNavigation: { |
enabled: true |
// skipNullPoints: false |
} |
// describeSingleSeries: false |
} |
}); |
/** |
* 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 series = this.series, |
curPoint = this.highlightedPoint, |
curPointIndex = curPoint && curPoint.index || 0, |
curPoints = curPoint && curPoint.series.points, |
newSeries, |
newPoint, |
// 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; |
} |
// Use first point if none already highlighted |
if (!curPoint) { |
return series[0].points[0].highlight(); |
} |
// 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 ( |
newPoint.isNull && |
this.options.accessibility.keyboardNavigation.skipNullPoints || |
newPoint.series.options.skipKeyboardNavigation |
) { |
this.highlightedPoint = newPoint; |
return this.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. |
// transformTabs determines whether to transform tabs to left/right events or not. Defaults to true. |
function KeyboardNavigationModule(options) { |
this.keyCodeMap = options.keyCodeMap; |
this.move = options.move; |
this.validate = options.validate; |
this.init = options.init; |
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(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) { |
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; |
} |
}, 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([ |
// 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'); |
} |
} |
] |
], { |
// If coming back to points from other module, highlight last point |
init: function(direction) { |
var lastSeries = chart.series && chart.series[chart.series.length - 1], |
lastPoint = lastSeries && lastSeries.points && lastSeries.points[lastSeries.points.length - 1]; |
if (direction < 0 && lastPoint) { |
lastPoint.highlight(); |
} |
} |
}), |
// Exporting |
navModuleFactory([ |
// Left/Up |
[ |
[37, 38], |
function() { |
var i = chart.highlightedExportItem || 0, |
reachedEnd = true, |
series = chart.series, |
newSeries; |
// 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(); |
// Wrap to last point |
if (series && series.length) { |
newSeries = series[series.length - 1]; |
if (newSeries.points.length) { |
newSeries.points[newSeries.points.length - 1].highlight(); |
} |
} |
// Try to move to prev module (should be points, since we wrapped to last point) |
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([ |
// 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([ |
// 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([ |
// 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([ |
// 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. |
validate: function() { |
return chart.legend && chart.legend.allItems && |
!(chart.colorAxis && chart.colorAxis.length); |
}, |
// 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/annotations.js |
---|
@@ -0,0 +1,14 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
(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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/annotations.src.js |
---|
@@ -0,0 +1,407 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* |
* (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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/boost-canvas.js |
---|
@@ -0,0 +1,23 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/boost-canvas.src.js |
---|
@@ -0,0 +1,773 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/boost.js |
---|
@@ -0,0 +1,51 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
Boost module |
(c) 2010-2017 Highsoft AS |
Author: Torstein Honsi |
License: www.highcharts.com/license |
*/ |
(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(h){function x(){var a=Array.prototype.slice.call(arguments),c=-Number.MAX_VALUE;C(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],x(d.processedXData,d.options.data,d.points)>=(d.options.boostThreshold||Number.MAX_VALUE)&&c++;return 5< |
c||a.series.length>=G(a.options.boost&&a.options.boost.seriesThreshold,50)}function A(a){return z(a.chart)||x(a.processedXData,a.options.data,a.points)>=(a.options.boostThreshold||Number.MAX_VALUE)}function fa(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 f=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"),e=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(!f||!e)return l=!1;l=a.createProgram();a.attachShader(l,f);a.attachShader(l,e);a.linkProgram(l); |
a.useProgram(l);a.bindAttribLocation(l,0,"aVertexPosition");h=d("uPMatrix");n=d("pSize");J=d("fillColor");H=d("isBubble");k=d("bubbleSizeAbs");t=d("bubbleSizeByArea");B=d("uSampler");b=d("skipTranslation");q=d("isCircle");g=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,n,J,H,k,t,b,q,g,B;a&&d();return{psUniform:function(){return n},pUniform:function(){return h},fillColorUniform:function(){return J},setBubbleUniforms:function(b,c,d){var e= |
b.options,l=Number.MAX_VALUE,h=-Number.MAX_VALUE;"bubble"===b.type&&(l=G(e.zMin,Math.min(l,Math.max(c,!1===e.displayNegative?e.zThreshold:-Number.MAX_VALUE))),h=G(e.zMax,Math.max(h,d)),a.uniform1i(H,1),a.uniform1i(q,1),a.uniform1i(t,"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(J,b[0]/255,b[1]/255,b[2]/255,b[3])},setPointSize:function(b){a.uniform1f(n,b)},setSkipTranslation:function(c){a.uniform1i(b,!0===c?1:0)},setTexture:function(){a.uniform1i(B,0)},setDrawAsCircle:function(b){a.uniform1i(q,b?1:0)},reset:function(){a.uniform1i(H,0);a.uniform1i(q,0)},setInverted:function(b){a.uniform1i(g,b)},destroy:function(){a&&l&&a.deleteProgram(l)}}}function X(a,c,d){var f=!1,e= |
!1,l=d||2,h=!1,n=0,g;return{destroy:function(){f&&a.deleteBuffer(f)},bind:function(){if(!f)return!1;a.vertexAttribPointer(e,l,a.FLOAT,!1,0,0)},data:g,build:function(d,k,t){g=d||[];if(!(g&&0!==g.length||h))return f=!1;l=t||l;f&&a.deleteBuffer(f);f=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,f);a.bufferData(a.ARRAY_BUFFER,h||new Float32Array(g),a.STATIC_DRAW);e=a.getAttribLocation(c.program(),k);a.enableVertexAttribArray(e);return!0},render:function(c,d,e){var b=h?h.length:g.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){n=-1;h=new Float32Array(4*a)},push:function(a,c,d,b){h&&(h[++n]=a,h[++n]=c,h[++n]=d,h[++n]=b)}}}function ga(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:N[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);r.usePreallocated?t.push(a,b,d?1:0,e||1):(B.push(a),B.push(b),B.push(d?1:0),B.push(e||1))}function e(a,b,e,f,v){c(v);d(a+e,b);c(v);d(a,b);c(v);d(a,b+f);c(v);d(a,b+f);c(v);d(a+e,b+f);c(v);d(a+e,b)}function f(a){r.useGPUTranslations||(b.skipTranslation=!0,a.x=A.toPixels(a.x,!0),a.y=F.toPixels(a.y,!0));d(a.x,a.y,0,2)}var v=a.pointArrayMap&&"low,high"=== |
a.pointArrayMap.join(","),k=a.chart,m=a.options,l=!!m.stacking,g=m.data,n=a.xAxis.getExtremes(),q=n.min,u=n.max,n=a.yAxis.getExtremes(),w=n.min,z=n.max,n=a.xData||m.xData||a.processedXData,x=a.yData||m.yData||a.processedYData,p=a.zData||m.zData||a.processedZData,F=a.yAxis,A=a.xAxis,E=!n||0===n.length,y=a.points||!1,J=!1,H,K,L,I=l?a.data:n||g,D={x:Number.MIN_VALUE,y:0},R={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}),C(y,function(b){var c=b.plotY,d;void 0===c||isNaN(c)||null===b.y||(c=b.shapeArgs,d=b.series.colorAttribs(b),b=d["stroke-width"]||0,K=h.color(d.fill).rgba,K[0]/=255,K[1]/=255,K[2]/=255,"treemap"===a.type&&(b=b||1,L=h.color(d.stroke).rgba,L[0]/=255,L[1]/=255,L[2]/=255,e(c.x,c.y,c.width,c.height, |
L),b/=2),e(c.x+b,c.y+b,c.width-2*b,c.height-2*b,K))})):(C(I,function(c,e){var f,m,h,n=!1,P=!1,g=!1,Y=!1,ha=N[a.type],t=!1,y=!0;if("undefined"===typeof k.index)return!1;E?(f=c[0],m=c[1],I[e+1]&&(P=I[e+1][0]),I[e-1]&&(n=I[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=x[e],I[e+1]&&(P=I[e+1]),I[e-1]&&(n=I[e-1]),p&&p.length&&(h=p[e],p[e]>b.zMax&&(b.zMax=p[e]),p[e]<b.zMin&&(b.zMin=p[e])));P&&P>=q&&P<=u&&(g=!0);n&&n>=q&&n<=u&&(Y=!0);v?(E&&(m=c.slice(1,3)),m= |
m[1]):l&&(f=c.x,m=c.stackY);a.requireSorting||(y=m>=w&&m<=z);f>u&&R.x<u&&(R.x=f,R.y=m);f<q&&D.x<q&&(D.x=f,D.y=m);if(0===m||m&&y)if(f>=q&&f<=u&&(t=!0),t||g||Y)r.useGPUTranslations||(b.skipTranslation=!0,f=A.toPixels(f,!0),m=F.toPixels(m,!0)),ha&&(H=0,0>m&&(H=m,m=0),r.useGPUTranslations||(H=F.toPixels(H,!0)),d(f,H,0,0,!1)),b.hasMarkers&&!1!==J&&(a.closestPointRangePx=Math.min(a.closestPointRangePx,Math.abs(f-J))),d(f,m,0,"bubble"===a.type?h||1:2,!1),J=f}),J||(f(D),f(R))))}function e(){u=[];y.data=B= |
[];p=[]}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 n(a,b){k.setUniform("hasThreshold",a);k.setUniform("translatedThreshold",b)}function w(c){if(c)q=c.chartWidth||800,F=c.chartHeight||400;else return!1;if(!b||!q||!F)return!1;r.timeRendering&&console.time("gl rendering");k.bind();b.viewport(0,0,q,F);k.setPMatrix([2/q,0,0,0,0,-(2/F),0,0,0,0,-2,0,-1,1,-1,1]);1<r.lineWidth&&!h.isMS&&b.lineWidth(r.lineWidth);t.build(y.data,"aVertexPosition",4);t.bind();x&&(b.bindTexture(b.TEXTURE_2D,D),k.setTexture(D)); |
k.setInverted(c.options.chart?c.options.chart.inverted:!1);C(u,function(a,c){var d=a.series.options,e=d.threshold,f=Q(e),e=a.series.yAxis.getThreshold(e),m=G(d.marker?d.marker.enabled:null,a.series.xAxis.isRadial?!0:null,a.series.closestPointRangePx>2*((d.marker?d.marker.radius:10)||10)),v=a.series.fillOpacity?(new Z(a.series.color)).setOpacity(G(d.fillOpacity,.85)).get():a.series.color;t.bind();d.colorByPoint&&(v=a.series.chart.options.colors[c]);v=h.color(v).rgba;r.useAlpha||(v[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=X(b,k),c.build(a.colorData,"aColor",4),c.bind());k.setColor(v);l(a.series.xAxis);g(a.series.yAxis);n(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(ia[a.series.type]&&x||!1);t.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),t.render(a.from,a.to,"POINTS"))});t.destroy();r.timeRendering&&console.timeEnd("gl rendering");e();a&&a()}function z(a){d();if(a.renderer.forExport)return w(a); |
E?w(a):setTimeout(function(){z(a)},1)}var k=!1,t=!1,b=!1,q=0,F=0,B=!1,p=!1,x=!1,y={},E=!1,u=[],M=U.createElement("canvas"),O=M.getContext("2d"),D,N={column:!0,area:!0},ia={scatter:!0,bubble:!0},r={pointSize:1,lineWidth:3,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1};return y={allocateBufferForSingleSeries:function(a){var b=0;r.usePreallocated&&(A(a)&&(b=c(a)),t.allocate(b))},pushSeries:function(a){0<u.length&&(u[u.length- |
1].to=B.length,u[u.length-1].hasMarkers&&(u[u.length-1].markerTo=p.length));r.timeSeriesProcessing&&console.time("building "+a.type+" series");u.push({from:B.length,markerFrom:p.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,u[u.length-1]);r.timeSeriesProcessing&&console.timeEnd("building "+a.type+" series")},setSize:function(a,b){if(q!==a||b!==b)q=a,F=b,k.bind(),k.setPMatrix([2/q,0,0,0,0,-(2/F),0,0,0,0,-2,0,-1,1,-1,1])},inited:function(){return E},setThreshold:n,init:function(a,c){var d=0,f=["webgl","experimental-webgl","moz-webgl","webkit-3d"];E=!1;if(!a)return!1;for(r.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=fa(b);t=X(b,k);x=!1;D=b.createTexture();M.width=512;M.height=512;O.fillStyle="#FFF";O.beginPath();O.arc(256,256,256,0,2*Math.PI);O.fill();try{b.bindTexture(b.TEXTURE_2D,D),b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,M),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),x=!0}catch(oa){}E=!0;r.timeSetup&&console.timeEnd("gl setup");return!0},render:z,settings:r,valid:function(){return!1!==b},clear:d,flush:e,setXAxis:l,setYAxis:g,data:B,gl:function(){return b},allocateBuffer:function(a){var b=0;r.usePreallocated&&(C(a.series,function(a){A(a)&&(b+=c(a))}),t.allocate(b))},destroy:function(){t.destroy();k.destroy()},setOptions:function(a){ja(!0,r,a)}}}function aa(a, |
c){var d=a.chartWidth,f=a.chartHeight,e=a,l=a.seriesGroup||c.group,g=function(a,d,e,f,h,b,l){a.call(c,e,d,f,h,b,l)},e=z(a)?a:c;e.image||(e.canvas=U.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.inverted&&C(["moveTo","lineTo","rect","arc"],function(a){w(!1,a,g)}),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=ga(function(){e.image.attr({href:e.canvas.toDataURL("image/png")})}),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 ba(a,c,d){a&&c.image&&c.canvas&&!z(d||c.chart)&&a.render(d||c.chart)}function ca(a, |
c){a&&c.image&&c.canvas&&!z(c.chart)&&a.allocateBufferForSingleSeries(c)}function S(a,c,d,f,e,h){e=e||0;f=f||5E4;for(var l=e+f,g=!0;g&&e<l&&e<a.length;)g=c(a[e],e),++e;g&&(e<a.length?h?S(a,c,d,f,e,h):T.requestAnimationFrame?T.requestAnimationFrame(function(){S(a,c,d,f,e)}):setTimeout(function(){S(a,c,d,f,e)}):d&&d())}function ka(a){if(!A(this))return a.call(this);if(a=aa(this.chart,this))ca(a,this),a.pushSeries(this);ba(a,this)}var T=h.win,U=T.document,la=function(){},Z=h.Color,p=h.Series,g=h.seriesTypes, |
C=h.each,da=h.extend,ea=h.addEvent,ma=h.fireEvent,na=h.grep,Q=h.isNumber,ja=h.merge,G=h.pick,w=h.wrap,V=h.getOptions().plotOptions,W;Z.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"};p.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};w(p.prototype,"searchPoint",function(a){return this.getPoint(a.apply(this,[].slice.call(arguments,1)))});w(p.prototype,"destroy",function(a){var c=this,d=c.chart;d.markerGroup===c.markerGroup&&(c.markerGroup=null);d.hoverPoints&&(d.hoverPoints=na(d.hoverPoints,function(a){return a.series=== |
c}));d.hoverPoint&&d.hoverPoint.series===c&&(d.hoverPoint=null);a.call(this)});w(p.prototype,"getExtremes",function(a){if(!A(this)||!this.hasExtremes||!this.hasExtremes())return a.apply(this,Array.prototype.slice.call(arguments,1))});C("area arearange column line scatter heatmap bubble treemap heatmap".split(" "),function(a){V[a]&&(V[a].boostThreshold=5E3,V[a].boostData=[])});C(["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"]()}w(p.prototype,a,c);"translate"===a&&(g.column&&w(g.column.prototype,a,c),g.arearange&&w(g.arearange.prototype,a,c),g.treemap&&w(g.treemap.prototype,a,c))});(function(){var a=0,c,d=["webgl","experimental-webgl","moz-webgl","webkit-3d"],f=!1;if("undefined"!== |
typeof T.WebGLRenderingContext)for(c=U.createElement("canvas");a<d.length;a++)try{if(f=c.getContext(d[a]),"undefined"!==typeof f&&null!==f)return!0}catch(e){}return!1})()?(w(p.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(p.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)&&Q(f.min)&&Q(f.max)&&(!a||Q(d.min)&&Q(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());C(["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, |
n=c.yData||a.processedYData,p=c.data,d=e.getExtremes(),w=d.min,k=d.max,d=h.getExtremes(),t=d.min,b=d.max,q={},x,B=!!a.sampling,A,C=!1!==c.enableMouseTracking,y=h.getThreshold(c.threshold),E=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),u=!!c.stacking,M=a.cropStart||0,O=a.requireSorting,D=!g,N,G,r,v,m=function(a,b,c){W=a+","+b;C&&!q[W]&&(q[W]=!0,f.inverted&&(a=e.len-a,b=h.len-b),A.push({clientX:a,plotX:a,plotY:b,i:M+c}))},d=aa(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=la,d&&(ca(d,this),d.pushSeries(a),ba(d,this,f)),S(u?a.data:g||p,function(a,c){var d,g,l,p="undefined"===typeof f.index,q=!0;if(!p&&(D?(d=a[0],g=a[1]):(d=a,g=n[c]),E?(D&&(g=a.slice(1,3)),l=g[0],g=g[1]):u&&(d=a.x,g=a.stackY,l=g-a.y),O||(q=g>=t&&g<=b),null!==g&&d>=w&&d<=k&&q))if(a=Math.ceil(e.toPixels(d,!0)),B){if(void 0===r||a===x){E||(l=g);if(void 0===v||g>G)G= |
g,v=c;if(void 0===r||l<N)N=l,r=c}a!==x&&(void 0!==r&&(g=h.toPixels(G,!0),y=h.toPixels(N,!0),m(a,g,v),y!==g&&m(a,y,r)),r=v=void 0,x=a)}else g=Math.ceil(h.toPixels(g,!0)),m(a,g,c);return!p},function(){ma(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:""}))}}),C(["heatmap","treemap"],function(a){g[a]&&(w(g[a].prototype,"drawPoints",ka),g[a].prototype.directTouch= |
!1)}),g.bubble&&(delete g.bubble.prototype.buildKDTree,g.bubble.prototype.directTouch=!1,w(g.bubble.prototype,"markerAttribs",function(a){return A(this)?!1:a.apply(this,[].slice.call(arguments,1))})),g.scatter.prototype.fill=!0,da(g.area.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),da(g.column.prototype,{fill:!0,sampling:!0}),w(p.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){ea(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)});ea(a,"render",function(){a.ogl&&z(a)&&a.ogl.render(a)})})):"undefined"!==typeof h.initCanvasBoost?h.initCanvasBoost():h.error(26)})(x)}); |
/base/000_base/node_modules/highcharts/js/modules/boost.js.map |
---|
@@ -0,0 +1,8 @@ |
{ |
"version":3, |
"file":"", |
"lineCount":51, |
"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","undefined","isNaN","shapeArgs","colorAttribs","swidth","fill","rgba","stroke","width","height","d","z","px","nx","nextInside","prevInside","drawAsBar","isXInside","isYInside","index","stackY","requireSorting","pcolor","hasMarkers","abs","flush","markerData","setXAxis","axis","transA","minPixelPadding","pointRange","len","pos","horiz","setYAxis","setThreshold","has","translation","chartWidth","chartHeight","timeRendering","console","time","viewport","lineWidth","isMS","textureIsReady","bindTexture","TEXTURE_2D","circleTextureHandle","inverted","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","setOptions","merge","createAndAttachRenderer","target","targetGroup","seriesGroup","group","swapXY","proceed","c","image","add","boostClipRect","clipRect","plotLeft","plotTop","plotWidth","clip","fn","wrap","Chart","markerGroup","g","translate","attr","style","ogl","href","toDataURL","renderIfNotSeriesBoosting","allocateIfNotSeriesBoosting","eachAsync","arr","finalFunc","chunkSize","noTimeout","CHUNK_SIZE","win","requestAnimationFrame","pointDrawHandler","document","noop","Series","seriesTypes","extend","addEvent","fireEvent","grep","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","category","dist","distX","plotX","apply","hoverPoints","hoverPoint","hasExtremes","method","branch","letItPass","animate","column","arearange","treemap","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/boost.src.js |
---|
@@ -0,0 +1,2721 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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 |
* - 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 (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; |
// } |
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) { |
//gl.deleteTexture(circleTextureHandle); |
} |
} |
//////////////////////////////////////////////////////////////////////////// |
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, |
swapXY = function(proceed, x, y, a, b, c, d) { |
proceed.call(series, y, x, a, b, c, d); |
}; |
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.inverted) { |
each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) { |
wrap(false, fn, swapXY); |
}); |
} |
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') |
}); |
}); //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); |
} |
} |
}); |
/* |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/broken-axis.js |
---|
@@ -0,0 +1,15 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
(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(b){b.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(b,e){var c=b.repeat||Infinity,a=b.from,d=b.to-b.from;e=e>=a?(e-a)%c:c-(a-e)%c;return b.inclusive? |
e<=d:e<d&&0!==e},isInAnyBreak:function(b,e){var c=this.options.breaks,a=c&&c.length,d,n,w;if(a){for(;a--;)this.isInBreak(c[a],b)&&(d=!0,n||(n=r(c[a].showPoints,this.isXAxis?!1:!0)));w=d&&e?d&&!n:d}return w}});g(t.prototype,"setTickPositions",function(b){b.apply(this,Array.prototype.slice.call(arguments,1));if(this.options.breaks){var e=this.tickPositions,c=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=c}}); |
g(t.prototype,"init",function(b,e,c){var a=this;c.breaks&&c.breaks.length&&(c.ordinal=!1);b.call(this,e,c);b=this.options.breaks;a.isBroken=z(b)&&!!b.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(b){b.apply(this,h(arguments));var e=this.xAxis,c=this.yAxis,a=this.points,d,f=a.length,g=this.options.connectNulls,x;if(e&&c&&(e.options.breaks||c.options.breaks))for(;f--;)d=a[f],x=null===d.y&&!1===g,x||!e.isInAnyBreak(d.x,!0)&&!c.isInAnyBreak(d.y,!0)||(a.splice(f,1),this.data[f]&&this.data[f].destroyElements())}); |
f.Series.prototype.drawBreaks=function(b,e){var c=this,a=c.points,d,f,g,h;b&&q(e,function(e){d=b.breakArray||[];f=b.isXAxis?b.min:r(c.options.threshold,b.min);q(a,function(a){h=r(a["stack"+e.toUpperCase()],a[e]);q(d,function(c){g=!1;if(f<c.from&&h>c.to||f>c.from&&h<c.from)g="pointBreak";else if(f<c.from&&h>c.from&&h<c.to||f>c.from&&h>c.to&&h<c.from)g="pointInBreak";g&&v(b,g,{point:a,brk:c})})})})};f.Series.prototype.gappedPath=function(){var b=this.options.gapSize,e=this.points.slice(),c=e.length- |
1;if(b&&0<c)for(;c--;)e[c+1].x-e[c].x>this.closestPointRange*b&&e.splice(c+1,0,{isNull:!0});return this.getGraphPath(e)};g(f.seriesTypes.column.prototype,"drawPoints",u);g(f.Series.prototype,"drawPoints",u)})(h)}); |
/base/000_base/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","isNull","getGraphPath","seriesTypes","column"] |
} |
/base/000_base/node_modules/highcharts/js/modules/broken-axis.src.js |
---|
@@ -0,0 +1,375 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* |
* (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; |
if (gapSize && i > 0) { // #5008 |
// extension for ordinal breaks |
while (i--) { |
if (points[i + 1].x - points[i].x > this.closestPointRange * gapSize) { |
points.splice( // insert after this one |
i + 1, |
0, { |
isNull: true |
} |
); |
} |
} |
} |
// Call base method |
return this.getGraphPath(points); |
}; |
wrap(H.seriesTypes.column.prototype, 'drawPoints', drawPointsWrapped); |
wrap(H.Series.prototype, 'drawPoints', drawPointsWrapped); |
}(Highcharts)); |
})); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/data.js |
---|
@@ -0,0 +1,26 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/data.src.js |
---|
@@ -0,0 +1,981 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/drilldown.js |
---|
@@ -0,0 +1,24 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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,z=f.color,A=f.defaultOptions,h=f.each,p=f.extend,G=f.format,B=f.objectEach,v=f.pick,u=f.wrap,q=f.Chart,w=f.seriesTypes,C=w.pie,r=w.column,D=f.Tick,x=f.fireEvent,E=f.inArray,F=1;p(A.lang,{drillUpText:"\u25c1 Back to {series.name}"});A.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=[],t,m,y;y={colorIndex:v(a.colorIndex,d.colorIndex)};this.drilldownLevels||(this.drilldownLevels=[]);t=d.options._levelNumber||0;(m=this.drilldownLevels[this.drilldownLevels.length-1])&&m.levelNumber!==t&&(m=void 0); |
b=p(p({_ddSeriesId:F++},y),b);g=E(a,d.points);h(d.chart.series,function(a){a.xAxis!==c||a.isDrilling||(a.options._ddSeriesId=a.options._ddSeriesId||F++,a.options._colorIndex=a.userOptions._colorIndex,a.options._levelNumber=a.options._levelNumber||t,m?(k=m.levelSeries,l=m.levelSeriesOptions):(k.push(a),l.push(a.options)))});a=p({levelNumber:t,seriesOptions:d.options,levelSeriesOptions:l,levelSeries:k,shapeArgs:a.shapeArgs,bBox:a.graphic?a.graphic.getBBox():{},color:a.isNull?(new f.Color(z)).setOpacity(0).get(): |
z,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=t+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,G(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=[]};r.prototype.supportsDrilldown=!0;r.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}};r.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)};r.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()))})};C&&p(C.prototype,{supportsDrilldown:!0,animateDrillupTo:r.prototype.animateDrillupTo,animateDrillupFrom:r.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===E(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){B(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,f=d.points;for(c=0;c<e.length;c++)if(e[c]===a&&d.options.data[c]&&d.options.data[c].drilldown){b.push(f?f[c]:!0);break}});return b};D.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")))}; |
u(D.prototype,"addLabel",function(a){a.call(this);this.drillable()});u(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});u(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){a.drilldown&&a.dataLabel&&("contrast"===b.color&&d.getContrast(a.color||this.color),a.dataLabel.addClass("highcharts-drilldown-data-label"))},this)});var H=function(a){a.call(this);h(this.points,function(a){a.drilldown&&a.graphic&&a.graphic.addClass("highcharts-drilldown-point")})};B(w,function(a){a.prototype.supportsDrilldown&&u(a.prototype,"drawTracker",H)})})(n)}); |
/base/000_base/node_modules/highcharts/js/modules/drilldown.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","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","supportsDrilldown","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","getContrast","drawTrackerWrapper","seriesType"] |
} |
/base/000_base/node_modules/highcharts/js/modules/drilldown.src.js |
---|
@@ -0,0 +1,760 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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}' |
}); |
defaultOptions.drilldown = { |
animation: { |
duration: 500 |
}, |
drillUpButton: { |
position: { |
align: 'right', |
x: -10, |
y: 10 |
} |
// relativeTo: 'plotBox' |
// theme |
} |
}; |
/** |
* 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. |
* |
* @memberOf Highcharts.Chart |
* @name #drillUp |
*/ |
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 |
}; |
ColumnSeries.prototype.supportsDrilldown = true; |
/** |
* 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, { |
supportsDrilldown: true, |
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 pointCSS = {}; |
if (point.drilldown && point.dataLabel) { |
if (css.color === 'contrast') { |
pointCSS.color = renderer.getContrast(point.color || this.color); |
} |
point.dataLabel |
.addClass('highcharts-drilldown-data-label'); |
} |
}, this); |
}); |
// Mark the trackers with a pointer |
var drawTrackerWrapper = function(proceed) { |
proceed.call(this); |
each(this.points, function(point) { |
if (point.drilldown && point.graphic) { |
point.graphic.addClass('highcharts-drilldown-point'); |
} |
}); |
}; |
objectEach(seriesTypes, function(seriesType) { |
if (seriesType.prototype.supportsDrilldown) { |
wrap(seriesType.prototype, 'drawTracker', drawTrackerWrapper); |
} |
}); |
}(Highcharts)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/export-data.js |
---|
@@ -0,0 +1,17 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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,v=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: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,c){return b.xValues[a]-c.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(a){var b="\x3ctable\x3e\x3cthead\x3e",c=this.getDataRows();q(c,function(c,d){var h=d?"td":"th",f,g,k=a?(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+"\x3e"+(void 0===f?"":f)+"\x3c/"+h+"\x3e";b+="\x3c/tr\x3e";d||(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)):v?(c=p.createElement("a"),c.href=a,c.target="_blank",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";}\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()};d.getOptions().exporting&&d.getOptions().exporting.buttons.contextButton.menuItems.push({textKey:"downloadCSV", |
onclick:function(){this.downloadCSV()}},{textKey:"downloadXLS",onclick:function(){this.downloadXLS()}},{textKey:"viewData",onclick:function(){this.viewData()}});a.map&&(a.map.prototype.exportKey="name");a.mapbubble&&(a.mapbubble.prototype.exportKey="name");a.treemap&&(a.treemap.prototype.exportKey="name")})(n)}); |
/base/000_base/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","target","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","getOptions","buttons","contextButton","menuItems","textKey","onclick","map","mapbubble","treemap"] |
} |
/base/000_base/node_modules/highcharts/js/modules/export-data.src.js |
---|
@@ -0,0 +1,415 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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 : 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 + '>' + (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; |
}; |
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.target = '_blank'; |
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";}</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. 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/highslide-software/highcharts.com/master/studies/csv-export/csv.php |
if (Highcharts.getOptions().exporting) { |
Highcharts.getOptions().exporting.buttons.contextButton.menuItems.push({ |
textKey: 'downloadCSV', |
onclick: function() { |
this.downloadCSV(); |
} |
}, { |
textKey: 'downloadXLS', |
onclick: function() { |
this.downloadXLS(); |
} |
}, { |
textKey: 'viewData', |
onclick: function() { |
this.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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/exporting.js |
---|
@@ -0,0 +1,28 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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(e){var p=e.defaultOptions,t=e.doc,B=e.Chart,u=e.addEvent,K=e.removeEvent,H=e.fireEvent,n=e.createElement,D=e.discardElement,I=e.css,x=e.merge,E=e.pick,k=e.each,F=e.objectEach,y=e.extend,z=e.win,J=z.navigator.userAgent,G=e.SVGRenderer,L=e.Renderer.prototype.symbols,M=/Edge\/|Trident\/|MSIE /.test(J),N=/firefox/i.test(J);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:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};e.post=function(a,b,c){var d=n("form",x({method:"post",action:a,enctype:"multipart/form-data"},c), |
{display:"none"},t.body);F(b,function(a,b){n("input",{type:"hidden",name:b,value:a},null,d)});d.submit();D(d)};y(B.prototype,{sanitizeSVG:function(a,b){if(b&&b.exporting&&b.exporting.allowHTML){var c=a.match(/<\/svg>(.*?$)/);c&&c[1]&&(c='\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'+c[1]+"\x3c/body\x3e\x3c/foreignObject\x3e",a=a.replace("\x3c/svg\x3e",c+"\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,c,d,v,l,g=x(this.options,a);t.createElementNS||(t.createElementNS=function(a,b){return t.createElement(b)});c=n("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},t.body);d=this.renderTo.style.width;l=this.renderTo.style.height;d=g.exporting.sourceWidth||g.chart.width||/px$/.test(d)&&parseInt(d,10)||600;l=g.exporting.sourceHeight|| |
g.chart.height||/px$/.test(l)&&parseInt(l,10)||400;y(g.chart,{animation:!1,renderTo:c,forExport:!0,renderer:"SVGRenderer",width:d,height:l});g.exporting.enabled=!1;delete g.data;g.series=[];k(this.series,function(a){v=x(a.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});v.isInternal||g.series.push(v)});k(this.axes,function(a){a.userOptions.internalKey||(a.userOptions.internalKey=e.uniqueKey())});b=new e.Chart(g,this.callback);a&&k(["xAxis","yAxis","series"],function(d){var c= |
{};a[d]&&(c[d]=a[d],b.update(c))});k(this.axes,function(a){var d=e.find(b.axes,function(b){return b.options.internalKey===a.userOptions.internalKey}),c=a.getExtremes(),f=c.userMin,c=c.userMax;!d||void 0===f&&void 0===c||d.setExtremes(f,c,!0,!1)});d=b.getChartHTML();d=this.sanitizeSVG(d,g);g=null;b.destroy();D(c);return d},getSVGForExport:function(a,b){var c=this.options.exporting;return this.getSVG(x({chart:{borderRadius:0}},c.chartOptions,b,{exporting:{sourceWidth:a&&a.sourceWidth||c.sourceWidth, |
sourceHeight:a&&a.sourceHeight||c.sourceHeight}}))},exportChart:function(a,b){b=this.getSVGForExport(a,b);a=x(this.options.exporting,a);e.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,c=[],d=b.parentNode,e=t.body,l=e.childNodes,g=a.options.exporting.printMaxWidth,f,m;if(!a.isPrinting){a.isPrinting=!0;a.pointer.reset(null,0);H(a,"beforePrint");if(m=g&&a.chartWidth>g)f=[a.options.chart.width,void 0, |
!1],a.setSize(g,void 0,!1);k(l,function(a,b){1===a.nodeType&&(c[b]=a.style.display,a.style.display="none")});e.appendChild(b);z.focus();z.print();setTimeout(function(){d.appendChild(b);k(l,function(a,b){1===a.nodeType&&(a.style.display=c[b])});a.isPrinting=!1;m&&a.setSize.apply(a,f);H(a,"afterPrint")},1E3)}},contextMenu:function(a,b,c,d,e,l,g){var f=this,m=f.chartWidth,q=f.chartHeight,v="cache-"+a,h=f[v],r=Math.max(e,l),C,w;h||(f[v]=h=n("div",{className:a},{position:"absolute",zIndex:1E3,padding:r+ |
"px"},f.container),C=n("div",{className:"highcharts-menu"},null,h),w=function(){I(h,{display:"none"});g&&g.setState(0);f.openMenu=!1},f.exportEvents.push(u(h,"mouseleave",function(){h.hideTimer=setTimeout(w,500)}),u(h,"mouseenter",function(){clearTimeout(h.hideTimer)}),u(t,"mouseup",function(b){f.pointer.inClass(b.target,a)||w()})),k(b,function(a){if(a){var b;b=a.separator?n("hr",null,null,C):n("div",{className:"highcharts-menu-item",onclick:function(b){b&&b.stopPropagation();w();a.onclick&&a.onclick.apply(f, |
arguments)},innerHTML:a.text||f.options.lang[a.textKey]},null,C);f.exportDivElements.push(b)}}),f.exportDivElements.push(C,h),f.exportMenuWidth=h.offsetWidth,f.exportMenuHeight=h.offsetHeight);b={display:"block"};c+f.exportMenuWidth>m?b.right=m-c-e-r+"px":b.left=c-r+"px";d+l+f.exportMenuHeight>q&&"top"!==g.alignOptions.verticalAlign?b.bottom=q-d-r+"px":b.top=d+l-r+"px";I(h,b);f.openMenu=!0},addButton:function(a){var b=this,c=b.renderer,d=x(b.options.navigation.buttonOptions,a),e=d.onclick,l=d.menuItems, |
g,f,m=d.symbolSize||12;b.btnCount||(b.btnCount=0);b.exportDivElements||(b.exportDivElements=[],b.exportSVGElements=[]);if(!1!==d.enabled){var q=d.theme,k=q.states,h=k&&k.hover,k=k&&k.select,r;delete q.states;e?r=function(a){a.stopPropagation();e.call(b,a)}:l&&(r=function(){b.contextMenu(f.menuClassName,l,f.translateX,f.translateY,f.width,f.height,f);f.setState(2)});d.text&&d.symbol?q.paddingLeft=E(q.paddingLeft,25):d.text||y(q,{width:d.width,height:d.height,padding:0});f=c.button(d.text,0,0,r,q,h, |
k).addClass(a.className).attr({title:b.options.lang[d._titleKey],zIndex:3});f.menuClassName=a.menuClassName||"highcharts-menu-"+b.btnCount++;d.symbol&&(g=c.symbol(d.symbol,d.symbolX-m/2,d.symbolY-m/2,m,m).addClass("highcharts-button-symbol").attr({zIndex:1}).add(f));f.add().align(y(d,{width:f.width,x:E(d.x,b.buttonOffset)}),!0,"spacingBox");b.buttonOffset+=(f.width+d.buttonSpacing)*("right"===d.align?-1:1);b.exportSVGElements.push(f,g)}},destroyExport:function(a){var b=a?a.target:this;a=b.exportSVGElements; |
var c=b.exportDivElements,d=b.exportEvents,e;a&&(k(a,function(a,d){a&&(a.onclick=a.ontouchstart=null,e="cache-"+a.menuClassName,b[e]&&delete b[e],b.exportSVGElements[d]=a.destroy())}),a.length=0);c&&(k(c,function(a,d){clearTimeout(a.hideTimer);K(a,"mouseleave");b.exportDivElements[d]=a.onmouseout=a.onmouseover=a.ontouchstart=a.onclick=null;D(a)}),c.length=0);d&&(k(d,function(a){a()}),d.length=0)}});G.prototype.inlineToAttributes="fill stroke strokeLinecap strokeLinejoin strokeWidth textAnchor x y".split(" "); |
G.prototype.inlineBlacklist=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/perspective/,/TapHighlightColor/,/^transition/];G.prototype.unstyledElements=["clipPath","defs","desc"];B.prototype.inlineStyles=function(){function a(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()})}function b(c){function q(b,e){n=u=!1;if(l){for(A=l.length;A--&&!u;)u=l[A].test(e);n=!u}"transform"===e&&"none"===b&&(n=!0);for(A=v.length;A--&&!n;)n=v[A].test(e)||"function"=== |
typeof b;n||r[e]!==b&&f[c.nodeName][e]!==b&&(-1!==d.indexOf(e)?c.setAttribute(a(e),b):p+=a(e)+":"+b+";")}var h,r,p="",w,n,u,A;if(1===c.nodeType&&-1===g.indexOf(c.nodeName)){h=z.getComputedStyle(c,null);r="svg"===c.nodeName?{}:z.getComputedStyle(c.parentNode,null);f[c.nodeName]||(m||(m=t.createElementNS(e.SVG_NS,"svg"),m.setAttribute("version","1.1"),t.body.appendChild(m)),w=t.createElementNS(c.namespaceURI,c.nodeName),m.appendChild(w),f[c.nodeName]=x(z.getComputedStyle(w,null)),m.removeChild(w)); |
if(N||M)for(var y in h)q(h[y],y);else F(h,q);p&&(h=c.getAttribute("style"),c.setAttribute("style",(h?h+";":"")+p));"svg"===c.nodeName&&c.setAttribute("stroke-width","1px");"text"!==c.nodeName&&k(c.children||c.childNodes,b)}}var c=this.renderer,d=c.inlineToAttributes,v=c.inlineBlacklist,l=c.inlineWhitelist,g=c.unstyledElements,f={},m;b(this.container.querySelector("svg"));m.parentNode.removeChild(m)};L.menu=function(a,b,c,d){return["M",a,b+2.5,"L",a+c,b+2.5,"M",a,b+d/2+.5,"L",a+c,b+d/2+.5,"M",a,b+ |
d-1.5,"L",a+c,b+d-1.5]};B.prototype.renderExporting=function(){var a=this,b=a.options.exporting,c=b.buttons,d=a.isDirtyExporting||!a.exportSVGElements;a.buttonOffset=0;a.isDirtyExporting&&a.destroyExport();d&&!1!==b.enabled&&(a.exportEvents=[],F(c,function(b){a.addButton(b)}),a.isDirtyExporting=!1);u(a,"destroy",a.destroyExport)};B.prototype.callbacks.push(function(a){a.renderExporting();u(a,"redraw",a.renderExporting);k(["exporting","navigation"],function(b){a[b]={update:function(c,d){a.isDirtyExporting= |
!0;x(!0,a.options[b],c);E(d,!0)&&a.redraw()}}})})})(p)}); |
/base/000_base/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","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","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/exporting.src.js |
---|
@@ -0,0 +1,1050 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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 |
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. |
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 |
defaultOptions.exporting = { |
//enabled: true, |
//filename: 'chart', |
type: 'image/png', |
url: 'https://export.highcharts.com/', |
//width: undefined, |
printMaxWidth: 780, |
scale: 2, |
buttons: { |
contextButton: { |
className: 'highcharts-contextbutton', |
menuClassName: 'highcharts-contextmenu', |
//x: -10, |
symbol: 'menu', |
_titleKey: 'contextButtonTitle', |
menuItems: [{ |
textKey: 'printChart', |
onclick: function() { |
this.print(); |
} |
}, { |
separator: true |
}, { |
textKey: 'downloadPNG', |
onclick: function() { |
this.exportChart(); |
} |
}, { |
textKey: 'downloadJPEG', |
onclick: function() { |
this.exportChart({ |
type: 'image/jpeg' |
}); |
} |
}, { |
textKey: 'downloadPDF', |
onclick: function() { |
this.exportChart({ |
type: 'application/pdf' |
}); |
} |
}, { |
textKey: 'downloadSVG', |
onclick: function() { |
this.exportChart({ |
type: 'image/svg+xml' |
}); |
} |
}] |
} |
} |
}; |
// 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 */ { |
/** |
* A collection of fixes on the produced SVG to account for expando properties, |
* browser bugs, VML problems and other. Returns a cleaned SVG. |
*/ |
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 innerHTML of chart. Used as hook for plugins. |
*/ |
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 |
* |
* @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 (item) { |
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 |
*/ |
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 buttons. |
*/ |
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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/funnel.js |
---|
@@ -0,0 +1,12 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/funnel.src.js |
---|
@@ -0,0 +1,291 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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', { |
animation: false, |
center: ['50%', '50%'], |
width: '90%', |
neckWidth: '30%', |
height: '100%', |
neckHeight: '25%', |
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. |
* A pyramid series is a special type of funnel, without neck and reversed by default. |
*/ |
seriesType('pyramid', 'funnel', { |
neckWidth: '0%', |
neckHeight: '0%', |
reversed: true |
}); |
}(Highcharts)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/gantt.js |
---|
@@ -0,0 +1,24 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/gantt.src.js |
---|
@@ -0,0 +1,793 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/grid-axis.js |
---|
@@ -0,0 +1,19 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/node_modules/highcharts/js/modules/grid-axis.js.map |
---|
@@ -0,0 +1,8 @@ |
{ |
"version":3, |
"file":"", |
"lineCount":19, |
"mappings":"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", |
"sources":["Input_0"], |
"names":["factory","module","exports","Highcharts","H","dateFormat","each","isObject","pick","wrap","Axis","Chart","Tick","prototype","isOuterAxis","Axis.prototype.isOuterAxis","axis","thisIndex","isOuter","chart","axes","otherAxis","index","side","getLabelWidth","Tick.prototype.getLabelWidth","label","getBBox","width","getMaxLabelLength","Axis.prototype.getMaxLabelLength","force","tickPositions","ticks","maxLabelLength","tick","labelLength","addTitle","Axis.prototype.addTitle","renderer","axisParent","horiz","opposite","options","axisTitleOptions","title","showAxis","hasData","showEmpty","axisTitle","textAlign","low","middle","high","align","text","useHTML","attr","zIndex","rotation","addClass","add","isNew","dateFormats","W","timestamp","date","Date","day","getUTCDay","time","getTime","startOfYear","getUTCFullYear","setDate","getUTCDate","Math","floor","dayNumber","E","charAt","proceed","isCategoryAxis","undefined","categories","isLastTick","pos","lastTick","length","grid","apply","x","y","retVal","Array","slice","call","arguments","tickInterval","fontSize","labelMetrics","labels","style","fontMetrics","lblB","b","lblH","h","axisHeight","axisGroup","height","newPos","translate","left","labelCenter","abs","top","newX","labelPadding","defaultLeftAxisOptions","distance","axisOffset","tickSize","enabled","labelRotation","userOptions","startOnTick","minPadding","endOnTick","lineWidth","yStartIndex","yEndIndex","xStartIndex","xEndIndex","rightWall","destroy","axisGroupBox","path","stroke","tickColor","tickWidth","class","axisLine","linePath","getLinePath","indexOf","axisLineExtra","animate","d","lineColor","fontSizeToCellHeightRatio","type","units","tickLength","cellHeight"] |
} |
/base/000_base/node_modules/highcharts/js/modules/grid-axis.src.js |
---|
@@ -0,0 +1,545 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/heatmap.js |
---|
@@ -0,0 +1,25 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
(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,g=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,f=this.options,b=a.dataClasses.length;this.dataClasses=c=[];this.legendItems=[];e(a.dataClasses,function(a,e){a=r(a);c.push(a);a.color||("category"===f.dataClassColor?(a.colorIndex=d,d++,d===k&&(d=0)):a.color=m(f.minColor).tweenTo(m(f.maxColor),2>b?.5:e/(b-1)))})},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,f;a?(this.left=d=a.attr("x"),this.top=k=a.attr("y"),this.width=f=a.attr("width"),this.height=a=a.attr("height"),this.right=c.chartWidth-d-f,this.bottom=c.chartHeight-k-a,this.len=this.horiz?f: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,f,b=this.dataClasses,e,g;if(b)for(g=b.length;g--;){if(e=b[g],k=e.from,d=e.to,(void 0===k||a>=k)&&(void 0===d||a<=d)){f=e.color;c&&(c.dataClass=g,c.colorIndex=e.colorIndex);break}}else{a=this.normalizedValue(a);for(g=d.length;g--&&!(a>d[g][0]););k=d[g]||d[g+1];d=d[g+1]||k;a=1-(d[0]-a)/(d[0]-k[0]||1);f=k.color.tweenTo(d.color,a)}return f}, |
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,f=this.horiz,g=u(b.symbolWidth, |
f?this.defaultLegendLength:12),e=u(b.symbolHeight,f?12:this.defaultLegendLength),h=u(b.labelPadding,f?16:30),b=u(b.itemDistance,10);this.setLegendColor();c.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,g,e).attr({zIndex:1}).add(c.legendGroup);this.legendItemWidth=g+d+(f?b:h);this.legendItemHeight=e+d+(f?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,f,g=this.pos,e=this.len;c&&(f=this.toPixels(c[c.series.colorKey]),f<g?f=g-2:f>g+e&&(f=g+e+2),c.plotX=f,c.plotY=this.len-f,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,f){return w(f)?this.horiz?["M",f-4,this.top-6,"L",f+ |
4,this.top-6,f,this.top,"Z"]:["M",this.left,f,"L",this.left-6,f+6,this.left-6,f-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,f=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,f)+h);void 0!==r&&void 0!==m&&(p+=" - ");void 0!==m&&(p+=b.numberFormat(m,f)+h);d.push(v({chart:c,name:p,options:{}, |
drawLegendSymbol:g.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})})})(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 g=h[m];if(g=h.options.color||(h.isNull?e:l&&void 0!==g?l.toColor(g,h):h.color||b.color))h.color=g})},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,supportsDrilldown:!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(g){var a=(b.colsize||1)/2,c=(b.rowsize||1)/2,d=l(Math.round(e.len-e.translate(g.x-a,0,1,0,1)),-e.len,2*e.len),a=l(Math.round(e.len-e.translate(g.x+a,0,1,0,1)),-e.len,2*e.len),k=l(Math.round(h.translate(g.y-c,0,1,0,1)),-h.len,2*h.len),c=l(Math.round(h.translate(g.y+c,0,1,0,1)),-h.len,2*h.len);g.plotX=g.clientX=(d+a)/2;g.plotY= |
(k+c)/2;g.shapeType="rect";g.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)}); |
/base/000_base/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","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","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","supportsDrilldown","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/heatmap.src.js |
---|
@@ -0,0 +1,782 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* |
* (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, { |
defaultColorAxisOptions: { |
lineWidth: 0, |
minPadding: 0, |
maxPadding: 0, |
gridLineWidth: 1, |
tickPixelInterval: 72, |
startOnTick: true, |
endOnTick: true, |
offset: 0, |
marker: { |
animation: { |
duration: 50 |
}, |
width: 0.01 |
}, |
labels: { |
overflow: 'justify', |
rotation: 0 |
}, |
minColor: '#e6ebf5', |
maxColor: '#003399', |
tickLength: 5, |
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 (!dataClass.color) { |
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 |
); |
} |
} |
}); |
}, |
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)) { |
color = dataClass.color; |
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) { |
return isNumber(pos) ? // crosshairs only // #3969 pos can be 0 !! |
(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) { |
series.isDirtyData = true; // Needed for Axis.update when choropleth colors change |
}); |
// 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 |
}); |
} |
}); |
}(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 |
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, |
supportsDrilldown: 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; |
options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData |
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 precesence 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/map-parser.js.map |
---|
@@ -0,0 +1,8 @@ |
{ |
"version":3, |
"file":"", |
"lineCount":32, |
"mappings":"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", |
"sources":["Input_0"], |
"names":["factory","module","exports","Highcharts","doc","win","document","each","objectEach","pick","inArray","isNumber","splat","SeriesBuilder","Data","dataOptions","chartOptions","init","extend","prototype","options","columns","rowsToColumns","rows","firstRowAsNames","decimalRegex","decimalPoint","RegExp","rawColumns","length","dataFound","parseCSV","parseTable","parseGoogleSpreadsheet","getColumnDistribution","xColumns","getValueCount","type","seriesTypes","pointArrayMap","globalType","chart","individualCounts","seriesBuilders","seriesIndex","i","series","push","seriesMapping","mapping","x","builder","numberOfValueColumnsNeeded","addColumnReader","val","name","hasReader","undefined","globalPointArrayMap","valueCount","global","individual","switchRowsAndColumns","parseTypes","parsed","complete","self","csv","startRow","endRow","Number","MAX_VALUE","startColumn","endColumn","itemDelimiter","lines","activeRowNo","replace","split","lineDelimiter","indexOf","line","rowNo","trimmed","trim","isComment","items","item","colNo","table","getElementById","getElementsByTagName","tr","children","tagName","innerHTML","googleSpreadsheetKey","gr","gc","jQuery","ajax","dataType","url","googleSpreadsheetWorksheet","error","success","json","cells","feed","entry","cell","cellCount","colCount","rowCount","Math","max","gs$cell","col","row","min","content","$t","column","str","inside","test","parseColumn","floatVal","trimVal","trimInsideVal","isXColumn","backup","descending","columnType","columnTypes","forceCategory","xAxis","parseFloat","isDatetime","isNumeric","dateVal","parseDate","diff","alternativeFormat","dateFormat","dateFormats","alternative","unsorted","mixed","sort","reverse","unshift","pop","regex","parser","match","Date","UTC","ret","key","format","parse","getTime","getTimezoneOffset","rowsLength","colsLength","call","getFreeIndexes","numberOfColumns","freeIndexes","freeIndexValues","referencedIndexes","s","getReferencedColumnIndexes","data","j","allSeriesBuilders","afterComplete","shift","populateColumns","index","splice","readers","typeCol","columnIndex","r","configName","read","turboThreshold","uniqueNames","Highcharts.data","wrap","Chart","proceed","userOptions","callback","hasOwnProperty","merge","pointIsArray","SeriesBuilder.prototype.populateColumns","enoughColumns","reader","SeriesBuilder.prototype.read","rowIndex","point","columnIndexes","value","SeriesBuilder.prototype.addColumnReader","SeriesBuilder.prototype.getReferencedColumnIndexes","referencedColumnIndexes","columnReader","SeriesBuilder.prototype.hasReader","H","svg","loadSVG","pathToArray","path","matrix","position","positions","fixedPoint","startPoint","isRelative","operator","matrixTransform","p","m","a","c","e","b","d","f","isString","toUpperCase","pathToString","arr","join","roundPaths","scale","mapProto","map","fakeSeries","origSize","translate","Axis","minPixelPadding","yAxis","getBox","maxX","minX","maxY","minY","transA","len","translatePath","round","_foundBox","getPathLikeChildren","parent","Array","slice","concat","getPathDefinition","node","nodeName","getAttribute","y","w","h","getTranslate","elem","ctm","getCTM","isNaN","getName","desc","nameTag","innerText","hasFill","handleSVG","xml","currentParent","allPaths","commonLineage","lastCommonAncestor","handleGroups","$frame","$","css","top","appendTo","body","html","removeAttribute","skip","itemLineage","parentNode","g","groupPath","pathHasFill"] |
} |
/base/000_base/node_modules/highcharts/js/modules/map.js |
---|
@@ -0,0 +1,66 @@ |
/* |
Highmaps JS v5.0.12 (2017-05-24) |
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 h=a.Axis,l=a.each,d=a.pick;a=a.wrap;a(h.prototype,"getSeriesExtremes",function(a){var g=this.isXAxis,n,u,h=[],m;g&&l(this.series,function(a,b){a.useMapGeometry&&(h[b]=a.xData,a.xData=[])});a.call(this);g&&(n=d(this.dataMin,Number.MAX_VALUE),u=d(this.dataMax,-Number.MAX_VALUE),l(this.series,function(a,b){a.useMapGeometry&&(n=Math.min(n,d(a.minX,n)),u=Math.max(u,d(a.maxX,n)),a.xData=h[b], |
m=!0)}),m&&(this.dataMin=n,this.dataMax=u))});a(h.prototype,"setAxisTranslation",function(a){var g=this.chart,n=g.plotWidth/g.plotHeight,g=g.xAxis[0],d;a.call(this);"yAxis"===this.coll&&void 0!==g.transA&&l(this.series,function(a){a.preserveAspectRatio&&(d=!0)});if(d&&(this.transA=g.transA=Math.min(this.transA,g.transA),a=n/((g.max-g.min)/(this.max-this.min)),a=1>a?this:g,n=(a.max-a.min)*a.transA,a.pixelPadding=a.len-n,a.minPixelPadding=a.pixelPadding/2,n=a.fixTo)){n=n[1]-a.toValue(n[0],!0);n*=a.transA; |
if(Math.abs(n)>a.minPixelPadding||a.min===a.dataMin&&a.max===a.dataMax)n=0;a.minPixelPadding-=n}});a(h.prototype,"render",function(a){a.call(this);this.fixTo=null})})(x);(function(a){var h=a.Axis,l=a.Chart,d=a.color,g,t=a.each,n=a.extend,u=a.isNumber,v=a.Legend,m=a.LegendSymbolMixin,c=a.noop,b=a.merge,e=a.pick,r=a.wrap;g=a.ColorAxis=function(){this.init.apply(this,arguments)};n(g.prototype,h.prototype);n(g.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(h.prototype.keepProps),init:function(a,k){var f="vertical"!==a.options.legend.layout,p;this.coll="colorAxis";p=b(this.defaultColorAxisOptions,{side:f?2:1,reversed:!f},k,{opposite:!f,showEmpty:!1,title:null});h.prototype.init.call(this, |
a,p);k.dataClasses&&this.initDataClasses(k);this.initStops();this.horiz=f;this.zoomEnabled=!1;this.defaultLegendLength=200},initDataClasses:function(a){var p,f=0,q=this.chart.options.chart.colorCount,w=this.options,e=a.dataClasses.length;this.dataClasses=p=[];this.legendItems=[];t(a.dataClasses,function(a,k){a=b(a);p.push(a);a.color||("category"===w.dataClassColor?(a.colorIndex=f,f++,f===q&&(f=0)):a.color=d(w.minColor).tweenTo(d(w.maxColor),2>e?.5:k/(e-1)))})},initStops:function(){this.stops=this.options.stops|| |
[[0,this.options.minColor],[1,this.options.maxColor]];t(this.stops,function(a){a.color=d(a[1])})},setOptions:function(a){h.prototype.setOptions.call(this,a);this.options.crosshair=this.options.marker},setAxisSize:function(){var a=this.legendSymbol,k=this.chart,f=k.options.legend||{},q,b;a?(this.left=f=a.attr("x"),this.top=q=a.attr("y"),this.width=b=a.attr("width"),this.height=a=a.attr("height"),this.right=k.chartWidth-f-b,this.bottom=k.chartHeight-q-a,this.len=this.horiz?b:a,this.pos=this.horiz?f: |
q):this.len=(this.horiz?f.symbolWidth:f.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,k){var f=this.stops,q,b,p=this.dataClasses,e,c;if(p)for(c=p.length;c--;){if(e=p[c],q=e.from,f=e.to,(void 0===q||a>=q)&&(void 0===f||a<=f)){b=e.color;k&&(k.dataClass=c,k.colorIndex=e.colorIndex);break}}else{a=this.normalizedValue(a);for(c=f.length;c--&&!(a>f[c][0]););q=f[c]||f[c+1];f=f[c+1]||q;a= |
1-(f[0]-a)/(f[0]-q[0]||1);b=q.color.tweenTo(f.color,a)}return b},getOffset:function(){var a=this.legendGroup,k=this.chart.axisOffset[this.side];a&&(this.axisParent=a,h.prototype.getOffset.call(this),this.added||(this.added=!0,this.labelLeft=0,this.labelRight=this.width),this.chart.axisOffset[this.side]=k)},setLegendColor:function(){var a,k=this.reversed;a=k?1:0;k=k?0:1;a=this.horiz?[a,0,k,0]:[0,k,0,a];this.legendColor={linearGradient:{x1:a[0],y1:a[1],x2:a[2],y2:a[3]},stops:this.stops}},drawLegendSymbol:function(a, |
k){var f=a.padding,q=a.options,b=this.horiz,c=e(q.symbolWidth,b?this.defaultLegendLength:12),p=e(q.symbolHeight,b?12:this.defaultLegendLength),r=e(q.labelPadding,b?16:30),q=e(q.itemDistance,10);this.setLegendColor();k.legendSymbol=this.chart.renderer.rect(0,a.baseline-11,c,p).attr({zIndex:1}).add(k.legendGroup);this.legendItemWidth=c+f+(b?q:r);this.legendItemHeight=p+f+(b?r: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 f=b&&b.plotX,q=b&&b.plotY,k,e=this.pos,c=this.len;b&&(k=this.toPixels(b[b.series.colorKey]),k<e?k=e-2:k>e+c&&(k=e+c+2),b.plotX=k,b.plotY=this.len-k,h.prototype.drawCrosshair.call(this,a,b),b.plotX=f,b.plotY=q,this.cross&&this.cross.addClass("highcharts-coloraxis-marker").add(this.legendGroup))},getPlotLinePath:function(a,b,f, |
q,e){return u(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"]:h.prototype.getPlotLinePath.call(this,a,b,f,q)},update:function(a,e){var f=this.chart,q=f.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()}),f.isDirtyLegend=!0);f.options[this.coll]=b(this.userOptions,a);h.prototype.update.call(this,a,e);this.legendItem&& |
(this.setLegendColor(),q.colorizeItem(this,!0))},remove:function(){this.legendItem&&this.chart.legend.destroyItem(this);h.prototype.remove.call(this)},getDataClassLegendSymbols:function(){var b=this,e=this.chart,f=this.legendItems,q=e.options.legend,r=q.valueDecimals,g=q.valueSuffix||"",d;f.length||t(this.dataClasses,function(q,k){var p=!0,w=q.from,h=q.to;d="";void 0===w?d="\x3c ":void 0===h&&(d="\x3e ");void 0!==w&&(d+=a.numberFormat(w,r)+g);void 0!==w&&void 0!==h&&(d+=" - ");void 0!==h&&(d+=a.numberFormat(h, |
r)+g);f.push(n({chart:e,name:d,options:{},drawLegendSymbol:m.drawRectangle,visible:!0,setState:c,isDataClass:!0,setVisible:function(){p=this.visible=!p;t(b.series,function(a){t(a.points,function(a){a.dataClass===k&&a.setVisible(p)})});e.legend.colorizeItem(this,p)}},q))});return f},name:""});t(["fill","stroke"],function(b){a.Fx.prototype[b+"Setter"]=function(){this.elem.attr(b,d(this.start).tweenTo(d(this.end),this.pos),null,!0)}});r(l.prototype,"getAxes",function(a){var b=this.options.colorAxis; |
a.call(this);this.colorAxis=[];b&&new g(this,b)});r(v.prototype,"getAllItems",function(a){var b=[],f=this.chart.colorAxis[0];f&&f.options&&(f.options.showInLegend&&(f.options.dataClasses?b=b.concat(f.getDataClassLegendSymbols()):b.push(f)),t(f.series,function(a){a.options.showInLegend=!1}));return b.concat(a.call(this))});r(v.prototype,"colorizeItem",function(a,b,f){a.call(this,b,f);f&&b.legendColor&&b.legendSymbol.attr({fill:b.legendColor})})})(x);(function(a){var h=a.defined,l=a.each,d=a.noop;a.colorPointMixin= |
{isValid:function(){return null!==this.value},setVisible:function(a){var g=this,d=a?"show":"hide";l(["graphic","dataLabel"],function(a){if(g[a])g[a][d]()})},setState:function(g){a.Point.prototype.setState.call(this,g);this.graphic&&this.graphic.attr({zIndex:"hover"===g?1:0})}};a.colorSeriesMixin={pointArrayMap:["value"],axisTypes:["xAxis","yAxis","colorAxis"],optionalAxis:"colorAxis",trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:d,parallelArrays:["x","y","value"],colorKey:"value", |
translateColors:function(){var a=this,t=this.options.nullColor,d=this.colorAxis,h=this.colorKey;l(this.data,function(g){var m=g[h];if(m=g.options.color||(g.isNull?t:d&&void 0!==m?d.toColor(m,g):g.color||a.color))g.color=m})},colorAttribs:function(a){var g={};h(a.color)&&(g[this.colorProp||"fill"]=a.color);return g}}})(x);(function(a){function h(a){a&&(a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)}function l(a){this.init(a)}var d=a.addEvent,g=a.Chart, |
t=a.doc,n=a.each,u=a.extend,v=a.merge,m=a.pick,c=a.wrap;l.prototype.init=function(a){this.chart=a;a.mapNavButtons=[]};l.prototype.update=function(b){var e=this.chart,c=e.options.mapNavigation,p,k=function(a){this.handler.call(e,a);h(a)},f=e.mapNavButtons;b&&(c=e.options.mapNavigation=v(e.options.mapNavigation,b));for(;f.length;)f.pop().destroy();m(c.enableButtons,c.enabled)&&!e.renderer.forExport&&a.objectEach(c.buttons,function(a,b){p=v(c.buttonOptions,a);a=e.renderer.button(p.text,0,0,k,void 0, |
void 0,void 0,0,"zoomIn"===b?"topbutton":"bottombutton").addClass("highcharts-map-navigation").attr({width:p.width,height:p.height,title:e.options.lang[b],padding:p.padding,zIndex:5}).add();a.handler=p.onclick;a.align(u(p,{width:a.width,height:2*a.height}),null,p.alignTo);d(a.element,"dblclick",h);f.push(a)});this.updateEvents(c)};l.prototype.updateEvents=function(a){var b=this.chart;m(a.enableDoubleClickZoom,a.enabled)||a.enableDoubleClickZoomTo?this.unbindDblClick=this.unbindDblClick||d(b.container, |
"dblclick",function(a){b.pointer.onContainerDblClick(a)}):this.unbindDblClick&&(this.unbindDblClick=this.unbindDblClick());m(a.enableMouseWheelZoom,a.enabled)?this.unbindMouseWheel=this.unbindMouseWheel||d(b.container,void 0===t.onmousewheel?"DOMMouseScroll":"mousewheel",function(a){b.pointer.onContainerMouseWheel(a);h(a);return!1}):this.unbindMouseWheel&&(this.unbindMouseWheel=this.unbindMouseWheel())};u(g.prototype,{fitToBox:function(a,e){n([["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,g,p,k){var f=this.xAxis[0],b=f.max-f.min,e=m(c,f.min+b/2),r=b*a,b=this.yAxis[0],d=b.max-b.min,t=m(g,b.min+d/2),d=d*a,e=this.fitToBox({x:e-r*(p?(p-f.pos)/f.len:.5),y:t-d*(k?(k-b.pos)/b.len:.5),width:r,height:d},{x:f.dataMin,y:b.dataMin,width:f.dataMax-f.dataMin,height:b.dataMax-b.dataMin}),r=e.x<=f.dataMin&&e.width>=f.dataMax-f.dataMin&&e.y<= |
b.dataMin&&e.height>=b.dataMax-b.dataMin;p&&(f.fixTo=[p-f.pos,c]);k&&(b.fixTo=[k-b.pos,g]);void 0===a||r?(f.setExtremes(void 0,void 0,!1),b.setExtremes(void 0,void 0,!1)):(f.setExtremes(e.x,e.x+e.width,!1),b.setExtremes(e.y,e.y+e.height,!1));this.redraw()}});c(g.prototype,"render",function(a){this.mapNavigation=new l(this);this.mapNavigation.update();a.call(this)})})(x);(function(a){var h=a.extend,l=a.pick,d=a.Pointer;a=a.wrap;h(d.prototype,{onContainerDblClick:function(a){var g=this.chart;a=this.normalize(a); |
g.options.mapNavigation.enableDoubleClickZoomTo?g.pointer.inClass(a.target,"highcharts-tracker")&&g.hoverPoint&&g.hoverPoint.zoomTo():g.isInsidePlot(a.chartX-g.plotLeft,a.chartY-g.plotTop)&&g.mapZoom(.5,g.xAxis[0].toValue(a.chartX),g.yAxis[0].toValue(a.chartY),a.chartX,a.chartY)},onContainerMouseWheel:function(a){var g=this.chart,d;a=this.normalize(a);d=a.detail||-(a.wheelDelta/120);g.isInsidePlot(a.chartX-g.plotLeft,a.chartY-g.plotTop)&&g.mapZoom(Math.pow(g.options.mapNavigation.mouseWheelSensitivity, |
d),g.xAxis[0].toValue(a.chartX),g.yAxis[0].toValue(a.chartY),a.chartX,a.chartY)}});a(d.prototype,"zoomOption",function(a){var g=this.chart.options.mapNavigation;l(g.enableTouchZoom,g.enabled)&&(this.chart.options.chart.pinchType="xy");a.apply(this,[].slice.call(arguments,1))});a(d.prototype,"pinchTranslate",function(a,d,h,l,v,m,c){a.call(this,d,h,l,v,m,c);"map"===this.chart.options.chart.type&&this.hasZoom&&(a=l.scaleX>l.scaleY,this.pinchTranslateDirection(!a,d,h,l,v,m,c,a?l.scaleX:l.scaleY))})})(x); |
(function(a){var h=a.colorPointMixin,l=a.each,d=a.extend,g=a.isNumber,t=a.map,n=a.merge,u=a.noop,v=a.pick,m=a.isArray,c=a.Point,b=a.Series,e=a.seriesType,r=a.seriesTypes,p=a.splat,k=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"}}},n(a.colorSeriesMixin,{type:"map",supportsDrilldown:!0,getExtremesFromAll:!0,useMapGeometry:!0,forceDL:!0,searchPoint:u,directTouch:!0,preserveAspectRatio:!0,pointArrayMap:["value"],getBox:function(f){var b=Number.MAX_VALUE,e=-b,c=b,k=-b,p=b,m=b,d=this.xAxis,r=this.yAxis,h;l(f||[],function(f){if(f.path){"string"===typeof f.path&&(f.path= |
a.splitPath(f.path));var q=f.path||[],d=q.length,r=!1,w=-b,l=b,z=-b,n=b,t=f.properties;if(!f._foundBox){for(;d--;)g(q[d])&&(r?(w=Math.max(w,q[d]),l=Math.min(l,q[d])):(z=Math.max(z,q[d]),n=Math.min(n,q[d])),r=!r);f._midX=l+(w-l)*(f.middleX||t&&t["hc-middle-x"]||.5);f._midY=n+(z-n)*(f.middleY||t&&t["hc-middle-y"]||.5);f._maxX=w;f._minX=l;f._maxY=z;f._minY=n;f.labelrank=v(f.labelrank,(w-l)*(z-n));f._foundBox=!0}e=Math.max(e,f._maxX);c=Math.min(c,f._minX);k=Math.max(k,f._maxY);p=Math.min(p,f._minY);m= |
Math.min(f._maxX-f._minX,f._maxY-f._minY,m);h=!0}});h&&(this.minY=Math.min(p,v(this.minY,b)),this.maxY=Math.max(k,v(this.maxY,-b)),this.minX=Math.min(c,v(this.minX,b)),this.maxX=Math.max(e,v(this.maxX,-b)),d&&void 0===d.options.minRange&&(d.minRange=Math.min(5*m,(this.maxX-this.minX)/5,d.minRange||b)),r&&void 0===r.options.minRange&&(r.minRange=Math.min(5*m,(this.maxY-this.minY)/5,r.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 f=!1,b=this.xAxis,e=this.yAxis,c=b.min,k=b.transA,b=b.minPixelPadding,p=e.min,m=e.transA,e=e.minPixelPadding,d,r=[];if(a)for(d=a.length;d--;)g(a[d])?(r[d]=f?(a[d]-c)*k+b:(a[d]-p)*m+e,f=!f):r[d]=a[d];return r},setData:function(f,e,c,k){var q=this.options,d=this.chart.options.chart,r=d&&d.map,w=q.mapData,h=q.joinBy,u=null===h,v=q.keys||this.pointArrayMap, |
y=[],B={},A=this.chart.mapTransforms;!w&&r&&(w="string"===typeof r?a.maps[r]:r);u&&(h="_i");h=this.joinBy=p(h);h[1]||(h[1]=h[0]);f&&l(f,function(a,b){var e=0;if(g(a))f[b]={value:a};else if(m(a)){f[b]={};!q.keys&&a.length>v.length&&"string"===typeof a[0]&&(f[b]["hc-key"]=a[0],++e);for(var c=0;c<v.length;++c,++e)v[c]&&(f[b][v[c]]=a[e])}u&&(f[b]._i=b)});this.getBox(f);(this.chart.mapTransforms=A=d&&d.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++)d=w[A],r=d.properties,d._i=A,h[0]&&r&&r[h[0]]&&(d[h[0]]=r[h[0]]),B[d[h[0]]]=d;this.mapMap=B;f&&h[1]&&l(f,function(a){B[a[h[1]]]&&y.push(B[a[h[1]]])});q.allAreas?(this.getBox(w),f=f||[],h[1]&&l(f,function(a){y.push(a[h[1]])}),y="|"+t(y,function(a){return a&&a[h[0]]}).join("|")+"|",l(w,function(a){h[0]&&-1!==y.indexOf("|"+a[h[0]]+ |
"|")||(f.push(n(a,{value:null})),k=!1)})):this.getBox(y)}b.prototype.setData.call(this,f,e,c,k)},drawGraph:u,drawDataLabels:u,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();l(a.data,function(f){f.plotX=b.toPixels(f._midX,!0);f.plotY=e.toPixels(f._midY,!0);c&&(f.shapeType="path",f.shapeArgs={d:a.translatePath(f.path)})});a.translateColors()}, |
pointAttribs:function(a,b){b=this.colorAttribs(a);a.isFading&&delete b.fill;k?b["vector-effect"]="non-scaling-stroke":b["stroke-width"]="inherit";return b},drawPoints:function(){var a=this,b=a.xAxis,e=a.yAxis,c=a.group,d=a.chart,p=d.renderer,m,g,h,n,t=this.baseTrans,y,u,v,x,H;a.transformGroup||(a.transformGroup=p.g().attr({scaleX:1,scaleY:1}).add(c),a.transformGroup.survive=!0);a.doFullTranslate()?(a.group=a.transformGroup,r.column.prototype.drawPoints.apply(a),a.group=c,l(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,g=e.transA/t.transAY,h=b.toPixels(t.originX,!0),n=e.toPixels(t.originY,!0),.99<m&&1.01>m&&.99<g&&1.01>g&&(g=m=1,h=Math.round(h),n=Math.round(n)),y=this.transformGroup,d.renderer.globalAnimation?(u=y.attr("translateX"),v=y.attr("translateY"),x=y.attr("scaleX"),H=y.attr("scaleY"),y.attr({animator:0}).animate({animator:1},{step:function(a,b){y.attr({translateX:u+(h-u)*b.pos,translateY:v+(n-v)*b.pos,scaleX:x+(m-x)*b.pos,scaleY:H+(g-H)*b.pos})}})):y.attr({translateX:h,translateY:n,scaleX:m,scaleY:g})); |
k||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,f=this.group, |
e=this.xAxis,c=this.yAxis,k=e.pos,d=c.pos;this.chart.renderer.isSVG&&(!0===b&&(b={duration:1E3}),a?f.attr({translateX:k+e.len/2,translateY:d+c.len/2,scaleX:.001,scaleY:.001}):(f.animate({translateX:k,translateY:d,scaleX:1,scaleY:1},b),this.animate=null))},animateDrilldown:function(a){var b=this.chart.plotBox,f=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],e=f.bBox,c=this.chart.options.drilldown.animation;a||(a=Math.min(e.width/b.width,e.height/b.height),f.shapeArgs={scaleX:a,scaleY:a, |
translateX:e.x,translateY:e.y},l(this.points,function(a){a.graphic&&a.graphic.attr(f.shapeArgs).animate({scaleX:1,scaleY:1,translateX:0,translateY:0},c)}),this.animate=null)},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,animateDrillupFrom:function(a){r.column.prototype.animateDrillupFrom.call(this,a)},animateDrillupTo:function(a){r.column.prototype.animateDrillupTo.call(this,a)}}),d({applyOptions:function(a,b){a=c.prototype.applyOptions.call(this,a,b);b=this.series;var f=b.joinBy;b.mapData&& |
((f=void 0!==a[f[1]]&&b.mapMap[a[f[1]]])?(b.xyFromShape&&(a.x=f._midX,a.y=f._midY),d(a,f)):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()}},h))})(x);(function(a){var h=a.seriesType;h("mapline", |
"map",{},{type:"mapline",colorProp:"stroke",drawLegendSymbol:a.seriesTypes.line.prototype.drawLegendSymbol})})(x);(function(a){var h=a.merge,l=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,g){a=void 0!==a.lat&&void 0!==a.lon?h(a,this.series.chart.fromLatLonToPoint(a)):a;return l.prototype.applyOptions.call(this,a,g)}})})(x); |
(function(a){var h=a.arrayMax,l=a.arrayMin,d=a.Axis,g=a.each,t=a.isNumber,n=a.noop,u=a.pick,v=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,k){var f,e,d,m=this.zData,g=[],p=this.options,r="width"!==p.sizeBy,h=p.zThreshold,l=b-a;e=0;for(f=m.length;e<f;e++)d=m[e],p.sizeByAbsoluteValue&&null!==d&&(d=Math.abs(d-h),b=Math.max(b-h,Math.abs(a-h)),a=0),null===d?d=null:d<a?d=c/2-1:(d=0<l?(d-a)/l:.5,r&&0<=d&&(d=Math.sqrt(d)),d=Math.ceil(c+d*(k-c))/2),g.push(d);this.radii=g},animate:function(a){var b= |
this.options.animation;a||(g(this.points,function(a){var e=a.graphic,f;e&&e.width&&(f={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(f,b))}),this.animate=null)},translate:function(){var e,c=this.data,d,k,f=this.radii;b.scatter.prototype.translate.call(this);for(e=c.length;e--;)d=c[e],k=f?f[e]:0,t(k)&&k>=this.minPxSize/2?(d.marker=a.extend(d.marker,{radius:k,width:2*k,height:2*k}),d.dlBox={x:d.plotX-k,y:d.plotY-k,width:2*k,height:2*k}):d.shapeArgs= |
d.plotY=d.dlBox=void 0},alignDataLabel:b.column.prototype.alignDataLabel,buildKDTree:n,applyZones:n},{haloPath:function(a){return m.prototype.haloPath.call(this,0===a?0:(this.marker?this.marker.radius||0:0)+a)},ttBelow:!1});d.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,f=b,m=this.isXAxis,n=m?"xData":"yData",x=this.min,C={},I=Math.min(c.plotWidth,c.plotHeight),E=Number.MAX_VALUE,F=-Number.MAX_VALUE,z=this.max-x,D=b/z,G=[];g(this.series,function(b){var f=b.options;!b.bubblePadding|| |
!b.visible&&c.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,G.push(b),m&&(g(["minSize","maxSize"],function(a){var b=f[a],e=/%$/.test(b),b=v(b);C[a]=e?I*b/100:b}),b.minPxSize=C.minSize,b.maxPxSize=Math.max(C.maxSize,C.minSize),b=b.zData,b.length&&(E=u(f.zMin,Math.min(E,Math.max(l(b),!1===f.displayNegative?f.zThreshold:-Number.MAX_VALUE))),F=u(f.zMax,Math.max(F,h(b))))))});g(G,function(b){var e=b[n],c=e.length,k;m&&b.getRadii(E,F,b.minPxSize,b.maxPxSize);if(0<z)for(;c--;)t(e[c])&&a.dataMin<= |
e[c]&&e[c]<=a.dataMax&&(k=b.radii[c],d=Math.min((e[c]-x)*D-k,d),f=Math.max((e[c]-x)*D+k,f))});G.length&&0<z&&!this.isLog&&(f-=b,D*=(b+d-f)/b,g([["min","userMin",d],["max","userMax",f]],function(b){void 0===u(a.options[b[0]],a[b[1]])&&(a[b[0]]+=b[2]/D)}))}})(x);(function(a){var h=a.merge,l=a.Point,d=a.seriesType,g=a.seriesTypes;g.bubble&&d("mapbubble","bubble",{animationLimit:500,tooltip:{pointFormat:"{point.name}: {point.z}"}},{xyFromShape:!0,type:"mapbubble",pointArrayMap:["z"],getMapData:g.map.prototype.getMapData, |
getBox:g.map.prototype.getBox,setData:g.map.prototype.setData},{applyOptions:function(a,d){return a&&void 0!==a.lat&&void 0!==a.lon?l.prototype.applyOptions.call(this,h(a,this.series.chart.fromLatLonToPoint(a)),d):g.map.prototype.pointClass.prototype.applyOptions.call(this,a,d)},ttBelow:!1})})(x);(function(a){var h=a.colorPointMixin,l=a.each,d=a.merge,g=a.noop,t=a.pick,n=a.Series,u=a.seriesType,v=a.seriesTypes;u("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}}},d(a.colorSeriesMixin,{pointArrayMap:["y","value"],hasPointSpecificOptions:!0,supportsDrilldown:!0,getExtremesFromAll:!0,directTouch:!0,init:function(){var a;v.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();l(this.points,function(d){var g=(a.colsize||1)/2,k=(a.rowsize||1)/2,f=e(Math.round(c.len-c.translate(d.x-g,0,1,0,1)),-c.len,2*c.len),g=e(Math.round(c.len-c.translate(d.x+g,0,1,0,1)),-c.len,2*c.len),m=e(Math.round(b.translate(d.y-k,0,1,0,1)),-b.len,2*b.len),k=e(Math.round(b.translate(d.y+k,0,1,0,1)),-b.len,2*b.len);d.plotX=d.clientX=(f+g)/2;d.plotY= |
(m+k)/2;d.shapeType="rect";d.shapeArgs={x:Math.min(f,g),y:Math.min(m,k),width:Math.abs(g-f),height:Math.abs(k-m)}});this.translateColors()},drawPoints:function(){v.column.prototype.drawPoints.call(this);l(this.points,function(a){a.graphic.css(this.colorAttribs(a))},this)},animate:g,getBox:g,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,alignDataLabel:v.column.prototype.alignDataLabel,getExtremes:function(){n.prototype.getExtremes.call(this,this.valueData);this.valueMin=this.dataMin;this.valueMax= |
this.dataMax;n.prototype.getExtremes.call(this)}}),h)})(x);(function(a){function h(a,c){var b,e,d,g=!1,k=a.x,f=a.y;a=0;for(b=c.length-1;a<c.length;b=a++)e=c[a][1]>f,d=c[b][1]>f,e!==d&&k<(c[b][0]-c[a][0])*(f-c[a][1])/(c[b][1]-c[a][1])+c[a][0]&&(g=!g);return g}var l=a.Chart,d=a.each,g=a.extend,t=a.format,n=a.merge,u=a.win,v=a.wrap;l.prototype.transformFromLatLon=function(d,c){if(void 0===u.proj4)return a.error(21),{x:0,y:null};d=u.proj4(c.crs,[d.lon,d.lat]);var b=c.cosAngle||c.rotation&&Math.cos(c.rotation), |
e=c.sinAngle||c.rotation&&Math.sin(c.rotation);d=c.rotation?[d[0]*b+d[1]*e,-d[0]*e+d[1]*b]:d;return{x:((d[0]-(c.xoffset||0))*(c.scale||1)+(c.xpan||0))*(c.jsonres||1)+(c.jsonmarginX||0),y:(((c.yoffset||0)-d[1])*(c.scale||1)+(c.ypan||0))*(c.jsonres||1)-(c.jsonmarginY||0)}};l.prototype.transformToLatLon=function(d,c){if(void 0===u.proj4)a.error(21);else{d={x:((d.x-(c.jsonmarginX||0))/(c.jsonres||1)-(c.xpan||0))/(c.scale||1)+(c.xoffset||0),y:((-d.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=u.proj4(c.crs,"WGS84",c.rotation?{x:d.x*b+d.y*-e,y:d.x*e+d.y*b}:d);return{lat:c.y,lon:c.x}}};l.prototype.fromPointToLatLon=function(d){var c=this.mapTransforms,b;if(c){for(b in c)if(c.hasOwnProperty(b)&&c[b].hitZone&&h({x:d.x,y:-d.y},c[b].hitZone.coordinates[0]))return this.transformToLatLon(d,c[b]);return this.transformToLatLon(d,c["default"])}a.error(22)};l.prototype.fromLatLonToPoint= |
function(d){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(d,c[b]),h({x:e.x,y:-e.y},c[b].hitZone.coordinates[0])))return e;return this.transformFromLatLon(d,c["default"])};a.geojson=function(a,c,b){var e=[],h=[],p=function(a){var b,e=a.length;h.push("M");for(b=0;b<e;b++)1===b&&h.push("L"),h.push(a[b][0],-a[b][1])};c=c||"map";d(a.features,function(a){var b=a.geometry,k=b.type,b=b.coordinates;a=a.properties; |
var l;h=[];"map"===c||"mapbubble"===c?("Polygon"===k?(d(b,p),h.push("Z")):"MultiPolygon"===k&&(d(b,function(a){d(a,p)}),h.push("Z")),h.length&&(l={path:h})):"mapline"===c?("LineString"===k?p(b):"MultiLineString"===k&&d(b,p),h.length&&(l={path:h})):"mappoint"===c&&"Point"===k&&(l={x:b[0],y:-b[1]});l&&e.push(g(l,{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};v(l.prototype,"addCredits",function(a,c){c=n(!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 h(a,e,c,d,g,f,h,l){return["M",a+g,e,"L",a+c-f,e,"C",a+c-f/2,e,a+c,e+f/2,a+c,e+f,"L",a+c,e+d-h,"C",a+c,e+d-h/2,a+c-h/2,e+d,a+c-h,e+d,"L",a+l,e+d,"C",a+l/2,e+d,a,e+d-l/2,a,e+d-l,"L",a,e+g,"C",a,e+g/2,a+g/2,e,a+g,e,"Z"]}var l=a.Chart,d=a.defaultOptions,g=a.each,t=a.extend, |
n=a.merge,u=a.pick,v=a.Renderer,m=a.SVGRenderer,c=a.VMLRenderer;t(d.lang,{zoomIn:"Zoom in",zoomOut:"Zoom out"});d.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,d,g,k){return h(a-1,c-1,d,g,k.r,k.r,0,0)};m.prototype.symbols.bottombutton=function(a,c,d,g,k){return h(a-1,c-1,d,g,0,0,k.r,k.r)};v===c&&g(["topbutton","bottombutton"],function(a){c.prototype.symbols[a]=m.prototype.symbols[a]});a.Map=a.mapChart=function(b,c,d){var e="string"===typeof b||b.nodeName,g=arguments[e?1:0],f={endOnTick:!1,visible:!1,minPadding:0,maxPadding:0, |
startOnTick:!1},h,m=a.getOptions().credits;h=g.series;g.series=null;g=n({chart:{panning:"xy",type:"map"},credits:{mapText:u(m.mapText,' \u00a9 \x3ca href\x3d"{geojson.copyrightUrl}"\x3e{geojson.copyrightShort}\x3c/a\x3e'),mapTextFull:u(m.mapTextFull,"{geojson.copyright}")},tooltip:{followTouchMove:!1},xAxis:f,yAxis:n(f,{reversed:!0})},g,{chart:{inverted:!1,alignTicks:!1}});g.series=h;return e?new l(b,g,d):new l(g,c)}})(x)}); |
/base/000_base/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","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","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","slice","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","supportsDrilldown","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","isFading","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/map.src.js |
---|
@@ -0,0 +1,3135 @@ |
/** |
* @license Highmaps JS v5.0.12 (2017-05-24) |
* 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, dataMin)); |
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, { |
defaultColorAxisOptions: { |
lineWidth: 0, |
minPadding: 0, |
maxPadding: 0, |
gridLineWidth: 1, |
tickPixelInterval: 72, |
startOnTick: true, |
endOnTick: true, |
offset: 0, |
marker: { |
animation: { |
duration: 50 |
}, |
width: 0.01 |
}, |
labels: { |
overflow: 'justify', |
rotation: 0 |
}, |
minColor: '#e6ebf5', |
maxColor: '#003399', |
tickLength: 5, |
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 (!dataClass.color) { |
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 |
); |
} |
} |
}); |
}, |
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)) { |
color = dataClass.color; |
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) { |
return isNumber(pos) ? // crosshairs only // #3969 pos can be 0 !! |
(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) { |
series.isDirtyData = true; // Needed for Axis.update when choropleth colors change |
}); |
// 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 |
}); |
} |
}); |
}(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. |
*/ |
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 color = H.color, |
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; |
/** |
* The MapAreaPoint object |
*/ |
/** |
* Add the map series type |
*/ |
seriesType('map', 'scatter', { |
allAreas: true, |
animation: false, // makes the complex shapes slow |
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', |
supportsDrilldown: true, |
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) * |
(point.middleX || (properties && properties['hc-middle-x']) || 0.5); // pick is slower and very marginally needed |
point._midY = pointMinY + (pointMaxY - pointMinY) * |
(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); |
// Prevent flickering whan called from setState |
if (point.isFading) { |
delete attr.fill; |
} |
// 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 |
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 |
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 * |
*****************************************************************************/ |
seriesType('bubble', 'scatter', { |
dataLabels: { |
formatter: function() { // #2945 |
return this.point.z; |
}, |
inside: true, |
verticalAlign: 'middle' |
}, |
// displayNegative: true, |
marker: { |
// Avoid offset in Point.setState |
radius: null, |
states: { |
hover: { |
radiusPlus: 0 |
} |
}, |
symbol: 'circle' |
}, |
minSize: 8, |
maxSize: '20%', |
// negativeColor: null, |
// sizeBy: 'area' |
softThreshold: false, |
states: { |
hover: { |
halo: { |
size: 5 |
} |
} |
}, |
tooltip: { |
pointFormat: '({point.x}, {point.y}), Size: {point.z}' |
}, |
turboThreshold: 0, |
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) { |
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 |
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, |
supportsDrilldown: 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; |
options.pointRange = pick(options.pointRange, options.colsize || 1); // #3758, prevent resetting in setData |
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 precesence 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 |
defaultOptions.mapNavigation = { |
buttonOptions: { |
alignTo: 'plotBox', |
align: 'left', |
verticalAlign: 'top', |
x: 0, |
width: 18, |
height: 18, |
padding: 5 |
}, |
buttons: { |
zoomIn: { |
onclick: function() { |
this.mapZoom(0.5); |
}, |
text: '+', |
y: 0 |
}, |
zoomOut: { |
onclick: function() { |
this.mapZoom(2); |
}, |
text: '-', |
y: 28 |
} |
}, |
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 initiated |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/no-data-to-display.js |
---|
@@ -0,0 +1,12 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/no-data-to-display.src.js |
---|
@@ -0,0 +1,159 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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 |
defaultOptions.noData = { |
position: { |
x: 0, |
y: 0, |
align: 'center', |
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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/offline-exporting.js |
---|
@@ -0,0 +1,20 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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(b){function n(c,b){var d=t.getElementsByTagName("head")[0],a=t.createElement("script");a.type="text/javascript";a.src=c;a.onload=b;a.onerror=function(){console.error("Error loading script",c)};d.appendChild(a)}var C=b.merge,e=b.win,r=e.navigator,t=e.document,z=b.each,w=e.URL||e.webkitURL||e,A=/Edge\/|Trident\/|MSIE /.test(r.userAgent),D=/Edge\/\d+/.test(r.userAgent),E=A?150:0;b.CanVGRenderer= |
{};b.dataURLtoBlob=function(c){if(e.atob&&e.ArrayBuffer&&e.Uint8Array&&e.Blob&&w.createObjectURL){c=c.match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);for(var b=e.atob(c[3]),d=new e.ArrayBuffer(b.length),d=new e.Uint8Array(d),a=0;a<d.length;++a)d[a]=b.charCodeAt(a);c=new e.Blob([d],{type:c[1]});return w.createObjectURL(c)}};b.downloadURL=function(c,f){var d=t.createElement("a"),a;if(r.msSaveOrOpenBlob)r.msSaveOrOpenBlob(c,f);else{if(2E6<c.length&&(c=b.dataURLtoBlob(c),!c))throw"Data URL length limit reached"; |
if(void 0!==d.download)d.href=c,d.download=f,t.body.appendChild(d),d.click(),t.body.removeChild(d);else try{if(a=e.open(c,"chart"),void 0===a||null===a)throw"Failed to open window";}catch(u){e.location.href=c}}};b.svgToDataUrl=function(c){var b=-1<r.userAgent.indexOf("WebKit")&&0>r.userAgent.indexOf("Chrome");try{if(!b&&0>r.userAgent.toLowerCase().indexOf("firefox"))return w.createObjectURL(new e.Blob([c],{type:"image/svg+xml;charset-utf-16"}))}catch(d){}return"data:image/svg+xml;charset\x3dUTF-8,"+ |
encodeURIComponent(c)};b.imageToDataUrl=function(c,b,d,a,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*a;e.width=g.width*a;f.drawImage(g,0,0,e.width,e.height);try{x=e.toDataURL(b),u(x,b,d,a)}catch(F){h(c,b,d,a)}}else k(c,b,d,a)}finally{p&&p(c,b,d,a)}},E)},q=function(){m(c,b,d,a);p&&p(c,b,d,a)};h=function(){g=new e.Image;h=l;g.crossOrigin="Anonymous";g.onload=f;g.onerror=q;g.src=c}; |
g.onload=f;g.onerror=q;g.src=c};b.downloadSVGLocal=function(c,f,d,a){function u(a,b){b=new e.jsPDF("l","pt",[a.width.baseVal.value+2*b,a.height.baseVal.value+2*b]);e.svg2pdf(a,b,{removeInvalid:!0});return b.output("datauristring")}function l(){y.innerHTML=c;var e=y.getElementsByTagName("text"),g,f=y.getElementsByTagName("svg")[0].style;z(e,function(a){z(["font-family","font-size"],function(b){!a.style[b]&&f[b]&&(a.style[b]=f[b])});a.style["font-family"]=a.style["font-family"]&&a.style["font-family"].split(" ").splice(-1); |
g=a.getElementsByTagName("title");z(g,function(b){a.removeChild(b)})});e=u(y.firstChild,0);try{b.downloadURL(e,v),a&&a()}catch(G){d()}}var k,m,p=!0,g,h=f.libURL||b.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(c),k=m.getBlob("image/svg+xml")):k=b.svgToDataUrl(c),b.downloadURL(k,v), |
a&&a()}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=b.svgToDataUrl(c),g=function(){try{w.revokeObjectURL(k)}catch(x){}},b.imageToDataUrl(k,q,{},B,function(c){try{b.downloadURL(c,v),a&&a()}catch(F){d()}},function(){var f=t.createElement("canvas"),u=f.getContext("2d"),l=c.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*B,k=c.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*B,m=function(){u.drawSvg(c,0,0, |
l,k);try{b.downloadURL(r.msSaveOrOpenBlob?f.msToBlob():f.toDataURL(q),v),a&&a()}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()}))};b.Chart.prototype.getSVGForLocalExport=function(c,e,d,a){var f=this,l,k=0,m,p,g,h,n,q=function(b,c,d){++k;d.imageElement.setAttributeNS("http://www.w3.org/1999/xlink","href",b);k===l.length&&a(f.sanitizeSVG(m.innerHTML,p))};b.wrap(b.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(c,e);l=m.getElementsByTagName("image");try{if(l.length)for(h=0,n=l.length;h<n;++h)g=l[h],b.imageToDataUrl(g.getAttributeNS("http://www.w3.org/1999/xlink","href"),"image/png",{imageElement:g},c.scale,q,d,d,d);else a(f.sanitizeSVG(m.innerHTML,p))}catch(v){d()}};b.Chart.prototype.exportChartLocal=function(c,e){var d=this,a=b.merge(d.options.exporting,c),f= |
function(){if(!1===a.fallbackToExportServer)if(a.error)a.error(a);else throw"Fallback to export server disabled";else d.exportChart(a)};A&&(b.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"===a.type||d.container.getElementsByTagName("image").length&&"image/svg+xml"!==a.type)||D&&"image/svg+xml"!==a.type||"application/pdf"===a.type&&d.container.getElementsByTagName("image").length?f():d.getSVGForLocalExport(a,e,f,function(c){-1<c.indexOf("\x3cforeignObject")&&"image/svg+xml"!==a.type?f():b.downloadSVGLocal(c,a,f)})};C(!0,b.getOptions().exporting,{libURL:"https://code.highcharts.com/5.0.12/lib/",buttons:{contextButton:{menuItems:[{textKey:"printChart",onclick:function(){this.print()}}, |
{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChartLocal()}},{textKey:"downloadJPEG",onclick:function(){this.exportChartLocal({type:"image/jpeg"})}},{textKey:"downloadSVG",onclick:function(){this.exportChartLocal({type:"image/svg+xml"})}},{textKey:"downloadPDF",onclick:function(){this.exportChartLocal({type:"application/pdf"})}}]}}})})(n)}); |
/base/000_base/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","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","buttons","contextButton","menuItems","textKey","onclick","print","separator"] |
} |
/base/000_base/node_modules/highcharts/js/modules/offline-exporting.src.js |
---|
@@ -0,0 +1,591 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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 |
if (nav.msSaveOrOpenBlob) { |
nav.msSaveOrOpenBlob(dataURL, filename); |
return; |
} |
// Some browsers have limitations for data URL lengths. Try to convert to |
// Blob or fall back. |
if (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 |
// - Edge: PNG/JPEG all cases |
// - Embedded images and PDF |
if ( |
( |
isMSBrowser && |
( |
options.type === 'application/pdf' || |
chart.container.getElementsByTagName('image').length && |
options.type !== 'image/svg+xml' |
) |
) || ( |
isEdgeBrowser && 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.12/lib/', |
buttons: { |
contextButton: { |
menuItems: [{ |
textKey: 'printChart', |
onclick: function() { |
this.print(); |
} |
}, { |
separator: true |
}, { |
textKey: 'downloadPNG', |
onclick: function() { |
this.exportChartLocal(); |
} |
}, { |
textKey: 'downloadJPEG', |
onclick: function() { |
this.exportChartLocal({ |
type: 'image/jpeg' |
}); |
} |
}, { |
textKey: 'downloadSVG', |
onclick: function() { |
this.exportChartLocal({ |
type: 'image/svg+xml' |
}); |
} |
}, { |
textKey: 'downloadPDF', |
onclick: function() { |
this.exportChartLocal({ |
type: 'application/pdf' |
}); |
} |
}] |
} |
} |
}); |
}(Highcharts)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/overlapping-datalabels.js |
---|
@@ -0,0 +1,10 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
(c) 2009-2017 Torstein Honsi |
License: www.highcharts.com/license |
*/ |
(function(a){"object"===typeof module&&module.exports?module.exports=a:a(Highcharts)})(function(a){(function(a){var h=a.Chart,k=a.each,q=a.pick,r=a.addEvent;h.prototype.callbacks.push(function(f){function a(){var a=[];k(f.series||[],function(b){var c=b.options.dataLabels,d=b.dataLabelCollections||["dataLabel"];(c.enabled||b._hasPointLabels)&&!c.allowOverlap&&b.visible&&k(d,function(c){k(b.points,function(b){b[c]&&(b[c].labelrank=q(b.labelrank,b.shapeArgs&&b.shapeArgs.height),a.push(b[c]))})})});f.hideOverlappingLabels(a)} |
a();r(f,"redraw",a)});h.prototype.hideOverlappingLabels=function(a){var f=a.length,e,b,c,d,l,m,n,p,g,h=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<f;b++)if(e=a[b])e.oldOpacity=e.opacity,e.newOpacity=1;a.sort(function(a,b){return(b.labelrank||0)-(a.labelrank||0)});for(b=0;b<f;b++)for(c=a[b],e=b+1;e<f;++e)if(d=a[e],c&&d&&c!==d&&c.placed&&d.placed&&0!==c.newOpacity&&0!==d.newOpacity&&(l=c.alignAttr,m=d.alignAttr,n=c.parentGroup,p=d.parentGroup,g=2*(c.box?0:c.padding),l=h(l.x+ |
n.translateX,l.y+n.translateY,c.width-g,c.height-g,m.x+p.translateX,m.y+p.translateY,d.width-g,d.height-g)))(c.labelrank<d.labelrank?c:d).newOpacity=0;k(a,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)})}})(a)}); |
/base/000_base/node_modules/highcharts/js/modules/overlapping-datalabels.js.map |
---|
@@ -0,0 +1,8 @@ |
{ |
"version":3, |
"file":"", |
"lineCount":10, |
"mappings":"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", |
"sources":["Input_0"], |
"names":["factory","module","exports","Highcharts","H","Chart","each","pick","addEvent","prototype","callbacks","push","chart","collectAndHide","labels","series","dlOptions","options","dataLabels","collections","dataLabelCollections","enabled","_hasPointLabels","allowOverlap","visible","coll","points","point","labelrank","shapeArgs","height","hideOverlappingLabels","Chart.prototype.hideOverlappingLabels","len","length","label","i","label1","label2","isIntersecting","pos2","parent1","parent2","padding","intersectRect","x1","y1","w1","h1","x2","y2","w2","h2","oldOpacity","opacity","newOpacity","sort","a","b","j","placed","pos1","alignAttr","parentGroup","box","x","translateX","y","translateY","width","complete","show","hide","isOld"] |
} |
/base/000_base/node_modules/highcharts/js/modules/overlapping-datalabels.src.js |
---|
@@ -0,0 +1,187 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* |
* (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, |
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.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, |
intersectRect = function(x1, y1, w1, h1, x2, y2, w2, h2) { |
return !( |
x2 > x1 + w1 || |
x2 + w2 < x1 || |
y2 > y1 + h1 || |
y2 + h2 < y1 |
); |
}; |
// Mark with initial opacity |
for (i = 0; i < len; i++) { |
label = labels[i]; |
if (label) { |
label.oldOpacity = label.opacity; |
label.newOpacity = 1; |
} |
} |
// 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); |
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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/series-label.js |
---|
@@ -0,0 +1,19 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
(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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/series-label.src.js |
---|
@@ -0,0 +1,606 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* |
* (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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/solid-gauge.js |
---|
@@ -0,0 +1,14 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/solid-gauge.src.js |
---|
@@ -0,0 +1,297 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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; |
} |
}; |
// The solidgauge series type |
H.seriesType('solidgauge', 'gauge', { |
colorByPoint: true |
}, { |
/** |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/static-scale.js |
---|
@@ -0,0 +1,12 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/static-scale.src.js |
---|
@@ -0,0 +1,64 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/stock.js |
---|
@@ -0,0 +1,123 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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 E=a.addEvent,k=a.Axis,t=a.Chart,z=a.css,F=a.dateFormat,H=a.defined,I=a.each,w=a.extend,h=a.noop,q=a.timeUnits,G=a.wrap;G(a.Series.prototype,"init",function(a){var b;a.apply(this,Array.prototype.slice.call(arguments,1));(b=this.xAxis)&&b.options.ordinal&&E(this,"updatedData",function(){delete b.ordinalIndex})});G(k.prototype,"getTimeTicks",function(a,b,d,u,A,l,h,g){var r=0,e,x,c={},f, |
m,B,n=[],v=-Number.MAX_VALUE,y=this.options.tickPixelInterval;if(!this.options.ordinal&&!this.options.breaks||!l||3>l.length||void 0===d)return a.call(this,b,d,u,A);m=l.length;for(e=0;e<m;e++){B=e&&l[e-1]>u;l[e]<d&&(r=e);if(e===m-1||l[e+1]-l[e]>5*h||B){if(l[e]>v){for(x=a.call(this,b,l[r],l[e],A);x.length&&x[0]<=v;)x.shift();x.length&&(v=x[x.length-1]);n=n.concat(x)}r=e+1}if(B)break}a=x.info;if(g&&a.unitRange<=q.hour){e=n.length-1;for(r=1;r<e;r++)F("%d",n[r])!==F("%d",n[r-1])&&(c[n[r]]="day",f=!0); |
f&&(c[n[0]]="day");a.higherRanks=c}n.info=a;if(g&&H(y)){g=a=n.length;e=[];var D;for(f=[];g--;)r=this.translate(n[g]),D&&(f[g]=D-r),e[g]=D=r;f.sort();f=f[Math.floor(f.length/2)];f<.6*y&&(f=null);g=n[a-1]>u?a-1:a;for(D=void 0;g--;)r=e[g],u=Math.abs(D-r),D&&u<.8*y&&(null===f||u<.8*f)?(c[n[g]]&&!c[n[g+1]]?(u=g+1,D=r):u=g,n.splice(u,1)):D=r}return n});w(k.prototype,{beforeSetTickPositions:function(){var a,b=[],d=!1,u,A=this.getExtremes(),l=A.min,h=A.max,g,r=this.isXAxis&&!!this.options.breaks,A=this.options.ordinal, |
C=this.chart.options.chart.ignoreHiddenSeries;if(A||r){I(this.series,function(g,c){if(!(C&&!1===g.visible||!1===g.takeOrdinalPosition&&!r)&&(b=b.concat(g.processedXData),a=b.length,b.sort(function(f,c){return f-c}),a))for(c=a-1;c--;)b[c]===b[c+1]&&b.splice(c,1)});a=b.length;if(2<a){u=b[1]-b[0];for(g=a-1;g--&&!d;)b[g+1]-b[g]!==u&&(d=!0);!this.options.keepOrdinalPadding&&(b[0]-l>u||h-b[b.length-1]>u)&&(d=!0)}d?(this.ordinalPositions=b,u=this.ordinal2lin(Math.max(l,b[0]),!0),g=Math.max(this.ordinal2lin(Math.min(h, |
b[b.length-1]),!0),1),this.ordinalSlope=h=(h-l)/(g-u),this.ordinalOffset=l-u*h):this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0}this.isOrdinal=A&&d;this.groupIntervalFactor=null},val2lin:function(a,b){var d=this.ordinalPositions;if(d){var u=d.length,e,l;for(e=u;e--;)if(d[e]===a){l=e;break}for(e=u-1;e--;)if(a>d[e]||0===e){a=(a-d[e])/(d[e+1]-d[e]);l=e+a;break}b=b?l:this.ordinalSlope*(l||0)+this.ordinalOffset}else b=a;return b},lin2val:function(a,b){var d=this.ordinalPositions;if(d){var e= |
this.ordinalSlope,h=this.ordinalOffset,l=d.length-1,p;if(b)0>a?a=d[0]:a>l?a=d[l]:(l=Math.floor(a),p=a-l);else for(;l--;)if(b=e*l+h,a>=b){e=e*(l+1)+h;p=(a-b)/(e-b);break}return void 0!==p&&void 0!==d[l]?d[l]+(p?p*(d[l+1]-d[l]):0):a}return a},getExtendedPositions:function(){var a=this.chart,b=this.series[0].currentDataGrouping,d=this.ordinalIndex,u=b?b.count+b.unitName:"raw",A=this.getExtremes(),l,p;d||(d=this.ordinalIndex={});d[u]||(l={series:[],chart:a,getExtremes:function(){return{min:A.dataMin, |
max:A.dataMax}},options:{ordinal:!0},val2lin:k.prototype.val2lin,ordinal2lin:k.prototype.ordinal2lin},I(this.series,function(g){p={xAxis:l,xData:g.xData,chart:a,destroyGroupedData:h};p.options={dataGrouping:b?{enabled:!0,forced:!0,approximation:"open",units:[[b.unitName,[b.count]]]}:{enabled:!1}};g.processData.apply(p);l.series.push(p)}),this.beforeSetTickPositions.apply(l),d[u]=l.ordinalPositions);return d[u]},getGroupIntervalFactor:function(a,b,d){var e;d=d.processedXData;var h=d.length,l=[];e= |
this.groupIntervalFactor;if(!e){for(e=0;e<h-1;e++)l[e]=d[e+1]-d[e];l.sort(function(a,g){return a-g});l=l[Math.floor(h/2)];a=Math.max(a,d[0]);b=Math.min(b,d[h-1]);this.groupIntervalFactor=e=h*l/(b-a)}return e},postProcessTickInterval:function(a){var b=this.ordinalSlope;return b?this.options.breaks?this.closestPointRange:a/(b/this.closestPointRange):a}});k.prototype.ordinal2lin=k.prototype.val2lin;G(t.prototype,"pan",function(a,b){var d=this.xAxis[0],e=b.chartX,h=!1;if(d.options.ordinal&&d.series.length){var l= |
this.mouseDownX,p=d.getExtremes(),g=p.dataMax,r=p.min,C=p.max,x=this.hoverPoints,c=d.closestPointRange,l=(l-e)/(d.translationSlope*(d.ordinalSlope||c)),f={ordinalPositions:d.getExtendedPositions()},c=d.lin2val,m=d.val2lin,B;f.ordinalPositions?1<Math.abs(l)&&(x&&I(x,function(n){n.setState()}),0>l?(x=f,B=d.ordinalPositions?d:f):(x=d.ordinalPositions?d:f,B=f),f=B.ordinalPositions,g>f[f.length-1]&&f.push(g),this.fixedRange=C-r,l=d.toFixedRange(null,null,c.apply(x,[m.apply(x,[r,!0])+l,!0]),c.apply(B,[m.apply(B, |
[C,!0])+l,!0])),l.min>=Math.min(p.dataMin,r)&&l.max<=Math.max(g,C)&&d.setExtremes(l.min,l.max,!0,!1,{trigger:"pan"}),this.mouseDownX=e,z(this.container,{cursor:"move"})):h=!0}else h=!0;h&&a.apply(this,Array.prototype.slice.call(arguments,1))})})(K);(function(a){function E(){return Array.prototype.slice.call(arguments,1)}function k(a){a.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,t(this.pointArrayMap,["y"]))}var t=a.pick,z=a.wrap,F=a.each,H=a.extend,I=a.isArray,w=a.fireEvent, |
h=a.Axis,q=a.Series;H(h.prototype,{isInBreak:function(a,e){var b=a.repeat||Infinity,d=a.from,h=a.to-a.from;e=e>=d?(e-d)%b:b-(d-e)%b;return a.inclusive?e<=h:e<h&&0!==e},isInAnyBreak:function(a,e){var b=this.options.breaks,d=b&&b.length,h,A,l;if(d){for(;d--;)this.isInBreak(b[d],a)&&(h=!0,A||(A=t(b[d].showPoints,this.isXAxis?!1:!0)));l=h&&e?h&&!A:h}return l}});z(h.prototype,"setTickPositions",function(a){a.apply(this,Array.prototype.slice.call(arguments,1));if(this.options.breaks){var e=this.tickPositions, |
b=this.tickPositions.info,d=[],h;for(h=0;h<e.length;h++)this.isInAnyBreak(e[h])||d.push(e[h]);this.tickPositions=d;this.tickPositions.info=b}});z(h.prototype,"init",function(a,e,b){var d=this;b.breaks&&b.breaks.length&&(b.ordinal=!1);a.call(this,e,b);a=this.options.breaks;d.isBroken=I(a)&&!!a.length;d.isBroken&&(d.val2lin=function(a){var b=a,e,h;for(h=0;h<d.breakArray.length;h++)if(e=d.breakArray[h],e.to<=a)b-=e.len;else if(e.from>=a)break;else if(d.isInBreak(e,a)){b-=a-e.from;break}return b},d.lin2val= |
function(a){var b,e;for(e=0;e<d.breakArray.length&&!(b=d.breakArray[e],b.from>=a);e++)b.to<a?a+=b.len:d.isInBreak(b,a)&&(a+=b.len);return a},d.setExtremes=function(a,b,d,e,g){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(b);)b-=this.closestPointRange;h.prototype.setExtremes.call(this,a,b,d,e,g)},d.setAxisTranslation=function(a){h.prototype.setAxisTranslation.call(this,a);a=d.options.breaks;var b=[],e=[],p=0,g,r,C=d.userMin||d.min,x=d.userMax||d.max,c=t(d.pointRangePadding, |
0),f,m;F(a,function(f){r=f.repeat||Infinity;d.isInBreak(f,C)&&(C+=f.to%r-C%r);d.isInBreak(f,x)&&(x-=x%r-f.from%r)});F(a,function(c){f=c.from;for(r=c.repeat||Infinity;f-r>C;)f-=r;for(;f<C;)f+=r;for(m=f;m<x;m+=r)b.push({value:m,move:"in"}),b.push({value:m+(c.to-c.from),move:"out",size:c.breakSize})});b.sort(function(f,n){return f.value===n.value?("in"===f.move?0:1)-("in"===n.move?0:1):f.value-n.value});g=0;f=C;F(b,function(c){g+="in"===c.move?1:-1;1===g&&"in"===c.move&&(f=c.value);0===g&&(e.push({from:f, |
to:c.value,len:c.value-f-(c.size||0)}),p+=c.value-f-(c.size||0))});d.breakArray=e;d.unitLength=x-C-p+c;w(d,"afterBreaks");d.options.staticScale?d.transA=d.options.staticScale:d.unitLength&&(d.transA*=(x-d.min+c)/d.unitLength);c&&(d.minPixelPadding=d.transA*d.minPointOffset);d.min=C;d.max=x})});z(q.prototype,"generatePoints",function(a){a.apply(this,E(arguments));var e=this.xAxis,b=this.yAxis,d=this.points,h,q=d.length,l=this.options.connectNulls,p;if(e&&b&&(e.options.breaks||b.options.breaks))for(;q--;)h= |
d[q],p=null===h.y&&!1===l,p||!e.isInAnyBreak(h.x,!0)&&!b.isInAnyBreak(h.y,!0)||(d.splice(q,1),this.data[q]&&this.data[q].destroyElements())});a.Series.prototype.drawBreaks=function(a,e){var b=this,d=b.points,h,q,l,p;a&&F(e,function(g){h=a.breakArray||[];q=a.isXAxis?a.min:t(b.options.threshold,a.min);F(d,function(b){p=t(b["stack"+g.toUpperCase()],b[g]);F(h,function(g){l=!1;if(q<g.from&&p>g.to||q>g.from&&p<g.from)l="pointBreak";else if(q<g.from&&p>g.from&&p<g.to||q>g.from&&p>g.to&&p<g.from)l="pointInBreak"; |
l&&w(a,l,{point:b,brk:g})})})})};a.Series.prototype.gappedPath=function(){var a=this.options.gapSize,e=this.points.slice(),b=e.length-1;if(a&&0<b)for(;b--;)e[b+1].x-e[b].x>this.closestPointRange*a&&e.splice(b+1,0,{isNull:!0});return this.getGraphPath(e)};z(a.seriesTypes.column.prototype,"drawPoints",k);z(a.Series.prototype,"drawPoints",k)})(K);(function(a){var E=a.arrayMax,k=a.arrayMin,t=a.Axis,z=a.defaultPlotOptions,F=a.defined,H=a.each,I=a.extend,w=a.format,h=a.isNumber,q=a.merge,G=a.pick,e=a.Point, |
b=a.Tooltip,d=a.wrap,u=a.Series.prototype,A=u.processData,l=u.generatePoints,p=u.destroy,g={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"]}},r={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}},C=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]],x={sum:function(c){var f=c.length,a;if(!f&&c.hasNulls)a=null;else if(f)for(a=0;f--;)a+=c[f];return a},average:function(c){var f=c.length;c=x.sum(c);h(c)&&f&&(c/=f);return c},averages:function(){var c=[];H(arguments,function(f){c.push(x.average(f))});return c},open:function(c){return c.length?c[0]:c.hasNulls?null:void 0},high:function(c){return c.length?E(c):c.hasNulls?null:void 0},low:function(c){return c.length? |
k(c):c.hasNulls?null:void 0},close:function(c){return c.length?c[c.length-1]:c.hasNulls?null:void 0},ohlc:function(c,f,a,g){c=x.open(c);f=x.high(f);a=x.low(a);g=x.close(g);if(h(c)||h(f)||h(a)||h(g))return[c,f,a,g]},range:function(c,f){c=x.low(c);f=x.high(f);if(h(c)||h(f))return[c,f];if(null===c&&null===f)return null}};u.groupData=function(c,f,a,b){var n=this.data,v=this.options.data,m=[],d=[],B=[],e=c.length,J,M,l=!!f,C=[];b="function"===typeof b?b:x[b]||r[this.type]&&x[r[this.type].approximation]|| |
x[g.approximation];var L=this.pointArrayMap,q=L&&L.length,p=0;M=0;var u,k;q?H(L,function(){C.push([])}):C.push([]);u=q||1;for(k=0;k<=e&&!(c[k]>=a[0]);k++);for(k;k<=e;k++){for(;void 0!==a[p+1]&&c[k]>=a[p+1]||k===e;){J=a[p];this.dataGroupInfo={start:M,length:C[0].length};M=b.apply(this,C);void 0!==M&&(m.push(J),d.push(M),B.push(this.dataGroupInfo));M=k;for(J=0;J<u;J++)C[J].length=0,C[J].hasNulls=!1;p+=1;if(k===e)break}if(k===e)break;if(L){J=this.cropStart+k;var G=n&&n[J]||this.pointClass.prototype.applyOptions.apply({series:this}, |
[v[J]]),w;for(J=0;J<q;J++)w=G[L[J]],h(w)?C[J].push(w):null===w&&(C[J].hasNulls=!0)}else J=l?f[k]:null,h(J)?C[0].push(J):null===J&&(C[0].hasNulls=!0)}return[m,d,B]};u.processData=function(){var c=this.chart,f=this.options.dataGrouping,a=!1!==this.allowDG&&f&&G(f.enabled,c.options.isStock),g=this.visible||!c.options.chart.ignoreHiddenSeries,n;this.forceCrop=a;this.groupPixelWidth=null;this.hasProcessed=!0;if(!1!==A.apply(this,arguments)&&a){this.destroyGroupedData();var v=this.processedXData,y=this.processedYData, |
b=c.plotSizeX,c=this.xAxis,d=c.options.ordinal,r=this.groupPixelWidth=c.getGroupPixelWidth&&c.getGroupPixelWidth();if(r){this.isDirty=n=!0;this.points=null;var e=c.getExtremes(),a=e.min,e=e.max,d=d&&c.getGroupIntervalFactor(a,e,this)||1,b=r*(e-a)/b*d,r=c.getTimeTicks(c.normalizeTimeTickInterval(b,f.units||C),Math.min(a,v[0]),Math.max(e,v[v.length-1]),c.options.startOfWeek,v,this.closestPointRange),v=u.groupData.apply(this,[v,y,r,f.approximation]),y=v[0],d=v[1];if(f.smoothed){f=y.length-1;for(y[f]= |
Math.min(y[f],e);f--&&0<f;)y[f]+=b/2;y[0]=Math.max(y[0],a)}this.currentDataGrouping=r.info;this.closestPointRange=r.info.totalRange;this.groupMap=v[2];F(y[0])&&y[0]<c.dataMin&&g&&(c.min===c.dataMin&&(c.min=y[0]),c.dataMin=y[0]);this.processedXData=y;this.processedYData=d}else this.currentDataGrouping=this.groupMap=null;this.hasGroupedData=n}};u.destroyGroupedData=function(){var c=this.groupedData;H(c||[],function(f,a){f&&(c[a]=f.destroy?f.destroy():null)});this.groupedData=null};u.generatePoints= |
function(){l.apply(this);this.destroyGroupedData();this.groupedData=this.hasGroupedData?this.points:null};d(e.prototype,"update",function(c){this.dataGroup?a.error(24):c.apply(this,[].slice.call(arguments,1))});d(b.prototype,"tooltipFooterHeaderFormatter",function(c,f,g){var m=f.series,n=m.tooltipOptions,v=m.options.dataGrouping,y=n.xDateFormat,b,d=m.xAxis,r=a.dateFormat;return d&&"datetime"===d.options.type&&v&&h(f.key)?(c=m.currentDataGrouping,v=v.dateTimeLabelFormats,c?(d=v[c.unitName],1===c.count? |
y=d[0]:(y=d[1],b=d[2])):!y&&v&&(y=this.getXDateFormat(f,n,d)),y=r(y,f.key),b&&(y+=r(b,f.key+c.totalRange-1)),w(n[(g?"footer":"header")+"Format"],{point:I(f.point,{key:y}),series:m})):c.call(this,f,g)});u.destroy=function(){for(var c=this.groupedData||[],f=c.length;f--;)c[f]&&c[f].destroy();p.apply(this)};d(u,"setOptions",function(c,f){c=c.call(this,f);var a=this.type,b=this.chart.options.plotOptions,n=z[a].dataGrouping;r[a]&&(n||(n=q(g,r[a])),c.dataGrouping=q(n,b.series&&b.series.dataGrouping,b[a].dataGrouping, |
f.dataGrouping));this.chart.options.isStock&&(this.requireSorting=!0);return c});d(t.prototype,"setScale",function(c){c.call(this);H(this.series,function(c){c.hasProcessed=!1})});t.prototype.getGroupPixelWidth=function(){var c=this.series,a=c.length,g,b=0,n=!1,v;for(g=a;g--;)(v=c[g].options.dataGrouping)&&(b=Math.max(b,v.groupPixelWidth));for(g=a;g--;)(v=c[g].options.dataGrouping)&&c[g].hasProcessed&&(a=(c[g].processedXData||c[g].data).length,c[g].groupPixelWidth||a>this.chart.plotSizeX/b||a&&v.forced)&& |
(n=!0);return n?b:0};t.prototype.setDataGrouping=function(a,f){var c;f=G(f,!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 H(this.chart.options.series,function(c){c.dataGrouping=a},!1);f&&this.chart.redraw()}})(K);(function(a){var E=a.each,k=a.Point,t=a.seriesType,z=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,k=a.yAxis,t=!!a.modifyValue,w=["plotOpen","plotHigh","plotLow","plotClose","yBottom"];z.column.prototype.translate.apply(a);E(a.points,function(h){E([h.open,h.high,h.low,h.close,h.low],function(q,G){null!==q&&(t&&(q=a.modifyValue(q)),h[w[G]]=k.toPixels(q,!0))});h.tooltipPos[1]=h.plotHigh+k.pos-a.chart.plotTop})},drawPoints:function(){var a= |
this,k=a.chart;E(a.points,function(t){var w,h,q,G,e=t.graphic,b,d=!e;void 0!==t.plotY&&(e||(t.graphic=e=k.renderer.path().add(a.group)),h=e.strokeWidth()%2/2,b=Math.round(t.plotX)-h,q=Math.round(t.shapeArgs.width/2),G=["M",b,Math.round(t.yBottom),"L",b,Math.round(t.plotHigh)],null!==t.open&&(w=Math.round(t.plotOpen)+h,G.push("M",b,w,"L",b-q,w)),null!==t.close&&(w=Math.round(t.plotClose)+h,G.push("M",b,w,"L",b+q,w)),e[d?"attr":"animate"]({d:G}).addClass(t.getClassName(),!0))})},animate:null},{getClassName:function(){return k.prototype.getClassName.call(this)+ |
(this.open<this.close?" highcharts-point-up":" highcharts-point-down")}})})(K);(function(a){var E=a.defaultPlotOptions,k=a.each,t=a.merge;a=a.seriesType;a("candlestick","ohlc",t(E.column,{states:{hover:{lineWidth:2}},tooltip:E.ohlc.tooltip,threshold:null}),{drawPoints:function(){var a=this,t=a.chart;k(a.points,function(k){var z=k.graphic,w,h,q,G,e,b,d,u=!z;void 0!==k.plotY&&(z||(k.graphic=z=t.renderer.path().add(a.group)),e=z.strokeWidth()%2/2,b=Math.round(k.plotX)-e,w=k.plotOpen,h=k.plotClose,q= |
Math.min(w,h),w=Math.max(w,h),d=Math.round(k.shapeArgs.width/2),h=Math.round(q)!==Math.round(k.plotHigh),G=w!==k.yBottom,q=Math.round(q)+e,w=Math.round(w)+e,e=[],e.push("M",b-d,w,"L",b-d,q,"L",b+d,q,"L",b+d,w,"Z","M",b,q,"L",b,h?Math.round(k.plotHigh):q,"M",b,w,"L",b,G?Math.round(k.yBottom):w),z[u?"attr":"animate"]({d:e}).addClass(k.getClassName(),!0))})}})})(K);(function(a){var E=a.addEvent,k=a.each,t=a.noop,z=a.seriesType,F=a.seriesTypes,H=a.TrackerMixin,I=a.SVGRenderer.prototype.symbols,w=a.stableSort; |
z("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(){F.column.prototype.translate.apply(this);var a=this.options,q=this.chart,t=this.points,e=t.length-1,b,d,u=a.onSeries;b=u&&q.get(u);var a=a.onKey||"y",u=b&&b.options.step,A=b&&b.points,l=A&&A.length, |
p=this.xAxis,g=this.yAxis,r=p.getExtremes(),C=0,x,c,f;if(b&&b.visible&&l)for(C=(b.pointXOffset||0)+(b.barW||0)/2,b=b.currentDataGrouping,c=A[l-1].x+(b?b.totalRange:0),w(t,function(a,c){return a.x-c.x}),a="plot"+a[0].toUpperCase()+a.substr(1);l--&&t[e]&&!(b=t[e],x=A[l],x.x<=b.x&&void 0!==x[a]&&(b.x<=c&&(b.plotY=x[a],x.x<b.x&&!u&&(f=A[l+1])&&void 0!==f[a]&&(b.plotY+=(b.x-x.x)/(f.x-x.x)*(f[a]-x[a]))),e--,l++,0>e)););k(t,function(a,c){var n;void 0===a.plotY&&(a.x>=r.min&&a.x<=r.max?a.plotY=q.chartHeight- |
p.bottom-(p.opposite?p.height:0)+p.offset-g.top:a.shapeArgs={});a.plotX+=C;(d=t[c-1])&&d.plotX===a.plotX&&(void 0===d.stackIndex&&(d.stackIndex=0),n=d.stackIndex+1);a.stackIndex=n})},drawPoints:function(){var h=this.points,q=this.chart,k=q.renderer,e,b,d=this.options,t=d.y,w,l,p,g,r,C,x,c=this.yAxis;for(l=h.length;l--;)p=h[l],x=p.plotX>this.xAxis.len,e=p.plotX,g=p.stackIndex,w=p.options.shape||d.shape,b=p.plotY,void 0!==b&&(b=p.plotY+t-(void 0!==g&&g*d.stackDistance)),r=g?void 0:p.plotX,C=g?void 0: |
p.plotY,g=p.graphic,void 0!==b&&0<=e&&!x?(g||(g=p.graphic=k.label("",null,null,w,null,null,d.useHTML).attr({align:"flag"===w?"left":"center",width:d.width,height:d.height,"text-align":d.textAlign}).addClass("highcharts-point").add(this.markerGroup),p.graphic.div&&(p.graphic.div.point=p)),0<e&&(e-=g.strokeWidth()%2),g.attr({text:p.options.title||d.title||"A",x:e,y:b,anchorX:r,anchorY:C}),p.tooltipPos=q.inverted?[c.len+c.pos-q.plotLeft-b,this.xAxis.len-e]:[e,b+c.pos-q.plotTop]):g&&(p.graphic=g.destroy()); |
d.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;H.drawTrackerPoint.apply(this);k(a,function(h){var q=h.graphic;q&&E(q.element,"mouseover",function(){0<h.stackIndex&&!h.raised&&(h._y=q.y,q.attr({y:h._y-8}),h.raised=!0);k(a,function(a){a!==h&&a.raised&&a.graphic&&(a.graphic.attr({y:a._y}),a.raised=!1)})})})},animate:t,buildKDTree:t,setClip:t});I.flag= |
function(a,q,k,e,b){return["M",b&&b.anchorX||a,b&&b.anchorY||q,"L",a,q+e,a,q,a+k,q,a+k,q+e,a,q+e,"Z"]};k(["circle","square"],function(a){I[a+"pin"]=function(h,k,e,b,d){var q=d&&d.anchorX;d=d&&d.anchorY;"circle"===a&&b>e&&(h-=Math.round((b-e)/2),e=b);h=I[a](h,k,e,b);q&&d&&h.push("M",q,k>d?k:k+b,"L",q,d);return h}})})(K);(function(a){function E(a,b,d){this.init(a,b,d)}var k=a.addEvent,t=a.Axis,z=a.correctFloat,F=a.defaultOptions,H=a.defined,I=a.destroyObjectProperties,w=a.doc,h=a.each,q=a.fireEvent, |
G=a.hasTouch,e=a.isTouchDevice,b=a.merge,d=a.pick,u=a.removeEvent,A=a.wrap,l,p={height:e?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:a.svg&&!e,margin:10,minWidth:6,step:.2,zIndex:3};F.scrollbar=b(!0,p,F.scrollbar);a.swapXY=l=function(a,b){var g=a.length,d;if(b)for(b=0;b<g;b+=3)d=a[b+1],a[b+1]=a[b+2],a[b+2]=d;return a};E.prototype={init:function(a,r,e){this.scrollbarButtons=[];this.renderer=a;this.userOptions=r;this.options=b(p,r);this.chart=e;this.size=d(this.options.size,this.options.height); |
r.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,b=this.options,d=this.size,e;this.group=e=a.g("scrollbar").attr({zIndex:b.zIndex,translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0,r:b.trackBorderRadius||0,height:d,width:d}).add(e);this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(e);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:d, |
width:d,r:b.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(l(["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],b.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,b,d,e){var c=this.options.vertical,f=0,g= |
this.rendered?"animate":"attr";this.x=a;this.y=b+this.trackBorderWidth;this.width=d;this.xOffset=this.height=e;this.yOffset=f;c?(this.width=this.yOffset=d=f=this.size,this.xOffset=b=0,this.barWidth=e-2*d,this.x=a+=this.options.margin):(this.height=this.xOffset=e=b=this.size,this.barWidth=d-2*e,this.y+=this.options.margin);this.group[g]({translateX:a,translateY:this.y});this.track[g]({width:d,height:e});this.scrollbarButtons[1][g]({translateX:c?0:d-b,translateY:c?e-f:0})},drawScrollbarButton:function(a){var g= |
this.renderer,b=this.scrollbarButtons,d=this.options,c=this.size,f;f=g.g().add(this.group);b.push(f);f=g.rect().addClass("highcharts-scrollbar-button").add(f);f.attr(f.crisp({x:-.5,y:-.5,width:c+1,height:c+1,r:d.buttonBorderRadius},f.strokeWidth()));g.path(l(["M",c/2+(a?-1:1),c/2-3,"L",c/2+(a?-1:1),c/2+3,"L",c/2+(a?2:-2),c/2],d.vertical)).addClass("highcharts-scrollbar-arrow").add(b[a])},setRange:function(a,b){var g=this.options,d=g.vertical,c=g.minWidth,f=this.barWidth,m,e,n=this.rendered&&!this.hasDragged? |
"animate":"attr";H(f)&&(a=Math.max(a,0),m=Math.ceil(f*a),this.calculatedWidth=e=z(f*Math.min(b,1)-m),e<c&&(m=(f-c+e)*a,e=c),c=Math.floor(m+this.xOffset+this.yOffset),f=e/2-.5,this.from=a,this.to=b,d?(this.scrollbarGroup[n]({translateY:c}),this.scrollbar[n]({height:e}),this.scrollbarRifles[n]({translateY:f}),this.scrollbarTop=c,this.scrollbarLeft=0):(this.scrollbarGroup[n]({translateX:c}),this.scrollbar[n]({width:e}),this.scrollbarRifles[n]({translateX:f}),this.scrollbarLeft=c,this.scrollbarTop=0), |
12>=e?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===g.showFull&&(0>=a&&1<=b?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var d=a.chart.pointer.normalize(b),e=a.options.vertical?"chartY":"chartX",c=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][e]||(d=a.cursorToScrollbarPosition(d)[e],e=a[e],e=d-e,a.hasDragged=!0,a.updatePosition(c[0]+e,c[1]+e),a.hasDragged&&q(a,"changed",{from:a.from,to:a.to, |
trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b});a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(b){b=a.chart.pointer.normalize(b);b=a.cursorToScrollbarPosition(b);a.chartX=b.chartX;a.chartY=b.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(b){var d=z(a.to-a.from)*a.options.step;a.updatePosition(z(a.from- |
d),z(a.to-d));q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var d=(a.to-a.from)*a.options.step;a.updatePosition(a.from+d,a.to+d);q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var d=a.chart.pointer.normalize(b),e=a.to-a.from,c=a.y+a.scrollbarTop,f=a.x+a.scrollbarLeft;a.options.vertical&&d.chartY>c||!a.options.vertical&&d.chartX>f?a.updatePosition(a.from+e,a.to+e):a.updatePosition(a.from-e,a.to-e); |
q(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})}},cursorToScrollbarPosition:function(a){var b=this.options,b=b.minWidth>this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}},updatePosition:function(a,b){1<b&&(a=z(1-z(b-a)),b=1);0>a&&(b=z(b-a),a=0);this.from=a;this.to=b},update:function(a){this.destroy();this.init(this.chart.renderer,b(!0,this.options,a),this.chart)},addEvents:function(){var a= |
this.options.inverted?[1,0]:[0,1],b=this.scrollbarButtons,d=this.scrollbarGroup.element,e=this.mouseDownHandler,c=this.mouseMoveHandler,f=this.mouseUpHandler,a=[[b[a[0]].element,"click",this.buttonToMinClick],[b[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[d,"mousedown",e],[w,"mousemove",c],[w,"mouseup",f]];G&&a.push([d,"touchstart",e],[w,"touchmove",c],[w,"touchend",f]);h(a,function(a){k.apply(null,a)});this._events=a},removeEvents:function(){h(this._events, |
function(a){u.apply(null,a)});this._events.length=0},destroy:function(){var a=this.chart.scroller;this.removeEvents();h(["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,I(a.scrollbarButtons))}};A(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 E(b.chart.renderer,b.options.scrollbar,b.chart),k(b.scrollbar,"changed",function(a){var e=Math.min(d(b.options.min,b.min),b.min,b.dataMin),c=Math.max(d(b.options.max,b.max),b.max,b.dataMax)-e,f;b.horiz&&!b.reversed||!b.horiz&&b.reversed?(f=e+c*this.to,e+=c*this.from):(f=e+c*(1-this.from),e+=c*(1-this.to));b.setExtremes(e,f,!0,!1,a)}))});A(t.prototype,"render",function(a){var b=Math.min(d(this.options.min,this.min),this.min,this.dataMin), |
e=Math.max(d(this.options.max,this.max),this.max,this.dataMax),g=this.scrollbar,c=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:c+this.axisTitleMargin+this.offset),this.width,this.height),c=1):(g.position(this.left+this.width+2+this.chart.scrollbarsOffsets[0]+(this.opposite?c+this.axisTitleMargin+this.offset:0),this.top,this.width,this.height),c=0);if(!this.opposite&& |
!this.horiz||this.opposite&&this.horiz)this.chart.scrollbarsOffsets[c]+=this.scrollbar.size+this.scrollbar.options.margin;isNaN(b)||isNaN(e)||!H(this.min)||!H(this.max)?g.setRange(0,0):(c=(this.min-b)/(e-b),b=(this.max-b)/(e-b),this.horiz&&!this.reversed||!this.horiz&&this.reversed?g.setRange(c,b):g.setRange(1-b,1-c))}});A(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)});A(t.prototype,"destroy",function(a){this.scrollbar&&(this.scrollbar=this.scrollbar.destroy());a.apply(this,Array.prototype.slice.call(arguments,1))});a.Scrollbar=E})(K);(function(a){function E(a){this.init(a)}var k=a.addEvent,t=a.Axis,z=a.Chart,F=a.defaultOptions,H=a.defined,I=a.destroyObjectProperties,w=a.doc,h=a.each,q=a.erase,G=a.error,e=a.extend,b=a.grep,d=a.hasTouch,u=a.isNumber,A=a.isObject,l=a.merge,p=a.pick,g=a.removeEvent,r=a.Scrollbar,C=a.Series,x=a.seriesTypes, |
c=a.wrap,f=a.swapXY,m=[].concat(a.defaultDataGroupingUnits),B=function(a){var n=b(arguments,u);if(n.length)return Math[a].apply(0,n)};m[4]=["day",[1,2,3,4]];m[5]=["week",[1,2,3]];e(F,{navigator:{height:40,margin:25,maskInside:!0,series:{type:void 0===x.areaspline?"line":"areaspline",compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:m},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}}});E.prototype={drawHandle:function(a,b,c,f){this.handles[b][f](c?{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 f(["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,b,c,f){var n=this.navigatorOptions.maskInside,d=this.outline.strokeWidth(),v=d/2,d=d%2/2,e=this.outlineHeight,m=this.scrollbarHeight,y=this.size,D=this.left-m,g=this.top;c?(D-=v,c=g+b+d,b=g+a+d,a=["M",D+e,g-m-d,"L", |
D+e,c,"L",D,c,"L",D,b,"L",D+e,b,"L",D+e,g+y+m].concat(n?["M",D+e,c-v,"L",D+e,b+v]:[])):(a+=D+m-d,b+=D+m-d,g+=v,a=["M",D,g,"L",a,g,"L",a,g+e,"L",b,g+e,"L",b,g,"L",D+y+2*m,g].concat(n?["M",a-v,g,"L",b+v,g]:[]));this.outline[f]({d:a})},drawMasks:function(a,b,c,f){var n=this.left,d=this.top,v=this.height,e,m,y,D;c?(y=[n,n,n],D=[d,d+a,d+b],m=[v,v,v],e=[a,b-a,this.size-b]):(y=[n,n+a,n+b],D=[d,d,d],m=[a,b-a,this.size-b],e=[v,v,v]);h(this.shades,function(a,b){a[f]({x:y[b],y:D[b],width:m[b],height:e[b]})})}, |
renderElements:function(){var a=this,b=a.navigatorOptions.maskInside,c=a.chart,f=c.inverted,d=c.renderer,e;a.navigatorGroup=e=d.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();h([!b,b,!b],function(b,n){a.shades[n]=d.rect().addClass("highcharts-navigator-mask"+(1===n?"-inside":"-outside")).add(e)});a.outline=d.path().addClass("highcharts-navigator-outline").add(e);h([0,1],function(b){a.handles[b]=d.path(a.getHandlePath(f)).attr({zIndex:7-b}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+ |
["left","right"][b]).add(e)})},update:function(a){this.destroy();l(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,b,c,f){var n=this.chart,d,e,v=this.scrollbarHeight,m,y=this.xAxis;d=y.fake?n.xAxis[0]:y;var g=this.navigatorEnabled,D,B=this.rendered;e=n.inverted;var h=n.xAxis[0].minRange;if(!this.hasDragged||H(c)){if(!u(a)||!u(b))if(B)c=0,f=y.width;else return;this.left=p(y.left,n.plotLeft+v+(e?n.plotWidth:0));this.size=D=m=p(y.len,(e?n.plotHeight:n.plotWidth)- |
2*v);n=e?v:m+2*v;c=p(c,y.toPixels(a,!0));f=p(f,y.toPixels(b,!0));u(c)&&Infinity!==Math.abs(c)||(c=0,f=n);a=y.toValue(c,!0);b=y.toValue(f,!0);if(Math.abs(b-a)<h)if(this.grabbedLeft)c=y.toPixels(b-h,!0);else if(this.grabbedRight)f=y.toPixels(a+h,!0);else return;this.zoomedMax=Math.min(Math.max(c,f,0),D);this.zoomedMin=Math.min(Math.max(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(c,f),0),D);this.range=this.zoomedMax-this.zoomedMin;D=Math.round(this.zoomedMax);c=Math.round(this.zoomedMin); |
g&&(this.navigatorGroup.attr({visibility:"visible"}),B=B&&!this.hasDragged?"animate":"attr",this.drawMasks(c,D,e,B),this.drawOutline(c,D,e,B),this.drawHandle(c,0,e,B),this.drawHandle(D,1,e,B));this.scrollbar&&(e?(e=this.top-v,d=this.left-v+(g||!d.opposite?0:(d.titleOffset||0)+d.axisTitleMargin),v=m+2*v):(e=this.top+(g?this.height:-v),d=this.left-v),this.scrollbar.position(d,e,n,v),this.scrollbar.setRange(this.zoomedMin/m,this.zoomedMax/m));this.rendered=!0}},addMouseEvents:function(){var a=this,b= |
a.chart,c=b.container,f=[],e,m;a.mouseMoveHandler=e=function(b){a.onMouseMove(b)};a.mouseUpHandler=m=function(b){a.onMouseUp(b)};f=a.getPartsEvents("mousedown");f.push(k(c,"mousemove",e),k(w,"mouseup",m));d&&(f.push(k(c,"touchmove",e),k(w,"touchend",m)),f.concat(a.getPartsEvents("touchstart")));a.eventsToUnbind=f;a.series&&a.series[0]&&f.push(k(a.series[0].xAxis,"foundExtremes",function(){b.navigator.modifyNavigatorAxisExtremes()}))},getPartsEvents:function(a){var b=this,c=[];h(["shades","handles"], |
function(n){h(b[n],function(f,d){c.push(k(f.element,a,function(a){b[n+"Mousedown"](a,d)}))})});return c},shadesMousedown:function(a,b){a=this.chart.pointer.normalize(a);var c=this.chart,f=this.xAxis,n=this.zoomedMin,d=this.left,e=this.size,v=this.range,m=a.chartX,g;c.inverted&&(m=a.chartY,d=this.top);1===b?(this.grabbedCenter=m,this.fixedWidth=v,this.dragOffset=m-n):(a=m-d-v/2,0===b?a=Math.max(0,a):2===b&&a+v>=e&&(a=e-v,g=this.getUnionExtremes().dataMax),a!==n&&(this.fixedWidth=v,b=f.toFixedRange(a, |
a+v,null,g),c.xAxis[0].setExtremes(Math.min(b.min,b.max),Math.max(b.min,b.max),!0,null,{trigger:"navigator"})))},handlesMousedown:function(a,b){this.chart.pointer.normalize(a);a=this.chart;var c=a.xAxis[0],f=a.inverted&&!c.reversed||!a.inverted&&c.reversed;0===b?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=f?c.min:c.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=f?c.max:c.min);a.fixedRange=null},onMouseMove:function(a){var b=this,c=b.chart, |
f=b.left,n=b.navigatorSize,d=b.range,e=b.dragOffset,m=c.inverted;a.touches&&0===a.touches[0].pageX||(a=c.pointer.normalize(a),c=a.chartX,m&&(f=b.top,c=a.chartY),b.grabbedLeft?(b.hasDragged=!0,b.render(0,0,c-f,b.otherHandlePos)):b.grabbedRight?(b.hasDragged=!0,b.render(0,0,b.otherHandlePos,c-f)):b.grabbedCenter&&(b.hasDragged=!0,c<e?c=e:c>n+e-d&&(c=n+e-d),b.render(0,0,c-e,c-e+d)),b.hasDragged&&b.scrollbar&&b.scrollbar.options.liveRedraw&&(a.DOMType=a.type,setTimeout(function(){b.onMouseUp(a)},0)))}, |
onMouseUp:function(a){var b=this.chart,c=this.xAxis,f=this.scrollbar,n,d,e=a.DOMEvent||a;(!this.hasDragged||f&&f.hasDragged)&&"scrollbar"!==a.trigger||(this.zoomedMin===this.otherHandlePos?n=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(d=this.fixedExtreme),this.zoomedMax===this.size&&(d=this.getUnionExtremes().dataMax),c=c.toFixedRange(this.zoomedMin,this.zoomedMax,n,d),H(c.min)&&b.xAxis[0].setExtremes(Math.min(c.min,c.max),Math.max(c.min,c.max),!0,this.hasDragged?!1:null,{trigger:"navigator", |
triggerOp:"navigator-drag",DOMEvent:e}));"mousemove"!==a.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null)},removeEvents:function(){this.eventsToUnbind&&(h(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&&(h(a,function(a){g(a, |
"updatedData",this.updatedDataHandler)},this),a[0].xAxis&&g(a[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))},init:function(a){var b=a.options,f=b.navigator,d=f.enabled,e=b.scrollbar,n=e.enabled,b=d?f.height:0,m=n?e.height:0;this.handles=[];this.shades=[];this.chart=a;this.setBaseSeries();this.height=b;this.scrollbarHeight=m;this.scrollbarEnabled=n;this.navigatorEnabled=d;this.navigatorOptions=f;this.scrollbarOptions=e;this.outlineHeight=b+m;this.opposite=p(f.opposite,!d&&a.inverted);var g= |
this,e=g.baseSeries,n=a.xAxis.length,h=a.yAxis.length,q=e&&e[0]&&e[0].xAxis||a.xAxis[0];a.extraMargin={type:g.opposite?"plotTop":"marginBottom",value:(d||!a.inverted?g.outlineHeight:0)+f.margin};a.inverted&&(a.extraMargin.type=g.opposite?"marginRight":"plotLeft");a.isDirtyBox=!0;g.navigatorEnabled?(g.xAxis=new t(a,l({breaks:q.options.breaks,ordinal:q.options.ordinal},f.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",isX:!0,type:"datetime",index:n,offset:0,keepOrdinalPadding:!0,startOnTick:!1, |
endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},a.inverted?{offsets:[m,0,-m,0],width:b}:{offsets:[0,-m,0,m],height:b})),g.yAxis=new t(a,l(f.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:h,zoomEnabled:!1},a.inverted?{width:b}:{height:b})),e||f.series.data?g.addBaseSeries():0===a.series.length&&c(a,"redraw",function(b,c){0<a.series.length&&!g.series&&(g.setBaseSeries(),a.redraw=b);b.call(a,c)}),g.renderElements(),g.addMouseEvents()):g.xAxis={translate:function(b,c){var f=a.xAxis[0], |
d=f.getExtremes(),e=f.len-2*m,n=B("min",f.options.min,d.dataMin),f=B("max",f.options.max,d.dataMax)-n;return c?b*f/e+n:e*(b-n)/f},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=g.scrollbar=new r(a.renderer,l(a.options.scrollbar,{margin:g.navigatorEnabled?0:10,vertical:a.inverted}),a),k(g.scrollbar,"changed",function(b){var c=g.size,f=c*this.to,c=c*this.from;g.hasDragged= |
g.scrollbar.hasDragged;g.render(0,0,c,f);(a.options.scrollbar.liveRedraw||"mousemove"!==b.DOMType)&&setTimeout(function(){g.onMouseUp(b)})}));g.addBaseSeriesEvents();g.addChartEvents()},getUnionExtremes:function(a){var b=this.chart.xAxis[0],c=this.xAxis,f=c.options,d=b.options,e;a&&null===b.dataMin||(e={dataMin:p(f&&f.min,B("min",d.min,b.dataMin,c.dataMin,c.min)),dataMax:p(f&&f.max,B("max",d.max,b.dataMax,c.dataMax,c.max))});return e},setBaseSeries:function(a){var b=this.chart,c;a=a||b.options&&b.options.navigator.baseSeries|| |
0;this.series&&(this.removeBaseSeriesEvents(),h(this.series,function(a){a.destroy()}));c=this.baseSeries=[];h(b.series||[],function(b,f){(b.options.showInNavigator||(f===a||b.options.id===a)&&!1!==b.options.showInNavigator)&&c.push(b)});this.xAxis&&!this.xAxis.fake&&this.addBaseSeries()},addBaseSeries:function(){var a=this,b=a.chart,c=a.series=[],f=a.baseSeries,d,e,m=a.navigatorOptions.series,g,B={enableMouseTracking:!1,index:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis", |
showInLegend:!1,stacking:!1,isInternal:!0,visible:!0};f?h(f,function(f,n){B.name="Navigator "+(n+1);d=f.options||{};g=d.navigatorOptions||{};e=l(d,B,m,g);n=g.data||m.data;a.hasNavigatorData=a.hasNavigatorData||!!n;e.data=n||d.data&&d.data.slice(0);f.navigatorSeries=b.initSeries(e);c.push(f.navigatorSeries)}):(e=l(m,B),e.data=m.data,a.hasNavigatorData=!!e.data,c.push(b.initSeries(e)));this.addBaseSeriesEvents()},addBaseSeriesEvents:function(){var a=this,b=a.baseSeries||[];b[0]&&b[0].xAxis&&k(b[0].xAxis, |
"foundExtremes",this.modifyBaseAxisExtremes);!1!==this.navigatorOptions.adaptToUpdatedData&&h(b,function(b){b.xAxis&&k(b,"updatedData",this.updatedDataHandler);k(b,"remove",function(){this.navigatorSeries&&(q(a.series,this.navigatorSeries),this.navigatorSeries.remove(!1),delete this.navigatorSeries)})},this)},modifyNavigatorAxisExtremes:function(){var a=this.xAxis,b;a.getExtremes&&(!(b=this.getUnionExtremes(!0))||b.dataMin===a.min&&b.dataMax===a.max||(a.min=b.dataMin,a.max=b.dataMax))},modifyBaseAxisExtremes:function(){var a= |
this.chart.navigator,b=this.getExtremes(),c=b.dataMin,f=b.dataMax,b=b.max-b.min,d=a.stickToMin,e=a.stickToMax,m,g,B=a.series&&a.series[0],h=!!this.setExtremes;this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger||(d&&(g=c,m=g+b),e&&(m=f,d||(g=Math.max(m-b,B&&B.xData?B.xData[0]:-Number.MAX_VALUE))),h&&(d||e)&&u(g)&&(this.min=this.userMin=g,this.max=this.userMax=m));a.stickToMin=a.stickToMax=null},updatedDataHandler:function(){var a=this.chart.navigator,b=this.navigatorSeries;a.stickToMin= |
u(this.xAxis.min)&&this.xAxis.min<=this.xData[0];a.stickToMax=Math.round(a.zoomedMax)>=Math.round(a.size);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},addChartEvents:function(){k(this.chart,"redraw",function(){var a=this.navigator,b=a&&(a.baseSeries&&a.baseSeries[0]&&a.baseSeries[0].xAxis||a.scrollbar&&this.xAxis[0]);b&&a.render(b.min,b.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));h(this.series||[],function(a){a.destroy&&a.destroy()});h("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);h([this.handles],function(a){I(a)},this)}};a.Navigator=E;c(t.prototype,"zoom",function(a,b,c){var f=this.chart,d=f.options,e=d.chart.zoomType,m=d.navigator, |
d=d.rangeSelector,n;this.isXAxis&&(m&&m.enabled||d&&d.enabled)&&("x"===e?f.resetZoomButton="blocked":"y"===e?n=!1:"xy"===e&&(f=this.previousZoom,H(b)?this.previousZoom=[this.min,this.max]:f&&(b=f[0],c=f[1],delete this.previousZoom)));return void 0!==n?n:a.call(this,b,c)});c(z.prototype,"init",function(a,b,c){k(this,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new E(this)});a.call(this,b,c)});c(z.prototype,"setChartSize",function(a){var b= |
this.legend,c=this.navigator,f,d,e,m;a.apply(this,[].slice.call(arguments,1));c&&(d=b.options,e=c.xAxis,m=c.yAxis,f=c.scrollbarHeight,this.inverted?(c.left=c.opposite?this.chartWidth-f-c.height:this.spacing[3]+f,c.top=this.plotTop+f):(c.left=this.plotLeft+f,c.top=c.navigatorOptions.top||this.chartHeight-c.height-f-this.spacing[2]-("bottom"===d.verticalAlign&&d.enabled&&!d.floating?b.legendHeight+p(d.margin,10):0)),e&&m&&(this.inverted?e.options.left=m.options.left=c.left:e.options.top=m.options.top= |
c.top,e.setAxisSize(),m.setAxisSize()))});c(C.prototype,"addPoint",function(a,b,c,f,d){var e=this.options.turboThreshold;e&&this.xData.length>e&&A(b,!0)&&this.chart.navigator&&G(20,!0);a.call(this,b,c,f,d)});c(z.prototype,"addSeries",function(a,b,c,f){a=a.call(this,b,!1,f);this.navigator&&this.navigator.setBaseSeries();p(c,!0)&&this.redraw();return a});c(C.prototype,"update",function(a,b,c){a.call(this,b,!1);this.chart.navigator&&this.chart.navigator.setBaseSeries();p(c,!0)&&this.chart.redraw()}); |
z.prototype.callbacks.push(function(a){var b=a.navigator;b&&(a=a.xAxis[0].getExtremes(),b.render(a.min,a.max))})})(K);(function(a){function E(a){this.init(a)}var k=a.addEvent,t=a.Axis,z=a.Chart,F=a.css,H=a.createElement,I=a.dateFormat,w=a.defaultOptions,h=w.global.useUTC,q=a.defined,G=a.destroyObjectProperties,e=a.discardElement,b=a.each,d=a.extend,u=a.fireEvent,A=a.Date,l=a.isNumber,p=a.merge,g=a.pick,r=a.pInt,C=a.splat,x=a.wrap;d(w,{rangeSelector:{buttonTheme:{"stroke-width":0,width:28,height:18, |
padding:2,zIndex:7},height:35,inputPosition:{align:"right"}}});w.lang=p(w.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});E.prototype={clickButton:function(a,f){var c=this,d=c.chart,e=c.buttonOptions[a],v=d.xAxis[0],y=d.scroller&&d.scroller.getUnionExtremes()||v||{},D=y.dataMin,q=y.dataMax,p,r=v&&Math.round(Math.min(v.max,g(q,v.max))),u=e.type,w,y=e._range,x,L,z,A=e.dataGrouping;if(null!==D&&null!==q){d.fixedRange=y;A&&(this.forcedDataGrouping=!0,t.prototype.setDataGrouping.call(v|| |
{chart:this.chart},A,!1));if("month"===u||"year"===u)v?(u={range:e,max:r,dataMin:D,dataMax:q},p=v.minFromRange.call(u),l(u.newMax)&&(r=u.newMax)):y=e;else if(y)p=Math.max(r-y,D),r=Math.min(p+y,q);else if("ytd"===u)if(v)void 0===q&&(D=Number.MAX_VALUE,q=Number.MIN_VALUE,b(d.series,function(a){a=a.xData;D=Math.min(a[0],D);q=Math.max(a[a.length-1],q)}),f=!1),r=c.getYTDExtremes(q,D,h),p=x=r.min,r=r.max;else{k(d,"beforeRender",function(){c.clickButton(a)});return}else"all"===u&&v&&(p=D,r=q);c.setSelected(a); |
v?v.setExtremes(p,r,g(f,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:e}):(w=C(d.options.xAxis)[0],z=w.range,w.range=y,L=w.min,w.min=x,k(d,"load",function(){w.range=z;w.min=L}))}},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,d=a.options.rangeSelector, |
e=d.buttons||[].concat(c.defaultButtons),g=d.selected,h=function(){var a=c.minInput,b=c.maxInput;a&&a.blur&&u(a,"blur");b&&b.blur&&u(b,"blur")};c.chart=a;c.options=d;c.buttons=[];a.extraTopMargin=d.height;c.buttonOptions=e;this.unMouseDown=k(a.container,"mousedown",h);this.unResize=k(a,"resize",h);b(e,c.computeButtonRange);void 0!==g&&e[g]&&this.clickButton(g,!1);k(a,"load",function(){k(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,f=a.xAxis[0],d=Math.round(f.max-f.min),e=!f.hasVisibleSeries,a=a.scroller&&a.scroller.getUnionExtremes()||f,g=a.dataMin,v=a.dataMax,a=this.getYTDExtremes(v,g,h),q=a.min,k=a.max,p=this.selected,r=l(p),u=this.options.allButtonsEnabled,t=this.buttons;b(this.buttonOptions,function(a,b){var c=a._range,m=a.type,n=a.count||1;a=t[b];var h=0;b=b===p;var B=c>v-g,l=c<f.minRange,D=!1,y=!1,c=c===d; |
("month"===m||"year"===m)&&d>=864E5*{month:28,year:365}[m]*n&&d<=864E5*{month:31,year:366}[m]*n?c=!0:"ytd"===m?(c=k-q===d,D=!b):"all"===m&&(c=f.max-f.min>=v-g,y=!b&&r&&c);m=!u&&(B||l||y||e);c=b&&c||c&&!r&&!D;m?h=3:c&&(r=!0,h=2);a.state!==h&&a.setState(h)})},computeButtonRange:function(a){var b=a.type,c=a.count||1,d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[b])a._range=d[b]*c;else if("month"===b||"year"===b)a._range=864E5*{month:30,year:365}[b]*c},setInputValue:function(a, |
b){var c=this.chart.options.rangeSelector,f=this[a+"Input"];q(b)&&(f.previousValue=f.HCTime,f.HCTime=b);f.value=I(c.inputEditDateFormat||"%Y-%m-%d",f.HCTime);this[a+"DateBox"].attr({text:I(c.inputDateFormat||"%b %e, %Y",f.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];F(this[a+"Input"],{left:b.translateX+c.x+"px",top:b.translateY+"px",width:c.width-2+"px",height:c.height-2+"px",border:"2px solid silver"})},hideInput:function(a){F(this[a+"Input"],{border:0,width:"1px",height:"1px"}); |
this.setInputValue(a)},drawInput:function(a){function b(){var a=p.value,b=(g.inputDateParser||Date.parse)(a),f=d.xAxis[0],e=d.scroller&&d.scroller.xAxis?d.scroller.xAxis:f,m=e.dataMin,e=e.dataMax;b!==p.previousValue&&(p.previousValue=b,l(b)||(b=a.split("-"),b=Date.UTC(r(b[0]),r(b[1])-1,r(b[2]))),l(b)&&(h||(b+=6E4*(new Date).getTimezoneOffset()),k?b>c.maxInput.HCTime?b=void 0:b<m&&(b=m):b<c.minInput.HCTime?b=void 0:b>e&&(b=e),void 0!==b&&f.setExtremes(k?b:f.min,k?f.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))} |
var c=this,d=c.chart,e=d.renderer,g=d.options.rangeSelector,q=c.div,k="min"===a,p,u,t=this.inputGroup;this[a+"Label"]=u=e.label(w.lang[k?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(t);t.offset+=u.width+5;this[a+"DateBox"]=e=e.label("",t.offset).addClass("highcharts-range-input").attr({padding:2,width:g.inputBoxWidth||90,height:g.inputBoxHeight||17,stroke:g.inputBoxBorderColor||"#cccccc","stroke-width":1,"text-align":"center"}).on("click", |
function(){c.showInput(a);c[a+"Input"].focus()}).add(t);t.offset+=e.width+(k?10:0);this[a+"Input"]=p=H("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:d.plotTop+"px"},q);p.onfocus=function(){c.showInput(a)};p.onblur=function(){c.hideInput(a)};p.onchange=b;p.onkeypress=function(a){13===a.keyCode&&b()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a=g((b.buttonPosition||{}).y,a.plotTop-a.axisOffset[0]-b.height);return{buttonTop:a,inputTop:a-10}},getYTDExtremes:function(a, |
b,d){var c=new A(a),f=c[A.hcGetFullYear]();d=d?A.UTC(f,0,1):+new A(f,0,1);b=Math.max(b||0,d);c=c.getTime();return{max:Math.min(a||c,c),min:b}},render:function(a,f){var c=this,e=c.chart,n=e.renderer,h=e.container,l=e.options,k=l.exporting&&!1!==l.exporting.enabled&&l.navigation&&l.navigation.buttonOptions,p=l.rangeSelector,r=c.buttons,l=w.lang,t=c.div,t=c.inputGroup,u=p.buttonTheme,x=p.buttonPosition||{},z=p.inputEnabled,A=u&&u.states,C=e.plotLeft,E,G=this.getPosition(),F=c.group,I=c.rendered;!1!== |
p.enabled&&(I||(c.group=F=n.g("range-selector-buttons").add(),c.zoomText=n.text(l.rangeSelectorZoom,g(x.x,C),15).css(p.labelStyle).add(F),E=g(x.x,C)+c.zoomText.getBBox().width+5,b(c.buttonOptions,function(a,b){r[b]=n.button(a.text,E,0,function(){c.clickButton(b);c.isActive=!0},u,A&&A.hover,A&&A.select,A&&A.disabled).attr({"text-align":"center"}).add(F);E+=r[b].width+g(p.buttonSpacing,5)}),!1!==z&&(c.div=t=H("div",null,{position:"relative",height:0,zIndex:1}),h.parentNode.insertBefore(t,h),c.inputGroup= |
t=n.g("input-group").add(),t.offset=0,c.drawInput("min"),c.drawInput("max"))),c.updateButtonStates(),F[I?"animate":"attr"]({translateY:G.buttonTop}),!1!==z&&(t.align(d({y:G.inputTop,width:t.offset,x:k&&G.inputTop<(k.y||0)+k.height-e.spacing[0]?-40:0},p.inputPosition),!0,e.spacingBox),q(z)||(e=F.getBBox(),t[t.alignAttr.translateX<e.x+e.width+10?"hide":"show"]()),c.setInputValue("min",a),c.setInputValue("max",f)),c.rendered=!0)},update:function(a){var b=this.chart;p(!0,b.options.rangeSelector,a);this.destroy(); |
this.init(b)},destroy:function(){var b=this,f=b.minInput,d=b.maxInput;b.unMouseDown();b.unResize();G(b.buttons);f&&(f.onfocus=f.onblur=f.onchange=null);d&&(d.onfocus=d.onblur=d.onchange=null);a.objectEach(b,function(a,c){a&&"chart"!==c&&(a.destroy?a.destroy():a.nodeType&&e(this[c]));a!==E.prototype[c]&&(b[c]=null)},this)}};t.prototype.toFixedRange=function(a,b,d,e){var c=this.chart&&this.chart.fixedRange;a=g(d,this.translate(a,!0,!this.horiz));b=g(e,this.translate(b,!0,!this.horiz));d=c&&(b-a)/c; |
.7<d&&1.3>d&&(e?a=b-c:b=a+c);l(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,n,h,p=function(a,c){var d=new Date(a),f=d["get"+b]();d["set"+b](f+c);f===d["get"+b]()&&d.setDate(0);return d.getTime()-a};l(a)?(d=e-a,h=a):(d=e+p(e,-a.count),this.chart&&(this.chart.fixedRange=e-d));n=g(this.dataMin,Number.MIN_VALUE);l(d)||(d=n);d<=n&&(d=n,void 0===h&&(h=p(d,a.count)),this.newMax=Math.min(d+h,this.dataMax)); |
l(e)||(d=void 0);return d};x(z.prototype,"init",function(a,b,d){k(this,"init",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new E(this))});a.call(this,b,d)});z.prototype.callbacks.push(function(a){function b(){c=a.xAxis[0].getExtremes();l(c.min)&&d.render(c.min,c.max)}var c,d=a.rangeSelector,e,g;d&&(g=k(a.xAxis[0],"afterSetExtremes",function(a){d.render(a.min,a.max)}),e=k(a,"redraw",b),b());k(a,"destroy",function(){d&&(e(),g())})});a.RangeSelector=E})(K);(function(a){var E=a.arrayMax, |
k=a.arrayMin,t=a.Axis,z=a.Chart,F=a.defined,H=a.each,I=a.format,w=a.grep,h=a.inArray,q=a.isNumber,G=a.isString,e=a.map,b=a.merge,d=a.pick,u=a.Point,A=a.Series,l=a.splat,p=a.SVGRenderer,g=a.wrap,r=A.prototype,C=r.init,x=r.processData,c=u.prototype.tooltipFormatter;a.StockChart=a.stockChart=function(c,g,h){var f=G(c)||c.nodeName,m=arguments[f?1:0],p=m.series,k=a.getOptions(),q,r=d(m.navigator&&m.navigator.enabled,k.navigator.enabled,!0),t=r?{startOnTick:!1,endOnTick:!1}:null,B={marker:{enabled:!1,radius:2}}, |
u={shadow:!1,borderWidth:0};m.xAxis=e(l(m.xAxis||{}),function(a){return b({minPadding:0,maxPadding:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"},showLastLabel:!0},k.xAxis,a,{type:"datetime",categories:null},t)});m.yAxis=e(l(m.yAxis||{}),function(a){q=d(a.opposite,!0);return b({labels:{y:-2},opposite:q,showLastLabel:!1,title:{text:null}},k.yAxis,a)});m.series=null;m=b({chart:{panning:!0,pinchType:"x"},navigator:{enabled:r},scrollbar:{enabled:d(k.scrollbar.enabled,!0)},rangeSelector:{enabled:d(k.rangeSelector.enabled, |
!0)},title:{text:null},tooltip:{shared:!0,crosshairs:!0},legend:{enabled:!1},plotOptions:{line:B,spline:B,area:B,areaspline:B,arearange:B,areasplinerange:B,column:u,columnrange:u,candlestick:u,ohlc:u}},m,{isStock:!0});m.series=p;return f?new z(c,m,h):new z(m,g)};g(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.call(this,[].slice.call(arguments,1))});g(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.call(this,Array.prototype.slice.call(arguments,1))});g(t.prototype,"getPlotLinePath",function(b,c,g,n,l,p){var f=this,m=this.isLinked&&!this.series?this.linkedParent.series:this.series,k=f.chart,r=k.renderer,t= |
f.left,v=f.top,u,B,y,w,x=[],A=[],z,C;if("xAxis"!==f.coll&&"yAxis"!==f.coll)return b.apply(this,[].slice.call(arguments,1));A=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=f.options[b];return q(a)?[k[b][a]]:G(a)?[k.get(a)]:e(m,function(a){return a[b]})}(f.coll);H(f.isXAxis?k.yAxis:k.xAxis,function(a){if(F(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=F(a.options[b])?k[b][a.options[b]]:k[b][0];f===b&&A.push(a)}});z=A.length?[]:[f.isXAxis?k.yAxis[0]:k.xAxis[0]]; |
H(A,function(b){-1!==h(b,z)||a.find(z,function(a){return a.pos===b.pos&&a.len&&b.len})||z.push(b)});C=d(p,f.translate(c,null,null,n));q(C)&&(f.horiz?H(z,function(a){var b;B=a.pos;w=B+a.len;u=y=Math.round(C+f.transB);if(u<t||u>t+f.width)l?u=y=Math.min(Math.max(t,u),t+f.width):b=!0;b||x.push("M",u,B,"L",y,w)}):H(z,function(a){var b;u=a.pos;y=u+a.len;B=w=Math.round(v+f.height-C);if(B<v||B>v+f.height)l?B=w=Math.min(Math.max(v,B),f.top+f.height):b=!0;b||x.push("M",u,B,"L",y,w)}));return 0<x.length?r.crispPolyLine(x, |
g||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};p.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};g(t.prototype,"hideCrosshair",function(a,b){a.call(this,b);this.crossLabel&&(this.crossLabel=this.crossLabel.hide())});g(t.prototype,"drawCrosshair",function(a,b,c){var e,f;a.call(this,b,c);if(F(this.crosshair.label)&&this.crosshair.label.enabled&&this.cross){a=this.chart;var g=this.options.crosshair.label,h=this.horiz;e=this.opposite;f=this.left;var m=this.top,k=this.crossLabel,l,p=g.format,q="",t="inside"===this.options.tickPosition,r=!1!==this.crosshair.snap,u=0;b||(b=this.cross&& |
this.cross.e);l=h?"center":e?"right"===this.labelAlign?"right":"left":"left"===this.labelAlign?"left":"center";k||(k=this.crossLabel=a.renderer.label(null,null,null,g.shape||"callout").addClass("highcharts-crosshair-label"+(this.series[0]&&" highcharts-color-"+this.series[0].colorIndex)).attr({align:g.align||l,padding:d(g.padding,8),r:d(g.borderRadius,3),zIndex:2}).add(this.labelGroup));h?(l=r?c.plotX+f:b.chartX,m+=e?0:this.height):(l=e?this.width+f:0,m=r?c.plotY+m:b.chartY);p||g.formatter||(this.isDatetimeAxis&& |
(q="%b %d, %Y"),p="{value"+(q?":"+q:"")+"}");b=r?c[this.isXAxis?"x":"y"]:this.toValue(h?b.chartX:b.chartY);k.attr({text:p?I(p,{value:b}):g.formatter.call(this,b),x:l,y:m,visibility:"visible"});b=k.getBBox();if(h){if(t&&!e||!t&&e)m=k.y-b.height}else m=k.y-b.height/2;h?(e=f-b.x,f=f+this.width-b.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+b.width>=f&&(u=-(k.translateX+b.width-f));k.attr({x:l+u,y:m,anchorX:h? |
l:this.opposite?0:a.chartWidth,anchorY:h?this.opposite?a.chartHeight:0:m+b.height/2})}});r.init=function(){C.apply(this,arguments);this.setCompare(this.options.compare)};r.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)};r.processData=function(){var a,b= |
-1,c,d,e,g;x.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,e=d.length,this.pointArrayMap&&(b=h("close",this.pointArrayMap),-1===b&&(b=h(this.pointValKey||"y",this.pointArrayMap))),a=0;a<e-1;a++)if(g=d[a]&&-1<b?d[a][b]:d[a],q(g)&&c[a+1]>=this.xAxis.min&&0!==g){this.compareValue=g;break}};g(r,"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=k(b),this.dataMax=E(b))});t.prototype.setCompare=function(a,b){this.isXAxis||(H(this.series,function(b){b.setCompare(a)}),d(b,!0)&&this.chart.redraw())};u.prototype.tooltipFormatter=function(b){b=b.replace("{point.change}",(0<this.change?"+":"")+a.numberFormat(this.change,d(this.series.tooltipOptions.changeDecimals,2)));return c.apply(this,[b])};g(A.prototype,"render",function(a){this.chart.is3d&&this.chart.is3d()||this.chart.polar||!this.xAxis||this.xAxis.isRadial||(!this.clipBox&&this.animate? |
(this.clipBox=b(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)});g(z.prototype,"getSelectedPoints",function(a){var b=a.call(this);H(this.series,function(a){a.hasGroupedData&&(b=b.concat(w(a.points||[],function(a){return a.selected})))});return b}); |
g(z.prototype,"update",function(a,c){"scrollbar"in c&&this.navigator&&(b(!0,this.options.scrollbar,c.scrollbar),this.navigator.update({},!1),delete c.scrollbar);return a.apply(this,Array.prototype.slice.call(arguments,1))})})(K)}); |
/base/000_base/node_modules/highcharts/js/modules/stock.js.map |
---|
@@ -0,0 +1,8 @@ |
{ |
"version":3, |
"file":"", |
"lineCount":123, |
"mappings":"A;;;;;;;;AASC,SAAQ,CAACA,CAAD,CAAU,CACO,QAAtB,GAAI,MAAOC,OAAX,EAAkCA,MAAAC,QAAlC,CACID,MAAAC,QADJ,CACqBF,CADrB,CAGIA,CAAA,CAAQG,UAAR,CAJW,CAAlB,CAAA,CAMC,QAAQ,CAACA,CAAD,CAAa,CAClB,SAAQ,CAACC,CAAD,CAAI,CAAA,IAMLC,EAAWD,CAAAC,SANN,CAOLC,EAAOF,CAAAE,KAPF,CAQLC,EAAQH,CAAAG,MARH,CASLC,EAAMJ,CAAAI,IATD,CAULC,EAAaL,CAAAK,WAVR,CAWLC,EAAUN,CAAAM,QAXL,CAYLC,EAAOP,CAAAO,KAZF,CAaLC,EAASR,CAAAQ,OAbJ,CAcLC,EAAOT,CAAAS,KAdF,CAgBLC,EAAYV,CAAAU,UAhBP,CAiBLC,EAAOX,CAAAW,KAOXA,EAAA,CATaX,CAAAY,OASRC,UAAL,CAAuB,MAAvB,CAA+B,QAAQ,CAACC,CAAD,CAAU,CAC7C,IACIC,CAGJD,EAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAKA,EAHAL,CAGA,CATaM,IAMLN,MAGR,GAAaA,CAAAO,QAAAC,QAAb,EACItB,CAAA,CAVSoB,IAUT,CAAiB,aAAjB,CAAgC,QAAQ,EAAG,CACvC,OAAON,CAAAS,aADgC,CAA3C,CAXyC,CAAjD,CAwBAb,EAAA,CAAKT,CAAAW,UAAL,CAAqB,cAArB,CAAqC,QAAQ,CAACC,CAAD,CAAUW,CAAV,CAA8BC,CAA9B,CAAmCC,CAAnC,CAAwCC,CAAxC,CAAqDC,CAArD,CAAgEC,CAAhE,CAAiFC,CAAjF,CAAkG,CAAA,IAEvIC,EAAQ,CAF+H,CAGvIC,CAHuI,CAIvIC,CAJuI,CAKvIC,EAAc,EALyH,CAMvIC,CANuI;AAQvIC,CARuI,CASvIC,CATuI,CAUvIC,EAAiB,EAVsH,CAWvIC,EAAoB,CAACC,MAAAC,UAXkH,CAYvIC,EAA0B,IAAArB,QAAAsB,kBAI9B,IAAMrB,CAAA,IAAAD,QAAAC,QAAN,EAA+BsB,CAAA,IAAAvB,QAAAuB,OAA/B,EAAwDhB,CAAAA,CAAxD,EAAwF,CAAxF,CAAqEA,CAAAiB,OAArE,EAAqGC,IAAAA,EAArG,GAA6FrB,CAA7F,CACI,MAAOZ,EAAAK,KAAA,CAAa,IAAb,CAAmBM,CAAnB,CAAuCC,CAAvC,CAA4CC,CAA5C,CAAiDC,CAAjD,CAMXS,EAAA,CAAYR,CAAAiB,OAEZ,KAAKb,CAAL,CAAW,CAAX,CAAcA,CAAd,CAAoBI,CAApB,CAA+BJ,CAAA,EAA/B,CAAsC,CAElCK,CAAA,CAAaL,CAAb,EAAoBJ,CAAA,CAAUI,CAAV,CAAgB,CAAhB,CAApB,CAAyCN,CAErCE,EAAA,CAAUI,CAAV,CAAJ,CAAqBP,CAArB,GACIM,CADJ,CACYC,CADZ,CAIA,IAAIA,CAAJ,GAAYI,CAAZ,CAAwB,CAAxB,EAA6BR,CAAA,CAAUI,CAAV,CAAgB,CAAhB,CAA7B,CAAkDJ,CAAA,CAAUI,CAAV,CAAlD,CAAqF,CAArF,CAAmEH,CAAnE,EAA0FQ,CAA1F,CAAsG,CAIlG,GAAIT,CAAA,CAAUI,CAAV,CAAJ,CAAqBO,CAArB,CAAwC,CAKpC,IAHAN,CAGA,CAHmBpB,CAAAK,KAAA,CAAa,IAAb,CAAmBM,CAAnB,CAAuCI,CAAA,CAAUG,CAAV,CAAvC,CAAyDH,CAAA,CAAUI,CAAV,CAAzD,CAAyEL,CAAzE,CAGnB,CAAOM,CAAAY,OAAP,EAAkCZ,CAAA,CAAiB,CAAjB,CAAlC,EAAyDM,CAAzD,CAAA,CACIN,CAAAc,MAAA,EAEAd,EAAAY,OAAJ,GACIN,CADJ,CACwBN,CAAA,CAAiBA,CAAAY,OAAjB,CAA2C,CAA3C,CADxB,CAIAP,EAAA,CAAiBA,CAAAU,OAAA,CAAsBf,CAAtB,CAZmB,CAexCF,CAAA,CAAQC,CAAR,CAAc,CAnBoF,CAsBtG,GAAIK,CAAJ,CACI,KA/B8B,CAqCtCY,CAAA,CAAOhB,CAAAgB,KAIP,IAAInB,CAAJ,EAAuBmB,CAAAC,UAAvB,EAAyCzC,CAAA0C,KAAzC,CAAyD,CACrDnB,CAAA,CAAMM,CAAAO,OAAN,CAA8B,CAG9B,KAAKd,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwBC,CAAxB,CAA6BD,CAAA,EAA7B,CACQ3B,CAAA,CAAW,IAAX,CAAiBkC,CAAA,CAAeP,CAAf,CAAjB,CAAJ,GAAgD3B,CAAA,CAAW,IAAX,CAAiBkC,CAAA,CAAeP,CAAf,CAAuB,CAAvB,CAAjB,CAAhD,GACIG,CAAA,CAAYI,CAAA,CAAeP,CAAf,CAAZ,CACA,CADqC,KACrC,CAAAI,CAAA,CAAuB,CAAA,CAF3B,CAQAA;CAAJ,GACID,CAAA,CAAYI,CAAA,CAAe,CAAf,CAAZ,CADJ,CACqC,KADrC,CAGAW,EAAAf,YAAA,CAAmBA,CAhBkC,CAoBzDI,CAAAW,KAAA,CAAsBA,CAMtB,IAAInB,CAAJ,EAAuBzB,CAAA,CAAQqC,CAAR,CAAvB,CAAyD,CAGjDU,CAAAA,CADAP,CACAO,CADSd,CAAAO,OAITQ,EAAAA,CAAgB,EANiC,KAOjDC,CAOJ,KAJIC,CAIJ,CAJgB,EAIhB,CAAOH,CAAA,EAAP,CAAA,CACII,CAIA,CAJa,IAAAC,UAAA,CAAenB,CAAA,CAAec,CAAf,CAAf,CAIb,CAHIE,CAGJ,GAFIC,CAAA,CAAUH,CAAV,CAEJ,CAFmBE,CAEnB,CAFoCE,CAEpC,EAAAH,CAAA,CAAcD,CAAd,CAAA,CAAmBE,CAAnB,CAAoCE,CAExCD,EAAAG,KAAA,EACAC,EAAA,CAAiBJ,CAAA,CAAUK,IAAAC,MAAA,CAAWN,CAAAV,OAAX,CAA8B,CAA9B,CAAV,CACbc,EAAJ,CAA+C,EAA/C,CAAqBjB,CAArB,GACIiB,CADJ,CACqB,IADrB,CAKAP,EAAA,CAAId,CAAA,CAAeO,CAAf,CAAwB,CAAxB,CAAA,CAA6BnB,CAA7B,CAAmCmB,CAAnC,CAA4C,CAA5C,CAAgDA,CAEpD,KADAS,CACA,CADiBR,IAAAA,EACjB,CAAOM,CAAA,EAAP,CAAA,CACII,CAOA,CAPaH,CAAA,CAAcD,CAAd,CAOb,CANAU,CAMA,CANWF,IAAAG,IAAA,CAAST,CAAT,CAA0BE,CAA1B,CAMX,CAAIF,CAAJ,EAAsBQ,CAAtB,CAA2D,EAA3D,CAAiCpB,CAAjC,GACwB,IADxB,GACKiB,CADL,EACgCG,CADhC,CAC4D,EAD5D,CAC2CH,CAD3C,GAIQzB,CAAA,CAAYI,CAAA,CAAec,CAAf,CAAZ,CAAJ,EAAuC,CAAAlB,CAAA,CAAYI,CAAA,CAAec,CAAf,CAAmB,CAAnB,CAAZ,CAAvC,EAGIY,CACA,CADeZ,CACf,CADmB,CACnB,CAAAE,CAAA,CAAiBE,CAJrB,EASIQ,CATJ,CASmBZ,CAGnB,CAAAd,CAAA2B,OAAA,CAAsBD,CAAtB,CAAoC,CAApC,CAhBJ,EAmBIV,CAnBJ,CAmBqBE,CAzD4B,CA6DzD,MAAOlB,EAzJoI,CAA/I,CA6JA/B,EAAA,CAAON,CAAAW,UAAP,CAAoD,CAKhDsD,uBAAwBA,QAAQ,EAAG,CAAA,IAE3BC,CAF2B,CAG3BC,EAAmB,EAHQ,CAI3BC,EAAa,CAAA,CAJc,CAK3BC,CAL2B,CAM3BC,EALOC,IAKIC,YAAA,EANgB,CAO3BhD,EAAM8C,CAAA9C,IAPqB,CAQ3BC,EAAM6C,CAAA7C,IARqB,CAU3BgD,CAV2B,CAY3BC,EAXOH,IAWKI,QAAZD,EAA4B,CAAE/B,CAXvB4B,IAWuBnD,QAAAuB,OAZH,CAa3BiC,EAZOL,IAYKnD,QAAAC,QAbe;AAc3BwD,EAbON,IAacO,MAAA1D,QAAA0D,MAAAD,mBAIzB,IAAID,CAAJ,EAAiBF,CAAjB,CAA4B,CAExBrE,CAAA,CAnBOkE,IAmBFpD,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAASgC,CAAT,CAAY,CAElC,GAAI,EAAE0B,CAAF,EAA2C,CAAA,CAA3C,GAAwB1D,CAAA4D,QAAxB,EAAqF,CAAA,CAArF,GAAsD5D,CAAA6D,oBAAtD,EAA8FN,CAAAA,CAA9F,CAAJ,GAGIP,CAQID,CAReC,CAAApB,OAAA,CAAwB5B,CAAA8D,eAAxB,CAQff,CAPJA,CAOIA,CAPEC,CAAAvB,OAOFsB,CAJJC,CAAAV,KAAA,CAAsB,QAAQ,CAACyB,CAAD,CAAIC,CAAJ,CAAO,CACjC,MAAOD,EAAP,CAAWC,CADsB,CAArC,CAIIjB,CAAAA,CAXR,EAaQ,IADAf,CACA,CADIe,CACJ,CADU,CACV,CAAOf,CAAA,EAAP,CAAA,CACQgB,CAAA,CAAiBhB,CAAjB,CAAJ,GAA4BgB,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAA5B,EACIgB,CAAAH,OAAA,CAAwBb,CAAxB,CAA2B,CAA3B,CAjBkB,CAAtC,CA0BAe,EAAA,CAAMC,CAAAvB,OAIN,IAAU,CAAV,CAAIsB,CAAJ,CAAa,CACTG,CAAA,CAAOF,CAAA,CAAiB,CAAjB,CAAP,CAA6BA,CAAA,CAAiB,CAAjB,CAE7B,KADAhB,CACA,CADIe,CACJ,CADU,CACV,CAAOf,CAAA,EAAP,EAAeiB,CAAAA,CAAf,CAAA,CACQD,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAAJ,CAA8BgB,CAAA,CAAiBhB,CAAjB,CAA9B,GAAsDkB,CAAtD,GACID,CADJ,CACiB,CAAA,CADjB,CAOCgB,EA5DFb,IA4DEnD,QAAAgE,mBAAL,GAAyCjB,CAAA,CAAiB,CAAjB,CAAzC,CAA+D3C,CAA/D,CAAqE6C,CAArE,EAA6E5C,CAA7E,CAAmF0C,CAAA,CAAiBA,CAAAvB,OAAjB,CAA2C,CAA3C,CAAnF,CAAmIyB,CAAnI,IACID,CADJ,CACiB,CAAA,CADjB,CAXS,CAmBTA,CAAJ,EApEOG,IAuEHJ,iBAqBA,CArBwBA,CAqBxB,CAjBAkB,CAiBA,CA5FGd,IA2EQe,YAAA,CACP3B,IAAAlC,IAAA,CACID,CADJ,CAEI2C,CAAA,CAAiB,CAAjB,CAFJ,CADO,CAKP,CAAA,CALO,CAiBX,CAVAM,CAUA,CAVWd,IAAAlC,IAAA,CAlFR8C,IAkFiBe,YAAA,CAChB3B,IAAAnC,IAAA,CACIC,CADJ;AAEI0C,CAAA,CAAiBA,CAAAvB,OAAjB,CAA2C,CAA3C,CAFJ,CADgB,CAKhB,CAAA,CALgB,CAAT,CAMR,CANQ,CAUX,CA5FG2B,IA2FHgB,aACA,CADoBC,CACpB,EAD6B/D,CAC7B,CADmCD,CACnC,GAD2CiD,CAC3C,CADsDY,CACtD,EA5FGd,IA4FHkB,cAAA,CAAqBjE,CAArB,CAA4B6D,CAA5B,CAAuCG,CAxB3C,EApEOjB,IA+FHJ,iBA3BJ,CApEOI,IA+FqBgB,aA3B5B,CApEOhB,IA+FyCkB,cA3BhD,CA2BqE5C,IAAAA,EA9E7C,CAjBjB0B,IAkGXK,UAAA,CAAiBA,CAAjB,EAA8BR,CAlGnBG,KAmGXmB,oBAAA,CAA2B,IApGI,CALa,CAmHhDC,QAASA,QAAQ,CAACC,CAAD,CAAMC,CAAN,CAAe,CAAA,IAExB1B,EADOI,IACYJ,iBAGvB,IAAKA,CAAL,CAGO,CAAA,IAEC2B,EAAgB3B,CAAAvB,OAFjB,CAGCO,CAHD,CAKC7B,CAIJ,KADA6B,CACA,CADI2C,CACJ,CAAO3C,CAAA,EAAP,CAAA,CACI,GAAIgB,CAAA,CAAiBhB,CAAjB,CAAJ,GAA4ByC,CAA5B,CAAiC,CAC7BtE,CAAA,CAAe6B,CACf,MAF6B,CAQrC,IADAA,CACA,CADI2C,CACJ,CADoB,CACpB,CAAO3C,CAAA,EAAP,CAAA,CACI,GAAIyC,CAAJ,CAAUzB,CAAA,CAAiBhB,CAAjB,CAAV,EAAuC,CAAvC,GAAiCA,CAAjC,CAA0C,CACtCU,CAAA,EAAY+B,CAAZ,CAAkBzB,CAAA,CAAiBhB,CAAjB,CAAlB,GAA0CgB,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAA1C,CAAoEgB,CAAA,CAAiBhB,CAAjB,CAApE,CACA7B,EAAA,CAAe6B,CAAf,CAAmBU,CACnB,MAHsC,CAM9CkC,CAAA,CAAMF,CAAA,CACFvE,CADE,CAhCCiD,IAkCHgB,aAFE,EAEmBjE,CAFnB,EAEmC,CAFnC,EAhCCiD,IAkCuCkB,cA3B3C,CAHP,IACIM,EAAA,CAAMH,CA+BV,OAAOG,EArCqB,CAnHgB,CAgKhDC,QAASA,QAAQ,CAACJ,CAAD,CAAMK,CAAN,CAAiB,CAAA,IAE1B9B,EADOI,IACYJ,iBAGvB,IAAKA,CAAL,CAGO,CAAA,IAECoB;AATGhB,IASYgB,aAFhB,CAGCE,EAVGlB,IAUakB,cAHjB,CAICtC,EAAIgB,CAAAvB,OAAJO,CAA8B,CAJ/B,CAOCU,CAKJ,IAAIoC,CAAJ,CAEc,CAAV,CAAIL,CAAJ,CACIA,CADJ,CACUzB,CAAA,CAAiB,CAAjB,CADV,CAEWyB,CAAJ,CAAUzC,CAAV,CACHyC,CADG,CACGzB,CAAA,CAAiBhB,CAAjB,CADH,EAGHA,CACA,CADIQ,IAAAC,MAAA,CAAWgC,CAAX,CACJ,CAAA/B,CAAA,CAAW+B,CAAX,CAAiBzC,CAJd,CAJX,KAcI,KAAA,CAAOA,CAAA,EAAP,CAAA,CAEI,GADA+C,CACI,CADoBX,CACpB,CADmCpC,CACnC,CADwCsC,CACxC,CAAAG,CAAA,EAAOM,CAAX,CAAiC,CAC7BC,CAAA,CAAyBZ,CAAzB,EAAyCpC,CAAzC,CAA6C,CAA7C,EAAmDsC,CACnD5B,EAAA,EAAY+B,CAAZ,CAAkBM,CAAlB,GAA2CC,CAA3C,CAAmED,CAAnE,CACA,MAH6B,CAUzC,MAAoBrD,KAAAA,EAAb,GAAAgB,CAAA,EAAkDhB,IAAAA,EAAlD,GAA0BsB,CAAA,CAAiBhB,CAAjB,CAA1B,CACHgB,CAAA,CAAiBhB,CAAjB,CADG,EACoBU,CAAA,CAAWA,CAAX,EAAuBM,CAAA,CAAiBhB,CAAjB,CAAqB,CAArB,CAAvB,CAAiDgB,CAAA,CAAiBhB,CAAjB,CAAjD,EAAwE,CAD5F,EAEHyC,CAxCD,CA0CP,MA5CUA,EANoB,CAhKc,CA2NhDQ,qBAAsBA,QAAQ,EAAG,CAAA,IAEzBtB,EADOP,IACCO,MAFiB,CAGzBuB,EAFO9B,IAEIpD,OAAA,CAAY,CAAZ,CAAAmF,oBAHc,CAIzBhF,EAHOiD,IAGQjD,aAJU,CAKzBiF,EAAMF,CAAA,CAAWA,CAAAG,MAAX,CAA4BH,CAAAI,SAA5B,CAAgD,KAL7B,CAMzBnC,EALOC,IAKIC,YAAA,EANc,CAOzBkC,CAPyB,CAQzBC,CAICrF,EAAL,GACIA,CADJ,CAXWiD,IAYQjD,aADnB,CACuC,EADvC,CAKKA,EAAA,CAAaiF,CAAb,CAAL,GAGIG,CA6CA,CA7CW,CACPvF,OAAQ,EADD,CAEP2D,MAAOA,CAFA,CAGPN,YAAaA,QAAQ,EAAG,CACpB,MAAO,CACHhD,IAAK8C,CAAAsC,QADF;AAEHnF,IAAK6C,CAAAuC,QAFF,CADa,CAHjB,CASPzF,QAAS,CACLC,QAAS,CAAA,CADJ,CATF,CAYPsE,QAAS3F,CAAAW,UAAAgF,QAZF,CAaPL,YAAatF,CAAAW,UAAA2E,YAbN,CA6CX,CA5BAjF,CAAA,CApCOkE,IAoCFpD,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAAS,CAC/BwF,CAAA,CAAa,CACT9F,MAAO6F,CADE,CAETI,MAAO3F,CAAA2F,MAFE,CAGThC,MAAOA,CAHE,CAITiC,mBAAoBxG,CAJX,CAMboG,EAAAvF,QAAA,CAAqB,CACjB4F,aAAcX,CAAA,CAAW,CACrBY,QAAS,CAAA,CADY,CAErBC,OAAQ,CAAA,CAFa,CAGrBC,cAAe,MAHM,CAIrBC,MAAO,CACH,CAACf,CAAAI,SAAD,CAAoB,CAACJ,CAAAG,MAAD,CAApB,CADG,CAJc,CAAX,CAOV,CACAS,QAAS,CAAA,CADT,CARa,CAYrB9F,EAAAkG,YAAAvG,MAAA,CAAyB6F,CAAzB,CAEAD,EAAAvF,OAAAmG,KAAA,CAAqBX,CAArB,CArB+B,CAAnC,CA4BA,CAhEOpC,IA6DPN,uBAAAnD,MAAA,CAAkC4F,CAAlC,CAGA,CAAApF,CAAA,CAAaiF,CAAb,CAAA,CAAoBG,CAAAvC,iBAhDxB,CAkDA,OAAO7C,EAAA,CAAaiF,CAAb,CAnEsB,CA3Ne,CAsThDgB,uBAAwBA,QAAQ,CAACC,CAAD,CAAOC,CAAP,CAAatG,CAAb,CAAqB,CAAA,IAC7CgC,CACA8B,EAAAA,CAAiB9D,CAAA8D,eAF4B,KAG7Cf,EAAMe,CAAArC,OAHuC,CAI7CU,EAAY,EAEZoC,EAAAA;AAAsB,IAAAA,oBAG1B,IAAKA,CAAAA,CAAL,CAA0B,CAGtB,IAAKvC,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBe,CAAhB,CAAsB,CAAtB,CAAyBf,CAAA,EAAzB,CACIG,CAAA,CAAUH,CAAV,CAAA,CAAe8B,CAAA,CAAe9B,CAAf,CAAmB,CAAnB,CAAf,CAAuC8B,CAAA,CAAe9B,CAAf,CAI3CG,EAAAG,KAAA,CAAe,QAAQ,CAACyB,CAAD,CAAIC,CAAJ,CAAO,CAC1B,MAAOD,EAAP,CAAWC,CADe,CAA9B,CAGAuC,EAAA,CAASpE,CAAA,CAAUK,IAAAC,MAAA,CAAWM,CAAX,CAAiB,CAAjB,CAAV,CAGTsD,EAAA,CAAO7D,IAAAlC,IAAA,CAAS+F,CAAT,CAAevC,CAAA,CAAe,CAAf,CAAf,CACPwC,EAAA,CAAO9D,IAAAnC,IAAA,CAASiG,CAAT,CAAexC,CAAA,CAAef,CAAf,CAAqB,CAArB,CAAf,CAEP,KAAAwB,oBAAA,CAA2BA,CAA3B,CAAkDxB,CAAlD,CAAwDwD,CAAxD,EAAmED,CAAnE,CAA0ED,CAA1E,CAjBsB,CAqB1B,MAAO9B,EA9B0C,CAtTL,CA0VhDiC,wBAAyBA,QAAQ,CAACC,CAAD,CAAe,CAAA,IAMxCrC,EAAe,IAAAA,aAanB,OATIA,EAAJQ,CACS,IAAA3E,QAAAuB,OAAL,CAGU,IAAAkF,kBAHV,CACUD,CADV,EAC0BrC,CAD1B,CACyC,IAAAsC,kBADzC,CADJ9B,CAOU6B,CAjBkC,CA1VA,CAApD,CAkXA5H,EAAAW,UAAA2E,YAAA,CAA6BtF,CAAAW,UAAAgF,QAG7BlF,EAAA,CAAKR,CAAAU,UAAL,CAAsB,KAAtB,CAA6B,QAAQ,CAACC,CAAD,CAAUkH,CAAV,CAAa,CAAA,IAE1CjH,EADQiE,IACAjE,MAAA,CAAY,CAAZ,CAFkC,CAG1CkH,EAASD,CAAAC,OAHiC,CAI1CC,EAAU,CAAA,CAEd,IAAInH,CAAAO,QAAAC,QAAJ,EAA6BR,CAAAM,OAAAyB,OAA7B,CAAkD,CAAA,IAE1CqF;AAPInD,IAOSmD,WAF6B,CAG1C3D,EAAWzD,CAAA2D,YAAA,EAH+B,CAI1CqC,EAAUvC,CAAAuC,QAJgC,CAK1CrF,EAAM8C,CAAA9C,IALoC,CAM1CC,EAAM6C,CAAA7C,IANoC,CAQ1CyG,EAbIpD,IAaUoD,YAR4B,CAS1CL,EAAoBhH,CAAAgH,kBATsB,CAW1CM,GAAcF,CAAdE,CAA2BJ,CAA3BI,GADkBtH,CAAAuH,iBAClBD,EAD4CtH,CAAA0E,aAC5C4C,EADkEN,CAClEM,EAX0C,CAY1CE,EAAe,CACXlE,iBAAkBtD,CAAAuF,qBAAA,EADP,CAZ2B,CAiB1CJ,EAAUnF,CAAAmF,QAjBgC,CAkB1CL,EAAU9E,CAAA8E,QAlBgC,CAmB1C2C,CAECD,EAAAlE,iBAAL,CAGkC,CAHlC,CAGWR,IAAAG,IAAA,CAASqE,CAAT,CAHX,GAMQD,CA8CJ,EA7CI7H,CAAA,CAAK6H,CAAL,CAAkB,QAAQ,CAACK,CAAD,CAAQ,CAC9BA,CAAAC,SAAA,EAD8B,CAAlC,CA6CJ,CAxCiB,CAAjB,CAAIL,CAAJ,EACIM,CACA,CADiBJ,CACjB,CAAAC,CAAA,CAAkBzH,CAAAsD,iBAAA,CAAyBtD,CAAzB,CAAiCwH,CAFvD,GAIII,CACA,CADiB5H,CAAAsD,iBAAA,CAAyBtD,CAAzB,CAAiCwH,CAClD,CAAAC,CAAA,CAAkBD,CALtB,CAwCA,CA7BAlE,CA6BA,CA7BmBmE,CAAAnE,iBA6BnB,CA5BI0C,CA4BJ,CA5Bc1C,CAAA,CAAiBA,CAAAvB,OAAjB,CAA2C,CAA3C,CA4Bd,EA3BIuB,CAAAmD,KAAA,CAAsBT,CAAtB,CA2BJ,CA9EI/B,IA0DJ4D,WAoBA,CApBmBjH,CAoBnB,CApByBD,CAoBzB,CAnBAmH,CAmBA,CAnBe9H,CAAA+H,aAAA,CAAmB,IAAnB,CAAyB,IAAzB,CACX5C,CAAAlF,MAAA,CAAc2H,CAAd,CAA8B,CAC1B9C,CAAA7E,MAAA,CAAc2H,CAAd,CAA8B,CAACjH,CAAD,CAAM,CAAA,CAAN,CAA9B,CAD0B,CACmB2G,CADnB,CAE1B,CAAA,CAF0B,CAA9B,CADW,CAKXnC,CAAAlF,MAAA,CAAcwH,CAAd,CAA+B,CAC3B3C,CAAA7E,MAAA,CAAcwH,CAAd;AAA+B,CAAC7G,CAAD,CAAM,CAAA,CAAN,CAA/B,CAD2B,CACmB0G,CADnB,CAE3B,CAAA,CAF2B,CAA/B,CALW,CAmBf,CAPIQ,CAAAnH,IAOJ,EAPwBmC,IAAAnC,IAAA,CAAS8C,CAAAsC,QAAT,CAA2BpF,CAA3B,CAOxB,EAP2DmH,CAAAlH,IAO3D,EAP+EkC,IAAAlC,IAAA,CAASoF,CAAT,CAAkBpF,CAAlB,CAO/E,EANIZ,CAAAgI,YAAA,CAAkBF,CAAAnH,IAAlB,CAAoCmH,CAAAlH,IAApC,CAAsD,CAAA,CAAtD,CAA4D,CAAA,CAA5D,CAAmE,CAC/DqH,QAAS,KADsD,CAAnE,CAMJ,CA9EIhE,IA6EJmD,WACA,CADmBF,CACnB,CAAA7H,CAAA,CA9EI4E,IA8EAiE,UAAJ,CAAqB,CACjBC,OAAQ,MADS,CAArB,CApDJ,EACIhB,CADJ,CACc,CAAA,CAtBgC,CAAlD,IA+EIA,EAAA,CAAU,CAAA,CAIVA,EAAJ,EAEIpH,CAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CA3F0C,CAAlD,CAlkBS,CAAZ,CAAA,CAqqBCrB,CArqBD,CAsqBA,UAAQ,CAACC,CAAD,CAAI,CAgBTmJ,QAASA,EAAc,EAAG,CACtB,MAAOlI,MAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CADe,CA2Q1BgI,QAASA,EAAiB,CAACtI,CAAD,CAAU,CAChCA,CAAAE,MAAA,CAAc,IAAd,CACA,KAAAqI,WAAA,CAAgB,IAAAtI,MAAhB,CAA4B,CAAC,GAAD,CAA5B,CACA,KAAAsI,WAAA,CAAgB,IAAAC,MAAhB,CAA4BC,CAAA,CAAK,IAAAC,cAAL,CAAyB,CAAC,GAAD,CAAzB,CAA5B,CAHgC,CA3R3B,IAOLD,EAAOvJ,CAAAuJ,KAPF,CAQL5I,EAAOX,CAAAW,KARF,CASLJ,EAAOP,CAAAO,KATF,CAULC,EAASR,CAAAQ,OAVJ,CAWLiJ,EAAUzJ,CAAAyJ,QAXL,CAYLC,EAAY1J,CAAA0J,UAZP;AAaLxJ,EAAOF,CAAAE,KAbF,CAcLU,EAASZ,CAAAY,OAMbJ,EAAA,CAAON,CAAAW,UAAP,CAAuB,CACnB8I,UAAWA,QAAQ,CAACC,CAAD,CAAM9D,CAAN,CAAW,CAAA,IAEtB+D,EAASD,CAAAC,OAATA,EAAuBC,QAFD,CAGtBC,EAAOH,CAAAG,KAHe,CAItBjH,EAAS8G,CAAAI,GAATlH,CAAkB8G,CAAAG,KAClBE,EAAAA,CAAQnE,CAAA,EAAOiE,CAAP,EAAejE,CAAf,CAAqBiE,CAArB,EAA6BF,CAA7B,CAAsCA,CAAtC,EAAiDE,CAAjD,CAAwDjE,CAAxD,EAA+D+D,CAO3E,OALKD,EAAAM,UAALjE,CAGUgE,CAHVhE,EAGkBnD,CAHlBmD,CACUgE,CADVhE,CACiBnD,CADjBmD,EACoC,CADpCA,GAC2BgE,CARD,CADX,CAgBnBE,aAAcA,QAAQ,CAACrE,CAAD,CAAMsE,CAAN,CAAgB,CAAA,IAE9BvH,EAAS,IAAAvB,QAAAuB,OAFqB,CAG9BQ,EAAIR,CAAJQ,EAAcR,CAAAC,OAHgB,CAI9BuH,CAJ8B,CAK9BC,CAL8B,CAM9BrE,CAGJ,IAAI5C,CAAJ,CAAO,CAEH,IAAA,CAAOA,CAAA,EAAP,CAAA,CACQ,IAAAsG,UAAA,CAAe9G,CAAA,CAAOQ,CAAP,CAAf,CAA0ByC,CAA1B,CAAJ,GACIuE,CACA,CADQ,CAAA,CACR,CAAKC,CAAL,GACIA,CADJ,CACWf,CAAA,CAAK1G,CAAA,CAAOQ,CAAP,CAAAkH,WAAL,CAA2B,IAAA1F,QAAA,CAAe,CAAA,CAAf,CAAuB,CAAA,CAAlD,CADX,CAFJ,CASAoB,EAAA,CADAoE,CAAJ,EAAaD,CAAb,CACUC,CADV,EACmB,CAACC,CADpB,CAGUD,CAdP,CAiBP,MAAOpE,EA1B2B,CAhBnB,CAAvB,CA8CAtF,EAAA,CAAKT,CAAAW,UAAL,CAAqB,kBAArB,CAAyC,QAAQ,CAACC,CAAD,CAAU,CACvDA,CAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEA,IAAI,IAAAE,QAAAuB,OAAJ,CAAyB,CAAA,IAEjB2H,EAAgB,IAAAA,cAFC;AAGjBtH,EAAO,IAAAsH,cAAAtH,KAHU,CAIjBuH,EAAe,EAJE,CAKjBpH,CAEJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBmH,CAAA1H,OAAhB,CAAsCO,CAAA,EAAtC,CANWoB,IAOF0F,aAAA,CAAkBK,CAAA,CAAcnH,CAAd,CAAlB,CAAL,EACIoH,CAAAjD,KAAA,CAAkBgD,CAAA,CAAcnH,CAAd,CAAlB,CAIR,KAAAmH,cAAA,CAAqBC,CACrB,KAAAD,cAAAtH,KAAA,CAA0BA,CAdL,CAH8B,CAA3D,CAqBAvC,EAAA,CAAKT,CAAAW,UAAL,CAAqB,MAArB,CAA6B,QAAQ,CAACC,CAAD,CAAUkE,CAAV,CAAiB0F,CAAjB,CAA8B,CAAA,IAC3DjG,EAAO,IAGPiG,EAAA7H,OAAJ,EAA0B6H,CAAA7H,OAAAC,OAA1B,GACI4H,CAAAnJ,QADJ,CAC0B,CAAA,CAD1B,CAGAT,EAAAK,KAAA,CAAa,IAAb,CAAmB6D,CAAnB,CAA0B0F,CAA1B,CACA7H,EAAA,CAAS,IAAAvB,QAAAuB,OACT4B,EAAAkG,SAAA,CAAiBlB,CAAA,CAAQ5G,CAAR,CAAjB,EAAoC,CAAEC,CAAAD,CAAAC,OAClC2B,EAAAkG,SAAJ,GACIlG,CAAAoB,QAiDA,CAjDe+E,QAAQ,CAAC9E,CAAD,CAAM,CAAA,IACrB+E,EAAO/E,CADc,CAErB8D,CAFqB,CAGrBvG,CAEJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBoB,CAAAqG,WAAAhI,OAAhB,CAAwCO,CAAA,EAAxC,CAEI,GADAuG,CACI,CADEnF,CAAAqG,WAAA,CAAgBzH,CAAhB,CACF,CAAAuG,CAAAI,GAAA,EAAUlE,CAAd,CACI+E,CAAA,EAAQjB,CAAAxF,IADZ,KAEO,IAAIwF,CAAAG,KAAJ,EAAgBjE,CAAhB,CACH,KADG,KAEA,IAAIrB,CAAAkF,UAAA,CAAeC,CAAf,CAAoB9D,CAApB,CAAJ,CAA8B,CACjC+E,CAAA,EAAS/E,CAAT,CAAe8D,CAAAG,KACf,MAFiC,CAMzC,MAAOc,EAjBkB,CAiD7B,CA7BApG,CAAAyB,QA6BA;AA7Be6E,QAAQ,CAACjF,CAAD,CAAM,CAAA,IAErB8D,CAFqB,CAGrBvG,CAEJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBoB,CAAAqG,WAAAhI,OAAhB,EAEQ,EADJ8G,CACI,CADEnF,CAAAqG,WAAA,CAAgBzH,CAAhB,CACF,CAAAuG,CAAAG,KAAA,EAAYc,CAAZ,CAFR,CAAwCxH,CAAA,EAAxC,CAIeuG,CAAAI,GAAJ,CAAaa,CAAb,CACHA,CADG,EACKjB,CAAAxF,IADL,CAEIK,CAAAkF,UAAA,CAAeC,CAAf,CAAoBiB,CAApB,CAFJ,GAGHA,CAHG,EAGKjB,CAAAxF,IAHL,CAMX,OAAOyG,EAfkB,CA6B7B,CAXApG,CAAAsE,YAWA,CAXmBiC,QAAQ,CAACC,CAAD,CAASC,CAAT,CAAiBC,CAAjB,CAAyBC,CAAzB,CAAoCC,CAApC,CAAoD,CAE3E,IAAA,CAAO,IAAAlB,aAAA,CAAkBc,CAAlB,CAAP,CAAA,CACIA,CAAA,EAAU,IAAAlD,kBAEd,KAAA,CAAO,IAAAoC,aAAA,CAAkBe,CAAlB,CAAP,CAAA,CACIA,CAAA,EAAU,IAAAnD,kBAEd7H,EAAAW,UAAAkI,YAAA5H,KAAA,CAAgC,IAAhC,CAAsC8J,CAAtC,CAA8CC,CAA9C,CAAsDC,CAAtD,CAA8DC,CAA9D,CAAyEC,CAAzE,CAR2E,CAW/E,CAAA5G,CAAA6G,mBAAA,CAA0BC,QAAQ,CAACC,CAAD,CAAU,CACxCtL,CAAAW,UAAAyK,mBAAAnK,KAAA,CAAuC,IAAvC,CAA6CqK,CAA7C,CAEI3I,EAAAA,CAAS4B,CAAAnD,QAAAuB,OAH2B,KAIpC4I,EAAc,EAJsB,CAKpCX,EAAa,EALuB,CAMpChI,EAAS,CAN2B,CAOpC4I,CAPoC,CAQpC7B,CARoC,CASpCnI,EAAM+C,CAAAkH,QAANjK,EAAsB+C,CAAA/C,IATc,CAUpCC,EAAM8C,CAAAmH,QAANjK,EAAsB8C,CAAA9C,IAVc,CAWpCkK,EAAoBtC,CAAA,CAAK9E,CAAAoH,kBAAL;AAA6B,CAA7B,CAXgB,CAYpC7J,CAZoC,CAapCqB,CAGJ9C,EAAA,CAAKsC,CAAL,CAAa,QAAQ,CAAC+G,CAAD,CAAM,CACvBC,CAAA,CAASD,CAAAC,OAAT,EAAuBC,QACnBrF,EAAAkF,UAAA,CAAeC,CAAf,CAAoBlI,CAApB,CAAJ,GACIA,CADJ,EACYkI,CAAAI,GADZ,CACqBH,CADrB,CACgCnI,CADhC,CACsCmI,CADtC,CAGIpF,EAAAkF,UAAA,CAAeC,CAAf,CAAoBjI,CAApB,CAAJ,GACIA,CADJ,EACYA,CADZ,CACkBkI,CADlB,CAC6BD,CAAAG,KAD7B,CACwCF,CADxC,CALuB,CAA3B,CAWAtJ,EAAA,CAAKsC,CAAL,CAAa,QAAQ,CAAC+G,CAAD,CAAM,CACvB5H,CAAA,CAAQ4H,CAAAG,KAGR,KAFAF,CAEA,CAFSD,CAAAC,OAET,EAFuBC,QAEvB,CAAO9H,CAAP,CAAe6H,CAAf,CAAwBnI,CAAxB,CAAA,CACIM,CAAA,EAAS6H,CAEb,KAAA,CAAO7H,CAAP,CAAeN,CAAf,CAAA,CACIM,CAAA,EAAS6H,CAGb,KAAKxG,CAAL,CAASrB,CAAT,CAAgBqB,CAAhB,CAAoB1B,CAApB,CAAyB0B,CAAzB,EAA8BwG,CAA9B,CACI4B,CAAAjE,KAAA,CAAiB,CACbsE,MAAOzI,CADM,CAEb0I,KAAM,IAFO,CAAjB,CAIA,CAAAN,CAAAjE,KAAA,CAAiB,CACbsE,MAAOzI,CAAPyI,EAAYlC,CAAAI,GAAZ8B,CAAqBlC,CAAAG,KAArB+B,CADa,CAEbC,KAAM,KAFO,CAGbC,KAAMpC,CAAAqC,UAHO,CAAjB,CAhBmB,CAA3B,CAwBAR,EAAA9H,KAAA,CAAiB,QAAQ,CAACyB,CAAD,CAAIC,CAAJ,CAAO,CAO5B,MALID,EAAA0G,MAAJ7F,GAAgBZ,CAAAyG,MAAhB7F,EACsB,IAAX,GAAAb,CAAA2G,KAAA,CAAkB,CAAlB,CAAsB,CADjC9F,GACkD,IAAX,GAAAZ,CAAA0G,KAAA,CAAkB,CAAlB,CAAsB,CAD7D9F,EAGUb,CAAA0G,MAHV7F,CAGoBZ,CAAAyG,MALQ,CAAhC,CAWAJ,EAAA,CAAQ,CACR1J,EAAA,CAAQN,CAERnB,EAAA,CAAKkL,CAAL,CAAkB,QAAQ,CAAC7B,CAAD,CAAM,CAC5B8B,CAAA,EAAuB,IAAb,GAAA9B,CAAAmC,KAAA,CAAoB,CAApB,CAAyB,EAErB,EAAd,GAAIL,CAAJ,EAAgC,IAAhC,GAAmB9B,CAAAmC,KAAnB,GACI/J,CADJ,CACY4H,CAAAkC,MADZ,CAGc,EAAd,GAAIJ,CAAJ,GACIZ,CAAAtD,KAAA,CAAgB,CACZuC,KAAM/H,CADM;AAEZgI,GAAIJ,CAAAkC,MAFQ,CAGZ1H,IAAKwF,CAAAkC,MAAL1H,CAAiBpC,CAAjBoC,EAA0BwF,CAAAoC,KAA1B5H,EAAsC,CAAtCA,CAHY,CAAhB,CAKA,CAAAtB,CAAA,EAAU8G,CAAAkC,MAAV,CAAsB9J,CAAtB,EAA+B4H,CAAAoC,KAA/B,EAA2C,CAA3C,CANJ,CAN4B,CAAhC,CAgBAvH,EAAAqG,WAAA,CAAkBA,CAIlBrG,EAAAyH,WAAA,CAAkBvK,CAAlB,CAAwBD,CAAxB,CAA8BoB,CAA9B,CAAuC+I,CAEvCnC,EAAA,CAAUjF,CAAV,CAAgB,aAAhB,CAEIA,EAAAnD,QAAA6K,YAAJ,CACI1H,CAAA2H,OADJ,CACkB3H,CAAAnD,QAAA6K,YADlB,CAEW1H,CAAAyH,WAFX,GAGIzH,CAAA2H,OAHJ,GAGoBzK,CAHpB,CAG0B8C,CAAA/C,IAH1B,CAGqCmK,CAHrC,EAIQpH,CAAAyH,WAJR,CAOIL,EAAJ,GACIpH,CAAA4H,gBADJ,CAC2B5H,CAAA2H,OAD3B,CACyC3H,CAAA6H,eADzC,CAIA7H,EAAA/C,IAAA,CAAWA,CACX+C,EAAA9C,IAAA,CAAWA,CArG6B,CAlDhD,CAV+D,CAAnE,CAsKAhB,EAAA,CAAKC,CAAAC,UAAL,CAAuB,gBAAvB,CAAyC,QAAQ,CAACC,CAAD,CAAU,CAEvDA,CAAAE,MAAA,CAAc,IAAd,CAAoBmI,CAAA,CAAe/H,SAAf,CAApB,CAFuD,KAKnDL,EADSM,IACDN,MAL2C,CAMnDuI,EAFSjI,IAEDiI,MAN2C,CAOnDiD,EAHSlL,IAGAkL,OAP0C,CAQnD9D,CARmD,CASnDpF,EAAIkJ,CAAAzJ,OAT+C,CAUnD0J,EANSnL,IAMMC,QAAAkL,aAVoC,CAWnDC,CAGJ,IAAI1L,CAAJ,EAAauI,CAAb,GAAuBvI,CAAAO,QAAAuB,OAAvB,EAA+CyG,CAAAhI,QAAAuB,OAA/C,EACI,IAAA,CAAOQ,CAAA,EAAP,CAAA,CACIoF,CAGA;AAHQ8D,CAAA,CAAOlJ,CAAP,CAGR,CADAoJ,CACA,CADsB,IACtB,GADUhE,CAAAiE,EACV,EAD+C,CAAA,CAC/C,GAD8BF,CAC9B,CAAKC,CAAL,EAAiB,CAAA1L,CAAAoJ,aAAA,CAAmB1B,CAAAkE,EAAnB,CAA4B,CAAA,CAA5B,CAAjB,EAAsD,CAAArD,CAAAa,aAAA,CAAmB1B,CAAAiE,EAAnB,CAA4B,CAAA,CAA5B,CAAtD,GACIH,CAAArI,OAAA,CAAcb,CAAd,CAAiB,CAAjB,CACA,CAAI,IAAAuJ,KAAA,CAAUvJ,CAAV,CAAJ,EACI,IAAAuJ,KAAA,CAAUvJ,CAAV,CAAAwJ,gBAAA,EAHR,CAnB+C,CAA3D,CAoCA7M,EAAAY,OAAAC,UAAAwI,WAAA,CAAgCyD,QAAQ,CAACrI,CAAD,CAAOsI,CAAP,CAAa,CAAA,IAC7C1L,EAAS,IADoC,CAE7CkL,EAASlL,CAAAkL,OAFoC,CAG7C1J,CAH6C,CAI7CmK,CAJ6C,CAK7CC,CAL6C,CAM7CP,CAECjI,EAAL,EAIAlE,CAAA,CAAKwM,CAAL,CAAW,QAAQ,CAACtG,CAAD,CAAM,CACrB5D,CAAA,CAAS4B,CAAAqG,WAAT,EAA4B,EAC5BkC,EAAA,CAAYvI,CAAAI,QAAA,CAAeJ,CAAA/C,IAAf,CAA0B6H,CAAA,CAAKlI,CAAAC,QAAA0L,UAAL,CAA+BvI,CAAA/C,IAA/B,CACtCnB,EAAA,CAAKgM,CAAL,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CACzBiE,CAAA,CAAInD,CAAA,CAAKd,CAAA,CAAM,OAAN,CAAgBhC,CAAAyG,YAAA,EAAhB,CAAL,CAAyCzE,CAAA,CAAMhC,CAAN,CAAzC,CACJlG,EAAA,CAAKsC,CAAL,CAAa,QAAQ,CAAC+G,CAAD,CAAM,CACvBqD,CAAA,CAAY,CAAA,CAEZ,IAAKD,CAAL,CAAiBpD,CAAAG,KAAjB,EAA6B2C,CAA7B,CAAiC9C,CAAAI,GAAjC,EAA6CgD,CAA7C,CAAyDpD,CAAAG,KAAzD,EAAqE2C,CAArE,CAAyE9C,CAAAG,KAAzE,CACIkD,CAAA,CAAY,YADhB,KAEO,IAAKD,CAAL,CAAiBpD,CAAAG,KAAjB,EAA6B2C,CAA7B,CAAiC9C,CAAAG,KAAjC,EAA6C2C,CAA7C,CAAiD9C,CAAAI,GAAjD,EAA6DgD,CAA7D,CAAyEpD,CAAAG,KAAzE,EAAqF2C,CAArF,CAAyF9C,CAAAI,GAAzF,EAAmG0C,CAAnG,CAAuG9C,CAAAG,KAAvG,CACHkD,CAAA,CAAY,cAEZA;CAAJ,EACIvD,CAAA,CAAUjF,CAAV,CAAgBwI,CAAhB,CAA2B,CACvBxE,MAAOA,CADgB,CAEvBmB,IAAKA,CAFkB,CAA3B,CATmB,CAA3B,CAFyB,CAA7B,CAHqB,CAAzB,CAZiD,CA0CrD5J,EAAAY,OAAAC,UAAAsM,WAAA,CAAgCC,QAAQ,EAAG,CAAA,IACnCC,EAAU,IAAA/L,QAAA+L,QADyB,CAEnCd,EAAS,IAAAA,OAAArL,MAAA,EAF0B,CAGnCmC,EAAIkJ,CAAAzJ,OAAJO,CAAoB,CAExB,IAAIgK,CAAJ,EAAmB,CAAnB,CAAehK,CAAf,CAGI,IAAA,CAAOA,CAAA,EAAP,CAAA,CACQkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAAsJ,EAAJ,CAAsBJ,CAAA,CAAOlJ,CAAP,CAAAsJ,EAAtB,CAAoC,IAAA5E,kBAApC,CAA6DsF,CAA7D,EACId,CAAArI,OAAA,CACIb,CADJ,CACQ,CADR,CAEI,CAFJ,CAEO,CACCiK,OAAQ,CAAA,CADT,CAFP,CAWZ,OAAO,KAAAC,aAAA,CAAkBhB,CAAlB,CArBgC,CAwB3C5L,EAAA,CAAKX,CAAAwN,YAAAC,OAAA5M,UAAL,CAAqC,YAArC,CAAmDuI,CAAnD,CACAzI,EAAA,CAAKX,CAAAY,OAAAC,UAAL,CAAyB,YAAzB,CAAuCuI,CAAvC,CApWS,CAAZ,CAAA,CAsWCrJ,CAtWD,CA2WA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAML0N,EAAW1N,CAAA0N,SANN,CAOLC,EAAW3N,CAAA2N,SAPN,CAQLzN,EAAOF,CAAAE,KARF,CASL0N,EAAqB5N,CAAA4N,mBAThB,CAULtN,EAAUN,CAAAM,QAVL,CAWLC,EAAOP,CAAAO,KAXF,CAYLC,EAASR,CAAAQ,OAZJ,CAaLqN,EAAS7N,CAAA6N,OAbJ,CAcLC,EAAW9N,CAAA8N,SAdN,CAeLC,EAAQ/N,CAAA+N,MAfH,CAgBLxE,EAAOvJ,CAAAuJ,KAhBF,CAiBLyE,EAAQhO,CAAAgO,MAjBH;AAmBLC,EAAUjO,CAAAiO,QAnBL,CAoBLtN,EAAOX,CAAAW,KApBF,CA0BLuN,EARSlO,CAAAY,OAQKC,UA1BT,CA2BLsN,EAAkBD,CAAA3G,YA3Bb,CA4BL6G,EAAqBF,CAAAG,eA5BhB,CA6BLC,EAAcJ,CAAAK,QA7BT,CA+BLC,EAAgB,CACZnH,cAAe,SADH,CAIZoH,gBAAiB,CAJL,CAOZC,qBAAsB,CAClBC,YAAa,CAAC,wBAAD,CAA2B,wBAA3B,CAAqD,cAArD,CADK,CAElBC,OAAQ,CAAC,qBAAD,CAAwB,qBAAxB,CAA+C,WAA/C,CAFU,CAGlBC,OAAQ,CAAC,kBAAD,CAAqB,kBAArB,CAAyC,QAAzC,CAHU,CAIlBzL,KAAM,CAAC,kBAAD,CAAqB,kBAArB,CAAyC,QAAzC,CAJY,CAKlB0L,IAAK,CAAC,eAAD,CAAkB,WAAlB,CAA+B,gBAA/B,CALa,CAMlBC,KAAM,CAAC,yBAAD,CAA4B,WAA5B;AAAyC,gBAAzC,CANY,CAOlBC,MAAO,CAAC,OAAD,CAAU,IAAV,CAAgB,QAAhB,CAPW,CAQlBC,KAAM,CAAC,IAAD,CAAO,IAAP,CAAa,KAAb,CARY,CAPV,CA/BX,CAmDLC,EAAkB,CACdC,KAAM,EADQ,CAEdC,OAAQ,EAFM,CAGdC,KAAM,EAHQ,CAIdC,WAAY,EAJE,CAKd7B,OAAQ,CACJpG,cAAe,KADX,CAEJoH,gBAAiB,EAFb,CALM,CASdc,UAAW,CACPlI,cAAe,OADR,CATG,CAYdmI,gBAAiB,CACbnI,cAAe,OADF,CAZH,CAedoI,YAAa,CACTpI,cAAe,OADN,CAEToH,gBAAiB,EAFR,CAfC,CAmBdiB,YAAa,CACTrI,cAAe,MADN,CAEToH,gBAAiB,EAFR,CAnBC,CAuBdkB,KAAM,CACFtI,cAAe,MADb,CAEFoH,gBAAiB,CAFf,CAvBQ,CAnDb,CAiFLmB,EAA2B5P,CAAA4P,yBAA3BA,CAAwD,CACpD,CACI,aADJ,CAEI,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,EAAV,CAAc,EAAd,CAAkB,EAAlB,CAAsB,EAAtB,CAA0B,GAA1B,CAA+B,GAA/B,CAAoC,GAApC,CAFJ,CADoD,CAKpD,CACI,QADJ,CACc,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,EAAV,CAAc,EAAd,CAAkB,EAAlB,CADd,CALoD,CAQpD,CACI,QADJ;AACc,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,EAAV,CAAc,EAAd,CAAkB,EAAlB,CADd,CARoD,CAWpD,CACI,MADJ,CACY,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,CAAV,CAAa,CAAb,CAAgB,CAAhB,CAAmB,EAAnB,CADZ,CAXoD,CAcpD,CACI,KADJ,CACW,CAAC,CAAD,CADX,CAdoD,CAiBpD,CACI,MADJ,CACY,CAAC,CAAD,CADZ,CAjBoD,CAoBpD,CACI,OADJ,CACa,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CADb,CApBoD,CAuBpD,CACI,MADJ,CAEI,IAFJ,CAvBoD,CAjFnD,CAsHLC,EAAiB,CACbC,IAAKA,QAAQ,CAACC,CAAD,CAAM,CAAA,IACX3L,EAAM2L,CAAAjN,OADK,CAEXmD,CAGJ,IAAK7B,CAAAA,CAAL,EAAY2L,CAAAC,SAAZ,CACI/J,CAAA,CAAM,IADV,KAGO,IAAI7B,CAAJ,CAEH,IADA6B,CACA,CADM,CACN,CAAO7B,CAAA,EAAP,CAAA,CACI6B,CAAA,EAAO8J,CAAA,CAAI3L,CAAJ,CAMf,OAAO6B,EAjBQ,CADN,CAoBbgK,QAASA,QAAQ,CAACF,CAAD,CAAM,CAAA,IACf3L,EAAM2L,CAAAjN,OACNmD,EAAAA,CAAM4J,CAAAC,IAAA,CAAmBC,CAAnB,CAINjC,EAAA,CAAS7H,CAAT,CAAJ,EAAqB7B,CAArB,GACU6B,CADV,EACgB7B,CADhB,CAIA,OAAO6B,EAVY,CApBV,CAkCbiK,SAAUA,QAAQ,EAAG,CACjB,IAAIjK,EAAM,EAEV1F,EAAA,CAAKa,SAAL,CAAgB,QAAQ,CAAC2O,CAAD,CAAM,CAC1B9J,CAAAuB,KAAA,CAASqI,CAAAI,QAAA,CAAuBF,CAAvB,CAAT,CAD0B,CAA9B,CAIA,OAAO9J,EAPU,CAlCR,CA2CbkK,KAAMA,QAAQ,CAACJ,CAAD,CAAM,CAChB,MAAOA,EAAAjN,OAAA,CAAaiN,CAAA,CAAI,CAAJ,CAAb,CAAuBA,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EADpC,CA3CP,CA8CbqN,KAAMA,QAAQ,CAACL,CAAD,CAAM,CAChB,MAAOA,EAAAjN,OAAA,CAAa4K,CAAA,CAASqC,CAAT,CAAb,CAA8BA,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EAD3C,CA9CP,CAiDbsN,IAAKA,QAAQ,CAACN,CAAD,CAAM,CACf,MAAOA,EAAAjN,OAAA;AAAa6K,CAAA,CAASoC,CAAT,CAAb,CAA8BA,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EAD5C,CAjDN,CAoDbuN,MAAOA,QAAQ,CAACP,CAAD,CAAM,CACjB,MAAOA,EAAAjN,OAAA,CAAaiN,CAAA,CAAIA,CAAAjN,OAAJ,CAAiB,CAAjB,CAAb,CAAoCiN,CAAAC,SAAA,CAAe,IAAf,CAAsBjN,IAAAA,EADhD,CApDR,CAwDb4M,KAAMA,QAAQ,CAACQ,CAAD,CAAOC,CAAP,CAAaC,CAAb,CAAkBC,CAAlB,CAAyB,CACnCH,CAAA,CAAON,CAAAM,KAAA,CAAoBA,CAApB,CACPC,EAAA,CAAOP,CAAAO,KAAA,CAAoBA,CAApB,CACPC,EAAA,CAAMR,CAAAQ,IAAA,CAAmBA,CAAnB,CACNC,EAAA,CAAQT,CAAAS,MAAA,CAAqBA,CAArB,CAER,IAAIxC,CAAA,CAASqC,CAAT,CAAJ,EAAsBrC,CAAA,CAASsC,CAAT,CAAtB,EAAwCtC,CAAA,CAASuC,CAAT,CAAxC,EAAyDvC,CAAA,CAASwC,CAAT,CAAzD,CACI,MAAO,CAACH,CAAD,CAAOC,CAAP,CAAaC,CAAb,CAAkBC,CAAlB,CAPwB,CAxD1B,CAmEbC,MAAOA,QAAQ,CAACF,CAAD,CAAMD,CAAN,CAAY,CACvBC,CAAA,CAAMR,CAAAQ,IAAA,CAAmBA,CAAnB,CACND,EAAA,CAAOP,CAAAO,KAAA,CAAoBA,CAApB,CAEP,IAAItC,CAAA,CAASuC,CAAT,CAAJ,EAAqBvC,CAAA,CAASsC,CAAT,CAArB,CACI,MAAO,CAACC,CAAD,CAAMD,CAAN,CACJ,IAAY,IAAZ,GAAIC,CAAJ,EAA6B,IAA7B,GAAoBD,CAApB,CACH,MAAO,KAPY,CAnEd,CAqFrBlC,EAAAsC,UAAA,CAAwBC,QAAQ,CAACzJ,CAAD,CAAQ0J,CAAR,CAAenO,CAAf,CAA+B8E,CAA/B,CAA8C,CAAA,IAEtEuF,EADSvL,IACFuL,KAF+D,CAGtE+D,EAFStP,IAEKC,QAAAsL,KAHwD,CAItEgE,EAAe,EAJuD,CAKtEC,EAAe,EALuD,CAMtEC,EAAW,EAN2D,CAOtEC,EAAa/J,CAAAlE,OAPyD,CAQtEkO,CARsE,CAUtEC,CAVsE,CAatEC,EAAc,CAAER,CAAAA,CAbsD,CActES,EAAS,EACTC,EAAAA,CAA2C,UAAzB,GAAA,MAAO/J,EAAP,CAClBA,CADkB,CAElBwI,CAAA,CAAexI,CAAf,CAFkB,EAMd6H,CAAA,CApBK7N,IAoBWgQ,KAAhB,CANc,EAOdxB,CAAA,CAAeX,CAAA,CArBV7N,IAqB0BgQ,KAAhB,CAAAhK,cAAf,CAPc;AAQbwI,CAAA,CAAerB,CAAAnH,cAAf,CAvBiE,KAwBtEmC,EAvBSnI,IAuBOmI,cAxBsD,CAyBtE8H,EAAsB9H,CAAtB8H,EAAuC9H,CAAA1G,OAzB+B,CA0BtEyO,EAAM,CACNvP,EAAAA,CAAQ,CA3B8D,KA4BtEwP,CA5BsE,CA6BtEnO,CAGAiO,EAAJ,CACI/Q,CAAA,CAAKiJ,CAAL,CAAoB,QAAQ,EAAG,CAC3B2H,CAAA3J,KAAA,CAAY,EAAZ,CAD2B,CAA/B,CADJ,CAKI2J,CAAA3J,KAAA,CAAY,EAAZ,CAEJgK,EAAA,CAAYF,CAAZ,EAAmC,CAGnC,KAAKjO,CAAL,CAAS,CAAT,CAAYA,CAAZ,EAAiB0N,CAAjB,EACQ,EAAA/J,CAAA,CAAM3D,CAAN,CAAA,EAAYd,CAAA,CAAe,CAAf,CAAZ,CADR,CAA6Bc,CAAA,EAA7B,EAMA,IAAKA,CAAL,CAAQA,CAAR,EAAa0N,CAAb,CAAyB1N,CAAA,EAAzB,CAA8B,CAI1B,IAAA,CACoCN,IAAAA,EADpC,GACQR,CAAA,CAAegP,CAAf,CAAqB,CAArB,CADR,EAEQvK,CAAA,CAAM3D,CAAN,CAFR,EAEoBd,CAAA,CAAegP,CAAf,CAAqB,CAArB,CAFpB,EAGSlO,CAHT,GAGe0N,CAHf,CAAA,CAG2B,CAGvBC,CAAA,CAASzO,CAAA,CAAegP,CAAf,CAzDJlQ,KA0DLoQ,cAAA,CAAuB,CACnBzP,MAAOA,CADY,CAEnBc,OAAQqO,CAAA,CAAO,CAAP,CAAArO,OAFW,CAIvBmO,EAAA,CAAWG,CAAApQ,MAAA,CA9DNK,IA8DM,CAA8B8P,CAA9B,CAGMpO,KAAAA,EAAjB,GAAIkO,CAAJ,GACIL,CAAApJ,KAAA,CAAkBwJ,CAAlB,CAEA,CADAH,CAAArJ,KAAA,CAAkByJ,CAAlB,CACA,CAAAH,CAAAtJ,KAAA,CApECnG,IAoEaoQ,cAAd,CAHJ,CAOAzP,EAAA,CAAQqB,CACR,KAAKqO,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBF,CAAhB,CAA2BE,CAAA,EAA3B,CACIP,CAAA,CAAOO,CAAP,CAAA5O,OACA,CADmB,CACnB,CAAAqO,CAAA,CAAOO,CAAP,CAAA1B,SAAA,CAAqB,CAAA,CAIzBuB,EAAA,EAAO,CAGP,IAAIlO,CAAJ,GAAU0N,CAAV,CACI,KA7BmB,CAkC3B,GAAI1N,CAAJ,GAAU0N,CAAV,CACI,KAKJ,IAAIvH,CAAJ,CAAmB,CAEXmI,CAAAA,CAhGCtQ,IAgGOuQ,UAARD,CAA2BtO,CAFhB,KAGXoF,EAASmE,CAATnE,EAAiBmE,CAAA,CAAK+E,CAAL,CAAjBlJ,EAjGCpH,IAkGDwQ,WAAAhR,UAAAiR,aAAA9Q,MAAA,CAA+C,CAC3CK,OAnGHA,IAkG8C,CAA/C;AAEG,CAACsP,CAAA,CAAYgB,CAAZ,CAAD,CAFH,CAJW,CAOX7L,CAEJ,KAAK4L,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBJ,CAAhB,CAAqCI,CAAA,EAArC,CACI5L,CACA,CADM2C,CAAA,CAAMe,CAAA,CAAckI,CAAd,CAAN,CACN,CAAI5D,CAAA,CAAShI,CAAT,CAAJ,CACIqL,CAAA,CAAOO,CAAP,CAAAlK,KAAA,CAAe1B,CAAf,CADJ,CAEmB,IAFnB,GAEWA,CAFX,GAGIqL,CAAA,CAAOO,CAAP,CAAA1B,SAHJ,CAGyB,CAAA,CAHzB,CAXW,CAAnB,IAmBI+B,EAEA,CAFSb,CAAA,CAAcR,CAAA,CAAMrN,CAAN,CAAd,CAAyB,IAElC,CAAIyK,CAAA,CAASiE,CAAT,CAAJ,CACIZ,CAAA,CAAO,CAAP,CAAA3J,KAAA,CAAeuK,CAAf,CADJ,CAEsB,IAFtB,GAEWA,CAFX,GAGIZ,CAAA,CAAO,CAAP,CAAAnB,SAHJ,CAGyB,CAAA,CAHzB,CApEsB,CA4E9B,MAAO,CAACY,CAAD,CAAeC,CAAf,CAA6BC,CAA7B,CA5HmE,CAmI9E5C,EAAA3G,YAAA,CAA0ByK,QAAQ,EAAG,CAAA,IAE7BhN,EADS3D,IACD2D,MAFqB,CAI7BiN,EAHS5Q,IAECC,QACY4F,aAJO,CAK7BgL,EAAqC,CAAA,CAArCA,GAJS7Q,IAIS8Q,QAAlBD,EAA8CD,CAA9CC,EACA3I,CAAA,CAAK0I,CAAA9K,QAAL,CAAkCnC,CAAA1D,QAAA8Q,QAAlC,CAN6B,CAO7BnN,EANS5D,IAMC4D,QAAVA,EAA4B,CAACD,CAAA1D,QAAA0D,MAAAD,mBAPA,CAQ7BsN,CAPShR,KAWbiR,UAAA,CAAmBJ,CAXN7Q,KAYboN,gBAAA,CAAyB,IAZZpN,KAabkR,aAAA,CAAsB,CAAA,CAItB,IADoD,CAAA,CACpD,GADOpE,CAAAnN,MAAA,CAhBMK,IAgBN,CAA8BD,SAA9B,CACP,EAD8D8Q,CAC9D,CAAW,CAjBE7Q,IAkBT4F,mBAAA,EADO,KAIH9B,EArBK9D,IAqBY8D,eAJd,CAKHqN,EAtBKnR,IAsBYmR,eALd;AAMHC,EAAYzN,CAAAyN,UANT,CAOH1R,EAxBKM,IAwBGN,MAPL,CAQHQ,EAAUR,CAAAO,QAAAC,QARP,CASHkN,EA1BKpN,IA0BaoN,gBAAlBA,CAA2C1N,CAAA2R,mBAA3CjE,EAAuE1N,CAAA2R,mBAAA,EAG3E,IAAIjE,CAAJ,CAAqB,CA7BZpN,IAgCLsR,QAAA,CAFAN,CAEA,CAFiB,CAAA,CA9BZhR,KAiCLkL,OAAA,CAAgB,IAJC,KAMb/H,EAAWzD,CAAA2D,YAAA,EANE,CAObgD,EAAOlD,CAAA9C,IAPM,CAQbiG,EAAOnD,CAAA7C,IARM,CASbiE,EAAuBrE,CAAvBqE,EAAkC7E,CAAA0G,uBAAA,CAA6BC,CAA7B,CAAmCC,CAAnC,CAtCjCtG,IAsCiC,CAAlCuE,EAAuF,CAT1E,CAUbgN,EAAYnE,CAAZmE,EAA+BjL,CAA/BiL,CAAsClL,CAAtCkL,EAA8CH,CAA9CG,CAA2DhN,CAV9C,CAWbrD,EAAiBxB,CAAA8R,aAAA,CACb9R,CAAA+R,0BAAA,CAAgCF,CAAhC,CAA0CX,CAAA3K,MAA1C,EAAuEsI,CAAvE,CADa,CAEb/L,IAAAnC,IAAA,CAASgG,CAAT,CAAevC,CAAA,CAAe,CAAf,CAAf,CAFa,CAGbtB,IAAAlC,IAAA,CAASgG,CAAT,CAAexC,CAAA,CAAeA,CAAArC,OAAf,CAAuC,CAAvC,CAAf,CAHa,CAIb/B,CAAAO,QAAAM,YAJa,CAKbuD,CALa,CAxChB9D,IA8CG0G,kBANa,CAXJ,CAmBbgL,EAAc7E,CAAAsC,UAAAxP,MAAA,CAhDbK,IAgDa,CAAoC,CAAC8D,CAAD,CAAiBqN,CAAjB,CAAiCjQ,CAAjC,CAAiD0P,CAAA5K,cAAjD,CAApC,CAnBD,CAoBbuJ,EAAemC,CAAA,CAAY,CAAZ,CApBF,CAqBblC,EAAekC,CAAA,CAAY,CAAZ,CAInB,IAAId,CAAAe,SAAJ,CAAkC,CAC9B3P,CAAA,CAAIuN,CAAA9N,OAAJ,CAA0B,CAE1B,KADA8N,CAAA,CAAavN,CAAb,CACA;AADkBQ,IAAAnC,IAAA,CAASkP,CAAA,CAAavN,CAAb,CAAT,CAA0BsE,CAA1B,CAClB,CAAOtE,CAAA,EAAP,EAAkB,CAAlB,CAAcA,CAAd,CAAA,CACIuN,CAAA,CAAavN,CAAb,CAAA,EAAmBuP,CAAnB,CAA8B,CAElChC,EAAA,CAAa,CAAb,CAAA,CAAkB/M,IAAAlC,IAAA,CAASiP,CAAA,CAAa,CAAb,CAAT,CAA0BlJ,CAA1B,CANY,CAtD7BrG,IAgELmF,oBAAA,CAA6BjE,CAAAW,KAhExB7B,KAiEL0G,kBAAA,CAA2BxF,CAAAW,KAAA+P,WAjEtB5R,KAkELyP,SAAA,CAAkBiC,CAAA,CAAY,CAAZ,CAIdzS,EAAA,CAAQsQ,CAAA,CAAa,CAAb,CAAR,CAAJ,EAAgCA,CAAA,CAAa,CAAb,CAAhC,CAAkD7P,CAAA+F,QAAlD,EAAmE7B,CAAnE,GACQlE,CAAAW,IAGJ,GAHkBX,CAAA+F,QAGlB,GAFI/F,CAAAW,IAEJ,CAFgBkP,CAAA,CAAa,CAAb,CAEhB,EAAA7P,CAAA+F,QAAA,CAAgB8J,CAAA,CAAa,CAAb,CAJpB,CAtEKvP,KA8EL8D,eAAA,CAAwByL,CA9EnBvP,KA+ELmR,eAAA,CAAwB3B,CAlDP,CAArB,IA7BSxP,KAiFLmF,oBAAA,CAjFKnF,IAiFwByP,SAA7B,CAA+C,IAjF1CzP,KAmFTgR,eAAA,CAAwBA,CAlEjB,CAlBsB,CA2FrCnE,EAAAjH,mBAAA,CAAiCiM,QAAQ,EAAG,CAExC,IAAIH,EAAc,IAAAA,YAGlBxS,EAAA,CAAKwS,CAAL,EAAoB,EAApB,CAAwB,QAAQ,CAACtK,CAAD,CAAQpF,CAAR,CAAW,CACnCoF,CAAJ,GACIsK,CAAA,CAAY1P,CAAZ,CADJ,CACqBoF,CAAA8F,QAAA,CAAgB9F,CAAA8F,QAAA,EAAhB,CAAkC,IADvD,CADuC,CAA3C,CAKA,KAAAwE,YAAA,CAAmB,IAVqB,CAgB5C7E,EAAAG,eAAA;AAA6B8E,QAAQ,EAAG,CAEpC/E,CAAApN,MAAA,CAAyB,IAAzB,CAGA,KAAAiG,mBAAA,EACA,KAAA8L,YAAA,CAAmB,IAAAV,eAAA,CAAsB,IAAA9F,OAAtB,CAAoC,IANnB,CAYxC5L,EAAA,CAAKqN,CAAAnN,UAAL,CAAsB,QAAtB,CAAgC,QAAQ,CAACC,CAAD,CAAU,CAC1C,IAAAsS,UAAJ,CACIpT,CAAAqT,MAAA,CAAQ,EAAR,CADJ,CAGIvS,CAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAJ0C,CAAlD,CAWAT,EAAA,CAAKsN,CAAApN,UAAL,CAAwB,8BAAxB,CAAwD,QAAQ,CAACC,CAAD,CAAUwS,CAAV,CAAuBC,CAAvB,CAAiC,CAAA,IAEzFlS,EAASiS,CAAAjS,OAFgF,CAIzFmS,EAAiBnS,CAAAmS,eAJwE,CAKzFvB,EAFU5Q,CAAAC,QAEY4F,aALmE,CAMzFuM,EAAcD,CAAAC,YAN2E,CAOzFC,CAPyF,CAQzF3S,EAAQM,CAAAN,MARiF,CASzFV,EAAaL,CAAAK,WAOjB,OAAIU,EAAJ,EAAoC,UAApC,GAAaA,CAAAO,QAAA+P,KAAb,EAAkDY,CAAlD,EAAyEnE,CAAA,CAASwF,CAAA7M,IAAT,CAAzE,EAGID,CA0BO,CA1BenF,CAAAmF,oBA0Bf,CAzBPkI,CAyBO,CAzBgBuD,CAAAvD,qBAyBhB,CAtBHlI,CAAJ,EACImN,CACA,CADejF,CAAA,CAAqBlI,CAAAG,SAArB,CACf,CAAkC,CAAlC,GAAIH,CAAAE,MAAJ;AACI+M,CADJ,CACkBE,CAAA,CAAa,CAAb,CADlB,EAGIF,CACA,CADcE,CAAA,CAAa,CAAb,CACd,CAAAD,CAAA,CAAiBC,CAAA,CAAa,CAAb,CAJrB,CAFJ,EAWYF,CAAAA,CAXZ,EAW2B/E,CAX3B,GAYI+E,CAZJ,CAtBUG,IAkCQC,eAAA,CAAuBP,CAAvB,CAAoCE,CAApC,CAAoDzS,CAApD,CAZlB,CAsBO,CANP+S,CAMO,CANQzT,CAAA,CAAWoT,CAAX,CAAwBH,CAAA7M,IAAxB,CAMR,CALHiN,CAKG,GAJHI,CAIG,EAJazT,CAAA,CAAWqT,CAAX,CAA2BJ,CAAA7M,IAA3B,CAA6CD,CAAAyM,WAA7C,CAA8E,CAA9E,CAIb,EAAApF,CAAA,CAAO2F,CAAA,EAAgBD,CAAA,CAAW,QAAX,CAAsB,QAAtC,EAAkD,QAAlD,CAAP,CAAoE,CACvE9K,MAAOjI,CAAA,CAAO8S,CAAA7K,MAAP,CAA0B,CAC7BhC,IAAKqN,CADwB,CAA1B,CADgE,CAIvEzS,OAAQA,CAJ+D,CAApE,CA7BX,EAuCOP,CAAAK,KAAA,CAtDOyS,IAsDP,CAAsBN,CAAtB,CAAmCC,CAAnC,CAvDsF,CAAjG,CA6DArF,EAAAK,QAAA,CAAsBwF,QAAQ,EAAG,CAK7B,IAL6B,IAEzBhB,EADS1R,IACK0R,YAAdA,EAAoC,EAFX,CAGzB1P,EAAI0P,CAAAjQ,OAER,CAAOO,CAAA,EAAP,CAAA,CACQ0P,CAAA,CAAY1P,CAAZ,CAAJ,EACI0P,CAAA,CAAY1P,CAAZ,CAAAkL,QAAA,EAGRD,EAAAtN,MAAA,CATaK,IASb,CAV6B,CAgBjCV,EAAA,CAAKuN,CAAL,CAAkB,YAAlB,CAAgC,QAAQ,CAACpN,CAAD,CAAUkT,CAAV,CAAuB,CAEvD1S,CAAAA,CAAUR,CAAAK,KAAA,CAAa,IAAb,CAAmB6S,CAAnB,CAF6C,KAGvD3C,EAAO,IAAAA,KAHgD,CAIvD4C,EAAc,IAAAjP,MAAA1D,QAAA2S,YAJyC,CAKvDC,EAAiBtG,CAAA,CAAmByD,CAAnB,CAAAnK,aAEjBgI,EAAA,CAAgBmC,CAAhB,CAAJ,GACS6C,CAIL,GAHIA,CAGJ,CAHqBnG,CAAA,CAAMS,CAAN,CAAqBU,CAAA,CAAgBmC,CAAhB,CAArB,CAGrB,EAAA/P,CAAA4F,aAAA,CAAuB6G,CAAA,CACnBmG,CADmB,CAEnBD,CAAA5S,OAFmB,EAEG4S,CAAA5S,OAAA6F,aAFH,CAGnB+M,CAAA,CAAY5C,CAAZ,CAAAnK,aAHmB;AAInB8M,CAAA9M,aAJmB,CAL3B,CAaI,KAAAlC,MAAA1D,QAAA8Q,QAAJ,GACI,IAAA+B,eADJ,CAC0B,CAAA,CAD1B,CAIA,OAAO7S,EAxBoD,CAA/D,CAgCAX,EAAA,CAAKT,CAAAW,UAAL,CAAqB,UAArB,CAAiC,QAAQ,CAACC,CAAD,CAAU,CAC/CA,CAAAK,KAAA,CAAa,IAAb,CACAZ,EAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAAS,CAC/BA,CAAAkR,aAAA,CAAsB,CAAA,CADS,CAAnC,CAF+C,CAAnD,CAWArS,EAAAW,UAAA6R,mBAAA,CAAoC0B,QAAQ,EAAG,CAAA,IAEvC/S,EAAS,IAAAA,OAF8B,CAGvC+C,EAAM/C,CAAAyB,OAHiC,CAIvCO,CAJuC,CAKvCoL,EAAkB,CALqB,CAMvC4F,EAAa,CAAA,CAN0B,CAQvCC,CAKJ,KADAjR,CACA,CADIe,CACJ,CAAOf,CAAA,EAAP,CAAA,CAEI,CADAiR,CACA,CADYjT,CAAA,CAAOgC,CAAP,CAAA/B,QAAA4F,aACZ,IACIuH,CADJ,CACsB5K,IAAAlC,IAAA,CAAS8M,CAAT,CAA0B6F,CAAA7F,gBAA1B,CADtB,CAQJ,KADApL,CACA,CADIe,CACJ,CAAOf,CAAA,EAAP,CAAA,CAGI,CAFAiR,CAEA,CAFYjT,CAAA,CAAOgC,CAAP,CAAA/B,QAAA4F,aAEZ,GAAiB7F,CAAA,CAAOgC,CAAP,CAAAkP,aAAjB,GAEIxB,CAGI,CAHSjO,CAACzB,CAAA,CAAOgC,CAAP,CAAA8B,eAADrC,EAA6BzB,CAAA,CAAOgC,CAAP,CAAAuJ,KAA7B9J,QAGT,CAAAzB,CAAA,CAAOgC,CAAP,CAAAoL,gBAAA,EAA6BsC,CAA7B,CAA2C,IAAA/L,MAAAyN,UAA3C,CAAkEhE,CAAlE,EAAuFsC,CAAvF,EAAqGuD,CAAAlN,OAL7G;CAMQiN,CANR,CAMqB,CAAA,CANrB,CAWJ,OAAOA,EAAA,CAAa5F,CAAb,CAA+B,CArCK,CAqD/CvO,EAAAW,UAAA0T,gBAAA,CAAiCC,QAAQ,CAACtN,CAAD,CAAeiE,CAAf,CAAuB,CAC5D,IAAI9H,CAEJ8H,EAAA,CAAS5B,CAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAEJjE,EAAL,GACIA,CADJ,CACmB,CACXE,OAAQ,CAAA,CADG,CAEXE,MAAO,IAFI,CADnB,CAQA,IAAI,IAAJ,WAAoBpH,EAApB,CAEI,IADAmD,CACA,CADI,IAAAhC,OAAAyB,OACJ,CAAOO,CAAA,EAAP,CAAA,CACI,IAAAhC,OAAA,CAAYgC,CAAZ,CAAAoR,OAAA,CAAsB,CAClBvN,aAAcA,CADI,CAAtB,CAEG,CAAA,CAFH,CAHR,KAUI3G,EAAA,CAAK,IAAAyE,MAAA1D,QAAAD,OAAL,CAAgC,QAAQ,CAACqT,CAAD,CAAgB,CACpDA,CAAAxN,aAAA,CAA6BA,CADuB,CAAxD,CAEG,CAAA,CAFH,CAKAiE,EAAJ,EACI,IAAAnG,MAAAmG,OAAA,EA7BwD,CA7nBvD,CAAZ,CAAA,CAoqBCpL,CApqBD,CAqqBA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAMLO,EAAOP,CAAAO,KANF,CAOLyN,EAAQhO,CAAAgO,MAPH,CAQL2G,EAAa3U,CAAA2U,WARR,CASLnH,EAAcxN,CAAAwN,YAQlBmH,EAAA,CAAW,MAAX,CAAmB,QAAnB,CAA6B,CACzBC,UAAW,CADc,CAEzBhB,QAAS,CAELiB,YAAa,iPAFR,CAFgB;AAWzB7H,UAAW,IAXc,CAA7B,CAckC,CAC9B8H,YAAa,CAAA,CADiB,CAE9BtL,cAAe,CAAC,MAAD,CAAS,MAAT,CAAiB,KAAjB,CAAwB,OAAxB,CAFe,CAG9BuL,QAASA,QAAQ,CAACtM,CAAD,CAAQ,CACrB,MAAO,CAACA,CAAA0H,KAAD,CAAa1H,CAAA2H,KAAb,CAAyB3H,CAAA4H,IAAzB,CAAoC5H,CAAA6H,MAApC,CADc,CAHK,CAM9B0E,YAAa,OANiB,CAa9BtR,UAAWA,QAAQ,EAAG,CAAA,IACdrC,EAAS,IADK,CAEdiI,EAAQjI,CAAAiI,MAFM,CAGd2L,EAAiB,CAAEC,CAAA7T,CAAA6T,YAHL,CAIdzR,EAAa,CAAC,UAAD,CAAa,UAAb,CAAyB,SAAzB,CAAoC,WAApC,CAAiD,SAAjD,CAEjB+J,EAAAC,OAAA5M,UAAA6C,UAAA1C,MAAA,CAA6CK,CAA7C,CAGAd,EAAA,CAAKc,CAAAkL,OAAL,CAAoB,QAAQ,CAAC9D,CAAD,CAAQ,CAChClI,CAAA,CAAK,CAACkI,CAAA0H,KAAD,CAAa1H,CAAA2H,KAAb,CAAyB3H,CAAA4H,IAAzB,CAAoC5H,CAAA6H,MAApC,CAAiD7H,CAAA4H,IAAjD,CAAL,CAAkE,QAAQ,CAACvE,CAAD,CAAQzI,CAAR,CAAW,CACnE,IAAd,GAAIyI,CAAJ,GACQmJ,CAGJ,GAFInJ,CAEJ,CAFYzK,CAAA6T,YAAA,CAAmBpJ,CAAnB,CAEZ,EAAArD,CAAA,CAAMhF,CAAA,CAAWJ,CAAX,CAAN,CAAA,CAAuBiG,CAAA6L,SAAA,CAAerJ,CAAf,CAAsB,CAAA,CAAtB,CAJ3B,CADiF,CAArF,CAUArD,EAAA2M,WAAA,CAAiB,CAAjB,CAAA,CACI3M,CAAA4M,SADJ,CACqB/L,CAAAiI,IADrB,CACiClQ,CAAA2D,MAAAsQ,QAZD,CAApC,CATkB,CAbQ,CAyC9BC,WAAYA,QAAQ,EAAG,CAAA,IACflU;AAAS,IADM,CAGf2D,EAAQ3D,CAAA2D,MAGZzE,EAAA,CAJac,CAAAkL,OAIb,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CAAA,IACrB+M,CADqB,CAGrBC,CAHqB,CAIrBC,CAJqB,CAKrBC,CALqB,CAMrBC,EAAUnN,CAAAmN,QANW,CAOrBC,CAPqB,CAQrBC,EAAQ,CAACF,CAEO7S,KAAAA,EAApB,GAAI0F,CAAAsN,MAAJ,GAGSH,CA8CL,GA7CInN,CAAAmN,QA6CJ,CA7CoBA,CA6CpB,CA7C8B5Q,CAAAgR,SAAAL,KAAA,EAAAM,IAAA,CACjB5U,CAAA6U,MADiB,CA6C9B,EAtCAT,CAsCA,CAtCaG,CAAAO,YAAA,EAsCb,CAtCqC,CAsCrC,CAtC0C,CAsC1C,CArCAN,CAqCA,CArCShS,IAAAuS,MAAA,CAAW3N,CAAA4N,MAAX,CAqCT,CArCmCZ,CAqCnC,CApCAC,CAoCA,CApCY7R,IAAAuS,MAAA,CAAW3N,CAAA6N,UAAAC,MAAX,CAAmC,CAAnC,CAoCZ,CAjCAZ,CAiCA,CAjCO,CACH,GADG,CAEHE,CAFG,CAEKhS,IAAAuS,MAAA,CAAW3N,CAAA+N,QAAX,CAFL,CAGH,GAHG,CAIHX,CAJG,CAIKhS,IAAAuS,MAAA,CAAW3N,CAAA4M,SAAX,CAJL,CAiCP,CAzBmB,IAyBnB,GAzBI5M,CAAA0H,KAyBJ,GAxBIqF,CACA,CADW3R,IAAAuS,MAAA,CAAW3N,CAAA+M,SAAX,CACX,CADwCC,CACxC,CAAAE,CAAAnO,KAAA,CACI,GADJ,CAEIqO,CAFJ,CAGIL,CAHJ,CAII,GAJJ,CAKIK,CALJ,CAKaH,CALb,CAMIF,CANJ,CAuBJ,EAZoB,IAYpB,GAZI/M,CAAA6H,MAYJ,GAXImG,CACA,CADY5S,IAAAuS,MAAA,CAAW3N,CAAAgO,UAAX,CACZ,CAD0ChB,CAC1C,CAAAE,CAAAnO,KAAA,CACI,GADJ,CAEIqO,CAFJ,CAGIY,CAHJ,CAII,GAJJ,CAKIZ,CALJ,CAKaH,CALb,CAMIe,CANJ,CAUJ,EAAAb,CAAA,CAAQE,CAAA,CAAQ,MAAR,CAAiB,SAAzB,CAAA,CAAoC,CAC5BY,EAAGf,CADyB,CAApC,CAAAgB,SAAA,CAGclO,CAAAmO,aAAA,EAHd,CAGoC,CAAA,CAHpC,CAjDJ,CAVyB,CAA7B,CANmB,CAzCO,CAsH9BC,QAAS,IAtHqB,CAdlC,CA0IiE,CAI7DD,aAAcA,QAAQ,EAAG,CACrB,MAAO5I,EAAAnN,UAAA+V,aAAAzV,KAAA,CAAkC,IAAlC,CAAP;CACK,IAAAgP,KAAA,CAAY,IAAAG,MAAZ,CAAyB,sBAAzB,CAAkD,wBADvD,CADqB,CAJoC,CA1IjE,CAjBS,CAAZ,CAAA,CAwKCvQ,CAxKD,CAyKA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAML4N,EAAqB5N,CAAA4N,mBANhB,CAOLrN,EAAOP,CAAAO,KAPF,CAQLwN,EAAQ/N,CAAA+N,MACR4G,EAAAA,CAAa3U,CAAA2U,WASjBA,EAAA,CAAW,aAAX,CAA0B,MAA1B,CAAkC5G,CAAA,CAAMH,CAAAH,OAAN,CAAiC,CAC/DqJ,OAAQ,CACJC,MAAO,CACHnC,UAAW,CADR,CADH,CADuD,CAM/DhB,QAAShG,CAAA+B,KAAAiE,QANsD,CAO/D5G,UAAW,IAPoD,CAAjC,CAAlC,CAU0C,CAKtCuI,WAAYA,QAAQ,EAAG,CAAA,IACflU,EAAS,IADM,CAGf2D,EAAQ3D,CAAA2D,MAGZzE,EAAA,CAJac,CAAAkL,OAIb,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CAAA,IAErBmN,EAAUnN,CAAAmN,QAFW,CAGrBJ,CAHqB,CAIrBiB,CAJqB,CAKrBO,CALqB,CAQrBC,CARqB,CASrBxB,CATqB,CAUrBI,CAVqB,CAYrBH,CAZqB,CAarBI,EAAQ,CAACF,CAEO7S,KAAAA,EAApB,GAAI0F,CAAAsN,MAAJ,GAESH,CA6CL,GA5CInN,CAAAmN,QA4CJ,CA5CoBA,CA4CpB,CA5C8B5Q,CAAAgR,SAAAL,KAAA,EAAAM,IAAA,CACjB5U,CAAA6U,MADiB,CA4C9B,EArCAT,CAqCA,CArCaG,CAAAO,YAAA,EAqCb,CArCqC,CAqCrC,CArC0C,CAqC1C,CApCAN,CAoCA,CApCShS,IAAAuS,MAAA,CAAW3N,CAAA4N,MAAX,CAoCT,CApCmCZ,CAoCnC,CAnCAD,CAmCA,CAnCW/M,CAAA+M,SAmCX,CAlCAiB,CAkCA,CAlCYhO,CAAAgO,UAkCZ,CAjCAO,CAiCA;AAjCSnT,IAAAnC,IAAA,CAAS8T,CAAT,CAAmBiB,CAAnB,CAiCT,CAhCAS,CAgCA,CAhCYrT,IAAAlC,IAAA,CAAS6T,CAAT,CAAmBiB,CAAnB,CAgCZ,CA/BAf,CA+BA,CA/BY7R,IAAAuS,MAAA,CAAW3N,CAAA6N,UAAAC,MAAX,CAAmC,CAAnC,CA+BZ,CA9BAY,CA8BA,CA9BgBtT,IAAAuS,MAAA,CAAWY,CAAX,CA8BhB,GA9BuCnT,IAAAuS,MAAA,CAAW3N,CAAA4M,SAAX,CA8BvC,CA7BA4B,CA6BA,CA7BmBC,CA6BnB,GA7BiCzO,CAAA+N,QA6BjC,CA5BAQ,CA4BA,CA5BSnT,IAAAuS,MAAA,CAAWY,CAAX,CA4BT,CA5B8BvB,CA4B9B,CA3BAyB,CA2BA,CA3BYrT,IAAAuS,MAAA,CAAWc,CAAX,CA2BZ,CA3BoCzB,CA2BpC,CArBAE,CAqBA,CArBO,EAqBP,CApBAA,CAAAnO,KAAA,CACI,GADJ,CAEIqO,CAFJ,CAEaH,CAFb,CAEwBwB,CAFxB,CAGI,GAHJ,CAIIrB,CAJJ,CAIaH,CAJb,CAIwBsB,CAJxB,CAKI,GALJ,CAMInB,CANJ,CAMaH,CANb,CAMwBsB,CANxB,CAOI,GAPJ,CAQInB,CARJ,CAQaH,CARb,CAQwBwB,CARxB,CASI,GATJ,CAUI,GAVJ,CAWIrB,CAXJ,CAWYmB,CAXZ,CAYI,GAZJ,CAaInB,CAbJ,CAaYsB,CAAA,CAAgBtT,IAAAuS,MAAA,CAAW3N,CAAA4M,SAAX,CAAhB,CAA6C2B,CAbzD,CAcI,GAdJ,CAeInB,CAfJ,CAeYqB,CAfZ,CAgBI,GAhBJ,CAiBIrB,CAjBJ,CAiBYoB,CAAA,CAAmBpT,IAAAuS,MAAA,CAAW3N,CAAA+N,QAAX,CAAnB,CAA+CU,CAjB3D,CAoBA,CAAAtB,CAAA,CAAQE,CAAA,CAAQ,MAAR,CAAiB,SAAzB,CAAA,CAAoC,CAC5BY,EAAGf,CADyB,CAApC,CAAAgB,SAAA,CAGclO,CAAAmO,aAAA,EAHd,CAGoC,CAAA,CAHpC,CA/CJ,CAfyB,CAA7B,CANmB,CALe,CAV1C,CAlBS,CAAZ,CAAA,CAsHC7W,CAtHD,CAuHA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAMLC,EAAWD,CAAAC,SANN,CAOLM,EAAOP,CAAAO,KAPF,CASLE,EAAOT,CAAAS,KATF,CAYLkU,EAAa3U,CAAA2U,WAZR,CAaLnH,EAAcxN,CAAAwN,YAbT,CAeL4J,EAAepX,CAAAoX,aAfV,CAiBLC,EAHcrX,CAAAsX,YAGJzW,UAAAwW,QAjBL,CAkBLE,EAAavX,CAAAuX,WAQjB5C;CAAA,CAAW,OAAX,CAAoB,QAApB,CAA8B,CAC1B6C,WAAY,CADc,CAG1BC,MAAO,MAHmB,CAI1BC,cAAe,EAJW,CAK1BC,UAAW,QALe,CAM1B/D,QAAS,CACLiB,YAAa,yBADR,CANiB,CAS1B7H,UAAW,IATe,CAU1BN,EAAI,GAVsB,CAA9B,CAa6C,CACzCkL,OAAQ,CAAA,CADiC,CAEzCC,gBAAiB,CAAA,CAFwB,CAGzC1F,QAAS,CAAA,CAHgC,CAIzCjN,oBAAqB,CAAA,CAJoB,CAKzC4S,cAAe,CAAC,aAAD,CAL0B,CAMzCxF,UAAW,CAAA,CAN8B,CAUzCyF,KAtCS/X,CAAAY,OAsCHC,UAAAkX,KAVmC,CAiBzCrU,UAAWA,QAAQ,EAAG,CAElB8J,CAAAC,OAAA5M,UAAA6C,UAAA1C,MAAA,CAA6C,IAA7C,CAFkB,KAKdM,EADSD,IACCC,QALI,CAMd0D,EAFS3D,IAED2D,MANM,CAOduH,EAHSlL,IAGAkL,OAPK,CAQdrD,EAASqD,CAAAzJ,OAAToG,CAAyB,CARX,CASdT,CATc,CAUduP,CAVc,CAWdC,EAAkB3W,CAAA4W,SAClBA,EAAAA,CAAWD,CAAXC,EAA8BlT,CAAAmT,IAAA,CAAUF,CAAV,CAC9BG,KAAAA,EAAQ9W,CAAA8W,MAARA,EAAyB,GAAzBA,CACAC,EAAOH,CAAPG,EAAmBH,CAAA5W,QAAA+W,KADnBD,CAEAE,EAASJ,CAATI,EAAqBJ,CAAA3L,OAFrB6L,CAGA/U,EAAIiV,CAAJjV,EAAciV,CAAAxV,OAHdsV;AAIArX,EAbSM,IAaDN,MAJRqX,CAKA9O,EAdSjI,IAcDiI,MALR8O,CAMAG,EAAWxX,CAAA2D,YAAA,EANX0T,CAOAI,EAAU,CAPVJ,CAQAK,CARAL,CASAM,CATAN,CAUAO,CAIJ,IAAIT,CAAJ,EAAgBA,CAAAjT,QAAhB,EAAoC5B,CAApC,CAWI,IAVAmV,CASA,EATWN,CAAAU,aASX,EAToC,CASpC,GAT0CV,CAAAW,KAS1C,EAT2D,CAS3D,EATgE,CAShE,CARArS,CAQA,CARsB0R,CAAA1R,oBAQtB,CAPAkS,CAOA,CAPQJ,CAAA,CAAOjV,CAAP,CAAW,CAAX,CAAAsJ,EAOR,EAP2BnG,CAAA,CAAsBA,CAAAyM,WAAtB,CAAuD,CAOlF,EAJAsE,CAAA,CAAWhL,CAAX,CAAmB,QAAQ,CAACnH,CAAD,CAAIC,CAAJ,CAAO,CAC9B,MAAQD,EAAAuH,EAAR,CAActH,CAAAsH,EADgB,CAAlC,CAIA,CAAAyL,CAAA,CAAQ,MAAR,CAAiBA,CAAA,CAAM,CAAN,CAAAlL,YAAA,EAAjB,CAA0CkL,CAAAU,OAAA,CAAa,CAAb,CAC1C,CAAOzV,CAAA,EAAP,EAAckJ,CAAA,CAAOrD,CAAP,CAAd,EAGQ,EAFJT,CAEI,CAFI8D,CAAA,CAAOrD,CAAP,CAEJ,CADJuP,CACI,CADQH,CAAA,CAAOjV,CAAP,CACR,CAAAoV,CAAA9L,EAAA,EAAelE,CAAAkE,EAAf,EAA+C5J,IAAAA,EAA/C,GAA0B0V,CAAA,CAAUL,CAAV,CAA1B,GACI3P,CAAAkE,EAgBA,EAhBW+L,CAgBX,GAdAjQ,CAAAsN,MAGA,CAHc0C,CAAA,CAAUL,CAAV,CAGd,CAAIK,CAAA9L,EAAJ,CAAkBlE,CAAAkE,EAAlB,EAA8B0L,CAAAA,CAA9B,GACIM,CADJ,CACiBL,CAAA,CAAOjV,CAAP,CAAW,CAAX,CADjB,GAE4CN,IAAAA,EAF5C,GAEsB4V,CAAA,CAAWP,CAAX,CAFtB,GAGQ3P,CAAAsN,MAHR,GAIctN,CAAAkE,EAJd,CAIwB8L,CAAA9L,EAJxB,GAIwCgM,CAAAhM,EAJxC,CAIuD8L,CAAA9L,EAJvD,GAKagM,CAAA,CAAWP,CAAX,CALb,CAKiCK,CAAA,CAAUL,CAAV,CALjC,EAWA,EAFJlP,CAAA,EAEI,CADJ7F,CAAA,EACI,CAAS,CAAT,CAAA6F,CAjBJ,CAAA,CAHR,CAAA,EA4BJ3I,CAAA,CAAKgM,CAAL,CAAa,QAAQ,CAAC9D,CAAD,CAAQpF,CAAR,CAAW,CAE5B,IAAI0V,CAMgBhW,KAAAA,EAApB,GAAI0F,CAAAsN,MAAJ,GACQtN,CAAAkE,EAAJ,EAAe4L,CAAA7W,IAAf,EAA+B+G,CAAAkE,EAA/B,EAA0C4L,CAAA5W,IAA1C,CAEI8G,CAAAsN,MAFJ,CAEkB/Q,CAAAgU,YAFlB;AAEsCjY,CAAAkY,OAFtC,EAGSlY,CAAAmY,SAAA,CAAiBnY,CAAAoY,OAAjB,CAAgC,CAHzC,EAIQpY,CAAAqY,OAJR,CAIuB9P,CAAA+P,IAJvB,CAMI5Q,CAAA6N,UANJ,CAMsB,EAP1B,CAUA7N,EAAA4N,MAAA,EAAemC,CAGf,EADAR,CACA,CADYzL,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CACZ,GAAiB2U,CAAA3B,MAAjB,GAAqC5N,CAAA4N,MAArC,GACiCtT,IAAAA,EAG7B,GAHIiV,CAAAe,WAGJ,GAFIf,CAAAe,WAEJ,CAF2B,CAE3B,EAAAA,CAAA,CAAaf,CAAAe,WAAb,CAAoC,CAJxC,CAMAtQ,EAAAsQ,WAAA,CAAmBA,CA3BS,CAAhC,CAlEkB,CAjBmB,CAuHzCxD,WAAYA,QAAQ,EAAG,CAAA,IAEfhJ,EADSlL,IACAkL,OAFM,CAGfvH,EAFS3D,IAED2D,MAHO,CAIfgR,EAAWhR,CAAAgR,SAJI,CAKfK,CALe,CAMfN,CANe,CAOfzU,EANSD,IAMCC,QAPK,CAQfgY,EAAWhY,CAAAoL,EARI,CASf+K,CATe,CAUfpU,CAVe,CAWfoF,CAXe,CAYfmN,CAZe,CAcf2D,CAde,CAefC,CAfe,CAgBfC,CAhBe,CAiBfnQ,EAhBSjI,IAgBDiI,MAGZ,KADAjG,CACA,CADIkJ,CAAAzJ,OACJ,CAAOO,CAAA,EAAP,CAAA,CACIoF,CAgBA,CAhBQ8D,CAAA,CAAOlJ,CAAP,CAgBR,CAfAoW,CAeA,CAfehR,CAAA4N,MAef,CApCShV,IAqBoBN,MAAAqD,IAe7B,CAdAiS,CAcA,CAdQ5N,CAAA4N,MAcR,CAbA0C,CAaA,CAbatQ,CAAAsQ,WAab,CAZAtB,CAYA,CAZQhP,CAAAnH,QAAAmW,MAYR,EAZ+BnW,CAAAmW,MAY/B,CAXA1B,CAWA,CAXQtN,CAAAsN,MAWR,CATchT,IAAAA,EASd,GATIgT,CASJ,GARIA,CAQJ,CARYtN,CAAAsN,MAQZ,CAR0BuD,CAQ1B,EARqDvW,IAAAA,EAQrD,GARsCgW,CAQtC,EARkEA,CAQlE,CAR+EzX,CAAAoW,cAQ/E,GANA6B,CAMA,CANUR,CAAA,CAAahW,IAAAA,EAAb,CAAyB0F,CAAA4N,MAMnC,CALAmD,CAKA,CALUT,CAAA,CAAahW,IAAAA,EAAb;AAAyB0F,CAAAsN,MAKnC,CAHAH,CAGA,CAHUnN,CAAAmN,QAGV,CAAc7S,IAAAA,EAAd,GAAIgT,CAAJ,EAAoC,CAApC,EAA2BM,CAA3B,EAA0CoD,CAAAA,CAA1C,EAGS7D,CA0CL,GAzCIA,CAoBA,CApBUnN,CAAAmN,QAoBV,CApB0BI,CAAA0D,MAAA,CAClB,EADkB,CAElB,IAFkB,CAGlB,IAHkB,CAIlBjC,CAJkB,CAKlB,IALkB,CAMlB,IANkB,CAOlBnW,CAAAqY,QAPkB,CAAAC,KAAA,CAUhB,CACFC,MAAiB,MAAV,GAAApC,CAAA,CAAmB,MAAnB,CAA4B,QADjC,CAEFlB,MAAOjV,CAAAiV,MAFL,CAGF4C,OAAQ7X,CAAA6X,OAHN,CAIF,aAAc7X,CAAAqW,UAJZ,CAVgB,CAAAhB,SAAA,CAgBZ,kBAhBY,CAAAV,IAAA,CAxCzB5U,IAyDQyY,YAjBiB,CAoB1B,CAAIrR,CAAAmN,QAAAmE,IAAJ,GACItR,CAAAmN,QAAAmE,IAAAtR,MADJ,CAC8BA,CAD9B,CAqBJ,EAdY,CAcZ,CAdI4N,CAcJ,GAbIA,CAaJ,EAbaT,CAAAO,YAAA,EAab,CAbqC,CAarC,EATAP,CAAAgE,KAAA,CAAa,CACTI,KAAMvR,CAAAnH,QAAA2Y,MAAND,EAA6B1Y,CAAA2Y,MAA7BD,EAA8C,GADrC,CAETrN,EAAG0J,CAFM,CAGT3J,EAAGqJ,CAHM,CAITwD,QAASA,CAJA,CAKTC,QAASA,CALA,CAAb,CASA,CAAA/Q,CAAA2M,WAAA,CAAmBpQ,CAAAkV,SAAA,CAAiB,CAAC5Q,CAAAlF,IAAD,CAAakF,CAAAiI,IAAb,CAAyBvM,CAAAmV,SAAzB,CAA0CpE,CAA1C,CAjF/B1U,IAiFgFN,MAAAqD,IAAjD,CAAoEiS,CAApE,CAAjB,CAA8F,CAACA,CAAD,CAAQN,CAAR,CAAgBzM,CAAAiI,IAAhB,CAA4BvM,CAAAsQ,QAA5B,CA7CrH,EA+CWM,CA/CX,GAgDInN,CAAAmN,QAhDJ,CAgDoBA,CAAArH,QAAA,EAhDpB,CAsDAjN;CAAAqY,QAAJ,EACI3Z,CAAAW,KAAA,CA3FSU,IA2FFyY,YAAP,CAA2B,IAA3B,CAAiC,QAAQ,CAAChZ,CAAD,CAAU,CAC/C,MAAOd,EAAAoa,WAAAvZ,UAAAwZ,GAAArZ,MAAA,CACHF,CAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CADG,CAEH,EAAAF,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAFG,CADwC,CAAnD,CA5Fe,CAvHkB,CA+NzCkZ,YAAaA,QAAQ,EAAG,CACpB,IACI/N,EADSlL,IACAkL,OAEb6K,EAAAmD,iBAAAvZ,MAAA,CAAoC,IAApC,CAIAT,EAAA,CAAKgM,CAAL,CAAa,QAAQ,CAAC9D,CAAD,CAAQ,CACzB,IAAImN,EAAUnN,CAAAmN,QACVA,EAAJ,EACI3V,CAAA,CAAS2V,CAAA4E,QAAT,CAA0B,WAA1B,CAAuC,QAAQ,EAAG,CAGvB,CAAvB,CAAI/R,CAAAsQ,WAAJ,EAA6B0B,CAAAhS,CAAAgS,OAA7B,GACIhS,CAAAiS,GAIA,CAJW9E,CAAAlJ,EAIX,CAHAkJ,CAAAgE,KAAA,CAAa,CACTlN,EAAGjE,CAAAiS,GAAHhO,CAAc,CADL,CAAb,CAGA,CAAAjE,CAAAgS,OAAA,CAAe,CAAA,CALnB,CASAla,EAAA,CAAKgM,CAAL,CAAa,QAAQ,CAACoO,CAAD,CAAa,CAC1BA,CAAJ,GAAmBlS,CAAnB,EAA4BkS,CAAAF,OAA5B,EAAiDE,CAAA/E,QAAjD,GACI+E,CAAA/E,QAAAgE,KAAA,CAAwB,CACpBlN,EAAGiO,CAAAD,GADiB,CAAxB,CAGA,CAAAC,CAAAF,OAAA,CAAoB,CAAA,CAJxB,CAD8B,CAAlC,CAZ8C,CAAlD,CAHqB,CAA7B,CARoB,CA/NiB,CAmQzC5D,QAASpW,CAnQgC,CAoQzCma,YAAana,CApQ4B,CAqQzCoa,QAASpa,CArQgC,CAb7C,CAuRA4W,EAAAyD,KAAA;AAAeC,QAAQ,CAACpO,CAAD,CAAID,CAAJ,CAAOsO,CAAP,CAAUC,CAAV,CAAa3Z,CAAb,CAAsB,CAIzC,MAAO,CACH,GADG,CAHQA,CAGR,EAHmBA,CAAAiY,QAGnB,EAHuC5M,CAGvC,CAFQrL,CAER,EAFmBA,CAAAkY,QAEnB,EAFuC9M,CAEvC,CAEH,GAFG,CAEEC,CAFF,CAEKD,CAFL,CAESuO,CAFT,CAGHtO,CAHG,CAGAD,CAHA,CAIHC,CAJG,CAICqO,CAJD,CAIItO,CAJJ,CAKHC,CALG,CAKCqO,CALD,CAKItO,CALJ,CAKQuO,CALR,CAMHtO,CANG,CAMAD,CANA,CAMIuO,CANJ,CAOH,GAPG,CAJkC,CAgB7C1a,EAAA,CAAK,CAAC,QAAD,CAAW,QAAX,CAAL,CAA2B,QAAQ,CAACkX,CAAD,CAAQ,CACvCJ,CAAA,CAAQI,CAAR,CAAgB,KAAhB,CAAA,CAAyB,QAAQ,CAAC9K,CAAD,CAAID,CAAJ,CAAOsO,CAAP,CAAUC,CAAV,CAAa3Z,CAAb,CAAsB,CAAA,IAE/CiY,EAAUjY,CAAViY,EAAqBjY,CAAAiY,QACrBC,EAAAA,CAAUlY,CAAVkY,EAAqBlY,CAAAkY,QAKX,SAAd,GAAI/B,CAAJ,EAA0BwD,CAA1B,CAA8BD,CAA9B,GACIrO,CACA,EADK9I,IAAAuS,MAAA,EAAY6E,CAAZ,CAAgBD,CAAhB,EAAqB,CAArB,CACL,CAAAA,CAAA,CAAIC,CAFR,CAKAtF,EAAA,CAAO0B,CAAA,CAAQI,CAAR,CAAA,CAAe9K,CAAf,CAAkBD,CAAlB,CAAqBsO,CAArB,CAAwBC,CAAxB,CAEH1B,EAAJ,EAAeC,CAAf,EAII7D,CAAAnO,KAAA,CAAU,GAAV,CAAe+R,CAAf,CADqB7M,CAADwO,CAAK1B,CAAL0B,CAAgBxO,CAAhBwO,CAAoBxO,CAApBwO,CAAwBD,CAC5C,CAA2C,GAA3C,CAAgD1B,CAAhD,CAAyDC,CAAzD,CAGJ,OAAO7D,EAtB4C,CADhB,CAA3C,CAjUS,CAAZ,CAAA,CAiWC5V,CAjWD,CAkWA,UAAQ,CAACC,CAAD,CAAI,CAyETmb,QAASA,EAAS,CAACnF,CAAD,CAAW1U,CAAX,CAAoB0D,CAApB,CAA2B,CACzC,IAAA+S,KAAA,CAAU/B,CAAV,CAAoB1U,CAApB,CAA6B0D,CAA7B,CADyC,CAzEpC,IAML/E,EAAWD,CAAAC,SANN,CAOLC,EAAOF,CAAAE,KAPF,CAQLkb,EAAepb,CAAAob,aARV,CASLlH,EAAiBlU,CAAAkU,eATZ,CAUL5T,EAAUN,CAAAM,QAVL,CAWL+a,EAA0Brb,CAAAqb,wBAXrB,CAYLC,EAAMtb,CAAAsb,IAZD,CAaL/a,EAAOP,CAAAO,KAbF,CAcLmJ,EAAY1J,CAAA0J,UAdP;AAeL6R,EAAWvb,CAAAub,SAfN,CAgBLC,EAAgBxb,CAAAwb,cAhBX,CAiBLzN,EAAQ/N,CAAA+N,MAjBH,CAkBLxE,EAAOvJ,CAAAuJ,KAlBF,CAmBLkS,EAAczb,CAAAyb,YAnBT,CAqBL9a,EAAOX,CAAAW,KArBF,CAsBL+a,CAtBK,CAwBLC,EAA0B,CAE1BxC,OAAQqC,CAAA,CAAgB,EAAhB,CAAqB,EAFH,CAI1BI,gBAAiB,CAJS,CAK1BC,mBAAoB,CALM,CAM1BC,WAVM9b,CAAA+b,IAUND,EAAmB,CAACN,CANM,CAO1BQ,OAAQ,EAPkB,CAQ1BC,SAAU,CARgB,CAW1B5D,KAAM,EAXoB,CAY1B6D,OAAQ,CAZkB,CAgB9BhI,EAAAiI,UAAA,CAA2BpO,CAAA,CAAM,CAAA,CAAN,CAAY4N,CAAZ,CAAqCzH,CAAAiI,UAArC,CAQ3Bnc,EAAA0b,OAAA,CAAWA,CAAX,CAAoBA,QAAQ,CAAC/F,CAAD,CAAOyG,CAAP,CAAiB,CAAA,IAErChY,EAAMuR,CAAA7S,OAF+B,CAGrCuZ,CAEJ,IAAID,CAAJ,CACI,IAAK/Y,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBe,CAAhB,CAAqBf,CAArB,EAA0B,CAA1B,CACIgZ,CAEA,CAFO1G,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAEP,CADAsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CACA,CADcsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CACd,CAAAsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAAA,CAAcgZ,CAItB,OAAO1G,EAbkC,CA6B7CwF,EAAAta,UAAA,CAAsB,CAElBkX,KAAMA,QAAQ,CAAC/B,CAAD,CAAW1U,CAAX,CAAoB0D,CAApB,CAA2B,CAErC,IAAAsX,iBAAA,CAAwB,EAExB,KAAAtG,SAAA,CAAgBA,CAEhB,KAAAtL,YAAA,CAAmBpJ,CACnB,KAAAA,QAAA,CAAeyM,CAAA,CAAM4N,CAAN,CAA+Bra,CAA/B,CAEf,KAAA0D,MAAA,CAAaA,CAEb,KAAAgH,KAAA,CAAYzC,CAAA,CAAK,IAAAjI,QAAA0K,KAAL,CAAwB,IAAA1K,QAAA6X,OAAxB,CAGR7X;CAAA6F,QAAJ,GACI,IAAAoV,OAAA,EAEA,CADA,IAAAC,WAAA,EACA,CAAA,IAAAC,UAAA,EAHJ,CAdqC,CAFvB,CA0BlBF,OAAQA,QAAQ,EAAG,CAAA,IAEXvG,EADW0G,IACA1G,SAFA,CAGX1U,EAFWob,IAEDpb,QAHC,CAIX0K,EAHW0Q,IAGJ1Q,KAJI,CAKXkK,CAJWwG,KAOfxG,MAAA,CAAiBA,CAAjB,CAAyBF,CAAA2G,EAAA,CAAW,WAAX,CAAA/C,KAAA,CAA6B,CAClDsC,OAAQ5a,CAAA4a,OAD0C,CAElDU,WAAa,MAFqC,CAA7B,CAAA3G,IAAA,EAPVyG,KAafG,MAAA,CAAiB7G,CAAA8G,KAAA,EAAAnG,SAAA,CACH,4BADG,CAAAiD,KAAA,CAEP,CACFjN,EAAG,CADD,CAEFoQ,EAAGzb,CAAA0b,kBAAHD,EAAgC,CAF9B,CAGF5D,OAAQnN,CAHN,CAIFuK,MAAOvK,CAJL,CAFO,CAAAiK,IAAA,CAONC,CAPM,CAUjB,KAAA+G,iBAAA,CAvBeP,IAuBSG,MAAA1G,YAAA,EAvBTuG,KAwBfG,MAAAjD,KAAA,CAAoB,CAChBlN,EAAG,CAAC,IAAAuQ,iBAAJvQ,CAA4B,CAA5BA,CAAgC,CADhB,CAApB,CAxBegQ,KA8BfQ,eAAA,CAA0BlH,CAAA2G,EAAA,EAAA1G,IAAA,CAAiBC,CAAjB,CA9BXwG,KAgCfP,UAAA,CAAqBnG,CAAA8G,KAAA,EAAAnG,SAAA,CACP,4BADO,CAAAiD,KAAA,CAEX,CACFT,OAAQnN,CADN;AAEFuK,MAAOvK,CAFL,CAGF+Q,EAAGzb,CAAAsa,gBAAHmB,EAA8B,CAH5B,CAFW,CAAA9G,IAAA,CAhCNyG,IAsCJQ,eANU,CAhCNR,KAwCfS,gBAAA,CAA2BnH,CAAAL,KAAA,CACnB+F,CAAA,CAAO,CACH,GADG,CACG,EADH,CACM1P,CADN,CACa,CADb,CAEH,GAFG,CAEG,EAFH,CAEM,CAFN,CAEUA,CAFV,CAEiB,CAFjB,CAGH,GAHG,CAIH,CAJG,CAIAA,CAJA,CAIO,CAJP,CAKH,GALG,CAMH,CANG,CAMA,CANA,CAMIA,CANJ,CAMW,CANX,CAOH,GAPG,CAQH,CARG,CAQAA,CARA,CAQO,CARP,CASH,GATG,CAUH,CAVG,CAUA,CAVA,CAUIA,CAVJ,CAUW,CAVX,CAAP,CAWG1K,CAAA8a,SAXH,CADmB,CAAAzF,SAAA,CAab,6BAba,CAAAV,IAAA,CAxCZyG,IAsDNQ,eAdkB,CAxCZR,KAyDfU,qBAAA,CAzDeV,IAyDiBP,UAAAhG,YAAA,EAzDjBuG,KA0DfQ,eAAAxZ,UAAA,CAAkC,CA1DnBgZ,IA0DoBU,qBAAnC,CAAmE,CAAnE,CAAuE,CAAvE,CAA0E,CA1D3DV,IA0D4DU,qBAA3E,CAA2G,CAA3G,CAA+G,CAA/G,CA1DeV,KA6DfW,oBAAA,CAA6B,CAA7B,CA7DeX,KA8DfW,oBAAA,CAA6B,CAA7B,CA/De,CA1BD,CAmGlBC,SAAUA,QAAQ,CAAC3Q,CAAD,CAAID,CAAJ,CAAO6J,CAAP,CAAc4C,CAAd,CAAsB,CAAA,IAGhCiD,EAFWM,IACDpb,QACC8a,SAHqB,CAKhCmB,EAAU,CALsB,CAMhCC;AALWd,IAKFe,SAAA,CAAoB,SAApB,CAAgC,MAL9Bf,KAOf/P,EAAA,CAAaA,CAPE+P,KAQfhQ,EAAA,CAAaA,CAAb,CAAiB,IAAAuQ,iBARFP,KASfnG,MAAA,CAAiBA,CATFmG,KAWflE,QAAA,CAXekE,IAUfvD,OACA,CADkBA,CAVHuD,KAYfa,QAAA,CAAmBA,CAGfnB,EAAJ,EAfeM,IAgBXnG,MAGA,CAnBWmG,IAgBMa,QAGjB,CAHoChH,CAGpC,CAH4CgH,CAG5C,CAnBWb,IAgB2C1Q,KAGtD,CAnBW0Q,IAiBXlE,QAEA,CAFmBA,CAEnB,CAF6B,CAE7B,CAnBWkE,IAkBXgB,SACA,CADoBvE,CACpB,CADqC,CACrC,CAD6B5C,CAC7B,CAnBWmG,IAmBX/P,EAAA,CAAiBA,CAAjB,EAnBW+P,IAmBUpb,QAAA0a,OAJzB,GAfeU,IAqBXvD,OAEA,CAvBWuD,IAqBOlE,QAElB,CAFqCW,CAErC,CAF8CX,CAE9C,CAvBWkE,IAqB6C1Q,KAExD,CAvBW0Q,IAsBXgB,SACA,CADoBnH,CACpB,CADqC,CACrC,CAD4B4C,CAC5B,CAvBWuD,IAuBXhQ,EAAA,EAvBWgQ,IAuBepb,QAAA0a,OAR9B,CAfeU,KA2BfxG,MAAA,CAAesH,CAAf,CAAA,CAAuB,CACnBG,WAAYhR,CADO,CAEnBiQ,WA7BWF,IA6BChQ,EAFO,CAAvB,CA3BegQ,KAiCfG,MAAA,CAAeW,CAAf,CAAA,CAAuB,CACnBjH,MAAOA,CADY,CAEnB4C,OAAQA,CAFW,CAAvB,CAjCeuD,KAuCfJ,iBAAA,CAA0B,CAA1B,CAAA,CAA6BkB,CAA7B,CAAA,CAAqC,CACjCG,WAAYvB,CAAA,CAAW,CAAX,CAAe7F,CAAf,CAAuBiC,CADF,CAEjCoE,WAAYR,CAAA,CAAWjD,CAAX,CAAoBoE,CAApB,CAA8B,CAFT,CAArC,CAxCoC,CAnGtB,CAqJlBF,oBAAqBA,QAAQ,CAAC1L,CAAD,CAAQ,CAAA,IAE7BqE;AADW0G,IACA1G,SAFkB,CAG7BsG,EAFWI,IAEQJ,iBAHU,CAI7Bhb,EAHWob,IAGDpb,QAJmB,CAK7B0K,EAJW0Q,IAIJ1Q,KALsB,CAM7BkK,CAGJA,EAAA,CAAQF,CAAA2G,EAAA,EAAA1G,IAAA,CAROyG,IAQUxG,MAAjB,CACRoG,EAAA9U,KAAA,CAAsB0O,CAAtB,CAGA0H,EAAA,CAAW5H,CAAA8G,KAAA,EAAAnG,SAAA,CACG,6BADH,CAAAV,IAAA,CAEFC,CAFE,CAOX0H,EAAAhE,KAAA,CAAcgE,CAAAC,MAAA,CAAe,CACzBlR,EAAI,GADqB,CAEzBD,EAAI,GAFqB,CAGzB6J,MAAOvK,CAAPuK,CAAc,CAHW,CAIzB4C,OAAQnN,CAARmN,CAAe,CAJU,CAKzB4D,EAAGzb,CAAAua,mBALsB,CAAf,CAMX+B,CAAAzH,YAAA,EANW,CAAd,CASWH,EAAAL,KAAA,CACD+F,CAAA,CAAO,CACT,GADS,CAET1P,CAFS,CAEF,CAFE,EAEG2F,CAAA,CAAS,EAAT,CAAa,CAFhB,EAGT3F,CAHS,CAGF,CAHE,CAGE,CAHF,CAIT,GAJS,CAKTA,CALS,CAKF,CALE,EAKG2F,CAAA,CAAS,EAAT,CAAa,CALhB,EAMT3F,CANS,CAMF,CANE,CAME,CANF,CAOT,GAPS,CAQTA,CARS,CAQF,CARE,EAQG2F,CAAA,CAAQ,CAAR,CAAa,EARhB,EAST3F,CATS,CASF,CATE,CAAP,CAUH1K,CAAA8a,SAVG,CADC,CAAAzF,SAAA,CAYG,4BAZH,CAAAV,IAAA,CAaFqG,CAAA,CAAiB3K,CAAjB,CAbE,CA7BsB,CArJnB,CAyMlBmM,SAAUA,QAAQ,CAAC/T,CAAD,CAAOC,CAAP,CAAW,CAAA,IAErB1I,EADWob,IACDpb,QAFW,CAGrB8a,EAAW9a,CAAA8a,SAHU,CAIrBH,EAAW3a,CAAA2a,SAJU,CAKrB8B,EAJWrB,IAICgB,SALS,CAMrBM,CANqB,CASrBC,CATqB,CAWrBT,EAAS,IAAAC,SAAA,EAAkBS,CAAA,IAAAA,WAAlB;AAAoC,SAApC,CAAgD,MAExD5d,EAAA,CAAQyd,CAAR,CAAL,GAIAhU,CA0DA,CA1DOlG,IAAAlC,IAAA,CAASoI,CAAT,CAAe,CAAf,CA0DP,CAzDAiU,CAyDA,CAzDSna,IAAAsa,KAAA,CAAUJ,CAAV,CAAsBhU,CAAtB,CAyDT,CA1Ee2S,IAmBf0B,gBAuDA,CAvD2BH,CAuD3B,CAvDqC7C,CAAA,CAD9B2C,CAC8B,CADlBla,IAAAnC,IAAA,CAASsI,CAAT,CAAa,CAAb,CACkB,CAAoBgU,CAApB,CAuDrC,CApDIC,CAoDJ,CApDchC,CAoDd,GAnDI+B,CACA,EADUD,CACV,CADsB9B,CACtB,CADiCgC,CACjC,EAD4ClU,CAC5C,CAAAkU,CAAA,CAAUhC,CAkDd,EAhDAoC,CAgDA,CAhDSxa,IAAAC,MAAA,CAAWka,CAAX,CA1BMtB,IA0BclE,QAApB,CA1BMkE,IA0BiCa,QAAvC,CAgDT,CA/CAe,CA+CA,CA/CeL,CA+Cf,CA/CyB,CA+CzB,CA/C6B,EA+C7B,CA1EevB,IA8Bf3S,KA4CA,CA5CgBA,CA4ChB,CA1Ee2S,IA+Bf1S,GA2CA,CA3CcA,CA2Cd,CAzCKoS,CAAL,EAjCeM,IA8CXQ,eAAA,CAAwBM,CAAxB,CAAA,CAAgC,CAC5BZ,WAAYyB,CADgB,CAAhC,CAUA,CAxDW3B,IAiDXP,UAAA,CAAmBqB,CAAnB,CAAA,CAA2B,CACvBrE,OAAQ8E,CADe,CAA3B,CAOA,CAxDWvB,IAoDXS,gBAAA,CAAyBK,CAAzB,CAAA,CAAiC,CAC7BZ,WAAY0B,CADiB,CAAjC,CAIA,CAxDW5B,IAuDX6B,aACA,CADwBF,CACxB,CAxDW3B,IAwDX8B,cAAA,CAAyB,CAvB7B,GAjCe9B,IAkCXQ,eAAA,CAAwBM,CAAxB,CAAA,CAAgC,CAC5BG,WAAYU,CADgB,CAAhC,CAUA,CA5CW3B,IAqCXP,UAAA,CAAmBqB,CAAnB,CAAA,CAA2B,CACvBjH,MAAO0H,CADgB,CAA3B,CAOA,CA5CWvB,IAwCXS,gBAAA,CAAyBK,CAAzB,CAAA,CAAiC,CAC7BG,WAAYW,CADiB,CAAjC,CAIA,CA5CW5B,IA2CX8B,cACA,CADyBH,CACzB,CA5CW3B,IA4CX6B,aAAA,CAAwB,CAX5B,CAyCA;AAfe,EAAf,EAAIN,CAAJ,CA3DevB,IA4DXS,gBAAAsB,KAAA,EADJ,CA3De/B,IA8DXS,gBAAAuB,KAAA,CAA8B,CAAA,CAA9B,CAYJ,CARyB,CAAA,CAQzB,GARIpd,CAAAqd,SAQJ,GAPgB,CAAZ,EAAI5U,CAAJ,EAAuB,CAAvB,EAAiBC,CAAjB,CAnEW0S,IAoEPxG,MAAAuI,KAAA,EADJ,CAnEW/B,IAsEPxG,MAAAwI,KAAA,EAIR,EA1EehC,IA0Efe,SAAA,CAAoB,CAAA,CA9DpB,CAbyB,CAzMX,CA0RlBjB,WAAYA,QAAQ,EAAG,CACnB,IAAIE,EAAW,IAIfA,EAAAkC,iBAAA,CAA4BC,QAAQ,CAAC7W,CAAD,CAAI,CAAA,IAChC8W,EAAkBpC,CAAA1X,MAAA+Z,QAAAC,UAAA,CAAiChX,CAAjC,CADc,CAGhCiX,EADUvC,CAAApb,QACE8a,SAAA,CAAmB,QAAnB,CAA8B,QAHV,CAIhC8C,EAAgBxC,CAAAwC,cAOhBC,EAAAzC,CAAAyC,cAAJ,EAAgCnX,CAAAoX,QAAhC,EAAyE,CAAzE,GAA6CpX,CAAAoX,QAAA,CAAU,CAAV,CAAA,CAAaH,CAAb,CAA7C,GACII,CAQA,CARgB3C,CAAA4C,0BAAA,CAAmCR,CAAnC,CAAA,CAAoDG,CAApD,CAQhB,CAPAM,CAOA,CAPiB7C,CAAA,CAASuC,CAAT,CAOjB,CALAO,CAKA,CALSH,CAKT,CALyBE,CAKzB,CAHA7C,CAAAwB,WAGA,CAHsB,CAAA,CAGtB,CAFAxB,CAAA+C,eAAA,CAAwBP,CAAA,CAAc,CAAd,CAAxB,CAA2CM,CAA3C,CAAmDN,CAAA,CAAc,CAAd,CAAnD,CAAsEM,CAAtE,CAEA,CAAI9C,CAAAwB,WAAJ,EACIxU,CAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB;AAG3BhB,QAAS,WAHkB,CAI3B0W,QAAS1X,CAAAqJ,KAJkB,CAK3BsO,SAAU3X,CALiB,CAA/B,CAVR,CAXoC,CAmCxC0U,EAAAkD,eAAA,CAA0BC,QAAQ,CAAC7X,CAAD,CAAI,CAC9B0U,CAAAwB,WAAJ,EACIxU,CAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B0W,QAAS1X,CAAAqJ,KAJkB,CAK3BsO,SAAU3X,CALiB,CAA/B,CAQJ0U,EAAAyC,cAAA,CAAyBzC,CAAAwB,WAAzB,CAA+CxB,CAAAzU,OAA/C,CAAiEyU,CAAAoD,OAAjE,CAAmF,IAVjD,CAatCpD,EAAAqD,iBAAA,CAA4BC,QAAQ,CAAChY,CAAD,CAAI,CAChC8W,CAAAA,CAAkBpC,CAAA1X,MAAA+Z,QAAAC,UAAA,CAAiChX,CAAjC,CAClBiY,EAAAA,CAAgBvD,CAAA4C,0BAAA,CAAmCR,CAAnC,CAEpBpC,EAAAzU,OAAA,CAAkBgY,CAAAhY,OAClByU,EAAAoD,OAAA,CAAkBG,CAAAH,OAClBpD,EAAAwC,cAAA,CAAyB,CAACxC,CAAA3S,KAAD,CAAgB2S,CAAA1S,GAAhB,CAEzB0S,EAAAyC,cAAA,CAAyB,CAAA,CARW,CAWxCzC,EAAAwD,iBAAA,CAA4BC,QAAQ,CAACnY,CAAD,CAAI,CACpC,IAAIuI,EAAQ6K,CAAA,CAAasB,CAAA1S,GAAb,CAA2B0S,CAAA3S,KAA3B,CAARwG,CAAoDmM,CAAApb,QAAA+W,KACxDqE,EAAA+C,eAAA,CAAwBrE,CAAA,CAAasB,CAAA3S,KAAb;AAA6BwG,CAA7B,CAAxB,CAA6D6K,CAAA,CAAasB,CAAA1S,GAAb,CAA2BuG,CAA3B,CAA7D,CACA7G,EAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B2W,SAAU3X,CAJiB,CAA/B,CAHoC,CAWxC0U,EAAA0D,iBAAA,CAA4BC,QAAQ,CAACrY,CAAD,CAAI,CACpC,IAAIuI,GAASmM,CAAA1S,GAATuG,CAAuBmM,CAAA3S,KAAvBwG,EAAwCmM,CAAApb,QAAA+W,KAC5CqE,EAAA+C,eAAA,CAAwB/C,CAAA3S,KAAxB,CAAwCwG,CAAxC,CAA+CmM,CAAA1S,GAA/C,CAA6DuG,CAA7D,CACA7G,EAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B2W,SAAU3X,CAJiB,CAA/B,CAHoC,CAWxC0U,EAAA4D,WAAA,CAAsBC,QAAQ,CAACvY,CAAD,CAAI,CAAA,IAC1B8W,EAAkBpC,CAAA1X,MAAA+Z,QAAAC,UAAA,CAAiChX,CAAjC,CADQ,CAE1BuI,EAAQmM,CAAA1S,GAARuG,CAAsBmM,CAAA3S,KAFI,CAG1BsP,EAAMqD,CAAAhQ,EAAN2M,CAAmBqD,CAAA6B,aAHO,CAI1BiC,EAAO9D,CAAA/P,EAAP6T,CAAoB9D,CAAA8B,cAEnB9B,EAAApb,QAAA8a,SAAL,EAAkC0C,CAAAgB,OAAlC,CAA2DzG,CAA3D,EACM+C,CAAAM,CAAApb,QAAA8a,SADN,EACmC0C,CAAA7W,OADnC,CAC4DuY,CAD5D,CAGI9D,CAAA+C,eAAA,CAAwB/C,CAAA3S,KAAxB,CAAwCwG,CAAxC,CAA+CmM,CAAA1S,GAA/C,CAA6DuG,CAA7D,CAHJ,CAMImM,CAAA+C,eAAA,CAAwB/C,CAAA3S,KAAxB,CAAwCwG,CAAxC,CAA+CmM,CAAA1S,GAA/C,CAA6DuG,CAA7D,CAGJ7G;CAAA,CAAUgT,CAAV,CAAoB,SAApB,CAA+B,CAC3B3S,KAAM2S,CAAA3S,KADqB,CAE3BC,GAAI0S,CAAA1S,GAFuB,CAG3BhB,QAAS,WAHkB,CAI3B2W,SAAU3X,CAJiB,CAA/B,CAf8B,CAtFf,CA1RL,CA6YlBsX,0BAA2BA,QAAQ,CAACR,CAAD,CAAkB,CAAA,IAE7Cxd,EADWob,IACDpb,QAFmC,CAG7Cmf,EAAqBnf,CAAA2a,SAAA,CAFVS,IAE6B0B,gBAAnB,CAA8C9c,CAAA2a,SAA9C,CAAiE,CAE1F,OAAO,CACHhU,QAAS6W,CAAA7W,OAATA,CALWyU,IAKuB/P,EAAlC1E,CALWyU,IAKoClE,QAA/CvQ,GALWyU,IAKyDgB,SAApEzV,CAAwFwY,CAAxFxY,CADG,CAEH6X,QAAShB,CAAAgB,OAATA,CANWpD,IAMuBhQ,EAAlCoT,CANWpD,IAMoCa,QAA/CuC,GANWpD,IAMyDgB,SAApEoC,CAAwFW,CAAxFX,CAFG,CAL0C,CA7YnC,CA2ZlBL,eAAgBA,QAAQ,CAAC1V,CAAD,CAAOC,CAAP,CAAW,CACtB,CAAT,CAAIA,CAAJ,GACID,CACA,CADOqR,CAAA,CAAa,CAAb,CAAiBA,CAAA,CAAapR,CAAb,CAAkBD,CAAlB,CAAjB,CACP,CAAAC,CAAA,CAAK,CAFT,CAKW,EAAX,CAAID,CAAJ,GACIC,CACA,CADKoR,CAAA,CAAapR,CAAb,CAAkBD,CAAlB,CACL,CAAAA,CAAA,CAAO,CAFX,CAKA,KAAAA,KAAA,CAAYA,CACZ,KAAAC,GAAA,CAAUA,CAZqB,CA3ZjB,CA6alByK,OAAQA,QAAQ,CAACnT,CAAD,CAAU,CACtB,IAAAiN,QAAA,EACA,KAAAwJ,KAAA,CAAU,IAAA/S,MAAAgR,SAAV,CAA+BjI,CAAA,CAAM,CAAA,CAAN,CAAY,IAAAzM,QAAZ,CAA0BA,CAA1B,CAA/B,CAAmE,IAAA0D,MAAnE,CAFsB,CA7aR,CAqblByX,UAAWA,QAAQ,EAAG,CAAA,IACdiE;AAAe,IAAApf,QAAA4Y,SAAA,CAAwB,CAAC,CAAD,CAAI,CAAJ,CAAxB,CAAiC,CAAC,CAAD,CAAI,CAAJ,CADlC,CAEdyG,EAAU,IAAArE,iBAFI,CAGdsE,EAAM,IAAA1D,eAAA1C,QAHQ,CAKduF,EAAmB,IAAAA,iBALL,CAMdnB,EAAmB,IAAAA,iBANL,CAOdgB,EAAiB,IAAAA,eAPH,CAWlBiB,EAAU,CACN,CAACF,CAAA,CAAQD,CAAA,CAAa,CAAb,CAAR,CAAAlG,QAAD,CAAmC,OAAnC,CAA4C,IAAA0F,iBAA5C,CADM,CAEN,CAACS,CAAA,CAAQD,CAAA,CAAa,CAAb,CAAR,CAAAlG,QAAD,CAAmC,OAAnC,CAA4C,IAAA4F,iBAA5C,CAFM,CAGN,CAVQ,IAAAvD,MAAArC,QAUR,CAAQ,OAAR,CAAiB,IAAA8F,WAAjB,CAHM,CAIN,CAACM,CAAD,CAAM,WAAN,CAAmBb,CAAnB,CAJM,CAKN,CAACzE,CAAD,CAAM,WAAN,CAAmBsD,CAAnB,CALM,CAMN,CAACtD,CAAD,CAAM,SAAN,CAAiBsE,CAAjB,CANM,CAUNrE,EAAJ,EACIsF,CAAArZ,KAAA,CACI,CAACoZ,CAAD,CAAM,YAAN,CAAoBb,CAApB,CADJ,CAC2C,CAACzE,CAAD,CAAM,WAAN,CAAmBsD,CAAnB,CAD3C,CACiF,CAACtD,CAAD,CAAM,UAAN,CAAkBsE,CAAlB,CADjF,CAMJrf,EAAA,CAAKsgB,CAAL,CAAc,QAAQ,CAACC,CAAD,CAAO,CACzB7gB,CAAAe,MAAA,CAAe,IAAf,CAAqB8f,CAArB,CADyB,CAA7B,CAGA,KAAAD,QAAA,CAAeA,CA/BG,CArbJ,CA0dlBE,aAAcA,QAAQ,EAAG,CACrBxgB,CAAA,CAAK,IAAAsgB,QAAL;AAAmB,QAAQ,CAACC,CAAD,CAAO,CAC9BrF,CAAAza,MAAA,CAAkB,IAAlB,CAAwB8f,CAAxB,CAD8B,CAAlC,CAGA,KAAAD,QAAA/d,OAAA,CAAsB,CAJD,CA1dP,CAoelByL,QAASA,QAAQ,EAAG,CAEhB,IAAImO,EAAW,IAAA1X,MAAA0X,SAGf,KAAAqE,aAAA,EAGAxgB,EAAA,CAAK,CAAC,OAAD,CAAU,iBAAV,CAA6B,WAA7B,CAA0C,gBAA1C,CAA4D,OAA5D,CAAL,CAA2E,QAAQ,CAACygB,CAAD,CAAO,CAClF,IAAA,CAAKA,CAAL,CAAJ,EAAkB,IAAA,CAAKA,CAAL,CAAAzS,QAAlB,GACI,IAAA,CAAKyS,CAAL,CADJ,CACiB,IAAA,CAAKA,CAAL,CAAAzS,QAAA,EADjB,CADsF,CAA1F,CAIG,IAJH,CAMImO,EAAJ,EAAgB,IAAhB,GAAyBA,CAAAP,UAAzB,GACIO,CAAAP,UAGA,CAHqB,IAGrB,CAAAd,CAAA,CAAwBqB,CAAAJ,iBAAxB,CAJJ,CAdgB,CApeF,CA8ftB3b,EAAA,CAAKT,CAAAW,UAAL,CAAqB,MAArB,CAA6B,QAAQ,CAACC,CAAD,CAAU,CAC3C,IAAI2D,EAAO,IACX3D,EAAAE,MAAA,CAAcyD,CAAd,CAAoBxD,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEIqD,EAAAnD,QAAA6a,UAAJ,EAA8B1X,CAAAnD,QAAA6a,UAAAhV,QAA9B,GAEI1C,CAAAnD,QAAA6a,UAAAC,SAKA,CALkC,CAAC3X,CAAAwc,MAKnC;AAJAxc,CAAAnD,QAAA4f,YAIA,CAJ2Bzc,CAAAnD,QAAA6f,UAI3B,CAJoD,CAAA,CAIpD,CAFA1c,CAAA0X,UAEA,CAFiB,IAAIhB,CAAJ,CAAc1W,CAAAO,MAAAgR,SAAd,CAAmCvR,CAAAnD,QAAA6a,UAAnC,CAA2D1X,CAAAO,MAA3D,CAEjB,CAAA/E,CAAA,CAASwE,CAAA0X,UAAT,CAAyB,SAAzB,CAAoC,QAAQ,CAACnU,CAAD,CAAI,CAAA,IACxCoZ,EAAYvd,IAAAnC,IAAA,CAAS6H,CAAA,CAAK9E,CAAAnD,QAAAI,IAAL,CAAuB+C,CAAA/C,IAAvB,CAAT,CAA2C+C,CAAA/C,IAA3C,CAAqD+C,CAAAqC,QAArD,CAD4B,CAGxCyJ,EADY1M,IAAAlC,IAAA0f,CAAS9X,CAAA,CAAK9E,CAAAnD,QAAAK,IAAL,CAAuB8C,CAAA9C,IAAvB,CAAT0f,CAA2C5c,CAAA9C,IAA3C0f,CAAqD5c,CAAAsC,QAArDsa,CACZ9Q,CAAoB6Q,CAHoB,CAIxCpX,CAGCvF,EAAAwc,MAAL,EAAoBK,CAAA7c,CAAA6c,SAApB,EAAwCL,CAAAxc,CAAAwc,MAAxC,EAAsDxc,CAAA6c,SAAtD,EACItX,CACO,CADFoX,CACE,CADU7Q,CACV,CADkB,IAAAvG,GAClB,CAAAoX,CAAA,EAAY7Q,CAAZ,CAAoB,IAAAxG,KAF/B,GAKIC,CACO,CADFoX,CACE,CADU7Q,CACV,EADmB,CACnB,CADuB,IAAAxG,KACvB,EAAAqX,CAAA,EAAY7Q,CAAZ,EAAqB,CAArB,CAAyB,IAAAvG,GAAzB,CANX,CASAvF,EAAAsE,YAAA,CAAiBgB,CAAjB,CAAuBC,CAAvB,CAA2B,CAAA,CAA3B,CAAiC,CAAA,CAAjC,CAAwChC,CAAxC,CAhB4C,CAAhD,CAPJ,CAJ2C,CAA/C,CAmCArH,EAAA,CAAKT,CAAAW,UAAL,CAAqB,QAArB,CAA+B,QAAQ,CAACC,CAAD,CAAU,CAAA,IAEzCygB,EAAY1d,IAAAnC,IAAA,CAAS6H,CAAA,CADd9E,IACmBnD,QAAAI,IAAL,CADd+C,IACqC/C,IAAvB,CAAT,CADL+C,IACgD/C,IAA3C,CADL+C,IAC0DqC,QAArD,CAF6B;AAGzC0a,EAAY3d,IAAAlC,IAAA,CAAS4H,CAAA,CAFd9E,IAEmBnD,QAAAK,IAAL,CAFd8C,IAEqC9C,IAAvB,CAAT,CAFL8C,IAEgD9C,IAA3C,CAFL8C,IAE0DsC,QAArD,CAH6B,CAIzCoV,EAHO1X,IAGK0X,UAJ6B,CAKzCsF,EAJOhd,IAIOgd,YAAdA,EAAkC,CAKtC3gB,EAAAE,MAAA,CATWyD,IASX,CAAoBxD,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEA,IAAI+a,CAAJ,CAAe,CAXJ1X,IAaHwc,MAAJ,EACI9E,CAAAmB,SAAA,CAdG7Y,IAeC+b,KADJ,CAdG/b,IAgBC4U,IAFJ,CAdG5U,IAgBY0U,OAFf,CAE6B,CAF7B,CAdG1U,IAgB8BO,MAAA0c,kBAAA,CAA6B,CAA7B,CAFjC,EAdGjd,IAiBEyU,SAAA,CACG,CADH,CAEGuI,CAFH,CAjBFhd,IAmBmBkd,gBAFjB,CAjBFld,IAmB0C2U,OAL7C,EAdG3U,IAqBC8R,MAPJ,CAdG9R,IAsBC0U,OARJ,CAUA,CAAAyI,CAAA,CAAe,CAXnB,GAaIzF,CAAAmB,SAAA,CA1BG7Y,IA2BC+b,KADJ,CA1BG/b,IA2Ba8R,MADhB,CAC6B,CAD7B,CA1BG9R,IA2B8BO,MAAA0c,kBAAA,CAA6B,CAA7B,CADjC,EA1BGjd,IA4BEyU,SAAA,CACGuI,CADH,CA5BFhd,IA6BmBkd,gBADjB,CA5BFld,IA6B0C2U,OADxC,CAEG,CAJR,EA1BG3U,IAgCC4U,IANJ,CA1BG5U,IAiCC8R,MAPJ,CA1BG9R,IAkCC0U,OARJ,CAUA,CAAAyI,CAAA,CAAe,CAvBnB,CA0BA,IAAM1I,CAvCCzU,IAuCDyU,SAAN;AAAwB+H,CAvCjBxc,IAuCiBwc,MAAxB,EAvCOxc,IAuCiCyU,SAAxC,EAvCOzU,IAuCkDwc,MAAzD,CAvCOxc,IAwCHO,MAAA0c,kBAAA,CAA6BE,CAA7B,CAAA,EAxCGnd,IAyCC0X,UAAAnQ,KADJ,CAxCGvH,IAyCuB0X,UAAA7a,QAAA0a,OAG1B6F,MAAA,CAAMN,CAAN,CAAJ,EAAwBM,KAAA,CAAML,CAAN,CAAxB,EAA6C,CAAAlhB,CAAA,CA5CtCmE,IA4C8C/C,IAAR,CAA7C,EAAmE,CAAApB,CAAA,CA5C5DmE,IA4CoE9C,IAAR,CAAnE,CACIwa,CAAA2B,SAAA,CAAmB,CAAnB,CAAsB,CAAtB,CADJ,EAGI/T,CAGA,EAlDGtF,IA+CK/C,IAGR,CAHmB6f,CAGnB,GAHiCC,CAGjC,CAH6CD,CAG7C,EAFAvX,CAEA,EAlDGvF,IAgDG9C,IAEN,CAFiB4f,CAEjB,GAF+BC,CAE/B,CAF2CD,CAE3C,EAlDG9c,IAkDEwc,MAAL,EAAoBK,CAlDjB7c,IAkDiB6c,SAApB,EAAwCL,CAlDrCxc,IAkDqCwc,MAAxC,EAlDGxc,IAkDmD6c,SAAtD,CACInF,CAAA2B,SAAA,CAAmB/T,CAAnB,CAAyBC,CAAzB,CADJ,CAGImS,CAAA2B,SAAA,CAAmB,CAAnB,CAAuB9T,CAAvB,CAA2B,CAA3B,CAA+BD,CAA/B,CATR,CAjCW,CAZ8B,CAAjD,CA+DApJ,EAAA,CAAKT,CAAAW,UAAL,CAAqB,WAArB,CAAkC,QAAQ,CAACC,CAAD,CAAU,CAAA,IAE5C6Q,EADOlN,IACCwc,MAAA,CAAa,CAAb,CAAiB,CAFmB,CAG5C9E,EAFO1X,IAEK0X,UAEhBrb,EAAAE,MAAA,CAJWyD,IAIX,CAAoBxD,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAEI+a,EAAJ,GANW1X,IAOPO,MAAA0c,kBACA,CAD+B,CAAC,CAAD,CAAI,CAAJ,CAC/B,CAROjd,IAQPO,MAAA8c,WAAA,CAAsBnQ,CAAtB,CAAA;AAAgCwK,CAAAnQ,KAAhC,CAAiDmQ,CAAA7a,QAAA0a,OAFrD,CAPgD,CAApD,CAgBArb,EAAA,CAAKT,CAAAW,UAAL,CAAqB,SAArB,CAAgC,QAAQ,CAACC,CAAD,CAAU,CAC1C,IAAAqb,UAAJ,GACI,IAAAA,UADJ,CACqB,IAAAA,UAAA5N,QAAA,EADrB,CAIAzN,EAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAL8C,CAAlD,CAQApB,EAAAmb,UAAA,CAAcA,CArsBL,CAAZ,CAAA,CAusBCpb,CAvsBD,CAwsBA,UAAQ,CAACC,CAAD,CAAI,CA8HT+hB,QAASA,EAAS,CAAC/c,CAAD,CAAQ,CACtB,IAAA+S,KAAA,CAAU/S,CAAV,CADsB,CA9HjB,IASL/E,EAAWD,CAAAC,SATN,CAULC,EAAOF,CAAAE,KAVF,CAWLC,EAAQH,CAAAG,MAXH,CAcL+T,EAAiBlU,CAAAkU,eAdZ,CAeL5T,EAAUN,CAAAM,QAfL,CAgBL+a,EAA0Brb,CAAAqb,wBAhBrB,CAiBLC,EAAMtb,CAAAsb,IAjBD,CAkBL/a,EAAOP,CAAAO,KAlBF,CAmBLyhB,EAAQhiB,CAAAgiB,MAnBH,CAoBL3O,EAAQrT,CAAAqT,MApBH,CAqBL7S,EAASR,CAAAQ,OArBJ,CAsBLyhB,EAAOjiB,CAAAiiB,KAtBF,CAuBL1G,EAAWvb,CAAAub,SAvBN,CAwBLzN,EAAW9N,CAAA8N,SAxBN,CAyBLoU,EAAWliB,CAAAkiB,SAzBN,CA0BLnU,EAAQ/N,CAAA+N,MA1BH,CA2BLxE,EAAOvJ,CAAAuJ,KA3BF,CA4BLkS,EAAczb,CAAAyb,YA5BT,CA6BLN,EAAYnb,CAAAmb,UA7BP,CA8BLva,EAASZ,CAAAY,OA9BJ,CA+BL4M,EAAcxN,CAAAwN,YA/BT;AAgCL7M,EAAOX,CAAAW,KAhCF,CAiCL+a,EAAS1b,CAAA0b,OAjCJ,CAmCLpU,EAAQ,EAAArE,OAAA,CAtBmBjD,CAAA4P,yBAsBnB,CAnCH,CAyCLuS,EAASA,QAAQ,CAACC,CAAD,CAAU,CACvB,IAAIC,EAAUJ,CAAA,CAAK7gB,SAAL,CAAgB0M,CAAhB,CACd,IAAIuU,CAAAvf,OAAJ,CACI,MAAOe,KAAA,CAAKue,CAAL,CAAAphB,MAAA,CAAoB,CAApB,CAAuBqhB,CAAvB,CAHY,CAQ/B/a,EAAA,CAAM,CAAN,CAAA,CAAW,CAAC,KAAD,CAAQ,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAU,CAAV,CAAR,CACXA,EAAA,CAAM,CAAN,CAAA,CAAW,CAAC,MAAD,CAAS,CAAC,CAAD,CAAI,CAAJ,CAAO,CAAP,CAAT,CAIX9G,EAAA,CAAO0T,CAAP,CAAuB,CACnBoO,UAAW,CAEPnJ,OAAQ,EAFD,CAGP6C,OAAQ,EAHD,CAIPuG,WAAY,CAAA,CAJL,CAMPlhB,OAAQ,CACJgQ,KAVmCtO,IAAAA,EAA3Byf,GAAAhV,CAAA8B,WAAAkT,CAAuC,MAAvCA,CAAgD,YASpD,CAGJC,QAAS,IAHL,CAIJvb,aAAc,CACVG,cAAe,SADL,CAEVF,QAAS,CAAA,CAFC,CAGVsH,gBAAiB,CAHP,CAIVuE,SAAU,CAAA,CAJA,CAKV1L,MAAOA,CALG,CAJV,CAWJob,WAAY,CACRvb,QAAS,CAAA,CADD,CAER+U,OAAQ,CAFA,CAXR,CAeJyG,GAAI,6BAfA,CAgBJC,UAAW,6BAhBP,CAiBJC,UAAW,IAjBP;AAkBJC,OAAQ,CACJ3b,QAAS,CAAA,CADL,CAlBJ,CAqBJqQ,WAAY,CArBR,CAsBJuL,OAAQ,CAAA,CAtBJ,CAuBJ/V,UAAW,IAvBP,CAND,CAiCPjM,MAAO,CACH6hB,UAAW,4BADR,CAEHI,WAAY,CAFT,CAIHpgB,kBAAmB,GAJhB,CAKHqgB,OAAQ,CACJpJ,MAAO,MADH,CAGJlN,EAAG,CAHC,CAIJD,EAAI,EAJA,CALL,CAWHwW,UAAW,CAAA,CAXR,CAjCA,CA8CP5Z,MAAO,CACHsZ,UAAW,4BADR,CAGH1B,YAAa,CAAA,CAHV,CAIHC,UAAW,CAAA,CAJR,CAKHgC,WAAY,EALT,CAMHC,WAAY,EANT,CAOHH,OAAQ,CACJ9b,QAAS,CAAA,CADL,CAPL,CAUH+b,UAAW,CAAA,CAVR,CAWHjJ,MAAO,CACHD,KAAM,IADH,CAXJ,CAcHgJ,WAAY,CAdT,CAeHK,UAAW,CAfR,CA9CA,CADQ,CAAvB,CA4EAtB,EAAAlhB,UAAA,CAAsB,CAQlByiB,WAAYA,QAAQ,CAAC3W,CAAD,CAAIgF,CAAJ,CAAWuI,CAAX,CAAqBqJ,CAArB,CAA2B,CAC3BjB,IAGhBkB,QAAA,CAAkB7R,CAAlB,CAAA,CAAyB4R,CAAzB,CAAA,CAA+BrJ,CAAA,CAAW,CACtCyD,WAAY9Z,IAAAuS,MAAA,CAJAkM,IAIW9B,KAAX,CAJA8B,IAI4BnJ,OAA5B,CAA+C,CAA/C,CAAmD,CAAnD,CAD0B,CAEtCyD,WAAY/Y,IAAAuS,MAAA,CALAkM,IAKWjJ,IAAX;AAA2BoK,QAAA,CAAS9W,CAAT,CAAY,EAAZ,CAA3B,CAA6C,EAA7C,CAF0B,CAAX,CAG3B,CACAgR,WAAY9Z,IAAAuS,MAAA,CAPAkM,IAOW9B,KAAX,CAA4BiD,QAAA,CAAS9W,CAAT,CAAY,EAAZ,CAA5B,CADZ,CAEAiQ,WAAY/Y,IAAAuS,MAAA,CARAkM,IAQWjJ,IAAX,CARAiJ,IAQ2BnJ,OAA3B,CAA8C,CAA9C,CAAkD,CAAlD,CAFZ,CAHJ,CAJ2C,CAR7B,CA0BlBuK,cAAeA,QAAQ,CAACxJ,CAAD,CAAW,CAC9B,MAAOwB,EAAA,CAAO,CACV,GADU,CACJ,IADI,CACC,EADD,CAEV,GAFU,CAGV,GAHU,CAGL,EAHK,CAIV,GAJU,CAKV,GALU,CAKL,IALK,CAMV,GANU,CAMJ,IANI,CAMC,IAND,CAOV,GAPU,CAOJ,IAPI,CAOC,EAPD,CAQV,GARU,CAQJ,IARI,CAQC,CARD,CASV,GATU,CASJ,IATI,CASC,EATD,CAUV,GAVU,CAWV,EAXU,CAWL,CAXK,CAYV,GAZU,CAaV,EAbU,CAaL,EAbK,CAAP,CAcJxB,CAdI,CADuB,CA1BhB,CAkDlByJ,YAAaA,QAAQ,CAACC,CAAD,CAAYC,CAAZ,CAAuB3J,CAAvB,CAAiCqJ,CAAjC,CAAuC,CAAA,IAEpDhB,EADYD,IACCwB,iBAAAvB,WAFuC,CAGpDwB,EAFYzB,IAEG0B,QAAA7N,YAAA,EAHqC,CAIpD8N,EAAcF,CAAdE,CAA6B,CAJuB,CAKpDC,EAAqBH,CAArBG,CAAoC,CAApCA,CAAyC,CALW,CAMpDC,EALY7B,IAKI6B,cANoC,CAOpDC,EANY9B,IAMM8B,gBAPkC,CAQpDC,EAPY/B,IAOItW,KARoC,CASpDwU,EARY8B,IAQL9B,KAAPA,CAAwB4D,CAT4B,CAUpDE,EATYhC,IASGjJ,IAIfa,EAAJ,EACIsG,CAIA,EAJQyD,CAIR,CAHAM,CAGA,CAHcD,CAGd,CAH6BT,CAG7B,CAHyCK,CAGzC,CAFAL,CAEA,CAFYS,CAEZ,CAF2BV,CAE3B,CAFuCM,CAEvC,CAAAvO,CAAA,CAAO,CACH,GADG,CAEH6K,CAFG,CAEI2D,CAFJ,CAGHG,CAHG,CAGYF,CAHZ,CAG8BF,CAH9B,CAIH,GAJG;AAKH1D,CALG,CAKI2D,CALJ,CAMHI,CANG,CAOH,GAPG,CAQH/D,CARG,CASH+D,CATG,CAUH,GAVG,CAWH/D,CAXG,CAYHqD,CAZG,CAaH,GAbG,CAcHrD,CAdG,CAcI2D,CAdJ,CAeHN,CAfG,CAgBH,GAhBG,CAiBHrD,CAjBG,CAiBI2D,CAjBJ,CAkBHG,CAlBG,CAkBYD,CAlBZ,CAkB4BD,CAlB5B,CAAAnhB,OAAA,CAmBEsf,CAAA,CAAa,CAClB,GADkB,CAElB/B,CAFkB,CAEX2D,CAFW,CAGlBI,CAHkB,CAGJN,CAHI,CAIlB,GAJkB,CAKlBzD,CALkB,CAKX2D,CALW,CAMlBN,CANkB,CAMNI,CANM,CAAb,CAOL,EA1BG,CALX,GAiCIL,CAIA,EAJapD,CAIb,CAJoB4D,CAIpB,CAJsCF,CAItC,CAHAL,CAGA,EAHarD,CAGb,CAHoB4D,CAGpB,CAHsCF,CAGtC,CAFAI,CAEA,EAFgBL,CAEhB,CAAAtO,CAAA,CAAO,CACH,GADG,CAEH6K,CAFG,CAGH8D,CAHG,CAIH,GAJG,CAKHV,CALG,CAMHU,CANG,CAOH,GAPG,CAQHV,CARG,CASHU,CATG,CASYH,CATZ,CAUH,GAVG,CAWHN,CAXG,CAYHS,CAZG,CAYYH,CAZZ,CAaH,GAbG,CAcHN,CAdG,CAeHS,CAfG,CAgBH,GAhBG,CAiBH9D,CAjBG,CAiBI6D,CAjBJ,CAiBsC,CAjBtC,CAiBoBD,CAjBpB,CAkBHE,CAlBG,CAAArhB,OAAA,CAmBEsf,CAAA,CAAa,CAClB,GADkB,CAElBqB,CAFkB,CAENK,CAFM,CAGlBK,CAHkB,CAIlB,GAJkB,CAKlBT,CALkB,CAKNI,CALM,CAMlBK,CANkB,CAAb,CAOL,EA1BG,CArCX,CAbgBhC,KA8EhB0B,QAAA,CAAkBT,CAAlB,CAAA,CAAwB,CACpB7M,EAAGf,CADiB,CAAxB,CA/EwD,CAlD1C,CA6IlB6O,UAAWA,QAAQ,CAACZ,CAAD,CAAYC,CAAZ,CAAuB3J,CAAvB,CAAiCqJ,CAAjC,CAAuC,CAAA,IAElD/C,EADY8B,IACL9B,KAF2C,CAGlDnH,EAFYiJ,IAENjJ,IAH4C,CAIlDoL,EAHYnC,IAGMnJ,OAJgC,CAKlDA,CALkD,CAMlD5C,CANkD,CAOlD5J,CAPkD,CAQlDD,CAIAwN,EAAJ,EACIvN,CAGA,CAHI,CAAC6T,CAAD,CAAOA,CAAP,CAAaA,CAAb,CAGJ,CAFA9T,CAEA,CAFI,CAAC2M,CAAD,CAAMA,CAAN,CAAYuK,CAAZ,CAAuBvK,CAAvB,CAA6BwK,CAA7B,CAEJ,CADAtN,CACA,CADQ,CAACkO,CAAD,CAAkBA,CAAlB,CAAmCA,CAAnC,CACR,CAAAtL,CAAA,CAAS,CACLyK,CADK,CAELC,CAFK,CAEOD,CAFP,CAfGtB,IAkBRtW,KAHK,CAGY6X,CAHZ,CAJb,GAUIlX,CAOA,CAPI,CAAC6T,CAAD,CAAOA,CAAP,CAAcoD,CAAd,CAAyBpD,CAAzB,CAAgCqD,CAAhC,CAOJ,CANAnX,CAMA,CANI,CAAC2M,CAAD,CAAMA,CAAN,CAAWA,CAAX,CAMJ,CALA9C,CAKA,CALQ,CACJqN,CADI,CAEJC,CAFI,CAEQD,CAFR,CAvBItB,IA0BRtW,KAHI,CAGa6X,CAHb,CAKR,CAAA1K,CAAA,CAAS,CAACsL,CAAD,CAAkBA,CAAlB,CAAmCA,CAAnC,CAjBb,CAmBAlkB,EAAA,CA9BgB+hB,IA8BXoC,OAAL,CAAuB,QAAQ,CAACC,CAAD,CAAQthB,CAAR,CAAW,CACtCshB,CAAA,CAAMpB,CAAN,CAAA,CAAY,CACR5W,EAAGA,CAAA,CAAEtJ,CAAF,CADK,CAERqJ,EAAGA,CAAA,CAAErJ,CAAF,CAFK,CAGRkT,MAAOA,CAAA,CAAMlT,CAAN,CAHC,CAIR8V,OAAQA,CAAA,CAAO9V,CAAP,CAJA,CAAZ,CADsC,CAA1C,CA/BsD,CA7IxC;AA6LlBuhB,eAAgBA,QAAQ,EAAG,CAAA,IACnBtC,EAAY,IADO,CAGnBC,EADmBD,CAAAwB,iBACNvB,WAHM,CAInBvd,EAAQsd,CAAAtd,MAJW,CAKnBkV,EAAWlV,CAAAkV,SALQ,CAMnBlE,EAAWhR,CAAAgR,SANQ,CAOnB6O,CAGJvC,EAAAuC,eAAA,CAA2BA,CAA3B,CAA4C7O,CAAA2G,EAAA,CAAW,WAAX,CAAA/C,KAAA,CAClC,CACFsC,OAAQ,CADN,CAEF4I,WAAY,QAFV,CADkC,CAAA7O,IAAA,EAW5C1V,EAAA,CAAK,CAAC,CAACgiB,CAAF,CAAcA,CAAd,CAA0B,CAACA,CAA3B,CAAL,CAA6C,QAAQ,CAACwC,CAAD,CAAUpT,CAAV,CAAiB,CAClE2Q,CAAAoC,OAAA,CAAiB/S,CAAjB,CAAA,CAA0BqE,CAAA8G,KAAA,EAAAnG,SAAA,CACZ,2BADY,EAEP,CAAV,GAAAhF,CAAA,CAAc,SAAd,CAA0B,UAFT,EAAAsE,IAAA,CAIjB4O,CAJiB,CADwC,CAAtE,CASAvC,EAAA0B,QAAA,CAAoBhO,CAAAL,KAAA,EAAAgB,SAAA,CACN,8BADM,CAAAV,IAAA,CAGX4O,CAHW,CAMpBtkB,EAAA,CAAK,CAAC,CAAD,CAAI,CAAJ,CAAL,CAAa,QAAQ,CAACoR,CAAD,CAAQ,CACzB2Q,CAAAkB,QAAA,CAAkB7R,CAAlB,CAAA,CAA2BqE,CAAAL,KAAA,CACjB2M,CAAAoB,cAAA,CAAwBxJ,CAAxB,CADiB,CAAAN,KAAA,CAIjB,CACFsC,OAAQ,CAARA,CAAYvK,CADV,CAJiB,CAAAgF,SAAA,CAQnB,0DARmB;AAQ0C,CAAC,MAAD,CAAS,OAAT,CAAA,CAAkBhF,CAAlB,CAR1C,CAAAsE,IAAA,CASjB4O,CATiB,CADF,CAA7B,CApCuB,CA7LT,CAqPlBpQ,OAAQA,QAAQ,CAACnT,CAAD,CAAU,CACtB,IAAAiN,QAAA,EAEAR,EAAA,CAAM,CAAA,CAAN,CADmB,IAAA/I,MAAA1D,QACPghB,UAAZ,CAAoC,IAAAhhB,QAApC,CAAkDA,CAAlD,CACA,KAAAyW,KAAA,CAAU,IAAA/S,MAAV,CAJsB,CArPR,CAmQlBuX,OAAQA,QAAQ,CAAC7a,CAAD,CAAMC,CAAN,CAAWqjB,CAAX,CAAkBC,CAAlB,CAAyB,CAAA,IAEjCjgB,EADYsd,IACJtd,MAFyB,CAIjCwZ,CAJiC,CAKjCD,CALiC,CAMjC6F,EALY9B,IAKM8B,gBANe,CAOjCC,CAPiC,CAQjCtjB,EAPYuhB,IAOJvhB,MACRmkB,EAAAA,CAAiBnkB,CAAAokB,KAAA,CAAangB,CAAAjE,MAAA,CAAY,CAAZ,CAAb,CAA8BA,CATd,KAUjCqkB,EATY9C,IASO8C,iBAVc,CAYjCvB,CAZiC,CAajCpG,EAZY6E,IAYD7E,SACXvD,EAAAA,CAAWlV,CAAAkV,SAbf,KAiBImL,EAAWrgB,CAAAjE,MAAA,CAAY,CAAZ,CAAAskB,SAGf,IAAInH,CAAA,IAAAA,WAAJ,EAAwB5d,CAAA,CAAQ0kB,CAAR,CAAxB,CAAA,CAKA,GAAK,CAAAlX,CAAA,CAASpM,CAAT,CAAL,EAAuB,CAAAoM,CAAA,CAASnM,CAAT,CAAvB,CAGI,GAAI8b,CAAJ,CACIuH,CACA,CADQ,CACR,CAAAC,CAAA,CAAQlkB,CAAAwV,MAFZ,KAII,OAhCQ+L,KAoChB9B,KAAA,CAAiBjX,CAAA,CACbxI,CAAAyf,KADa,CAGbxb,CAAAmV,SAHa,CAGIiK,CAHJ,EAGuBlK,CAAA,CAAWlV,CAAAsgB,UAAX,CAA6B,CAHpD,EApCDhD,KA0ChBtW,KAAA,CAAiB6X,CAAjB,CAA6BQ,CAA7B,CAA6C9a,CAAA,CACzCxI,CAAAqD,IADyC,EAExC8V,CAAA,CAAWlV,CAAAugB,WAAX,CAA8BvgB,CAAAsgB,UAFU;AAES,CAFT,CAEalB,CAFb,CAMzCoB,EAAA,CADAtL,CAAJ,CACqBkK,CADrB,CAGqBC,CAHrB,CAGqC,CAHrC,CAGyCD,CAIzCY,EAAA,CAAQzb,CAAA,CAAKyb,CAAL,CAAYjkB,CAAAoU,SAAA,CAAezT,CAAf,CAAoB,CAAA,CAApB,CAAZ,CACRujB,EAAA,CAAQ1b,CAAA,CAAK0b,CAAL,CAAYlkB,CAAAoU,SAAA,CAAexT,CAAf,CAAoB,CAAA,CAApB,CAAZ,CAEHmM,EAAA,CAASkX,CAAT,CAAL,EAA4Clb,QAA5C,GAAwBjG,IAAAG,IAAA,CAASghB,CAAT,CAAxB,GACIA,CACA,CADQ,CACR,CAAAC,CAAA,CAAQO,CAFZ,CAMAva,EAAA,CAASlK,CAAA0kB,QAAA,CAAcT,CAAd,CAAqB,CAAA,CAArB,CACT9Z,EAAA,CAASnK,CAAA0kB,QAAA,CAAcR,CAAd,CAAqB,CAAA,CAArB,CACT,IAAIphB,IAAAG,IAAA,CAASkH,CAAT,CAAkBD,CAAlB,CAAJ,CAAgCoa,CAAhC,CACI,GAAI,IAAAK,YAAJ,CACIV,CAAA,CAAQjkB,CAAAoU,SAAA,CAAejK,CAAf,CAAwBma,CAAxB,CAAkC,CAAA,CAAlC,CADZ,KAEO,IAAI,IAAAM,aAAJ,CACHV,CAAA,CAAQlkB,CAAAoU,SAAA,CAAelK,CAAf,CAAwBoa,CAAxB,CAAkC,CAAA,CAAlC,CADL,KAGH,OAvEQ/C,KA4EhBuB,UAAA,CAAsBhgB,IAAAnC,IAAA,CAASmC,IAAAlC,IAAA,CAASqjB,CAAT,CAAgBC,CAAhB,CAAuB,CAAvB,CAAT,CAAoCpB,CAApC,CA5ENvB,KA6EhBsB,UAAA,CAAsB/f,IAAAnC,IAAA,CAClBmC,IAAAlC,IAAA,CA9EY2gB,IA+ERsD,WAAA,CA/EQtD,IAgFRuB,UADA,CA/EQvB,IAgFcsD,WADtB,CAEA/hB,IAAAnC,IAAA,CAASsjB,CAAT,CAAgBC,CAAhB,CAHJ,CAII,CAJJ,CADkB,CAOlBpB,CAPkB,CA7ENvB,KAuFhB/R,MAAA,CAvFgB+R,IAuFEuB,UAAlB,CAvFgBvB,IAuFwBsB,UAExCC,EAAA,CAAYhgB,IAAAuS,MAAA,CAzFIkM,IAyFOuB,UAAX,CACZD,EAAA,CAAY/f,IAAAuS,MAAA,CA1FIkM,IA0FOsB,UAAX,CAERwB;CAAJ,GA5FgB9C,IA6FZuC,eAAAjL,KAAA,CAA8B,CAC1BkL,WAAY,SADc,CAA9B,CASA,CALAvB,CAKA,CALO9F,CAAA,EAAaS,CAjGRoE,IAiGQpE,WAAb,CAAoC,SAApC,CAAgD,MAKvD,CAtGYoE,IAmGZkC,UAAA,CAAoBZ,CAApB,CAA+BC,CAA/B,CAA0C3J,CAA1C,CAAoDqJ,CAApD,CAGA,CAtGYjB,IAoGZqB,YAAA,CAAsBC,CAAtB,CAAiCC,CAAjC,CAA4C3J,CAA5C,CAAsDqJ,CAAtD,CAEA,CAtGYjB,IAqGZgB,WAAA,CAAqBM,CAArB,CAAgC,CAAhC,CAAmC1J,CAAnC,CAA6CqJ,CAA7C,CACA,CAtGYjB,IAsGZgB,WAAA,CAAqBO,CAArB,CAAgC,CAAhC,CAAmC3J,CAAnC,CAA6CqJ,CAA7C,CAVJ,CA5FgBjB,KAyGZnG,UAAJ,GACQjC,CAAJ,EACIqE,CAQA,CAnHQ+D,IA2GOjJ,IAQf,CAR+B+K,CAQ/B,CAPA5F,CAOA,CAnHQ8D,IA4GQ9B,KAOhB,CAPiC4D,CAOjC,EANKgB,CAAA,EAAqBlM,CAAAgM,CAAAhM,SAArB,CAA+C,CAA/C,EAEIgM,CAAAzD,YAFJ,EAEkC,CAFlC,EAIGyD,CAAAvD,gBAER,EAAAyC,CAAA,CAAkBC,CAAlB,CAAkC,CAAlC,CAAsCD,CAT1C,GAWI7F,CAEA,CAvHQ+D,IAqHOjJ,IAEf,EADK+L,CAAA,CAtHG9C,IAsHgBnJ,OAAnB,CAAsC,CAACiL,CAC5C,EAAA5F,CAAA,CAvHQ8D,IAuHQ9B,KAAhB,CAAiC4D,CAbrC,CAuBA,CAjIY9B,IA0HZnG,UAAAmB,SAAA,CACIkB,CADJ,CAEID,CAFJ,CAGIiH,CAHJ,CAIIpB,CAJJ,CAOA,CAjIY9B,IAiIZnG,UAAA2B,SAAA,CAjIYwE,IAmIRsB,UAFJ,CAE0BS,CAF1B,CAjIY/B,IAoIRuB,UAHJ,CAG0BQ,CAH1B,CAxBJ,CAzGgB/B,KAuIhB7E,SAAA,CAAqB,CAAA,CAnHrB,CArBqC,CAnQvB,CAiZlBoI,eAAgBA,QAAQ,EAAG,CAAA,IACnBvD,EAAY,IADO,CAEnBtd;AAAQsd,CAAAtd,MAFW,CAGnBiE,EAAYjE,CAAAiE,UAHO,CAInB6c,EAAiB,EAJE,CAKnBlH,CALmB,CAMnBgB,CAMJ0C,EAAA1D,iBAAA,CAA6BA,CAA7B,CAAgDA,QAAQ,CAAC5W,CAAD,CAAI,CACxDsa,CAAAyD,YAAA,CAAsB/d,CAAtB,CADwD,CAG5Dsa,EAAA1C,eAAA,CAA2BA,CAA3B,CAA4CA,QAAQ,CAAC5X,CAAD,CAAI,CACpDsa,CAAA0D,UAAA,CAAoBhe,CAApB,CADoD,CAKxD8d,EAAA,CAAiBxD,CAAA2D,eAAA,CAAyB,WAAzB,CAGjBH,EAAAte,KAAA,CACIvH,CAAA,CAASgJ,CAAT,CAAoB,WAApB,CAAiC2V,CAAjC,CADJ,CAEI3e,CAAA,CAASqb,CAAT,CAAc,SAAd,CAAyBsE,CAAzB,CAFJ,CAMIrE,EAAJ,GACIuK,CAAAte,KAAA,CACIvH,CAAA,CAASgJ,CAAT,CAAoB,WAApB,CAAiC2V,CAAjC,CADJ,CAEI3e,CAAA,CAASqb,CAAT,CAAc,UAAd,CAA0BsE,CAA1B,CAFJ,CAIA,CAAAkG,CAAA7iB,OAAA,CAAsBqf,CAAA2D,eAAA,CAAyB,YAAzB,CAAtB,CALJ,CAQA3D,EAAAwD,eAAA,CAA2BA,CAGvBxD,EAAAjhB,OAAJ,EAAwBihB,CAAAjhB,OAAA,CAAiB,CAAjB,CAAxB,EACIykB,CAAAte,KAAA,CACIvH,CAAA,CAASqiB,CAAAjhB,OAAA,CAAiB,CAAjB,CAAAN,MAAT,CAAoC,eAApC,CAAqD,QAAQ,EAAG,CAC5DiE,CAAAsd,UAAA4D,4BAAA,EAD4D,CAAhE,CADJ,CAzCmB,CAjZT,CAuclBD,eAAgBA,QAAQ,CAAChZ,CAAD,CAAY,CAAA,IAC5BqV,EAAY,IADgB,CAE5B6D,EAAS,EACb5lB,EAAA,CAAK,CAAC,QAAD,CAAW,SAAX,CAAL;AAA4B,QAAQ,CAAC6lB,CAAD,CAAO,CACvC7lB,CAAA,CAAK+hB,CAAA,CAAU8D,CAAV,CAAL,CAAsB,QAAQ,CAACC,CAAD,CAAgB1U,CAAhB,CAAuB,CACjDwU,CAAA3e,KAAA,CACIvH,CAAA,CACIomB,CAAA7L,QADJ,CAEIvN,CAFJ,CAGI,QAAQ,CAACjF,CAAD,CAAI,CACRsa,CAAA,CAAU8D,CAAV,CAAiB,WAAjB,CAAA,CAA8Bpe,CAA9B,CAAiC2J,CAAjC,CADQ,CAHhB,CADJ,CADiD,CAArD,CADuC,CAA3C,CAaA,OAAOwU,EAhByB,CAvclB,CAkelBG,gBAAiBA,QAAQ,CAACte,CAAD,CAAI2J,CAAJ,CAAW,CAChC3J,CAAA,CAAI,IAAAhD,MAAA+Z,QAAAC,UAAA,CAA6BhX,CAA7B,CAD4B,KAI5BhD,EADYsd,IACJtd,MAJoB,CAK5BjE,EAFYuhB,IAEJvhB,MALoB,CAM5B6iB,EAHYtB,IAGAsB,UANgB,CAO5B2C,EAJYjE,IAIQ9B,KAPQ,CAQ5B6D,EALY/B,IAKItW,KARY,CAS5BuE,EANY+R,IAMJ/R,MAToB,CAU5BtI,EAASD,CAAAC,OAVmB,CAW5Bue,CAKAxhB,EAAAkV,SAAJ,GACIjS,CACA,CADSD,CAAA8X,OACT,CAAAyG,CAAA,CAfYjE,IAeQjJ,IAFxB,CAKc,EAAd,GAAI1H,CAAJ,EAlBgB2Q,IAoBZnD,cAEA,CAF0BlX,CAE1B,CAtBYqa,IAqBZsD,WACA,CADuBrV,CACvB,CAtBY+R,IAsBZmE,WAAA,CAAuBxe,CAAvB,CAAgC2b,CAJpC,GAOIpD,CAOA,CAPOvY,CAOP,CAPgBse,CAOhB,CAPoChW,CAOpC,CAP4C,CAO5C,CANc,CAAd,GAAIoB,CAAJ,CACI6O,CADJ,CACW3c,IAAAlC,IAAA,CAAS,CAAT,CAAY6e,CAAZ,CADX,CAEqB,CAFrB,GAEW7O,CAFX,EAE0B6O,CAF1B,CAEiCjQ,CAFjC,EAE0C8T,CAF1C,GAGI7D,CACA,CADO6D,CACP,CADuB9T,CACvB,CAAAiW,CAAA,CA9BQlE,IA8BGoE,iBAAA,EAAA3f,QAJf,CAMA,CAAIyZ,CAAJ,GAAaoD,CAAb,GAhCYtB,IAiCRsD,WAGA,CAHuBrV,CAGvB,CADAoW,CACA,CADM5lB,CAAA+H,aAAA,CAAmB0X,CAAnB;AAAyBA,CAAzB,CAAgCjQ,CAAhC,CAAuC,IAAvC,CAA6CiW,CAA7C,CACN,CAAAxhB,CAAAjE,MAAA,CAAY,CAAZ,CAAAgI,YAAA,CACIlF,IAAAnC,IAAA,CAASilB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CADJ,CAEIkC,IAAAlC,IAAA,CAASglB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CAFJ,CAGI,CAAA,CAHJ,CAII,IAJJ,CAKI,CACIqH,QAAS,WADb,CALJ,CAJJ,CAdJ,CArBgC,CAlelB,CA6hBlB4d,iBAAkBA,QAAQ,CAAC5e,CAAD,CAAI2J,CAAJ,CAAW,CAC7B,IAAA3M,MAAA+Z,QAAAC,UAAA,CAA6BhX,CAA7B,CAGAhD,EAAAA,CADYsd,IACJtd,MAJqB,KAK7B6hB,EAAY7hB,CAAAjE,MAAA,CAAY,CAAZ,CALiB,CAQ7B+lB,EAAW9hB,CAAAkV,SAAX4M,EAA6B,CAACD,CAAAvF,SAA9BwF,EACC,CAAC9hB,CAAAkV,SADF4M,EACoBD,CAAAvF,SAEV,EAAd,GAAI3P,CAAJ,EARgB2Q,IAUZoD,YAEA,CAFwB,CAAA,CAExB,CAZYpD,IAWZyE,eACA,CAZYzE,IAWeuB,UAC3B,CAZYvB,IAYZ0E,aAAA,CAAyBF,CAAA,CAAUD,CAAAnlB,IAAV,CAA0BmlB,CAAAllB,IAJvD,GARgB2gB,IAeZqD,aAEA,CAFyB,CAAA,CAEzB,CAjBYrD,IAgBZyE,eACA,CAjBYzE,IAgBesB,UAC3B,CAjBYtB,IAiBZ0E,aAAA,CAAyBF,CAAA,CAAUD,CAAAllB,IAAV,CAA0BklB,CAAAnlB,IATvD,CAYAsD,EAAA4D,WAAA,CAAmB,IAvBc,CA7hBnB,CA0jBlBmd,YAAaA,QAAQ,CAAC/d,CAAD,CAAI,CAAA,IACjBsa,EAAY,IADK,CAEjBtd,EAAQsd,CAAAtd,MAFS;AAGjBwb,EAAO8B,CAAA9B,KAHU,CAIjB6D,EAAgB/B,CAAA+B,cAJC,CAKjB9T,EAAQ+R,CAAA/R,MALS,CAMjBkW,EAAanE,CAAAmE,WANI,CAOjBvM,EAAWlV,CAAAkV,SAMVlS,EAAAoX,QAAL,EAAyC,CAAzC,GAAkBpX,CAAAoX,QAAA,CAAU,CAAV,CAAA6H,MAAlB,GAEIjf,CA2CA,CA3CIhD,CAAA+Z,QAAAC,UAAA,CAAwBhX,CAAxB,CA2CJ,CA1CAC,CA0CA,CA1CSD,CAAAC,OA0CT,CAvCIiS,CAuCJ,GAtCIsG,CACA,CADO8B,CAAAjJ,IACP,CAAApR,CAAA,CAASD,CAAA8X,OAqCb,EAjCIwC,CAAAoD,YAAJ,EACIpD,CAAApE,WACA,CADuB,CAAA,CACvB,CAAAoE,CAAA/F,OAAA,CACI,CADJ,CAEI,CAFJ,CAGItU,CAHJ,CAGauY,CAHb,CAII8B,CAAAyE,eAJJ,CAFJ,EASWzE,CAAAqD,aAAJ,EACHrD,CAAApE,WACA,CADuB,CAAA,CACvB,CAAAoE,CAAA/F,OAAA,CACI,CADJ,CAEI,CAFJ,CAGI+F,CAAAyE,eAHJ,CAII9e,CAJJ,CAIauY,CAJb,CAFG,EASI8B,CAAAnD,cATJ,GAUHmD,CAAApE,WAOA,CAPuB,CAAA,CAOvB,CANIjW,CAAJ,CAAawe,CAAb,CACIxe,CADJ,CACawe,CADb,CAEWxe,CAFX,CAEoBoc,CAFpB,CAEoCoC,CAFpC,CAEiDlW,CAFjD,GAGItI,CAHJ,CAGaoc,CAHb,CAG6BoC,CAH7B,CAG0ClW,CAH1C,CAMA,CAAA+R,CAAA/F,OAAA,CACI,CADJ,CAEI,CAFJ,CAGItU,CAHJ,CAGawe,CAHb,CAIIxe,CAJJ,CAIawe,CAJb,CAI0BlW,CAJ1B,CAjBG,CAwBP,CAAI+R,CAAApE,WAAJ,EAA4BoE,CAAAnG,UAA5B,EAAmDmG,CAAAnG,UAAA7a,QAAAwa,WAAnD,GACI9T,CAAA0X,QACA,CADY1X,CAAAqJ,KACZ,CAAA6V,UAAA,CAAW,QAAQ,EAAG,CAClB5E,CAAA0D,UAAA,CAAoBhe,CAApB,CADkB,CAAtB,CAEG,CAFH,CAFJ,CA7CJ,CAbqB,CA1jBP;AAioBlBge,UAAWA,QAAQ,CAAChe,CAAD,CAAI,CAAA,IAEfhD,EADYsd,IACJtd,MAFO,CAGfjE,EAFYuhB,IAEJvhB,MAHO,CAIfob,EAHYmG,IAGAnG,UAJG,CAKfgL,CALe,CAMfX,CANe,CAQf7G,EAAW3X,CAAA2X,SAAXA,EAAyB3X,CAE7B,EAIKkW,CAbWoE,IAaXpE,WAJL,EAI+B/B,CAJ/B,EAI6CA,CAAA+B,WAJ7C,GAKkB,WALlB,GAKIlW,CAAAgB,QALJ,GATgBsZ,IAiBRsB,UAAJ,GAjBYtB,IAiBgByE,eAA5B,CACII,CADJ,CAjBY7E,IAkBG0E,aADf,CAjBY1E,IAmBDuB,UAFX,GAjBYvB,IAmBuByE,eAFnC,GAGIP,CAHJ,CAjBYlE,IAoBG0E,aAHf,CAgBA,CAjCY1E,IAuBRuB,UAUJ,GAjCYvB,IAuBgBtW,KAU5B,GATIwa,CASJ,CAjCYlE,IAwBGoE,iBAAA,EAAA3f,QASf,EAPA4f,CAOA,CAPM5lB,CAAA+H,aAAA,CA1BMwZ,IA2BRsB,UADE,CA1BMtB,IA4BRuB,UAFE,CAGFsD,CAHE,CAIFX,CAJE,CAON,CAAIlmB,CAAA,CAAQqmB,CAAAjlB,IAAR,CAAJ,EACIsD,CAAAjE,MAAA,CAAY,CAAZ,CAAAgI,YAAA,CACIlF,IAAAnC,IAAA,CAASilB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CADJ,CAEIkC,IAAAlC,IAAA,CAASglB,CAAAjlB,IAAT,CAAkBilB,CAAAhlB,IAAlB,CAFJ,CAGI,CAAA,CAHJ,CAlCQ2gB,IAsCJpE,WAAA,CAAuB,CAAA,CAAvB,CAA+B,IAJnC,CAKI,CACIlV,QAAS,WADb;AAEIoe,UAAW,gBAFf,CAGIzH,SAAUA,CAHd,CALJ,CAzBR,CAuCkB,YAAlB,GAAI3X,CAAA0X,QAAJ,GAhDgB4C,IAiDZoD,YADJ,CAhDgBpD,IAiDYqD,aAD5B,CAhDgBrD,IAkDRnD,cAFR,CAhDgBmD,IAkDkBsD,WAFlC,CAhDgBtD,IAmDR0E,aAHR,CAhDgB1E,IAmDiByE,eAHjC,CAhDgBzE,IAoDRpE,WAJR,CAhDgBoE,IAoDemE,WAJ/B,CAIsD,IAJtD,CAjDmB,CAjoBL,CA6rBlB1F,aAAcA,QAAQ,EAAG,CACjB,IAAA+E,eAAJ,GACIvlB,CAAA,CAAK,IAAAulB,eAAL,CAA0B,QAAQ,CAACuB,CAAD,CAAS,CACvCA,CAAA,EADuC,CAA3C,CAGA,CAAA,IAAAvB,eAAA,CAAsB/iB,IAAAA,EAJ1B,CAMA,KAAAukB,uBAAA,EAPqB,CA7rBP,CA0sBlBA,uBAAwBA,QAAQ,EAAG,CAC/B,IAAIC,EAAa,IAAAA,WAAbA,EAAgC,EAChC,KAAAnC,iBAAJ,EAA6BmC,CAAA,CAAW,CAAX,CAA7B,EAA2F,CAAA,CAA3F,GAA8C,IAAAzD,iBAAA0D,mBAA9C,GACIjnB,CAAA,CAAKgnB,CAAL,CAAiB,QAAQ,CAAClmB,CAAD,CAAS,CAC9Boa,CAAA,CAAYpa,CAAZ;AAAoB,aAApB,CAAmC,IAAAomB,mBAAnC,CAD8B,CAAlC,CAEG,IAFH,CAKA,CAAIF,CAAA,CAAW,CAAX,CAAAxmB,MAAJ,EACI0a,CAAA,CAAY8L,CAAA,CAAW,CAAX,CAAAxmB,MAAZ,CAAiC,eAAjC,CAAkD,IAAA2mB,uBAAlD,CAPR,CAF+B,CA1sBjB,CA2tBlB3P,KAAMA,QAAQ,CAAC/S,CAAD,CAAQ,CAAA,IACd2iB,EAAe3iB,CAAA1D,QADD,CAEdwiB,EAAmB6D,CAAArF,UAFL,CAGd8C,EAAmBtB,CAAA3c,QAHL,CAIdygB,EAAmBD,CAAAxL,UAJL,CAKd0L,EAAmBD,CAAAzgB,QALL,CAMdgS,EAASiM,CAAA,CAAmBtB,CAAA3K,OAAnB,CAA6C,CANxC,CAOdiL,EAAkByD,CAAA,CAAmBD,CAAAzO,OAAnB,CAA6C,CAEnE,KAAAqK,QAAA,CAAe,EACf,KAAAkB,OAAA,CAAc,EAEd,KAAA1f,MAAA,CAAaA,CACb,KAAA8iB,cAAA,EAEA,KAAA3O,OAAA,CAAcA,CACd,KAAAiL,gBAAA,CAAuBA,CACvB,KAAAyD,iBAAA,CAAwBA,CACxB,KAAAzC,iBAAA,CAAwBA,CACxB,KAAAtB,iBAAA,CAAwBA,CACxB,KAAA8D,iBAAA,CAAwBA,CACxB,KAAAzD,cAAA,CAAqBhL,CAArB,CAA8BiL,CAE9B,KAAAlL,SAAA,CAAgB3P,CAAA,CAAKua,CAAA5K,SAAL,CAAgC,CAACkM,CAAjC,EAAqDpgB,CAAAkV,SAArD,CAvBE,KAyBdoI;AAAY,IAzBE,CA0BdiF,EAAajF,CAAAiF,WA1BC,CA2BdQ,EAAa/iB,CAAAjE,MAAA+B,OA3BC,CA4BdklB,EAAahjB,CAAAsE,MAAAxG,OA5BC,CA6BdmlB,EAAYV,CAAZU,EAA0BV,CAAA,CAAW,CAAX,CAA1BU,EAA2CV,CAAA,CAAW,CAAX,CAAAxmB,MAA3CknB,EAAkEjjB,CAAAjE,MAAA,CAAY,CAAZ,CAGtEiE,EAAAkjB,YAAA,CAAoB,CAChB7W,KAAMiR,CAAApJ,SAAA,CAAqB,SAArB,CAAiC,cADvB,CAEhBpN,OAAQsZ,CAAA,EAAqBlL,CAAAlV,CAAAkV,SAArB,CAAsCoI,CAAA6B,cAAtC,CAAgE,CAAxErY,EAA6EgY,CAAA9H,OAF7D,CAIhBhX,EAAAkV,SAAJ,GACIlV,CAAAkjB,YAAA7W,KADJ,CAC6BiR,CAAApJ,SAAA,CAAqB,aAArB,CAAqC,UADlE,CAGAlU,EAAAmjB,WAAA,CAAmB,CAAA,CAEf7F,EAAA8C,iBAAJ,EAEI9C,CAAAvhB,MAyDA,CAzDkB,IAAIb,CAAJ,CAAS8E,CAAT,CAAgB+I,CAAA,CAAM,CAEpClL,OAAQolB,CAAA3mB,QAAAuB,OAF4B,CAGpCtB,QAAS0mB,CAAA3mB,QAAAC,QAH2B,CAAN,CAI/BuiB,CAAA/iB,MAJ+B,CAIP,CACvB4hB,GAAI,kBADmB,CAEvBrZ,MAAO,kBAFgB,CAGvB8e,IAAK,CAAA,CAHkB,CAIvB/W,KAAM,UAJiB,CAKvBM,MAAOoW,CALgB,CAMvB3O,OAAQ,CANe,CAOvB9T,mBAAoB,CAAA,CAPG,CAQvB4b,YAAa,CAAA,CARU;AASvBC,UAAW,CAAA,CATY,CAUvBgC,WAAY,CAVW,CAWvBC,WAAY,CAXW,CAYvBiF,YAAa,CAAA,CAZU,CAJO,CAiB/BrjB,CAAAkV,SAAA,CAAiB,CAChBoO,QAAS,CAAClE,CAAD,CAAkB,CAAlB,CAAqB,CAACA,CAAtB,CAAuC,CAAvC,CADO,CAEhB7N,MAAO4C,CAFS,CAAjB,CAGC,CACAmP,QAAS,CAAC,CAAD,CAAI,CAAClE,CAAL,CAAsB,CAAtB,CAAyBA,CAAzB,CADT,CAEAjL,OAAQA,CAFR,CApB8B,CAAhB,CAyDlB,CAhCAmJ,CAAAhZ,MAgCA,CAhCkB,IAAIpJ,CAAJ,CAAS8E,CAAT,CAAgB+I,CAAA,CAAM+V,CAAAxa,MAAN,CAA8B,CAC5DqZ,GAAI,kBADwD,CAE5D4F,WAAY,CAAA,CAFgD,CAG5DnP,OAAQ,CAHoD,CAI5DzH,MAAOqW,CAJqD,CAK5DK,YAAa,CAAA,CAL+C,CAA9B,CAM/BrjB,CAAAkV,SAAA,CAAiB,CAChB3D,MAAO4C,CADS,CAAjB,CAEC,CACAA,OAAQA,CADR,CAR8B,CAAhB,CAgClB,CAnBIoO,CAAJ,EAAkBzD,CAAAziB,OAAAuL,KAAlB,CACI0V,CAAAkG,cAAA,EADJ,CAImC,CAJnC,GAIWxjB,CAAA3D,OAAAyB,OAJX,EAMInC,CAAA,CAAKqE,CAAL,CAAY,QAAZ,CAAsB,QAAQ,CAAClE,CAAD,CAAUsK,CAAV,CAAqB,CAErB,CAA1B,CAAIpG,CAAA3D,OAAAyB,OAAJ,EAAgCzB,CAAAihB,CAAAjhB,OAAhC,GACIihB,CAAAwF,cAAA,EACA,CAAA9iB,CAAAmG,OAAA,CAAerK,CAFnB,CAIAA,EAAAK,KAAA,CAAa6D,CAAb,CAAoBoG,CAApB,CAN+C,CAAnD,CAaJ,CAFAkX,CAAAsC,eAAA,EAEA,CAAAtC,CAAAuD,eAAA,EA3DJ,EA+DIvD,CAAAvhB,MA/DJ,CA+DsB,CACd2C,UAAWA,QAAQ,CAACoI,CAAD,CAAQgb,CAAR,CAAiB,CAAA,IAC5BriB,EAAOO,CAAAjE,MAAA,CAAY,CAAZ,CADqB;AAE5B4lB,EAAMliB,CAAAC,YAAA,EAFsB,CAG5B+jB,EAAmBhkB,CAAAL,IAAnBqkB,CAA8B,CAA9BA,CAAkCrE,CAHN,CAI5B1iB,EAAMygB,CAAA,CAAO,KAAP,CAAc1d,CAAAnD,QAAAI,IAAd,CAAgCilB,CAAA7f,QAAhC,CAJsB,CAK5B4hB,EAAavG,CAAA,CAAO,KAAP,CAAc1d,CAAAnD,QAAAK,IAAd,CAAgCglB,CAAA5f,QAAhC,CAAb2hB,CAA4DhnB,CAEhE,OAAOolB,EAAA,CAEFhb,CAFE,CAEM4c,CAFN,CAEmBD,CAFnB,CAEuC/mB,CAFvC,CAIH+mB,CAJG,EAIiB3c,CAJjB,CAIyBpK,CAJzB,EAIgCgnB,CAXP,CADtB,CAcdvT,SAAUA,QAAQ,CAACrJ,CAAD,CAAQ,CACtB,MAAO,KAAApI,UAAA,CAAeoI,CAAf,CADe,CAdZ,CAiBd2Z,QAASA,QAAQ,CAAC3Z,CAAD,CAAQ,CACrB,MAAO,KAAApI,UAAA,CAAeoI,CAAf,CAAsB,CAAA,CAAtB,CADc,CAjBX,CAoBdhD,aAAc5I,CAAAW,UAAAiI,aApBA,CAqBdqc,KAAM,CAAA,CArBQ,CA2BlBngB,EAAA1D,QAAA6a,UAAAhV,QAAJ,GACInC,CAAAmX,UAQA,CARkBmG,CAAAnG,UAQlB,CARwC,IAAIhB,CAAJ,CACpCnW,CAAAgR,SADoC,CAEpCjI,CAAA,CAAM/I,CAAA1D,QAAA6a,UAAN,CAA+B,CAC3BH,OAAQsG,CAAA8C,iBAAA,CAA6B,CAA7B,CAAiC,EADd,CAE3BhJ,SAAUpX,CAAAkV,SAFiB,CAA/B,CAFoC,CAMpClV,CANoC,CAQxC,CAAA/E,CAAA,CAASqiB,CAAAnG,UAAT,CAA8B,SAA9B,CAAyC,QAAQ,CAACnU,CAAD,CAAI,CAAA,IAC7CuI,EAAQ+R,CAAAtW,KADqC,CAE7ChC,EAAKuG,CAALvG,CAAa,IAAAA,GAFgC,CAG7CD,EAAOwG,CAAPxG,CAAe,IAAAA,KAEnBuY,EAAApE,WAAA;AAAuBoE,CAAAnG,UAAA+B,WACvBoE,EAAA/F,OAAA,CAAiB,CAAjB,CAAoB,CAApB,CAAuBxS,CAAvB,CAA6BC,CAA7B,CAEA,EAAIhF,CAAA1D,QAAA6a,UAAAL,WAAJ,EAAwD,WAAxD,GAA0C9T,CAAA0X,QAA1C,GACIwH,UAAA,CAAW,QAAQ,EAAG,CAClB5E,CAAA0D,UAAA,CAAoBhe,CAApB,CADkB,CAAtB,CAT6C,CAArD,CATJ,CA0BAsa,EAAAqG,oBAAA,EAEArG,EAAAsG,eAAA,EA/JkB,CA3tBJ,CAk4BlBlC,iBAAkBA,QAAQ,CAACmC,CAAD,CAA4B,CAAA,IAC9CC,EAAW,IAAA9jB,MAAAjE,MAAA,CAAiB,CAAjB,CADmC,CAE9CgoB,EAAU,IAAAhoB,MAFoC,CAG9CioB,EAAiBD,CAAAznB,QAH6B,CAI9C2nB,EAAkBH,CAAAxnB,QAJ4B,CAK9C2E,CAEC4iB,EAAL,EAAuD,IAAvD,GAAkCC,CAAAhiB,QAAlC,GACIb,CADJ,CACU,CACFa,QAASyC,CAAA,CACLyf,CADK,EACaA,CAAAtnB,IADb,CAELygB,CAAA,CACI,KADJ,CAEI8G,CAAAvnB,IAFJ,CAGIonB,CAAAhiB,QAHJ,CAIIiiB,CAAAjiB,QAJJ,CAKIiiB,CAAArnB,IALJ,CAFK,CADP,CAWFqF,QAASwC,CAAA,CACLyf,CADK,EACaA,CAAArnB,IADb,CAELwgB,CAAA,CACI,KADJ,CAEI8G,CAAAtnB,IAFJ,CAGImnB,CAAA/hB,QAHJ,CAIIgiB,CAAAhiB,QAJJ,CAKIgiB,CAAApnB,IALJ,CAFK,CAXP,CADV,CAwBA,OAAOsE,EA/B2C,CAl4BpC,CAy6BlB6hB,cAAeA,QAAQ,CAACoB,CAAD,CAAoB,CAAA,IACnClkB,EAAQ,IAAAA,MAD2B,CAEnCuiB,CAEJ2B,EAAA,CAAoBA,CAApB,EAAyClkB,CAAA1D,QAAzC,EAA0D0D,CAAA1D,QAAAghB,UAAAiF,WAA1D;AAAgG,CAG5F,KAAAlmB,OAAJ,GACI,IAAAimB,uBAAA,EACA,CAAA/mB,CAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAAC8nB,CAAD,CAAI,CAC1BA,CAAA5a,QAAA,EAD0B,CAA9B,CAFJ,CAOAgZ,EAAA,CAAa,IAAAA,WAAb,CAA+B,EAG/BhnB,EAAA,CAAKyE,CAAA3D,OAAL,EAAqB,EAArB,CAAyB,QAAQ,CAACA,CAAD,CAASgC,CAAT,CAAY,CACzC,CAAIhC,CAAAC,QAAA8nB,gBAAJ,GAAuC/lB,CAAvC,GAA6C6lB,CAA7C,EAAkE7nB,CAAAC,QAAAqhB,GAAlE,GAAwFuG,CAAxF,GACuC,CAAA,CADvC,GACI7nB,CAAAC,QAAA8nB,gBADJ,GAEI7B,CAAA/f,KAAA,CAAgBnG,CAAhB,CAHqC,CAA7C,CAQI,KAAAN,MAAJ,EAAmBokB,CAAA,IAAApkB,MAAAokB,KAAnB,EACI,IAAAqD,cAAA,EA1BmC,CAz6BzB,CA08BlBA,cAAeA,QAAQ,EAAG,CAAA,IAClBlG,EAAY,IADM,CAElBtd,EAAQsd,CAAAtd,MAFU,CAGlBqkB,EAAkB/G,CAAAjhB,OAAlBgoB,CAAqC,EAHnB,CAIlB9B,EAAajF,CAAAiF,WAJK,CAKlB+B,CALkB,CAMlBC,CANkB,CAOlBC,EAAwBlH,CAAAwB,iBAAAziB,OAPN,CAQlBooB,CARkB,CASlBC,EAAiB,CACbC,oBAAqB,CAAA,CADR,CAEbhY,MAAO,IAFM,CAGbuE,MAAO,KAHM,CAIb0T,SAAU,CAAA,CAJG,CAKb7oB,MAAO,kBALM,CAMbuI,MAAO,kBANM;AAObugB,aAAc,CAAA,CAPD,CAQbC,SAAU,CAAA,CARG,CASbC,WAAY,CAAA,CATC,CAUb9kB,QAAS,CAAA,CAVI,CAcjBsiB,EAAJ,CACIhnB,CAAA,CAAKgnB,CAAL,CAAiB,QAAQ,CAACyC,CAAD,CAAO3mB,CAAP,CAAU,CAC/BqmB,CAAAtD,KAAA,CAAsB,YAAtB,EAAsC/iB,CAAtC,CAA0C,CAA1C,CAEAimB,EAAA,CAAcU,CAAA1oB,QAAd,EAA8B,EAC9BmoB,EAAA,CAAuBH,CAAAxF,iBAAvB,EAAuD,EACvDyF,EAAA,CAAyBxb,CAAA,CAAMub,CAAN,CAAmBI,CAAnB,CAAmCF,CAAnC,CAA0DC,CAA1D,CAGrBQ,EAAAA,CAAsBR,CAAA7c,KAAtBqd,EAAmDT,CAAA5c,KACvD0V,EAAA4H,iBAAA,CAA6B5H,CAAA4H,iBAA7B,EAA2D,CAAED,CAAAA,CAC7DV,EAAA3c,KAAA,CAA8Bqd,CAA9B,EAAqDX,CAAA1c,KAArD,EAAyE0c,CAAA1c,KAAA1L,MAAA,CAAuB,CAAvB,CAGzE8oB,EAAAX,gBAAA,CAAuBrkB,CAAAmlB,WAAA,CAAiBZ,CAAjB,CACvBF,EAAA7hB,KAAA,CAAqBwiB,CAAAX,gBAArB,CAd+B,CAAnC,CADJ,EAmBIE,CAGA,CAHyBxb,CAAA,CAAMyb,CAAN,CAA6BE,CAA7B,CAGzB,CAFAH,CAAA3c,KAEA,CAF8B4c,CAAA5c,KAE9B,CADA0V,CAAA4H,iBACA,CAD6B,CAAEtd,CAAA2c,CAAA3c,KAC/B,CAAAyc,CAAA7hB,KAAA,CAAqBxC,CAAAmlB,WAAA,CAAiBZ,CAAjB,CAArB,CAtBJ,CAyBA,KAAAZ,oBAAA,EAhDsB,CA18BR,CAigClBA,oBAAqBA,QAAQ,EAAG,CAAA,IACxBrG,EAAY,IADY,CAExBiF,EAAajF,CAAAiF,WAAbA,EAAqC,EAGrCA,EAAA,CAAW,CAAX,CAAJ,EAAqBA,CAAA,CAAW,CAAX,CAAAxmB,MAArB,EACId,CAAA,CAASsnB,CAAA,CAAW,CAAX,CAAAxmB,MAAT;AAA8B,eAA9B,CAA+C,IAAA2mB,uBAA/C,CAG6C,EAAA,CAAjD,GAAI,IAAA5D,iBAAA0D,mBAAJ,EAGIjnB,CAAA,CAAKgnB,CAAL,CAAiB,QAAQ,CAACyC,CAAD,CAAO,CACxBA,CAAAjpB,MAAJ,EACId,CAAA,CAAS+pB,CAAT,CAAe,aAAf,CAA8B,IAAAvC,mBAA9B,CAIJxnB,EAAA,CAAS+pB,CAAT,CAAe,QAAf,CAAyB,QAAQ,EAAG,CAC5B,IAAAX,gBAAJ,GACIrH,CAAA,CAAMM,CAAAjhB,OAAN,CAAwB,IAAAgoB,gBAAxB,CAEA,CADA,IAAAA,gBAAAe,OAAA,CAA4B,CAAA,CAA5B,CACA,CAAA,OAAO,IAAAf,gBAHX,CADgC,CAApC,CAN4B,CAAhC,CAaG,IAbH,CAZwB,CAjgCd,CAmiClBnD,4BAA6BA,QAAQ,EAAG,CAAA,IAChCnlB,EAAQ,IAAAA,MADwB,CAEhCspB,CAEAtpB,EAAA2D,YAAJ,GACI2lB,EAAAA,CAAAA,CAAgB,IAAA3D,iBAAA,CAAsB,CAAA,CAAtB,CAAhB2D,CADJ,EAE0BA,CAAAvjB,QAF1B,GAEoD/F,CAAAW,IAFpD,EAEiE2oB,CAAAtjB,QAFjE,GAE2FhG,CAAAY,IAF3F,GAGQZ,CAAAW,IACA,CADY2oB,CAAAvjB,QACZ,CAAA/F,CAAAY,IAAA,CAAY0oB,CAAAtjB,QAJpB,EAJoC,CAniCtB,CAmjClB2gB,uBAAwBA,QAAQ,EAAG,CAAA,IAE3BpF;AADYuE,IACA7hB,MAAAsd,UAFe,CAG3BgI,EAFYzD,IAEGniB,YAAA,EAHY,CAM3B6lB,EAAcD,CAAAxjB,QANa,CAO3B0jB,EAAcF,CAAAvjB,QAPa,CAQ3BwJ,EAHU+Z,CAAA3oB,IAGV4O,CAJU+Z,CAAA5oB,IAJiB,CAS3B+oB,EAAanI,CAAAmI,WATc,CAU3BC,EAAapI,CAAAoI,WAVc,CAW3Bxf,CAX2B,CAY3BD,CAZ2B,CAa3Boe,EAAkB/G,CAAAjhB,OAAlBgoB,EAAsC/G,CAAAjhB,OAAA,CAAiB,CAAjB,CAbX,CAc3BspB,EAAiB,CAAE5hB,CAbP8d,IAaO9d,YAbP8d,KAiBA+D,UAEhB,EAFuE,qBAEvE,GAnBgB/D,IAiBuB+D,UAAA5hB,QAEvC,GAIQyhB,CAmBJ,GAlBIxf,CACA,CADSsf,CACT,CAAArf,CAAA,CAASD,CAAT,CAAkBsF,CAiBtB,EAZIma,CAYJ,GAXIxf,CACA,CADSsf,CACT,CAAKC,CAAL,GACIxf,CADJ,CACapH,IAAAlC,IAAA,CACLuJ,CADK,CACIqF,CADJ,CAEL8Y,CAAA,EAAmBA,CAAAriB,MAAnB,CACAqiB,CAAAriB,MAAA,CAAsB,CAAtB,CADA,CAC2B,CAACvE,MAAAC,UAHvB,CADb,CAUJ,EAAIioB,CAAJ,GAAuBF,CAAvB,EAAqCC,CAArC,GACQ5c,CAAA,CAAS7C,CAAT,CADR,GA1CY4b,IA4CJnlB,IACA,CA7CImlB,IA4CYlb,QAChB,CADoCV,CACpC,CA7CI4b,IA6CJllB,IAAA,CA7CIklB,IA6CYjb,QAAhB,CAAoCV,CAH5C,CAvBJ,CAgCAoX,EAAAmI,WAAA,CAAuBnI,CAAAoI,WAAvB,CAA8C,IApDf,CAnjCjB,CA+mClBjD,mBAAoBA,QAAQ,EAAG,CAAA,IACvBnF,EAAY,IAAAtd,MAAAsd,UADW,CAGvB+G,EAAkB,IAAAA,gBAItB/G,EAAAmI,WAAA;AAAuB3c,CAAA,CALNyZ,IAKexmB,MAAAW,IAAT,CAAvB,EALiB6lB,IAKyCxmB,MAAAW,IAA1D,EALiB6lB,IAKiEvgB,MAAA,CAAiB,CAAjB,CAGlFsb,EAAAoI,WAAA,CAAuB7mB,IAAAuS,MAAA,CAAWkM,CAAAuB,UAAX,CAAvB,EAA0DhgB,IAAAuS,MAAA,CAAWkM,CAAAtW,KAAX,CAGtDqd,EAAJ,EAAwBa,CAAA5H,CAAA4H,iBAAxB,GACIb,CAAA/nB,QAAAupB,WACA,CAbatD,IAYwBvgB,MAAA,CAAiB,CAAjB,CACrC,CAAAqiB,CAAAyB,QAAA,CAbavD,IAaWjmB,QAAAsL,KAAxB,CAAiD,CAAA,CAAjD,CAAwD,IAAxD,CAA8D,CAAA,CAA9D,CAFJ,CAb2B,CA/mCb,CAqoClBgc,eAAgBA,QAAQ,EAAG,CACvB3oB,CAAA,CAAS,IAAA+E,MAAT,CAAqB,QAArB,CAA+B,QAAQ,EAAG,CAAA,IAElCsd,EAAY,IAAAA,UAFsB,CAGlCvhB,EAAQuhB,CAARvhB,GACIuhB,CAAAiF,WADJxmB,EAEIuhB,CAAAiF,WAAA,CAAqB,CAArB,CAFJxmB,EAGIuhB,CAAAiF,WAAA,CAAqB,CAArB,CAAAxmB,MAHJA,EAIIuhB,CAAAnG,UAJJpb,EAI2B,IAAAA,MAAA,CAAW,CAAX,CAJ3BA,CAOAA,EAAJ,EACIuhB,CAAA/F,OAAA,CAAiBxb,CAAAW,IAAjB,CAA4BX,CAAAY,IAA5B,CAXkC,CAA1C,CADuB,CAroCT,CAypClB4M,QAASA,QAAQ,EAAG,CAGhB,IAAAwS,aAAA,EAEI,KAAAhgB,MAAJ,GACIihB,CAAA,CAAM,IAAAhd,MAAAjE,MAAN,CAAwB,IAAAA,MAAxB,CACA,CAAAihB,CAAA,CAAM,IAAAhd,MAAA+lB,KAAN;AAAuB,IAAAhqB,MAAvB,CAFJ,CAII,KAAAuI,MAAJ,GACI0Y,CAAA,CAAM,IAAAhd,MAAAsE,MAAN,CAAwB,IAAAA,MAAxB,CACA,CAAA0Y,CAAA,CAAM,IAAAhd,MAAA+lB,KAAN,CAAuB,IAAAzhB,MAAvB,CAFJ,CAKA/I,EAAA,CAAK,IAAAc,OAAL,EAAoB,EAApB,CAAwB,QAAQ,CAAC8nB,CAAD,CAAI,CAC5BA,CAAA5a,QAAJ,EACI4a,CAAA5a,QAAA,EAF4B,CAApC,CAOAhO,EAAA,CAAK,mHAAA,MAAA,CAAA,GAAA,CAAL,CAIG,QAAQ,CAACygB,CAAD,CAAO,CACV,IAAA,CAAKA,CAAL,CAAJ,EAAkB,IAAA,CAAKA,CAAL,CAAAzS,QAAlB,EACI,IAAA,CAAKyS,CAAL,CAAAzS,QAAA,EAEJ,KAAA,CAAKyS,CAAL,CAAA,CAAa,IAJC,CAJlB,CASG,IATH,CAYAzgB,EAAA,CAAK,CAAC,IAAAijB,QAAD,CAAL,CAAqB,QAAQ,CAACwH,CAAD,CAAO,CAChC3P,CAAA,CAAwB2P,CAAxB,CADgC,CAApC,CAEG,IAFH,CAjCgB,CAzpCF,CAgsCtBhrB,EAAA+hB,UAAA,CAAcA,CAMdphB,EAAA,CAAKT,CAAAW,UAAL,CAAqB,MAArB,CAA6B,QAAQ,CAACC,CAAD,CAAUmK,CAAV,CAAkBC,CAAlB,CAA0B,CAAA,IACvDlG,EAAQ,IAAAA,MAD+C,CAEvD2iB,EAAe3iB,CAAA1D,QAFwC,CAGvD2pB,EAAWtD,CAAA3iB,MAAAimB,SAH4C,CAKvD3I,EAAYqF,CAAArF,UAL2C;AAMvD4I,EAAgBvD,CAAAuD,cANuC,CAOvDjlB,CAEA,KAAApB,QAAJ,GAAsByd,CAAtB,EAAmCA,CAAAnb,QAAnC,EACS+jB,CADT,EAC0BA,CAAA/jB,QAD1B,IAKqB,GAAjB,GAAI8jB,CAAJ,CACIjmB,CAAAmmB,gBADJ,CAC4B,SAD5B,CAIwB,GAAjB,GAAIF,CAAJ,CACHhlB,CADG,CACG,CAAA,CADH,CAKiB,IALjB,GAKIglB,CALJ,GAMHG,CACA,CADe,IAAAA,aACf,CAAI9qB,CAAA,CAAQ2K,CAAR,CAAJ,CACI,IAAAmgB,aADJ,CACwB,CAAC,IAAA1pB,IAAD,CAAW,IAAAC,IAAX,CADxB,CAEWypB,CAFX,GAGIngB,CAEA,CAFSmgB,CAAA,CAAa,CAAb,CAET,CADAlgB,CACA,CADSkgB,CAAA,CAAa,CAAb,CACT,CAAA,OAAO,IAAAA,aALX,CAPG,CATX,CA0BA,OAAeroB,KAAAA,EAAR,GAAAkD,CAAA,CAAoBA,CAApB,CAA0BnF,CAAAK,KAAA,CAAa,IAAb,CAAmB8J,CAAnB,CAA2BC,CAA3B,CAnC0B,CAA/D,CAuCAvK,EAAA,CAAKR,CAAAU,UAAL,CAAsB,MAAtB,CAA8B,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB+pB,CAAnB,CAA6B,CAE/DprB,CAAA,CAAS,IAAT,CAAe,cAAf,CAA+B,QAAQ,EAAG,CACtC,IAAIqB,EAAU,IAAAA,QACd,IAAIA,CAAAghB,UAAAnb,QAAJ,EAAiC7F,CAAA6a,UAAAhV,QAAjC,CACI,IAAAuV,SAAA,CAAgB,IAAA4F,UAAhB,CAAiC,IAAIP,CAAJ,CAAc,IAAd,CAHC,CAA1C,CAOAjhB,EAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B+pB,CAA5B,CAT+D,CAAnE,CAkBA1qB,EAAA,CAAKR,CAAAU,UAAL,CAAsB,cAAtB,CAAsC,QAAQ,CAACC,CAAD,CAAU,CAAA,IAEhDwqB;AAAS,IAAAA,OAFuC,CAGhDhJ,EAAY,IAAAA,UAHoC,CAIhD8B,CAJgD,CAKhDmH,CALgD,CAMhDxqB,CANgD,CAOhDuI,CAEJxI,EAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAEIkhB,EAAJ,GACIiJ,CAmBA,CAnBgBD,CAAAhqB,QAmBhB,CAlBAP,CAkBA,CAlBQuhB,CAAAvhB,MAkBR,CAjBAuI,CAiBA,CAjBQgZ,CAAAhZ,MAiBR,CAhBA8a,CAgBA,CAhBkB9B,CAAA8B,gBAgBlB,CAbI,IAAAlK,SAAJ,EACIoI,CAAA9B,KAGA,CAHiB8B,CAAApJ,SAAA,CACb,IAAAsS,WADa,CACKpH,CADL,CACuB9B,CAAAnJ,OADvB,CAEb,IAAAsS,QAAA,CAAa,CAAb,CAFa,CAEKrH,CACtB,CAAA9B,CAAAjJ,IAAA,CAAgB,IAAA/D,QAAhB,CAA+B8O,CAJnC,GAMI9B,CAAA9B,KACA,CADiB,IAAArG,SACjB,CADiCiK,CACjC,CAAA9B,CAAAjJ,IAAA,CAAgBiJ,CAAAwB,iBAAAzK,IAAhB,EACI,IAAAL,YADJ,CACuBsJ,CAAAnJ,OADvB,CAC0CiL,CAD1C,CAC4D,IAAAqH,QAAA,CAAa,CAAb,CAD5D,EAEqC,QAAhC,GAAAF,CAAAG,cAAA,EAA4CH,CAAApkB,QAA5C,EAAsEwkB,CAAAJ,CAAAI,SAAtE,CACGL,CAAAM,aADH,CACyBriB,CAAA,CAAKgiB,CAAAvP,OAAL,CAA2B,EAA3B,CADzB,CAC0D,CAH/D,CAPJ,CAaA,CAAIjb,CAAJ,EAAauI,CAAb,GAEQ,IAAA4Q,SAAJ,CACInZ,CAAAO,QAAAkf,KADJ,CACyBlX,CAAAhI,QAAAkf,KADzB,CAC8C8B,CAAA9B,KAD9C,CAGIzf,CAAAO,QAAA+X,IAHJ,CAGwB/P,CAAAhI,QAAA+X,IAHxB;AAG4CiJ,CAAAjJ,IAI5C,CADAtY,CAAA8qB,YAAA,EACA,CAAAviB,CAAAuiB,YAAA,EATJ,CApBJ,CAXoD,CAAxD,CA8CAlrB,EAAA,CAAKC,CAAAC,UAAL,CAAuB,UAAvB,CAAmC,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB6J,CAAnB,CAA2BnI,CAA3B,CAAkCoI,CAAlC,CAA6C,CACpF,IAAI0gB,EAAiB,IAAAxqB,QAAAwqB,eACjBA,EAAJ,EAAsB,IAAA9kB,MAAAlE,OAAtB,CAA0CgpB,CAA1C,EAA4D5J,CAAA,CAAS5gB,CAAT,CAAkB,CAAA,CAAlB,CAA5D,EAAuF,IAAA0D,MAAAsd,UAAvF,EACIjP,CAAA,CAAM,EAAN,CAAU,CAAA,CAAV,CAEJvS,EAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B6J,CAA5B,CAAoCnI,CAApC,CAA2CoI,CAA3C,CALoF,CAAxF,CASAzK,EAAA,CAAKR,CAAAU,UAAL,CAAsB,WAAtB,CAAmC,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB6J,CAAnB,CAA2BC,CAA3B,CAAsC,CACzE/J,CAAAA,CAASP,CAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B,CAAA,CAA5B,CAAmC8J,CAAnC,CACT,KAAAkX,UAAJ,EACI,IAAAA,UAAAwF,cAAA,EAEAve,EAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAAA,OAAA,EAEJ,OAAO9J,EARsE,CAAjF,CAYAV,EAAA,CAAKC,CAAAC,UAAL,CAAuB,QAAvB,CAAiC,QAAQ,CAACC,CAAD,CAAUirB,CAAV,CAAsB5gB,CAAtB,CAA8B,CACnErK,CAAAK,KAAA,CAAa,IAAb,CAAmB4qB,CAAnB,CAA+B,CAAA,CAA/B,CACI,KAAA/mB,MAAAsd,UAAJ,EACI,IAAAtd,MAAAsd,UAAAwF,cAAA,EAEAve,EAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAAnG,MAAAmG,OAAA,EAN+D,CAAvE,CAUAhL;CAAAU,UAAAmrB,UAAAxkB,KAAA,CAA+B,QAAQ,CAACxC,CAAD,CAAQ,CAC3C,IACIsd,EAAYtd,CAAAsd,UAGZA,EAAJ,GACI9d,CACA,CADWQ,CAAAjE,MAAA,CAAY,CAAZ,CAAA2D,YAAA,EACX,CAAA4d,CAAA/F,OAAA,CAAiB/X,CAAA9C,IAAjB,CAA+B8C,CAAA7C,IAA/B,CAFJ,CAL2C,CAA/C,CA98CS,CAAZ,CAAA,CA69CC5B,CA79CD,CA89CA,UAAQ,CAACC,CAAD,CAAI,CAkETisB,QAASA,EAAa,CAACjnB,CAAD,CAAQ,CAG1B,IAAA+S,KAAA,CAAU/S,CAAV,CAH0B,CAlErB,IAML/E,EAAWD,CAAAC,SANN,CAOLC,EAAOF,CAAAE,KAPF,CAQLC,EAAQH,CAAAG,MARH,CASLC,EAAMJ,CAAAI,IATD,CAUL8rB,EAAgBlsB,CAAAksB,cAVX,CAWL7rB,EAAaL,CAAAK,WAXR,CAYL6T,EAAiBlU,CAAAkU,eAZZ,CAaLiY,EAASjY,CAAAkY,OAAAD,OAbJ,CAcL7rB,EAAUN,CAAAM,QAdL,CAeL+a,EAA0Brb,CAAAqb,wBAfrB,CAgBLgR,EAAiBrsB,CAAAqsB,eAhBZ,CAiBL9rB,EAAOP,CAAAO,KAjBF,CAkBLC,EAASR,CAAAQ,OAlBJ,CAmBLkJ,EAAY1J,CAAA0J,UAnBP,CAoBL4iB,EAAStsB,CAAAusB,KApBJ,CAqBLze,EAAW9N,CAAA8N,SArBN,CAsBLC,EAAQ/N,CAAA+N,MAtBH,CAuBLxE,EAAOvJ,CAAAuJ,KAvBF,CAwBLijB,EAAOxsB,CAAAwsB,KAxBF,CAyBLC,EAAQzsB,CAAAysB,MAzBH,CA0BL9rB,EAAOX,CAAAW,KAKXH,EAAA,CAAO0T,CAAP,CAAuB,CACnBgX,cAAe,CAKXwB,YAAa,CACT,eAAgB,CADP,CAETnW,MAAO,EAFE,CAGT4C,OAAQ,EAHC;AAITwT,QAAS,CAJA,CAKTzQ,OAAQ,CALC,CALF,CAYX/C,OAAQ,EAZG,CAaXyT,cAAe,CACX/S,MAAO,OADI,CAbJ,CADI,CAAvB,CAwBA3F,EAAA2Y,KAAA,CAAsB9e,CAAA,CAAMmG,CAAA2Y,KAAN,CAA2B,CAC7CC,kBAAmB,MAD0B,CAE7CC,kBAAmB,MAF0B,CAG7CC,gBAAiB,IAH4B,CAA3B,CAiBtBf,EAAAprB,UAAA,CAA0B,CAOtBosB,YAAaA,QAAQ,CAAC5pB,CAAD,CAAI8H,CAAJ,CAAY,CAAA,IACzB+f,EAAgB,IADS,CAEzBlmB,EAAQkmB,CAAAlmB,MAFiB,CAGzBkoB,EAAehC,CAAAiC,cAAA,CAA4B9pB,CAA5B,CAHU,CAIzBylB,EAAW9jB,CAAAjE,MAAA,CAAY,CAAZ,CAJc,CAKzBspB,EAAiBrlB,CAAA0X,SAAjB2N,EAAmCrlB,CAAA0X,SAAAgK,iBAAA,EAAnC2D,EAAyEvB,CAAzEuB,EAAqF,EAL5D,CAMzBvjB,EAAUujB,CAAAvjB,QANe,CAOzBC,EAAUsjB,CAAAtjB,QAPe,CAQzBkE,CARyB,CASzBC,EAAS4d,CAAT5d,EAAqBrH,IAAAuS,MAAA,CAAWvS,IAAAnC,IAAA,CAASonB,CAAAnnB,IAAT,CAAuB4H,CAAA,CAAKxC,CAAL,CAAc+hB,CAAAnnB,IAAd,CAAvB,CAAX,CATI,CAUzB0P,EAAO6b,CAAA7b,KAVkB,CAWzB+b,CAXyB,CAYzB7c,EAAQ2c,CAAAG,OAZiB,CAazBC,CAbyB,CAczBC,CAdyB,CAezBC,CAfyB,CAkBzBtmB,EAAegmB,CAAAhmB,aAEnB,IAAgB,IAAhB,GAAIJ,CAAJ,EAAoC,IAApC,GAAwBC,CAAxB,CAAA,CAKA/B,CAAA4D,WAAA,CAAmB2H,CAGfrJ,EAAJ,GACI,IAAAumB,mBACA,CAD0B,CAAA,CAC1B,CAAAvtB,CAAAW,UAAA0T,gBAAApT,KAAA,CAAoC2nB,CAApC;AAAgD,CAC5C9jB,MAAO,IAAAA,MADqC,CAAhD,CAEGkC,CAFH,CAEiB,CAAA,CAFjB,CAFJ,CAQA,IAAa,OAAb,GAAImK,CAAJ,EAAiC,MAAjC,GAAwBA,CAAxB,CACSyX,CAAL,EAKI4E,CAOA,CAPM,CACFnd,MAAO2c,CADL,CAEFvrB,IAAKuJ,CAFH,CAGFpE,QAASA,CAHP,CAIFC,QAASA,CAJP,CAON,CADAkE,CACA,CADS6d,CAAA6E,aAAAxsB,KAAA,CAA2BusB,CAA3B,CACT,CAAI5f,CAAA,CAAS4f,CAAAxiB,OAAT,CAAJ,GACIA,CADJ,CACawiB,CAAAxiB,OADb,CAZJ,EAGIqF,CAHJ,CAGY2c,CAJhB,KAmBO,IAAI3c,CAAJ,CACHtF,CACA,CADSpH,IAAAlC,IAAA,CAASuJ,CAAT,CAAkBqF,CAAlB,CAAyBzJ,CAAzB,CACT,CAAAoE,CAAA,CAASrH,IAAAnC,IAAA,CAASuJ,CAAT,CAAkBsF,CAAlB,CAAyBxJ,CAAzB,CAFN,KAIA,IAAa,KAAb,GAAIsK,CAAJ,CAIH,GAAIyX,CAAJ,CAKoB/lB,IAAAA,EAYhB,GAZIgE,CAYJ,GAXID,CAOA,CAPUrE,MAAAC,UAOV,CANAqE,CAMA,CANUtE,MAAAmrB,UAMV,CALArtB,CAAA,CAAKyE,CAAA3D,OAAL,CAAmB,QAAQ,CAACA,CAAD,CAAS,CAC5B2F,CAAAA,CAAQ3F,CAAA2F,MACZF,EAAA,CAAUjD,IAAAnC,IAAA,CAASsF,CAAA,CAAM,CAAN,CAAT,CAAmBF,CAAnB,CACVC,EAAA,CAAUlD,IAAAlC,IAAA,CAASqF,CAAA,CAAMA,CAAAlE,OAAN,CAAqB,CAArB,CAAT,CAAkCiE,CAAlC,CAHsB,CAApC,CAKA,CAAAoE,CAAA,CAAS,CAAA,CAIb,EAFA0iB,CAEA,CAFc3C,CAAA4C,eAAA,CAA6B/mB,CAA7B,CAAsCD,CAAtC,CAA+CqlB,CAA/C,CAEd,CADAlhB,CACA,CADSqiB,CACT,CADoBO,CAAAnsB,IACpB,CAAAwJ,CAAA,CAAS2iB,CAAAlsB,IAjBb,KAqBO,CACH1B,CAAA,CAAS+E,CAAT,CAAgB,cAAhB,CAAgC,QAAQ,EAAG,CACvCkmB,CAAA+B,YAAA,CAA0B5pB,CAA1B,CADuC,CAA3C,CAGA,OAJG,CAzBJ,IA+Ba,KAAb,GAAIgO,CAAJ,EAAsByX,CAAtB,GACH7d,CACA,CADSnE,CACT,CAAAoE,CAAA,CAASnE,CAFN,CAIPmkB,EAAA6C,YAAA,CAA0B1qB,CAA1B,CAGKylB;CAAL,CAcIA,CAAA/f,YAAA,CACIkC,CADJ,CAEIC,CAFJ,CAGI3B,CAAA,CAAK4B,CAAL,CAAa,CAAb,CAHJ,CAII,IAJJ,CAKI,CACInC,QAAS,qBADb,CAEIglB,oBAAqBd,CAFzB,CALJ,CAdJ,EAGIE,CAKA,CALmBX,CAAA,CAAMznB,CAAA1D,QAAAP,MAAN,CAAA,CAA2B,CAA3B,CAKnB,CAJAysB,CAIA,CAJeJ,CAAA7c,MAIf,CAHA6c,CAAA7c,MAGA,CAHyBA,CAGzB,CAFAgd,CAEA,CAFaH,CAAA1rB,IAEb,CADA0rB,CAAA1rB,IACA,CADuB4rB,CACvB,CAAArtB,CAAA,CAAS+E,CAAT,CAAgB,MAAhB,CAAwBipB,QAAyB,EAAG,CAChDb,CAAA7c,MAAA,CAAyBid,CACzBJ,EAAA1rB,IAAA,CAAuB6rB,CAFyB,CAApD,CARJ,CA7EA,CApB6B,CAPX,CAuItBQ,YAAaA,QAAQ,CAACG,CAAD,CAAW,CAC5B,IAAAA,SAAA,CAAgB,IAAA5sB,QAAA4sB,SAAhB,CAAwCA,CADZ,CAvIV,CA8ItBC,eAAgB,CAAC,CACb9c,KAAM,OADO,CAEb3K,MAAO,CAFM,CAGbsT,KAAM,IAHO,CAAD,CAIb,CACC3I,KAAM,OADP,CAEC3K,MAAO,CAFR,CAGCsT,KAAM,IAHP,CAJa,CAQb,CACC3I,KAAM,OADP,CAEC3K,MAAO,CAFR,CAGCsT,KAAM,IAHP,CARa,CAYb,CACC3I,KAAM,KADP,CAEC2I,KAAM,KAFP,CAZa,CAeb,CACC3I,KAAM,MADP,CAEC3K,MAAO,CAFR,CAGCsT,KAAM,IAHP,CAfa,CAmBb,CACC3I,KAAM,KADP,CAEC2I,KAAM,KAFP,CAnBa,CA9IM,CAyKtBjC,KAAMA,QAAQ,CAAC/S,CAAD,CAAQ,CAAA,IACdkmB,EAAgB,IADF,CAEd5pB,EAAU0D,CAAA1D,QAAA4pB,cAFI;AAGdiC,EAAgB7rB,CAAAqf,QAAhBwM,EAAmC,EAAAlqB,OAAA,CAAUioB,CAAAiD,eAAV,CAHrB,CAIdC,EAAiB9sB,CAAA4sB,SAJH,CAKdG,EAAaA,QAAQ,EAAG,CAAA,IAChBC,EAAWpD,CAAAoD,SADK,CAEhBC,EAAWrD,CAAAqD,SACXD,EAAJ,EAAgBA,CAAAE,KAAhB,EACI9kB,CAAA,CAAU4kB,CAAV,CAAoB,MAApB,CAEAC,EAAJ,EAAgBA,CAAAC,KAAhB,EACI9kB,CAAA,CAAU6kB,CAAV,CAAoB,MAApB,CAPgB,CAW5BrD,EAAAlmB,MAAA,CAAsBA,CACtBkmB,EAAA5pB,QAAA,CAAwBA,CACxB4pB,EAAAvK,QAAA,CAAwB,EAExB3b,EAAAypB,eAAA,CAAuBntB,CAAA6X,OACvB+R,EAAAiC,cAAA,CAA8BA,CAE9B,KAAAuB,YAAA,CAAmBzuB,CAAA,CAAS+E,CAAAiE,UAAT,CAA0B,WAA1B,CAAuColB,CAAvC,CACnB,KAAAM,SAAA,CAAgB1uB,CAAA,CAAS+E,CAAT,CAAgB,QAAhB,CAA0BqpB,CAA1B,CAGhB9tB,EAAA,CAAK4sB,CAAL,CAAoBjC,CAAA0D,mBAApB,CAGuB7rB,KAAAA,EAAvB,GAAIqrB,CAAJ,EAAoCjB,CAAA,CAAciB,CAAd,CAApC,EACI,IAAAnB,YAAA,CAAiBmB,CAAjB,CAAiC,CAAA,CAAjC,CAIJnuB,EAAA,CAAS+E,CAAT,CAAgB,MAAhB,CAAwB,QAAQ,EAAG,CAE/B/E,CAAA,CAAS+E,CAAAjE,MAAA,CAAY,CAAZ,CAAT,CAAyB,aAAzB,CAAwC,QAAQ,CAACiH,CAAD,CAAI,CAC5C,IAAArG,IAAJ,CAAe,IAAAD,IAAf,GAA4BsD,CAAA4D,WAA5B,EAA8D,qBAA9D,GAAgDZ,CAAAgB,QAAhD,EACkB,aADlB;AACIhB,CAAAgB,QADJ,EACmCkiB,CAAAuC,mBADnC,EAEI,IAAAlZ,gBAAA,CAAqB,CAAA,CAArB,CAA4B,CAAA,CAA5B,CAH4C,CAApD,CAF+B,CAAnC,CAnCkB,CAzKA,CA0NtBsa,mBAAoBA,QAAQ,EAAG,CAAA,IAEvB7pB,EAAQ,IAAAA,MAFe,CAGvB8jB,EAAW9jB,CAAAjE,MAAA,CAAY,CAAZ,CAHY,CAIvB+tB,EAAcjrB,IAAAuS,MAAA,CAAW0S,CAAAnnB,IAAX,CAA0BmnB,CAAApnB,IAA1B,CAJS,CAKvBqtB,EAAY,CAACjG,CAAAkG,iBALU,CAOvB3E,EAAiBrlB,CAAA0X,SAAjB2N,EAAmCrlB,CAAA0X,SAAAgK,iBAAA,EAAnC2D,EAAyEvB,CAPlD,CAQvBhiB,EAAUujB,CAAAvjB,QARa,CASvBC,EAAUsjB,CAAAtjB,QATa,CAUvB8mB,EATgB3C,IASF4C,eAAA,CAA6B/mB,CAA7B,CAAsCD,CAAtC,CAA+CqlB,CAA/C,CAVS,CAWvB8C,EAASpB,CAAAnsB,IAXc,CAYvBwtB,EAASrB,CAAAlsB,IAZc,CAavBusB,EAZgBhD,IAYLgD,SAbY,CAcvBiB,EAAiBrhB,CAAA,CAASogB,CAAT,CAdM,CAevBkB,EAdgBlE,IAcI5pB,QAAA8tB,kBAfG,CAgBvBzO,EAfgBuK,IAeNvK,QAEdpgB,EAAA,CAjBoB2qB,IAiBfiC,cAAL,CAAkC,QAAQ,CAACD,CAAD,CAAe7pB,CAAf,CAAkB,CAAA,IACpDkN,EAAQ2c,CAAAG,OAD4C,CAEpDhc,EAAO6b,CAAA7b,KAF6C,CAGpD3K,EAAQwmB,CAAAxmB,MAARA,EAA8B,CAC9B2oB,EAAAA,CAAS1O,CAAA,CAAQtd,CAAR,CAJ2C,KAKpDisB,EAAQ,CAGRC,EAAAA,CAAalsB,CAAbksB,GAAmBrB,CARiC,KAUpDsB,EAAkBjf,CAAlBif,CAA0BzoB,CAA1ByoB,CAAoC1oB,CAVgB,CAYpD2oB,EAAkBlf,CAAlBkf,CAA0B3G,CAAAzD,SAZ0B,CAcpDqK,EAAsB,CAAA,CAd8B,CAgBpDC,EAA4B,CAAA,CAhBwB,CAiBpDC,EAAcrf,CAAdqf,GAAwBd,CAE5B;CACc,OADd,GACKzd,CADL,EACkC,MADlC,GACyBA,CADzB,GAEKyd,CAFL,EA/BMhgB,KA+BN,CAEoB,CACZE,MAAO,EADK,CAEZC,KAAM,GAFM,CAAA,CAGdoC,CAHc,CAFpB,CAKoB3K,CALpB,EAMKooB,CANL,EA/BMhgB,KA+BN,CAMoB,CACZE,MAAO,EADK,CAEZC,KAAM,GAFM,CAAA,CAGdoC,CAHc,CANpB,CASoB3K,CATpB,CAWIkpB,CAXJ,CAWkB,CAAA,CAXlB,CAYoB,KAAb,GAAIve,CAAJ,EACHue,CACA,CADeV,CACf,CADwBD,CACxB,GADoCH,CACpC,CAAAY,CAAA,CAAsB,CAACH,CAFpB,EAGa,KAHb,GAGIle,CAHJ,GAIHue,CACA,CADc9G,CAAAnnB,IACd,CAD6BmnB,CAAApnB,IAC7B,EAD6CqF,CAC7C,CADuDD,CACvD,CAAA6oB,CAAA,CAA4B,CAACJ,CAA7B,EAA2CJ,CAA3C,EAA6DS,CAL1D,CAUPC,EAAA,CAAW,CAACT,CAAZ,GAEQI,CAFR,EAGQC,CAHR,EAIQE,CAJR,EAKQZ,CALR,CAQAe,EAAA,CACKP,CADL,EACmBK,CADnB,EAEKA,CAFL,EAEoB,CAACT,CAFrB,EAEuC,CAACO,CAGpCG,EAAJ,CACIP,CADJ,CACY,CADZ,CAEWQ,CAFX,GAGIX,CACA,CADiB,CAAA,CACjB,CAAAG,CAAA,CAAQ,CAJZ,CAQID,EAAAC,MAAJ,GAAqBA,CAArB,EACID,CAAA3mB,SAAA,CAAgB4mB,CAAhB,CA/DoD,CAA5D,CAlB2B,CA1NT,CAmTtBV,mBAAoBA,QAAQ,CAAC1B,CAAD,CAAe,CAAA,IACnC7b,EAAO6b,CAAA7b,KAD4B,CAEnC3K,EAAQwmB,CAAAxmB,MAARA,EAA8B,CAFK,CAMnCqpB,EAAa,CACTphB,YAAa,CADJ,CAETC,OAAQ,GAFC,CAGTC,OAAQ,GAHC,CAITzL,KAAM,IAJG,CAKT0L,IAAK,KALI,CAMTC,KAAM,MANG,CAUjB,IAAIghB,CAAA,CAAW1e,CAAX,CAAJ,CACI6b,CAAAG,OAAA,CAAsB0C,CAAA,CAAW1e,CAAX,CAAtB,CAAyC3K,CAD7C,KAEO,IAAa,OAAb,GAAI2K,CAAJ,EAAiC,MAAjC,GAAwBA,CAAxB,CACH6b,CAAAG,OAAA,CAGe,KAHf,CAAsB,CAClBre,MAAO,EADW,CAElBC,KAAM,GAFY,CAAA,CAGpBoC,CAHoB,CAAtB,CAGsB3K,CAtBa,CAnTrB,CAkVtBspB,cAAeA,QAAQ,CAAC5J,CAAD;AAAO6J,CAAP,CAAa,CAAA,IAC5B3uB,EAAU,IAAA0D,MAAA1D,QAAA4pB,cADkB,CAE5BgF,EAAQ,IAAA,CAAK9J,CAAL,CAAY,OAAZ,CAER9lB,EAAA,CAAQ2vB,CAAR,CAAJ,GACIC,CAAAC,cACA,CADsBD,CAAAE,OACtB,CAAAF,CAAAE,OAAA,CAAeH,CAFnB,CAKAC,EAAApkB,MAAA,CAAczL,CAAA,CACViB,CAAA+uB,oBADU,EACqB,UADrB,CAEVH,CAAAE,OAFU,CAId,KAAA,CAAKhK,CAAL,CAAY,SAAZ,CAAAxM,KAAA,CAA4B,CACxBI,KAAM3Z,CAAA,CAAWiB,CAAAgvB,gBAAX,EAAsC,WAAtC,CAAmDJ,CAAAE,OAAnD,CADkB,CAA5B,CAbgC,CAlVd,CAoWtBG,UAAWA,QAAQ,CAACnK,CAAD,CAAO,CAAA,IAClBoK,EAAa,IAAAA,WADK,CAElBC,EAAU,IAAA,CAAKrK,CAAL,CAAY,SAAZ,CAEdhmB,EAAA,CAAI,IAAA,CAAKgmB,CAAL,CAAY,OAAZ,CAAJ,CAA0B,CACtB5F,KAAOgQ,CAAA7S,WAAP6C,CAA+BiQ,CAAA9jB,EAA/B6T,CAA4C,IADtB,CAEtBnH,IAAKmX,CAAA5T,WAALvD,CAA6B,IAFP,CAGtB9C,MAAQka,CAAAla,MAARA,CAAwB,CAAxBA,CAA6B,IAHP,CAItB4C,OAASsX,CAAAtX,OAATA,CAA0B,CAA1BA,CAA+B,IAJT,CAKtBuX,OAAQ,kBALc,CAA1B,CAJsB,CApWJ,CAiXtBC,UAAWA,QAAQ,CAACvK,CAAD,CAAO,CACtBhmB,CAAA,CAAI,IAAA,CAAKgmB,CAAL,CAAY,OAAZ,CAAJ,CAA0B,CACtBsK,OAAQ,CADc,CAEtBna,MAAO,KAFe,CAGtB4C,OAAQ,KAHc,CAA1B,CAKA;IAAA6W,cAAA,CAAmB5J,CAAnB,CANsB,CAjXJ,CA8XtBwK,UAAWA,QAAQ,CAACxK,CAAD,CAAO,CActByK,QAASA,EAAc,EAAG,CAAA,IAClBC,EAAaZ,CAAApkB,MADK,CAElBA,EAAQ,CAACxK,CAAAyvB,gBAAD,EAA4BxE,IAAAyE,MAA5B,EAAwCF,CAAxC,CAFU,CAGlBG,EAAYjsB,CAAAjE,MAAA,CAAY,CAAZ,CAHM,CAIlBmwB,EAAWlsB,CAAA0X,SAAA,EAAkB1X,CAAA0X,SAAA3b,MAAlB,CAAyCiE,CAAA0X,SAAA3b,MAAzC,CAAgEkwB,CAJzD,CAKlBnqB,EAAUoqB,CAAApqB,QALQ,CAMlBC,EAAUmqB,CAAAnqB,QACV+E,EAAJ,GAAcokB,CAAAC,cAAd,GACID,CAAAC,cAQA,CARsBrkB,CAQtB,CALKgC,CAAA,CAAShC,CAAT,CAKL,GAJIA,CACA,CADQglB,CAAAK,MAAA,CAAiB,GAAjB,CACR,CAAArlB,CAAA,CAAQygB,IAAA6E,IAAA,CAAS5E,CAAA,CAAK1gB,CAAA,CAAM,CAAN,CAAL,CAAT,CAAyB0gB,CAAA,CAAK1gB,CAAA,CAAM,CAAN,CAAL,CAAzB,CAA0C,CAA1C,CAA6C0gB,CAAA,CAAK1gB,CAAA,CAAM,CAAN,CAAL,CAA7C,CAGZ,EAAIgC,CAAA,CAAShC,CAAT,CAAJ,GAGSqgB,CAqBL,GApBYrgB,CAoBZ,EApB0D,GAoB1D,CApBoBulB,CAAA,IAAI9E,IAAJ8E,mBAAA,EAoBpB,EAfIC,CAAJ,CACQxlB,CAAJ,CAAYof,CAAAqD,SAAA6B,OAAZ,CACItkB,CADJ,CACY/I,IAAAA,EADZ,CAEW+I,CAFX,CAEmBhF,CAFnB,GAGIgF,CAHJ,CAGYhF,CAHZ,CADJ,CAOQgF,CAAJ,CAAYof,CAAAoD,SAAA8B,OAAZ,CACItkB,CADJ,CACY/I,IAAAA,EADZ,CAEW+I,CAFX,CAEmB/E,CAFnB,GAGI+E,CAHJ,CAGY/E,CAHZ,CAQJ,CAAchE,IAAAA,EAAd,GAAI+I,CAAJ,EACImlB,CAAAloB,YAAA,CACIuoB,CAAA,CAAQxlB,CAAR,CAAgBmlB,CAAAvvB,IADpB,CAEI4vB,CAAA,CAAQL,CAAAtvB,IAAR,CAAwBmK,CAF5B,CAGI/I,IAAAA,EAHJ,CAIIA,IAAAA,EAJJ,CAIe,CACPiG,QAAS,oBADF,CAJf,CAzBR,CATJ,CAPsB,CAdJ;AAAA,IAClBkiB,EAAgB,IADE,CAElBlmB,EAAQkmB,CAAAlmB,MAFU,CAIlBgR,EAAWhR,CAAAgR,SAJO,CAKlB1U,EAAU0D,CAAA1D,QAAA4pB,cALQ,CAOlBnR,EAAMmR,CAAAnR,IAPY,CAQlBuX,EAAiB,KAAjBA,GAAQlL,CARU,CASlB8J,CATkB,CAUlBxW,CAVkB,CAYlB8W,EAAa,IAAAA,WAyDjB,KAAA,CAAKpK,CAAL,CAAY,OAAZ,CAAA,CAAuB1M,CAAvB,CAA+B1D,CAAA0D,MAAA,CA/DpBxF,CAAA2Y,KA+DmC,CAAKyE,CAAA,CAAQ,mBAAR,CAA8B,iBAAnC,CAAf,CAAsE,IAAAd,WAAApX,OAAtE,CAAAzC,SAAA,CACjB,wBADiB,CAAAiD,KAAA,CAErB,CACF+S,QAAS,CADP,CAFqB,CAAA1W,IAAA,CAKtBua,CALsB,CAM/BA,EAAApX,OAAA,EAAqBM,CAAAnD,MAArB,CAAmC,CAInC,KAAA,CAAK6P,CAAL,CAAY,SAAZ,CAAA,CAAyBqK,CAAzB,CAAmCza,CAAA0D,MAAA,CAAe,EAAf,CAAmB8W,CAAApX,OAAnB,CAAAzC,SAAA,CACrB,wBADqB,CAAAiD,KAAA,CAEzB,CACF+S,QAAS,CADP,CAEFpW,MAAOjV,CAAAiwB,cAAPhb,EAAgC,EAF9B,CAGF4C,OAAQ7X,CAAAkwB,eAARrY,EAAkC,EAHhC,CAIFsY,OAAQnwB,CAAAowB,oBAARD,EAAuC,SAJrC,CAKF,eAAgB,CALd,CAMF,aAAc,QANZ,CAFyB,CAAApX,GAAA,CAU3B,OAV2B;AAUlB,QAAQ,EAAG,CACpB6Q,CAAAqF,UAAA,CAAwBnK,CAAxB,CACA8E,EAAA,CAAc9E,CAAd,CAAqB,OAArB,CAAAuL,MAAA,EAFoB,CAVO,CAAA1b,IAAA,CAc1Bua,CAd0B,CAenCA,EAAApX,OAAA,EAAqBqX,CAAAla,MAArB,EAAsC+a,CAAA,CAAQ,EAAR,CAAa,CAAnD,CAKA,KAAA,CAAKlL,CAAL,CAAY,OAAZ,CAAA,CAAuB8J,CAAvB,CAA+BhE,CAAA,CAAc,OAAd,CAAuB,CAClD9F,KAAMA,CAD4C,CAElDxD,UAAW,2BAFuC,CAGlDvR,KAAM,MAH4C,CAAvB,CAI5B,CACCgI,IAAKrU,CAAAsQ,QAAL+D,CAAqB,IADtB,CAJ4B,CAM5BU,CAN4B,CAW/BmW,EAAA0B,QAAA,CAAgBC,QAAQ,EAAG,CACvB3G,CAAAqF,UAAA,CAAwBnK,CAAxB,CADuB,CAI3B8J,EAAA4B,OAAA,CAAeC,QAAQ,EAAG,CACtB7G,CAAAyF,UAAA,CAAwBvK,CAAxB,CADsB,CAK1B8J,EAAA8B,SAAA,CAAiBnB,CAEjBX,EAAA+B,WAAA,CAAmBC,QAAQ,CAACC,CAAD,CAAQ,CAET,EAAtB,GAAIA,CAAAC,QAAJ,EACIvB,CAAA,EAH2B,CAzHb,CA9XJ,CAkgBtBwB,YAAaA,QAAQ,EAAG,CAAA,IAChBrtB,EAAQ,IAAAA,MADQ,CAEhB1D,EAAU0D,CAAA1D,QAAA4pB,cAFM,CAGhBoH,EAAY/oB,CAAA,CAAKmD,CAACpL,CAAAixB,eAAD7lB,EAA2B,EAA3BA,GAAL,CAAuC1H,CAAAsQ,QAAvC,CAAuDtQ,CAAA8c,WAAA,CAAiB,CAAjB,CAAvD,CAA6ExgB,CAAA6X,OAA7E,CAEhB,OAAO,CACHmZ,UAAWA,CADR,CAEHE,SAAUF,CAAVE,CAAsB,EAFnB,CALa,CAlgBF,CAqhBtB1E,eAAgBA,QAAQ,CAAC/mB,CAAD;AAAUD,CAAV,CAAmBqlB,CAAnB,CAA2B,CAAA,IAE3CsG,EAAM,IAAInG,CAAJ,CAAWvlB,CAAX,CAFqC,CAG3CkI,EAAOwjB,CAAA,CAAInG,CAAAoG,cAAJ,CAAA,EACPC,EAAAA,CAAcxG,CAAA,CAASG,CAAA8E,IAAA,CAAWniB,CAAX,CAAiB,CAAjB,CAAoB,CAApB,CAAT,CAAkC,CAAC,IAAIqd,CAAJ,CAAWrd,CAAX,CAAiB,CAAjB,CAAoB,CAApB,CACrDvN,EAAA,CAAMmC,IAAAlC,IAAA,CAASmF,CAAT,EAAoB,CAApB,CAAuB6rB,CAAvB,CACNF,EAAA,CAAMA,CAAAG,QAAA,EACN,OAAO,CACHjxB,IAAKkC,IAAAnC,IAAA,CAASqF,CAAT,EAAoB0rB,CAApB,CAAyBA,CAAzB,CADF,CAEH/wB,IAAKA,CAFF,CAPwC,CArhB7B,CAyiBtB6a,OAAQA,QAAQ,CAAC7a,CAAD,CAAMC,CAAN,CAAW,CAAA,IAEnBupB,EAAgB,IAFG,CAGnBlmB,EAAQkmB,CAAAlmB,MAHW,CAInBgR,EAAWhR,CAAAgR,SAJQ,CAKnB/M,EAAYjE,CAAAiE,UALO,CAMnB0e,EAAe3iB,CAAA1D,QANI,CAOnBuxB,EAAmBlL,CAAAmL,UAAnBD,EAAgF,CAAA,CAAhFA,GAA6ClL,CAAAmL,UAAA3rB,QAA7C0rB,EACAlL,CAAAoL,WADAF,EAC2BlL,CAAAoL,WAAA5F,cARR,CASnB7rB,EAAUqmB,CAAAuD,cATS,CAUnBvK,EAAUuK,CAAAvK,QAVS,CAWnBkM,EAAO3Y,CAAA2Y,KAXY,CAYnB9S,EAAMmR,CAAAnR,IAZa,CAanByW,EAAatF,CAAAsF,WAbM,CAcnB9D,EAAcprB,CAAAorB,YAdK,CAenB6F,EAAiBjxB,CAAAixB,eAAjBA,EAA2C,EAfxB,CAgBnBS,EAAe1xB,CAAA0xB,aAhBI,CAiBnBlc,EAAS4V,CAAT5V,EAAwB4V,CAAA5V,OAjBL,CAkBnBqD,EAAWnV,CAAAmV,SAlBQ,CAmBnB8Y,CAnBmB,CAoBnB1hB,EAAM,IAAA8gB,YAAA,EApBa,CAqBnBa,EAAchI,CAAAhV,MArBK,CAuBnBuH,EAAWyN,CAAAzN,SAES,EAAA,CAAxB;AAAInc,CAAA6F,QAAJ,GAKKsW,CAmFL,GAjFIyN,CAAAhV,MAkCA,CAlCsBgd,CAkCtB,CAlCoCld,CAAA2G,EAAA,CAAW,wBAAX,CAAA1G,IAAA,EAkCpC,CAhCAiV,CAAAiI,SAgCA,CAhCyBnd,CAAAgE,KAAA,CAAc6S,CAAAC,kBAAd,CAAsCvjB,CAAA,CAAKgpB,CAAA5lB,EAAL,CAAuBwN,CAAvB,CAAtC,CAAwE,EAAxE,CAAA/Z,IAAA,CAChBkB,CAAA8xB,WADgB,CAAAnd,IAAA,CAEhBid,CAFgB,CAgCzB,CA3BAD,CA2BA,CA3Ba1pB,CAAA,CAAKgpB,CAAA5lB,EAAL,CAAuBwN,CAAvB,CA2Bb,CA3BgD+Q,CAAAiI,SAAAE,QAAA,EAAA9c,MA2BhD,CA3ByF,CA2BzF,CAzBAhW,CAAA,CAAK2qB,CAAAiC,cAAL,CAAkC,QAAQ,CAACD,CAAD,CAAe7pB,CAAf,CAAkB,CACxDsd,CAAA,CAAQtd,CAAR,CAAA,CAAa2S,CAAAqZ,OAAA,CACLnC,CAAAlT,KADK,CAELiZ,CAFK,CAGL,CAHK,CAIL,QAAQ,EAAG,CACP/H,CAAA+B,YAAA,CAA0B5pB,CAA1B,CACA6nB,EAAAoI,SAAA,CAAyB,CAAA,CAFlB,CAJN,CAQL5G,CARK,CASL5V,CATK,EASKA,CAAAC,MATL,CAULD,CAVK,EAUKA,CAAAgZ,OAVL,CAWLhZ,CAXK,EAWKA,CAAAyc,SAXL,CAAA3Z,KAAA,CAaH,CACF,aAAc,QADZ,CAbG,CAAA3D,IAAA,CAgBJid,CAhBI,CAmBbD,EAAA,EAActS,CAAA,CAAQtd,CAAR,CAAAkT,MAAd,CAAiChN,CAAA,CAAKjI,CAAAkyB,cAAL,CAA4B,CAA5B,CApBuB,CAA5D,CAyBA,CAAqB,CAAA,CAArB,GAAIR,CAAJ,GACI9H,CAAAnR,IAcA,CAdoBA,CAcpB,CAd0BmS,CAAA,CAAc,KAAd,CAAqB,IAArB,CAA2B,CACjD5O,SAAU,UADuC,CAEjDnE,OAAQ,CAFyC,CAGjD+C,OAAQ,CAHyC,CAA3B,CAc1B,CARAjT,CAAAwqB,WAAAC,aAAA,CAAkC3Z,CAAlC,CAAuC9Q,CAAvC,CAQA,CALAiiB,CAAAsF,WAKA;AAL2BA,CAK3B,CALwCxa,CAAA2G,EAAA,CAAW,aAAX,CAAA1G,IAAA,EAKxC,CAHAua,CAAApX,OAGA,CAHoB,CAGpB,CADA8R,CAAA0F,UAAA,CAAwB,KAAxB,CACA,CAAA1F,CAAA0F,UAAA,CAAwB,KAAxB,CAfJ,CA+CJ,EA7BA1F,CAAA2D,mBAAA,EA6BA,CA1BAqE,CAAA,CAAYzV,CAAA,CAAW,SAAX,CAAuB,MAAnC,CAAA,CAA2C,CACvCb,WAAYrL,CAAA+gB,UAD2B,CAA3C,CA0BA,CAtBqB,CAAA,CAsBrB,GAtBIU,CAsBJ,GAnBIxC,CAAA3W,MAAA,CAAiBrZ,CAAA,CAAO,CACpBkM,EAAG6E,CAAAihB,SADiB,CAEpBjc,MAAOia,CAAApX,OAFa,CAIpBzM,EAAGkmB,CAAA,EAAqBthB,CAAAihB,SAArB,EAAqCK,CAAAnmB,EAArC,EAA2D,CAA3D,EAAgEmmB,CAAA1Z,OAAhE,CAA0FnU,CAAAymB,QAAA,CAAc,CAAd,CAA1F,CACE,GADF,CACO,CALU,CAAP,CAMdnqB,CAAAsrB,cANc,CAAjB,CAM2B,CAAA,CAN3B,CAMiC5nB,CAAA2uB,WANjC,CAgBA,CAPKrzB,CAAA,CAAQ0yB,CAAR,CAOL,GANIY,CACA,CADaV,CAAAG,QAAA,EACb,CAAA7C,CAAA,CAAWA,CAAAqD,UAAAlW,WAAA,CAAkCiW,CAAAjnB,EAAlC,CAAiDinB,CAAArd,MAAjD,CAAoE,EAApE,CAAyE,MAAzE,CAAkF,MAA7F,CAAA,EAKJ,EADA2U,CAAA8E,cAAA,CAA4B,KAA5B,CAAmCtuB,CAAnC,CACA,CAAAwpB,CAAA8E,cAAA,CAA4B,KAA5B,CAAmCruB,CAAnC,CAGJ,EAAAupB,CAAAzN,SAAA,CAAyB,CAAA,CAxFzB,CAzBuB,CAziBL,CAgqBtBhJ,OAAQA,QAAQ,CAACnT,CAAD,CAAU,CACtB,IAAI0D,EAAQ,IAAAA,MACZ+I,EAAA,CAAM,CAAA,CAAN,CAAY/I,CAAA1D,QAAA4pB,cAAZ,CAAyC5pB,CAAzC,CACA,KAAAiN,QAAA,EACA;IAAAwJ,KAAA,CAAU/S,CAAV,CAJsB,CAhqBJ,CA0qBtBuJ,QAASA,QAAQ,EAAG,CAAA,IACZulB,EAAY,IADA,CAEZxF,EAAWwF,CAAAxF,SAFC,CAGZC,EAAWuF,CAAAvF,SAEfuF,EAAApF,YAAA,EACAoF,EAAAnF,SAAA,EAGAtT,EAAA,CAAwByY,CAAAnT,QAAxB,CAGI2N,EAAJ,GACIA,CAAAsD,QADJ,CACuBtD,CAAAwD,OADvB,CACyCxD,CAAA0D,SADzC,CAC6D,IAD7D,CAGIzD,EAAJ,GACIA,CAAAqD,QADJ,CACuBrD,CAAAuD,OADvB,CACyCvD,CAAAyD,SADzC,CAC6D,IAD7D,CAKAhyB,EAAA+zB,WAAA,CAAaD,CAAb,CAAwB,QAAQ,CAAChuB,CAAD,CAAMW,CAAN,CAAW,CACnCX,CAAJ,EAAmB,OAAnB,GAAWW,CAAX,GACQX,CAAAyI,QAAJ,CACIzI,CAAAyI,QAAA,EADJ,CAEWzI,CAAAkuB,SAFX,EAGI3H,CAAA,CAAe,IAAA,CAAK5lB,CAAL,CAAf,CAJR,CAOIX,EAAJ,GAAYmmB,CAAAprB,UAAA,CAAwB4F,CAAxB,CAAZ,GACIqtB,CAAA,CAAUrtB,CAAV,CADJ,CACqB,IADrB,CARuC,CAA3C,CAWG,IAXH,CApBgB,CA1qBE,CAgtB1BvG,EAAAW,UAAAiI,aAAA,CAA8BmrB,QAAQ,CAACjP,CAAD,CAAQC,CAAR,CAAekC,CAAf,CAAyBX,CAAzB,CAAmC,CAAA,IACjE5d,EAAa,IAAA5D,MAAb4D,EAA2B,IAAA5D,MAAA4D,WAC3BqC,EAAAA,CAAS1B,CAAA,CAAK4d,CAAL,CAAe,IAAAzjB,UAAA,CAAeshB,CAAf,CAAsB,CAAA,CAAtB,CAA4B,CAAC,IAAA/D,MAA7B,CAAf,CACT/V,EAAAA,CAAS3B,CAAA,CAAKid,CAAL,CAAe,IAAA9iB,UAAA,CAAeuhB,CAAf,CAAsB,CAAA,CAAtB,CAA4B,CAAC,IAAAhE,MAA7B,CAAf,CACTiT,EAAAA,CAActrB,CAAdsrB,GAA6BhpB,CAA7BgpB,CAAsCjpB,CAAtCipB,EAAgDtrB,CAKlC;EAAlB,CAAIsrB,CAAJ,EAAuC,GAAvC,CAAyBA,CAAzB,GACQ1N,CAAJ,CACIvb,CADJ,CACaC,CADb,CACsBtC,CADtB,CAGIsC,CAHJ,CAGaD,CAHb,CAGsBrC,CAJ1B,CAOKkF,EAAA,CAAS7C,CAAT,CAAL,GACIA,CADJ,CACaC,CADb,CACsBnI,IAAAA,EADtB,CAIA,OAAO,CACHrB,IAAKuJ,CADF,CAEHtJ,IAAKuJ,CAFF,CApB8D,CAkCzEhL,EAAAW,UAAA8sB,aAAA,CAA8BwG,QAAQ,EAAG,CAAA,IACjCjH,EAAe,IAAA3c,MADkB,CAGjC6jB,EAAW,CACPplB,MAAO,OADA,CAEPC,KAAM,UAFC,CAAA,CADJie,CAAA7b,KACI,CAHsB,CAOjC3P,CAPiC,CAQjCC,EAAM,IAAAA,IAR2B,CASjCmF,CATiC,CAUjCyJ,CAViC,CAYjC8jB,EAAeA,QAAQ,CAACrK,CAAD,CAAOtjB,CAAP,CAAc,CAAA,IAC7B4tB,EAAO,IAAI/H,IAAJ,CAASvC,CAAT,CADsB,CAE7BuK,EAAaD,CAAA,CAAK,KAAL,CAAaF,CAAb,CAAA,EAEjBE,EAAA,CAAK,KAAL,CAAaF,CAAb,CAAA,CAAuBG,CAAvB,CAAoC7tB,CAApC,CAEI6tB,EAAJ,GAAmBD,CAAA,CAAK,KAAL,CAAaF,CAAb,CAAA,EAAnB,EACIE,CAAAE,QAAA,CAAa,CAAb,CAGJ,OAAOF,EAAA1B,QAAA,EAAP,CAAwB5I,CAVS,CAarClc,EAAA,CAASof,CAAT,CAAJ,EACIxrB,CACA,CADMC,CACN,CADYurB,CACZ,CAAA3c,CAAA,CAAQ2c,CAFZ,GAIIxrB,CAGA,CAHMC,CAGN,CAHY0yB,CAAA,CAAa1yB,CAAb,CAAkB,CAACurB,CAAAxmB,MAAnB,CAGZ,CAAI,IAAA1B,MAAJ,GACI,IAAAA,MAAA4D,WADJ,CAC4BjH,CAD5B,CACkCD,CADlC,CAPJ,CAYAoF,EAAA,CAAUyC,CAAA,CAAK,IAAAzC,QAAL,CAAmBrE,MAAAmrB,UAAnB,CACL9f,EAAA,CAASpM,CAAT,CAAL,GACIA,CADJ,CACUoF,CADV,CAGIpF,EAAJ,EAAWoF,CAAX,GACIpF,CAIA,CAJMoF,CAIN,CAHc/D,IAAAA,EAGd,GAHIwN,CAGJ,GAFIA,CAEJ,CAFY8jB,CAAA,CAAa3yB,CAAb,CAAkBwrB,CAAAxmB,MAAlB,CAEZ,EAAA,IAAAwE,OAAA,CAAcrH,IAAAnC,IAAA,CAASA,CAAT,CAAe6O,CAAf,CAAsB,IAAAxJ,QAAtB,CALlB,CAOK+G;CAAA,CAASnM,CAAT,CAAL,GACID,CADJ,CACUqB,IAAAA,EADV,CAGA,OAAOrB,EAnD8B,CAwDzCf,EAAA,CAAKR,CAAAU,UAAL,CAAsB,MAAtB,CAA8B,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB+pB,CAAnB,CAA6B,CAE/DprB,CAAA,CAAS,IAAT,CAAe,MAAf,CAAuB,QAAQ,EAAG,CAC1B,IAAAqB,QAAA4pB,cAAA/jB,QAAJ,GACI,IAAA+jB,cADJ,CACyB,IAAIe,CAAJ,CAAkB,IAAlB,CADzB,CAD8B,CAAlC,CAMAnrB,EAAAK,KAAA,CAAa,IAAb,CAAmBG,CAAnB,CAA4B+pB,CAA5B,CAR+D,CAAnE,CAYAlrB,EAAAU,UAAAmrB,UAAAxkB,KAAA,CAA+B,QAAQ,CAACxC,CAAD,CAAQ,CAM3CyvB,QAASA,EAAmB,EAAG,CAC3BjwB,CAAA,CAAWQ,CAAAjE,MAAA,CAAY,CAAZ,CAAA2D,YAAA,EACPoJ,EAAA,CAAStJ,CAAA9C,IAAT,CAAJ,EACIwpB,CAAA3O,OAAA,CAAqB/X,CAAA9C,IAArB,CAAmC8C,CAAA7C,IAAnC,CAHuB,CANY,IACvC6C,CADuC,CAEvC0mB,EAAgBlmB,CAAAkmB,cAFuB,CAGvCwJ,CAHuC,CAIvCC,CASAzJ,EAAJ,GAEIyJ,CAYA,CAZoB10B,CAAA,CAChB+E,CAAAjE,MAAA,CAAY,CAAZ,CADgB,CAEhB,kBAFgB,CAGhB,QAAQ,CAACiH,CAAD,CAAI,CACRkjB,CAAA3O,OAAA,CAAqBvU,CAAAtG,IAArB,CAA4BsG,CAAArG,IAA5B,CADQ,CAHI,CAYpB,CAHA+yB,CAGA,CAHez0B,CAAA,CAAS+E,CAAT,CAAgB,QAAhB,CAA0ByvB,CAA1B,CAGf,CAAAA,CAAA,EAdJ,CAkBAx0B,EAAA,CAAS+E,CAAT,CAAgB,SAAhB,CAA2B4vB,QAAsB,EAAG,CAC5C1J,CAAJ,GACIwJ,CAAA,EACA,CAAAC,CAAA,EAFJ,CADgD,CAApD,CA/B2C,CAA/C,CAwCA30B,EAAAisB,cAAA,CAAkBA,CAt6BT,CAAZ,CAAA,CA46BClsB,CA56BD,CA66BA,UAAQ,CAACC,CAAD,CAAI,CAAA,IAML0N,EAAW1N,CAAA0N,SANN;AAOLC,EAAW3N,CAAA2N,SAPN,CAQLzN,EAAOF,CAAAE,KARF,CASLC,EAAQH,CAAAG,MATH,CAULG,EAAUN,CAAAM,QAVL,CAWLC,EAAOP,CAAAO,KAXF,CAaLsN,EAAS7N,CAAA6N,OAbJ,CAcLoU,EAAOjiB,CAAAiiB,KAdF,CAeL4S,EAAU70B,CAAA60B,QAfL,CAgBL/mB,EAAW9N,CAAA8N,SAhBN,CAiBLgnB,EAAW90B,CAAA80B,SAjBN,CAkBLC,EAAM/0B,CAAA+0B,IAlBD,CAmBLhnB,EAAQ/N,CAAA+N,MAnBH,CAoBLxE,EAAOvJ,CAAAuJ,KApBF,CAqBLyE,EAAQhO,CAAAgO,MArBH,CAuBLpN,EAASZ,CAAAY,OAvBJ,CAwBL6rB,EAAQzsB,CAAAysB,MAxBH,CAyBLnV,EAActX,CAAAsX,YAzBT,CA2BL3W,EAAOX,CAAAW,KA3BF,CA8BLuN,EAActN,CAAAC,UA9BT,CA+BLm0B,EAAa9mB,CAAA6J,KA/BR,CAgCLkd,EAAoB/mB,CAAA3G,YAhCf,CAiCL2tB,EAAwBlnB,CAAAnN,UAAAs0B,iBAmC5Bn1B,EAAAo1B,WAAA,CAAep1B,CAAAq1B,WAAf,CAA8BC,QAAQ,CAAClwB,CAAD,CAAIC,CAAJ,CAAOkwB,CAAP,CAAU,CAAA,IACxCC,EAAiBV,CAAA,CAAS1vB,CAAT,CAAjBowB,EAAgCpwB,CAAAqwB,SADQ,CAExCn0B,EAAUF,SAAA,CAAUo0B,CAAA,CAAiB,CAAjB,CAAqB,CAA/B,CAF8B,CAGxC9gB,EAAgBpT,CAAAD,OAHwB,CAIxC6S,EAAiBlU,CAAA01B,WAAA,EAJuB,CAKxCxc,CALwC,CASxCkM,EAAmB7b,CAAA,CACfjI,CAAAghB,UADe,EACMhhB,CAAAghB,UAAAnb,QADN,CAEf+M,CAAAoO,UAAAnb,QAFe,CAGf,CAAA,CAHe,CATqB,CAcxCwuB,EAAqBvQ,CAAA,CAAmB,CACpClE,YAAa,CAAA,CADuB,CAEpCC,UAAW,CAAA,CAFyB,CAAnB,CAGjB,IAjBoC,CAmBxCyU,EAAc,CAEV9S,OAAQ,CACJ3b,QAAS,CAAA,CADL,CAEJ0uB,OAAQ,CAFJ,CAFE,CAnB0B;AA2BxCC,EAAgB,CACZ/S,OAAQ,CAAA,CADI,CAEZgT,YAAa,CAFD,CAMpBz0B,EAAAP,MAAA,CAAgBg0B,CAAA,CAAItI,CAAA,CAAMnrB,CAAAP,MAAN,EAAuB,EAAvB,CAAJ,CAAgC,QAAQ,CAACi1B,CAAD,CAAe,CACnE,MAAOjoB,EAAA,CAAM,CACLoV,WAAY,CADP,CAELC,WAAY,CAFP,CAGL7hB,QAAS,CAAA,CAHJ,CAIL0Y,MAAO,CACHD,KAAM,IADH,CAJF,CAOLiJ,OAAQ,CACJgT,SAAU,SADN,CAPH,CAULC,cAAe,CAAA,CAVV,CAAN,CAYHhiB,CAAAnT,MAZG,CAaHi1B,CAbG,CAcH,CACI3kB,KAAM,UADV,CAEI8kB,WAAY,IAFhB,CAdG,CAkBHR,CAlBG,CAD4D,CAAvD,CAwBhBr0B,EAAAgI,MAAA,CAAgByrB,CAAA,CAAItI,CAAA,CAAMnrB,CAAAgI,MAAN,EAAuB,EAAvB,CAAJ,CAAgC,QAAQ,CAAC8sB,CAAD,CAAe,CACnEld,CAAA,CAAW3P,CAAA,CAAK6sB,CAAAld,SAAL,CAA4B,CAAA,CAA5B,CACX,OAAOnL,EAAA,CAAM,CACLkV,OAAQ,CACJvW,EAAI,EADA,CADH,CAILwM,SAAUA,CAJL,CAKLgd,cAAe,CAAA,CALV,CAMLjc,MAAO,CACHD,KAAM,IADH,CANF,CAAN,CAUH9F,CAAA5K,MAVG,CAWH8sB,CAXG,CAF4D,CAAvD,CAiBhB90B,EAAAD,OAAA,CAAiB,IAEjBC,EAAA,CAAUyM,CAAA,CAAM,CACR/I,MAAO,CACHqxB,QAAS,CAAA,CADN,CAEHC,UAAW,GAFR,CADC,CAKRhU,UAAW,CACPnb,QAASie,CADF,CALH,CAQRjJ,UAAW,CAEPhV,QAASoC,CAAA,CAAK2K,CAAAiI,UAAAhV,QAAL,CAAuC,CAAA,CAAvC,CAFF,CARH,CAYR+jB,cAAe,CAEX/jB,QAASoC,CAAA,CAAK2K,CAAAgX,cAAA/jB,QAAL;AAA2C,CAAA,CAA3C,CAFE,CAZP,CAgBR8S,MAAO,CACHD,KAAM,IADH,CAhBC,CAmBRpG,QAAS,CACL2iB,OAAQ,CAAA,CADH,CAELC,WAAY,CAAA,CAFP,CAnBD,CAuBRlL,OAAQ,CACJnkB,QAAS,CAAA,CADL,CAvBA,CA2BR8M,YAAa,CACT9E,KAAMymB,CADG,CAETxmB,OAAQwmB,CAFC,CAGTvmB,KAAMumB,CAHG,CAITtmB,WAAYsmB,CAJH,CAKTrmB,UAAWqmB,CALF,CAMTpmB,gBAAiBomB,CANR,CAOTnoB,OAAQqoB,CAPC,CAQTrmB,YAAaqmB,CARJ,CASTpmB,YAAaomB,CATJ,CAUTnmB,KAAMmmB,CAVG,CA3BL,CAAN,CA0CNx0B,CA1CM,CA4CN,CACI8Q,QAAS,CAAA,CADb,CA5CM,CAiDV9Q,EAAAD,OAAA,CAAiBqT,CAEjB,OAAO8gB,EAAA,CACH,IAAIr1B,CAAJ,CAAUiF,CAAV,CAAa9D,CAAb,CAAsBi0B,CAAtB,CADG,CAEH,IAAIp1B,CAAJ,CAAUmB,CAAV,CAAmB+D,CAAnB,CAjIwC,CAsIhD1E,EAAA,CAAKT,CAAAW,UAAL,CAAqB,gBAArB,CAAuC,QAAQ,CAACC,CAAD,CAAU,CAAA,IACjDkE,EAAQ,IAAAA,MADyC,CAEjD1D,EAAU,IAAAA,QAFuC,CAGjDm1B,EAAQzxB,CAAA0xB,YAARD,CAA4BzxB,CAAA0xB,YAA5BD,EAAiD,EAHA,CAKjDE,EAAe,IAAAr1B,QAAA2hB,OACnB,OAAI,KAAAje,MAAA1D,QAAA8Q,QAAJ,EAAgD,OAAhD,GAAkC,IAAA4Y,KAAlC,GACIvkB,CACI,CADEnF,CAAA+X,IACF,CADgB,GAChB,CADsB/X,CAAA6X,OACtB,CAAC,CAAAsd,CAAA,CAAMhwB,CAAN,CAAD,EAAekwB,CAAAxvB,QAFvB,GAG+B,EAOhB,GAPHwvB,CAAAhqB,EAOG;CANHgqB,CAAAhqB,EAMG,CANc,CAMd,EAJoB5J,IAAAA,EAIpB,GAJH4zB,CAAA9c,MAIG,GAHH8c,CAAA9c,MAGG,CAHkB,OAGlB,EADP4c,CAAA,CAAMhwB,CAAN,CACO,CADM,IACN,CAAA,OAVf,EAaO3F,CAAAK,KAAA,CAAa,IAAb,CAAmB,EAAAD,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAAnB,CAnB8C,CAAzD,CAuBAT,EAAA,CAAKT,CAAAW,UAAL,CAAqB,SAArB,CAAgC,QAAQ,CAACC,CAAD,CAAU,CAAA,IAC1CkE,EAAQ,IAAAA,MADkC,CAE1CyB,EAAM,IAAAnF,QAANmF,EAAuB,IAAAnF,QAAA+X,IAAvB5S,CAA0C,GAA1CA,CAAgD,IAAAnF,QAAA6X,OAEhD1S,EAAJ,EAAWzB,CAAA0xB,YAAX,EAAgC1xB,CAAA0xB,YAAA,CAAkBjwB,CAAlB,CAAhC,GAA2D,IAA3D,EACI,OAAOzB,CAAA0xB,YAAA,CAAkBjwB,CAAlB,CAGX,OAAO3F,EAAAK,KAAA,CAAa,IAAb,CAAmBF,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAAnB,CARuC,CAAlD,CAYAT,EAAA,CAAKT,CAAAW,UAAL,CAAqB,iBAArB,CAAwC,QAAQ,CAACC,CAAD,CAAUgL,CAAV,CAAiB8I,CAAjB,CAA4BgiB,CAA5B,CAAiCC,CAAjC,CAAwCC,CAAxC,CAAyD,CAAA,IACjGryB,EAAO,IAD0F,CAEjGpD,EAAU,IAAA01B,SAAA,EAAkB11B,CAAA,IAAAA,OAAlB,CAAgC,IAAA21B,aAAA31B,OAAhC,CAA2D,IAAAA,OAF4B,CAGjG2D,EAAQP,CAAAO,MAHyF,CAIjGgR,EAAWhR,CAAAgR,SAJsF,CAKjGihB;AAAWxyB,CAAA+b,KALsF,CAMjG0W,EAAUzyB,CAAA4U,IANuF,CAOjG8d,CAPiG,CAQjGC,CARiG,CASjGC,CATiG,CAUjGC,CAViG,CAWjGC,EAAS,EAXwF,CAYjGxM,EAAO,EAZ0F,CAcjGyM,CAdiG,CAejGC,CA0BJ,IAAkB,OAAlB,GAAIhzB,CAAAumB,KAAJ,EAA2C,OAA3C,GAA6BvmB,CAAAumB,KAA7B,CACI,MAAOlqB,EAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAIX2pB,EAAA,CA1BA2M,QAAgB,CAAC1M,CAAD,CAAO,CAAA,IACf2M,EAAqB,OAAT,GAAA3M,CAAA,CAAmB,OAAnB,CAA6B,OACzC4M,EAAAA,CAAMnzB,CAAAnD,QAAA,CAAaq2B,CAAb,CAGV,OAAI7pB,EAAA,CAAS8pB,CAAT,CAAJ,CACW,CAAC5yB,CAAA,CAAM2yB,CAAN,CAAA,CAAiBC,CAAjB,CAAD,CADX,CAKI9C,CAAA,CAAS8C,CAAT,CAAJ,CACW,CAAC5yB,CAAAmT,IAAA,CAAUyf,CAAV,CAAD,CADX,CAKO7C,CAAA,CAAI1zB,CAAJ,CAAY,QAAQ,CAAC8nB,CAAD,CAAI,CAC3B,MAAOA,EAAA,CAAEwO,CAAF,CADoB,CAAxB,CAfY,CA0BhB,CAAQlzB,CAAAumB,KAAR,CAIPzqB,EAAA,CADSkE,CAAAI,QAAAgzB,CAAe7yB,CAAAsE,MAAfuuB,CAA6B7yB,CAAAjE,MACtC,CAAY,QAAQ,CAAC+2B,CAAD,CAAI,CACpB,GAAIx3B,CAAA,CAAQw3B,CAAAx2B,QAAAqhB,GAAR,CAAA,CAA+D,EAA/D,GAAwBmV,CAAAx2B,QAAAqhB,GAAAoV,QAAA,CAAqB,WAArB,CAAxB,CAAmE,CAAvE,CAA6E,CAAA,IACrE3yB,EAAK0yB,CAAAjzB,QAAA,CAAY,OAAZ,CAAsB,OAD0C,CAErEmzB,EAAO13B,CAAA,CAAQw3B,CAAAx2B,QAAA,CAAU8D,CAAV,CAAR,CAAA,CAAwBJ,CAAA,CAAMI,CAAN,CAAA,CAAS0yB,CAAAx2B,QAAA,CAAU8D,CAAV,CAAT,CAAxB,CAAiDJ,CAAA,CAAMI,CAAN,CAAA,CAAS,CAAT,CAExDX,EAAJ,GAAauzB,CAAb,EACIjN,CAAAvjB,KAAA,CAAUswB,CAAV,CALqE,CADzD,CAAxB,CAeAN,EAAA,CAAazM,CAAAjoB,OAAA,CAAc,EAAd,CAAmB,CAAC2B,CAAAI,QAAA,CAAeG,CAAAsE,MAAA,CAAY,CAAZ,CAAf,CAAgCtE,CAAAjE,MAAA,CAAY,CAAZ,CAAjC,CAChCR;CAAA,CAAKwqB,CAAL,CAAW,QAAQ,CAACkN,CAAD,CAAQ,CAEa,EADpC,GACIpD,CAAA,CAAQoD,CAAR,CAAeT,CAAf,CADJ,EAGKx3B,CAAAk4B,KAAA,CAAOV,CAAP,CAAmB,QAAQ,CAACW,CAAD,CAAS,CACjC,MAAOA,EAAA5mB,IAAP,GAAsB0mB,CAAA1mB,IAAtB,EAAmC4mB,CAAA/zB,IAAnC,EAAiD6zB,CAAA7zB,IADhB,CAApC,CAHL,EAOIozB,CAAAhwB,KAAA,CAAgBywB,CAAhB,CARmB,CAA3B,CAYAR,EAAA,CAAWluB,CAAA,CAAKutB,CAAL,CAAsBryB,CAAAf,UAAA,CAAeoI,CAAf,CAAsB,IAAtB,CAA4B,IAA5B,CAAkC8qB,CAAlC,CAAtB,CACP9oB,EAAA,CAAS2pB,CAAT,CAAJ,GACQhzB,CAAAwc,MAAJ,CACI1gB,CAAA,CAAKi3B,CAAL,CAAiB,QAAQ,CAACS,CAAD,CAAQ,CAC7B,IAAIG,CAEJhB,EAAA,CAAKa,CAAA1mB,IACL+lB,EAAA,CAAKF,CAAL,CAAUa,CAAA7zB,IACV+yB,EAAA,CAAKE,CAAL,CAAUxzB,IAAAuS,MAAA,CAAWqhB,CAAX,CAAsBhzB,CAAA4zB,OAAtB,CAEV,IAAIlB,CAAJ,CAASF,CAAT,EAAqBE,CAArB,CAA0BF,CAA1B,CAAqCxyB,CAAA8R,MAArC,CACQsgB,CAAJ,CACIM,CADJ,CACSE,CADT,CACcxzB,IAAAnC,IAAA,CAASmC,IAAAlC,IAAA,CAASs1B,CAAT,CAAmBE,CAAnB,CAAT,CAAiCF,CAAjC,CAA4CxyB,CAAA8R,MAA5C,CADd,CAGI6hB,CAHJ,CAGW,CAAA,CAGVA,EAAL,EACIb,CAAA/vB,KAAA,CAAY,GAAZ,CAAiB2vB,CAAjB,CAAqBC,CAArB,CAAyB,GAAzB,CAA8BC,CAA9B,CAAkCC,CAAlC,CAfyB,CAAjC,CADJ,CAoBI/2B,CAAA,CAAKi3B,CAAL,CAAiB,QAAQ,CAACS,CAAD,CAAQ,CAC7B,IAAIG,CAEJjB,EAAA,CAAKc,CAAA1mB,IACL8lB,EAAA,CAAKF,CAAL,CAAUc,CAAA7zB,IACVgzB,EAAA,CAAKE,CAAL,CAAUzzB,IAAAuS,MAAA,CAAW8gB,CAAX,CAAqBzyB,CAAA0U,OAArB,CAAmCse,CAAnC,CAEV,IAAIL,CAAJ,CAASF,CAAT,EAAoBE,CAApB,CAAyBF,CAAzB,CAAmCzyB,CAAA0U,OAAnC,CACQ0d,CAAJ,CACIO,CADJ,CACSE,CADT,CACczzB,IAAAnC,IAAA,CAASmC,IAAAlC,IAAA,CAASu1B,CAAT,CAAkBE,CAAlB,CAAT,CAAgC3yB,CAAA4U,IAAhC,CAA2C5U,CAAA0U,OAA3C,CADd,CAGIif,CAHJ,CAGW,CAAA,CAGVA,EAAL,EACIb,CAAA/vB,KAAA,CAAY,GAAZ,CAAiB2vB,CAAjB,CAAqBC,CAArB,CAAyB,GAAzB,CAA8BC,CAA9B,CAAkCC,CAAlC,CAfyB,CAAjC,CArBR,CAyCA,OAAuB,EAAhB,CAAAC,CAAAz0B,OAAA,CACHkT,CAAAsiB,cAAA,CAAuBf,CAAvB;AAA+B3iB,CAA/B,EAA4C,CAA5C,CADG,CAEH,IA1HiG,CAAzG,CA8HA1U,EAAAW,UAAA03B,gBAAA,CAAiCC,QAAQ,CAACzuB,CAAD,CAAOC,CAAP,CAAW,CAC5CyuB,CAAAA,CAAS,IAAAC,gBAAA,CAAqB1uB,CAArB,CAAyB,IAAzB,CAA+B,IAA/B,CAAqC,CAAA,CAArC,CACT2L,EAAAA,CAAO,IAAA+iB,gBAAA,CAAqB3uB,CAArB,CAA2B,IAA3B,CAAiC,IAAjC,CAAuC,CAAA,CAAvC,CAFqC,KAG5CwtB,EAAS,EAHmC,CAI5Cl0B,CAEJ,IAAIsS,CAAJ,EAAY8iB,CAAZ,CACI,GAAI9iB,CAAAgjB,SAAA,EAAJ,GAAwBF,CAAAE,SAAA,EAAxB,CAEIpB,CACA,CADS5hB,CACT,CAAA4hB,CAAAqB,KAAA,CAAc,CAAA,CAHlB,KAMI,KAAKv1B,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBsS,CAAA7S,OAAhB,CAA6BO,CAA7B,EAAkC,CAAlC,CACIk0B,CAAA/vB,KAAA,CACI,GADJ,CACSmO,CAAA,CAAKtS,CAAL,CAAS,CAAT,CADT,CACsBsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CADtB,CAEI,GAFJ,CAESsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAFT,CAEsBsS,CAAA,CAAKtS,CAAL,CAAS,CAAT,CAFtB,CAGIo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAHJ,CAGmBo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAHnB,CAIIo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAJJ,CAImBo1B,CAAA,CAAOp1B,CAAP,CAAW,CAAX,CAJnB,CAKI,GALJ,CARZ,KAkBIk0B,EAAA,CAAS,IAGb,OAAOA,EA3ByC,CA+BpDjgB,EAAAzW,UAAAy3B,cAAA,CAAsCO,QAAQ,CAACtsB,CAAD,CAASgK,CAAT,CAAgB,CAG1D,IAAIlT,CACJ,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBkJ,CAAAzJ,OAAhB,CAAmCO,CAAnC,EAAuC,CAAvC,CACQkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAIJ,GAJsBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAItB,GAFIkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAEJ,CAFoBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAEpB,CAFoCQ,IAAAuS,MAAA,CAAW7J,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAX,CAEpC,CAFiEkT,CAEjE,CAFyE,CAEzE,CAF6E,CAE7E,EAAIhK,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAJ,GAAsBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAtB,GACIkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CADJ,CACoBkJ,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CADpB,CACoCQ,IAAAuS,MAAA,CAAW7J,CAAA,CAAOlJ,CAAP,CAAW,CAAX,CAAX,CADpC;AACiEkT,CADjE,CACyE,CADzE,CAC6E,CAD7E,CAIJ,OAAOhK,EAbmD,CAkB9D5L,EAAA,CAAKT,CAAAW,UAAL,CAAqB,eAArB,CAAsC,QAAQ,CAACC,CAAD,CAAUuC,CAAV,CAAa,CAEvDvC,CAAAK,KAAA,CAAa,IAAb,CAAmBkC,CAAnB,CAEI,KAAAy1B,WAAJ,GACI,IAAAA,WADJ,CACsB,IAAAA,WAAAra,KAAA,EADtB,CAJuD,CAA3D,CAUA9d,EAAA,CAAKT,CAAAW,UAAL,CAAqB,eAArB,CAAsC,QAAQ,CAACC,CAAD,CAAUkH,CAAV,CAAaS,CAAb,CAAoB,CAG9D,IAAA,CAAA,CAAA,CAAA3H,EAAAK,KAAA,CAAa,IAAb,CAAmB6G,CAAnB,CAAsBS,CAAtB,CAGA,IAAKnI,CAAA,CAAQ,IAAA4iB,UAAAxJ,MAAR,CAAL,EAAuC,IAAAwJ,UAAAxJ,MAAAvS,QAAvC,EAAwE,IAAA4xB,MAAxE,CAAA,CAII/zB,CAAAA,CAAQ,IAAAA,MAVkD,KAW1D1D,EAAU,IAAAA,QAAA4hB,UAAAxJ,MAXgD,CAY1DuH,EAAQ,IAAAA,MACR/H,EAAAA,CAAW,IAAAA,SACXsH,EAAAA,CAAO,IAAAA,KAdmD,KAe1DnH,EAAM,IAAAA,IAfoD,CAgB1Dyf,EAAa,IAAAA,WAhB6C,CAiB1DE,CAjB0D,CAoB1DC,EAAe33B,CAAAuM,OApB2C,CAqB1DqrB,EAAe,EArB2C,CAwB1DC,EAA2C,QAA3CA,GAAa,IAAA73B,QAAA83B,aAxB6C,CAyB1DC,EAA+B,CAAA,CAA/BA,GAAO,IAAAnW,UAAAmW,KAzBmD,CA2B1DjgB,EAAS,CAGRpR,EAAL,GACIA,CADJ,CACQ,IAAA+wB,MADR;AACsB,IAAAA,MAAA/wB,EADtB,CAIA6R,EAAA,CAASoH,CAAA,CAAQ,QAAR,CAAmB/H,CAAA,CACH,OAApB,GAAA,IAAAogB,WAAA,CAA8B,OAA9B,CAAwC,MADjB,CAEH,MAApB,GAAA,IAAAA,WAAA,CAA6B,MAA7B,CAAsC,QAGtCR,EAAL,GACIA,CADJ,CACiB,IAAAA,WADjB,CACmC9zB,CAAAgR,SAAA0D,MAAA,CAAqB,IAArB,CAA2B,IAA3B,CAAiC,IAAjC,CAAuCpY,CAAAmW,MAAvC,EAAwD,SAAxD,CAAAd,SAAA,CACjB,4BADiB,EAEtB,IAAAtV,OAAA,CAAY,CAAZ,CAFsB,EAEJ,oBAFI,CAEmB,IAAAA,OAAA,CAAY,CAAZ,CAAAk4B,WAFnB,EAAA3f,KAAA,CAGrB,CACFC,MAAOvY,CAAAuY,MAAPA,EAAwBA,CADtB,CAEF8S,QAASpjB,CAAA,CAAKjI,CAAAqrB,QAAL,CAAsB,CAAtB,CAFP,CAGF5P,EAAGxT,CAAA,CAAKjI,CAAAk4B,aAAL,CAA2B,CAA3B,CAHD,CAIFtd,OAAQ,CAJN,CAHqB,CAAAjG,IAAA,CAStB,IAAAwjB,WATsB,CADnC,CAeIxY,EAAJ,EACI+X,CACO,CADAK,CAAA,CAAO5wB,CAAA4N,MAAP,CAAqBmK,CAArB,CAA4BxY,CAAAC,OAC5B,CAAAoR,CAAA,EAAOH,CAAA,CAAW,CAAX,CAAe,IAAAC,OAFjC,GAII6f,CACA,CADO9f,CAAA,CAAW,IAAA3C,MAAX,CAAwBiK,CAAxB,CAA+B,CACtC,CAAAkZ,CAAA,CAAOL,CAAA,CAAO5wB,CAAAsN,MAAP,CAAqBsD,CAArB,CAA2BrR,CAAA8X,OALtC,CAQKmZ,EAAL,EAAsB33B,CAAAq4B,UAAtB,GACQ,IAAAC,eAGJ;CAFIV,CAEJ,CAFmB,WAEnB,EAAAD,CAAA,CAAe,QAAf,EAA2BC,CAAA,CAAe,GAAf,CAAqBA,CAArB,CAAoC,EAA/D,EAAqE,GAJzE,CAQAptB,EAAA,CAAQutB,CAAA,CAAO5wB,CAAA,CAAM,IAAA5D,QAAA,CAAe,GAAf,CAAqB,GAA3B,CAAP,CAAyC,IAAA4gB,QAAA,CAAaxE,CAAA,CAAQjZ,CAAAC,OAAR,CAAmBD,CAAA8X,OAAhC,CACjDgZ,EAAAlf,KAAA,CAAgB,CACZI,KAAMif,CAAA,CAAeprB,CAAA,CAAOorB,CAAP,CAAqB,CACtCntB,MAAOA,CAD+B,CAArB,CAAf,CAEDxK,CAAAq4B,UAAAx4B,KAAA,CAAuB,IAAvB,CAA6B2K,CAA7B,CAHO,CAIZa,EAAGqsB,CAJS,CAKZtsB,EAAGgtB,CALS,CAMZ5U,WAAY,SANA,CAAhB,CASA+U,EAAA,CAAWf,CAAAzF,QAAA,EAGX,IAAIpS,CAAJ,CACI,IAAKkY,CAAL,EAAoBjgB,CAAAA,CAApB,EAAmCigB,CAAAA,CAAnC,EAAiDjgB,CAAjD,CACIwgB,CAAA,CAAOZ,CAAApsB,EAAP,CAAsBmtB,CAAA1gB,OAD1B,CADJ,IAKIugB,EAAA,CAAOZ,CAAApsB,EAAP,CAAuBmtB,CAAA1gB,OAAvB,CAAyC,CAIzC8H,EAAJ,EACI,CAAA,CACUT,CADV,CACiBqZ,CAAAltB,EADjB,CAAA,CAAA,CAEW6T,CAFX,CAEkB,IAAAjK,MAFlB,CAE+BsjB,CAAAltB,EAHnC,GAMI,CAAA,CAC8B,MAApB,GAAA,IAAA2sB,WAAA,CAA6B9Y,CAA7B,CAAoC,CAD9C,CAAA,CAAA,CAE+B,OAApB,GAAA,IAAA8Y,WAAA,CAA8B9Y,CAA9B,CAAqC,IAAAjK,MAArC,CAAkDvR,CAAAwmB,WARjE,CAaIsN,EAAAnb,WAAJ,CAA4B6C,CAA5B,GACIpH,CADJ,CACaoH,CADb,CAC0BsY,CAAAnb,WAD1B,CAIImb,EAAAnb,WAAJ,CAA4Bkc,CAAAtjB,MAA5B,EAA8CujB,CAA9C,GACI1gB,CADJ,CACa,EAAE0f,CAAAnb,WAAF,CAA0Bkc,CAAAtjB,MAA1B,CAA2CujB,CAA3C,CADb,CAKAhB,EAAAlf,KAAA,CAAgB,CACZjN,EAAGqsB,CAAHrsB,CAAUyM,CADE,CAEZ1M,EAAGgtB,CAFS,CAIZngB,QAAS0H,CAAA;AAAQ+X,CAAR,CAAgB,IAAA9f,SAAA,CAAgB,CAAhB,CAAoBlU,CAAAwmB,WAJjC,CAKZhS,QAASyH,CAAA,CAAS,IAAA/H,SAAA,CAAgBlU,CAAAgU,YAAhB,CAAoC,CAA7C,CAAkD0gB,CAAlD,CAAyDG,CAAA1gB,OAAzD,CAA2E,CALxE,CAAhB,CA5GA,CAN8D,CAAlE,CAoIAjL,EAAA6J,KAAA,CAAmBgiB,QAAQ,EAAG,CAG1B/E,CAAAh0B,MAAA,CAAiB,IAAjB,CAAuBI,SAAvB,CAGA,KAAA44B,WAAA,CAAgB,IAAA14B,QAAAmhB,QAAhB,CAN0B,CAsB9BvU,EAAA8rB,WAAA,CAAyBC,QAAQ,CAACxX,CAAD,CAAU,CAGvC,IAAAvN,YAAA,CAAgC,OAAb,GAACuN,CAAD,EAAoC,SAApC,GAAwBA,CAAxB,CAAiD,QAAQ,CAAC3W,CAAD,CAAQrD,CAAR,CAAe,CACvF,IAAIyxB,EAAe,IAAAA,aAEnB,IAAcn3B,IAAAA,EAAd,GAAI+I,CAAJ,EAA4C/I,IAAAA,EAA5C,GAA2Bm3B,CAA3B,CAiBI,MAbIpuB,EAaGA,CAdS,OAAhB,GAAI2W,CAAJ,CACI3W,CADJ,CACaouB,CADb,CAKmBpuB,CALnB,CAK2BouB,CAL3B,CAKY,GALZ,EAMsC,GAA7B,GAAA,IAAA54B,QAAA64B,YAAA,CAAmC,CAAnC,CAAuC,GANhD,CAcOruB,CAJHrD,CAIGqD,GAHHrD,CAAA+W,OAGG1T,CAHYA,CAGZA,EAAAA,CApB4E,CAAxE,CAsBf,IAGJ,KAAApB,YAAA+X,QAAA,CAA2BA,CAGvB,KAAAzd,MAAAo1B,YAAJ,GACI,IAAAznB,QADJ,CACmB,CAAA,CADnB,CA/BuC,CAyC3CzE,EAAA3G,YAAA,CAA0ByK,QAAQ,EAAG,CAAA,IAE7B3O,CAF6B,CAG7Bg3B;AAAY,EAHiB,CAI7Bl1B,CAJ6B,CAK7BqN,CAL6B,CAM7B1P,CAN6B,CAO7Bo3B,CAGJjF,EAAAj0B,MAAA,CAAwB,IAAxB,CAA8BI,SAA9B,CAEA,IAXaC,IAWTN,MAAJ,EAXaM,IAWOmR,eAApB,CAkBI,IAfArN,CAeK,CA7BI9D,IAcQ8D,eAeZ,CAdLqN,CAcK,CA7BInR,IAeQmR,eAcZ,CAbL1P,CAaK,CAbI0P,CAAA1P,OAaJ,CA7BIzB,IAoBLmI,cASC,GAPD6wB,CACA,CADWxF,CAAA,CAAQ,OAAR,CAtBNxzB,IAsBuBmI,cAAjB,CACX,CAAkB,EAAlB,GAAI6wB,CAAJ,GACIA,CADJ,CACexF,CAAA,CAxBVxzB,IAwBkB2T,YAAR,EAA8B,GAA9B,CAxBV3T,IAwB6CmI,cAAnC,CADf,CAMC,EAAAnG,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgBP,CAAhB,CAAyB,CAAzB,CAA4BO,CAAA,EAA5B,CAII,GAHA62B,CAGI,CAHW1nB,CAAA,CAAenP,CAAf,CAAA,EAAiC,EAAjC,CAAqBg3B,CAArB,CACX7nB,CAAA,CAAenP,CAAf,CAAA,CAAkBg3B,CAAlB,CADW,CAEX7nB,CAAA,CAAenP,CAAf,CACA,CAAAyK,CAAA,CAASosB,CAAT,CAAA,EAA0B/0B,CAAA,CAAe9B,CAAf,CAAmB,CAAnB,CAA1B,EAjCChC,IAiCkDN,MAAAW,IAAnD,EAAwF,CAAxF,GAAuEw4B,CAA3E,CAA+F,CAjC1F74B,IAkCD64B,aAAA,CAAsBA,CACtB,MAF2F,CAlCtE,CA6CrCv5B,EAAA,CAAKuN,CAAL,CAAkB,aAAlB,CAAiC,QAAQ,CAACpN,CAAD,CAAU,CAC/C,IAAI0D,CAEJ1D,EAAAE,MAAA,CAAc,IAAd,CAAoB,EAAAE,MAAAC,KAAA,CAAcC,SAAd,CAAyB,CAAzB,CAApB,CAEI,KAAA8T,YAAJ,GACI1Q,CAEA,CAFW,CAAC,IAAA0Q,YAAA,CAAiB,IAAApO,QAAjB,CAAD,CAAiC,IAAAoO,YAAA,CAAiB,IAAAnO,QAAjB,CAAjC,CAEX;AADA,IAAAD,QACA,CADe6G,CAAA,CAASnJ,CAAT,CACf,CAAA,IAAAuC,QAAA,CAAe2G,CAAA,CAASlJ,CAAT,CAHnB,CAL+C,CAAnD,CA+BAtE,EAAAW,UAAAm5B,WAAA,CAA4BM,QAAQ,CAAC7X,CAAD,CAAUtX,CAAV,CAAkB,CAC7C,IAAAtG,QAAL,GACItE,CAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAACA,CAAD,CAAS,CAC/BA,CAAA24B,WAAA,CAAkBvX,CAAlB,CAD+B,CAAnC,CAGA,CAAIlZ,CAAA,CAAK4B,CAAL,CAAa,CAAA,CAAb,CAAJ,EACI,IAAAnG,MAAAmG,OAAA,EALR,CADkD,CAetD6C,EAAAnN,UAAAs0B,iBAAA,CAAmCoF,QAAQ,CAAC1lB,CAAD,CAAc,CAGrDA,CAAA,CAAcA,CAAA2lB,QAAA,CACV,gBADU,EAEM,CAAf,CAJO/xB,IAIP+W,OAAA,CAAmB,GAAnB,CAAyB,EAFhB,EAGVxf,CAAAy6B,aAAA,CALQhyB,IAKO+W,OAAf,CAA6BjW,CAAA,CALrBd,IAK0BpH,OAAAmS,eAAAknB,eAAL,CAAiD,CAAjD,CAA7B,CAHU,CAMd,OAAOxF,EAAAl0B,MAAA,CAA4B,IAA5B,CAAkC,CAAC6T,CAAD,CAAlC,CAT8C,CAsBzDlU,EAAA,CAAKC,CAAAC,UAAL,CAAuB,QAAvB,CAAiC,QAAQ,CAACC,CAAD,CAAU,CAGzC,IAAAkE,MAAA21B,KAAN,EAAyB,IAAA31B,MAAA21B,KAAA,EAAzB,EACK,IAAA31B,MAAA41B,MADL,EAEI75B,CAAA,IAAAA,MAFJ,EAGK,IAAAA,MAAA85B,SAHL,GAOSC,CAAA,IAAAA,QAAL,EAAqB,IAAAjkB,QAArB;CACI,IAAAikB,QAEA,CAFe/sB,CAAA,CAAM,IAAA/I,MAAA81B,QAAN,CAEf,CADA,IAAAA,QAAAvkB,MACA,CADqB,IAAAxV,MAAAqD,IACrB,CAAA,IAAA02B,QAAA3hB,OAAA,CAAsB,IAAA7P,MAAAlF,IAH1B,EAMW,IAAAY,MAAA,CAAW,IAAA+1B,cAAX,CAAJ,CACH,IAAA/1B,MAAA,CAAW,IAAA+1B,cAAX,CAAAnhB,KAAA,CAAoC,CAChCrD,MAAO,IAAAxV,MAAAqD,IADyB,CAEhC+U,OAAQ,IAAA7P,MAAAlF,IAFwB,CAApC,CADG,CAMI,IAAA02B,QANJ,GAOH,IAAAA,QAAAvkB,MACA,CADqB,IAAAxV,MAAAqD,IACrB,CAAA,IAAA02B,QAAA3hB,OAAA,CAAsB,IAAA7P,MAAAlF,IARnB,CAbX,CAwBAtD,EAAAK,KAAA,CAAa,IAAb,CA3B+C,CAAnD,CA8BAR,EAAA,CAAKR,CAAAU,UAAL,CAAsB,mBAAtB,CAA2C,QAAQ,CAACC,CAAD,CAAU,CACzD,IAAIyL,EAASzL,CAAAK,KAAA,CAAa,IAAb,CAEbZ,EAAA,CAAK,IAAAc,OAAL,CAAkB,QAAQ,CAAC25B,CAAD,CAAQ,CAE1BA,CAAA3oB,eAAJ,GACI9F,CADJ,CACaA,CAAAtJ,OAAA,CAAcgf,CAAA,CAAK+Y,CAAAzuB,OAAL,EAAqB,EAArB,CAAyB,QAAQ,CAAC9D,CAAD,CAAQ,CAC5D,MAAOA,EAAAylB,SADqD,CAAzC,CAAd,CADb,CAF8B,CAAlC,CAQA,OAAO3hB,EAXkD,CAA7D,CAcA5L;CAAA,CAAKR,CAAAU,UAAL,CAAsB,QAAtB,CAAgC,QAAQ,CAACC,CAAD,CAAUQ,CAAV,CAAmB,CAInD,WAAJ,EAAmBA,EAAnB,EAA8B,IAAAghB,UAA9B,GACIvU,CAAA,CAAM,CAAA,CAAN,CAAY,IAAAzM,QAAA6a,UAAZ,CAAoC7a,CAAA6a,UAApC,CAEA,CADA,IAAAmG,UAAA7N,OAAA,CAAsB,EAAtB,CAA0B,CAAA,CAA1B,CACA,CAAA,OAAOnT,CAAA6a,UAHX,CAMA,OAAOrb,EAAAE,MAAA,CAAc,IAAd,CAAoBC,KAAAJ,UAAAK,MAAAC,KAAA,CAA2BC,SAA3B,CAAsC,CAAtC,CAApB,CAVgD,CAA3D,CAtwBS,CAAZ,CAAA,CAmxBCrB,CAnxBD,CA54KkB,CANtB;", |
"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","isNull","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","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","doc","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","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","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","baseSeries","adaptToUpdatedData","updatedDataHandler","modifyBaseAxisExtremes","chartOptions","scrollbarOptions","scrollbarEnabled","setBaseSeries","xAxisIndex","yAxisIndex","baseXaxis","extraMargin","isDirtyBox","isX","zoomEnabled","offsets","alignTicks","addBaseSeries","scrollTrackWidth","valueRange","addBaseSeriesEvents","addChartEvents","returnFalseOnNoBaseSeries","baseAxis","navAxis","navAxisOptions","baseAxisOptions","baseSeriesOptions","s","showInNavigator","navigatorSeries","baseOptions","mergedNavSeriesOptions","chartNavigatorOptions","baseNavigatorOptions","navSeriesMixin","enableMouseTracking","padXAxis","showInLegend","stacking","isInternal","base","navigatorSeriesData","hasNavigatorData","initSeries","remove","unionExtremes","baseExtremes","baseDataMin","baseDataMax","stickToMin","stickToMax","hasSetExtremes","eventArgs","pointStart","setData","axes","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","splat","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","inArray","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/stock.src.js |
---|
@@ -0,0 +1,6320 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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; |
if (gapSize && i > 0) { // #5008 |
// extension for ordinal breaks |
while (i--) { |
if (points[i + 1].x - points[i].x > this.closestPointRange * gapSize) { |
points.splice( // insert after this one |
i + 1, |
0, { |
isNull: true |
} |
); |
} |
} |
} |
// 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 |
*/ |
seriesType('ohlc', 'column', { |
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; |
/** |
* The candlestick series type. |
* |
* @constructor seriesTypes.candlestick |
* @augments seriesTypes.ohlc |
*/ |
seriesType('candlestick', 'ohlc', merge(defaultPlotOptions.column, { |
states: { |
hover: { |
lineWidth: 2 |
} |
}, |
tooltip: defaultPlotOptions.ohlc.tooltip, |
threshold: null |
}), /** @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 |
*/ |
seriesType('flags', 'column', { |
pointRange: 0, // #673 |
//radius: 2, |
shape: 'flag', |
stackDistance: 12, |
textAlign: 'center', |
tooltip: { |
pointFormat: '{point.text}<br/>' |
}, |
threshold: null, |
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, |
doc = H.doc, |
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; |
var defaultScrollbarOptions = { |
//enabled: true |
height: isTouchDevice ? 20 : 14, |
// trackBorderRadius: 0 |
barBorderRadius: 0, |
buttonBorderRadius: 0, |
liveRedraw: svg && !isTouchDevice, |
margin: 10, |
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], |
[doc, 'mousemove', mouseMoveHandler], |
[doc, 'mouseup', mouseUpHandler] |
]; |
// Touch events |
if (hasTouch) { |
_events.push( |
[bar, 'touchstart', mouseDownHandler], [doc, 'touchmove', mouseMoveHandler], [doc, '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, axis.dataMin), |
scrollMax = Math.max(pick(axis.options.max, axis.max), axis.max, axis.dataMax), |
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, |
doc = H.doc, |
each = H.each, |
erase = H.erase, |
error = H.error, |
extend = H.extend, |
grep = H.grep, |
hasTouch = H.hasTouch, |
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, { |
navigator: { |
//enabled: true, |
height: 40, |
margin: 25, |
maskInside: true, |
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, |
xAxis: { |
className: 'highcharts-navigator-xaxis', |
tickLength: 0, |
tickPixelInterval: 200, |
labels: { |
align: 'left', |
x: 3, |
y: -4 |
}, |
crosshair: false |
}, |
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) { |
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(doc, 'mouseup', mouseUpHandler) |
); |
// Touch events |
if (hasTouch) { |
eventsToUnbind.push( |
addEvent(container, 'touchmove', mouseMoveHandler), |
addEvent(doc, '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] && 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.addBaseSeries(); |
// 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. With a bit of modification we should be able to make |
* this an API method to be called from the outside |
* @param {Object} baseSeriesOptions - series options for a navigator |
*/ |
setBaseSeries: function(baseSeriesOptions) { |
var chart = this.chart, |
baseSeries; |
baseSeriesOptions = baseSeriesOptions || chart.options && chart.options.navigator.baseSeries || 0; |
// If we're resetting, remove the existing series |
if (this.series) { |
this.removeBaseSeriesEvents(); |
each(this.series, function(s) { |
s.destroy(); |
}); |
} |
baseSeries = this.baseSeries = []; |
// Iterate through series and add the ones that should be shown in navigator |
each(chart.series || [], function(series, i) { |
if (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.addBaseSeries(); |
} |
}, |
/* |
* Add base series to the navigator. |
*/ |
addBaseSeries: function() { |
var navigator = this, |
chart = navigator.chart, |
navigatorSeries = navigator.series = [], |
baseSeries = navigator.baseSeries, |
baseOptions, |
mergedNavSeriesOptions, |
chartNavigatorOptions = navigator.navigatorOptions.series, |
baseNavigatorOptions, |
navSeriesMixin = { |
enableMouseTracking: false, |
index: null, // #6162 |
group: 'nav', // for columns |
padXAxis: false, |
xAxis: 'navigator-x-axis', |
yAxis: 'navigator-y-axis', |
showInLegend: false, |
stacking: false, // #4823 |
isInternal: true, |
visible: true |
}; |
// Go through each base series and merge the options to create new series |
if (baseSeries) { |
each(baseSeries, function(base, i) { |
navSeriesMixin.name = 'Navigator ' + (i + 1); |
baseOptions = base.options || {}; |
baseNavigatorOptions = baseOptions.navigatorOptions || {}; |
mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, chartNavigatorOptions, baseNavigatorOptions); |
// Merge data separately. Do a slice to avoid mutating the navigator options from base series (#4923). |
var navigatorSeriesData = baseNavigatorOptions.data || chartNavigatorOptions.data; |
navigator.hasNavigatorData = navigator.hasNavigatorData || !!navigatorSeriesData; |
mergedNavSeriesOptions.data = navigatorSeriesData || baseOptions.data && baseOptions.data.slice(0); |
// Add the series |
base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions); |
navigatorSeries.push(base.navigatorSeries); |
}); |
} else { |
// No base series, build from mixin and chart wide options |
mergedNavSeriesOptions = merge(chartNavigatorOptions, navSeriesMixin); |
mergedNavSeriesOptions.data = chartNavigatorOptions.data; |
navigator.hasNavigatorData = !!mergedNavSeriesOptions.data; |
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. |
if (baseSeries[0] && baseSeries[0].xAxis) { |
addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes); |
} |
if (this.navigatorOptions.adaptToUpdatedData !== false) { |
// Respond to updated data in the base series. |
// Abort if lazy-loading data from the server. |
each(baseSeries, function(base) { |
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; |
// 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]); |
// 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); |
// 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.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, { |
rangeSelector: { |
// allButtonsEnabled: false, |
// enabled: true, |
// buttons: {Object} |
// buttonSpacing: 0, |
buttonTheme: { |
'stroke-width': 0, |
width: 28, |
height: 18, |
padding: 2, |
zIndex: 7 // #484, #852 |
}, |
height: 35, // reserved space for buttons and input |
inputPosition: { |
align: 'right' |
}, |
// inputDateFormat: '%b %e, %Y', |
// inputEditDateFormat: '%Y-%m-%d', |
// inputEnabled: true, |
// selected: undefined |
} |
}); |
defaultOptions.lang = merge(defaultOptions.lang, { |
rangeSelectorZoom: 'Zoom', |
rangeSelectorFrom: 'From', |
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 initiated |
* 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.call(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.call(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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/treemap.js |
---|
@@ -0,0 +1,29 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
(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,q=f.seriesTypes,E=f.map,v=f.merge,y=f.extend,z=f.noop,m=f.each,x=f.grep,F=f.isNumber,A=f.isString,k=f.pick,u=f.Series,G=f.stableSort,H=function(a,b,c){c=c||this;f.objectEach(a,function(e,d){b.call(c,e,d,a)})},B=function(a,b,c,e){e=e||this;a=a||[];m(a,function(d,g){c=b.call(e,c,d,g,a)});return c},w=function(a,b,c){c=c||this;a=b.call(c,a);!1!==a&&w(a,b,c)};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:q.heatmap?["xAxis", |
"yAxis","colorAxis"]:["xAxis","yAxis"],optionalAxis:"colorAxis",getSymbol:z,parallelArrays:["x","y","value","colorValue"],colorKey:"colorValue",translateColors:q.heatmap&&q.heatmap.prototype.translateColors,trackerGroups:["group","dataLabelsGroup"],getListOfParents:function(a,b){a=B(a,function(a,b,d){b=k(b.parent,"");void 0===a[b]&&(a[b]=[]);a[b].push(d);return a},{});H(a,function(a,e,d){""!==e&&-1===f.inArray(e,b)&&(m(a,function(a){d[""].push(a)}),delete d[e])});return a},getTree:function(){var a= |
E(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,b){u.prototype.init.call(this,a,b);this.options.allowDrillToNode&&f.addEvent(this,"click",this.onClickDrillToNode)},buildNode:function(a,b,c,e,d){var g=this,h=[],C=g.points[b],D;m(e[a]||[],function(b){D=g.buildNode(g.points[b].id,b,c+1,e,a);h.push(D)});b={id:a,i:b,children:h,level:c,parent:d,visible:!1};g.nodeMap[b.id]=b;C&&(C.node=b);return b},setTreeValues:function(a){var b= |
this,c=b.options,e=0,d=[],g,h=b.points[a.i];w(b.nodeMap[b.rootNode],function(a){var c=!1,d=a.parent;a.visible=!0;if(d||""===d)c=b.nodeMap[d];return c});w(b.nodeMap[b.rootNode].children,function(a){var b=!1;m(a,function(a){a.visible=!0;a.children.length&&(b=(b||[]).concat(a.children))});return b});m(a.children,function(a){a=b.setTreeValues(a);d.push(a);a.ignore?w(a.children,function(a){var b=!1;m(a,function(a){y(a,{ignore:!0,isLeaf:!1,visible:!1});a.children.length&&(b=(b||[]).concat(a.children))}); |
return b}):e+=a.val});G(d,function(a,b){return a.sortIndex-b.sortIndex});g=k(h&&h.options.value,e);h&&(h.value=g);y(a,{children:d,childrenTotal:e,ignore:!(k(h&&h.visible,!0)&&0<g),isLeaf:a.visible&&!e,levelDynamic:c.levelIsConstant?a.level:a.level-b.nodeMap[b.rootNode].level,name:k(h&&h.name,""),sortIndex:k(h&&h.sortIndex,-g),val:g});return a},calculateChildrenAreas:function(a,b){var c=this,e=c.options,d=this.levelMap[a.levelDynamic+1],g=k(c[d&&d.layoutAlgorithm]&&d.layoutAlgorithm,e.layoutAlgorithm), |
h=e.alternateStartingDirection,f=[];a=x(a.children,function(a){return!a.ignore});d&&d.layoutStartingDirection&&(b.direction="vertical"===d.layoutStartingDirection?0:1);f=c[g](b,a);m(a,function(a,d){d=f[d];a.values=v(d,{val:a.childrenTotal,direction:h?1-b.direction:b.direction});a.pointValues=v(d,{x:d.x/c.axisRatio,width:d.width/c.axisRatio});a.children.length&&c.calculateChildrenAreas(a,a.values)})},setPointValues:function(){var a=this.xAxis,b=this.yAxis;m(this.points,function(c){var e=c.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(b.translate(d.y,0,0,0,1))-0,d=Math.round(b.translate(d.y+d.height,0,0,0,1))-0,c.shapeType="rect",c.shapeArgs={x:Math.min(e,g),y:Math.min(h,d),width:Math.abs(g-e),height:Math.abs(d-h)},c.plotX=c.shapeArgs.x+c.shapeArgs.width/2,c.plotY=c.shapeArgs.y+c.shapeArgs.height/2):(delete c.plotX,delete c.plotY)})},setColorRecursive:function(a,b,c){var e=this,d,g;a&&(d=e.points[a.i],g=e.levelMap[a.levelDynamic], |
b=k(d&&d.options.color,g&&g.color,b,e.color),c=k(d&&d.options.colorIndex,g&&g.colorIndex,c,e.colorIndex),d&&(d.color=b,d.colorIndex=c),a.children.length&&m(a.children,function(a){e.setColorRecursive(a,b,c)}))},algorithmGroup:function(a,b,c,e){this.height=a;this.width=b;this.plot=e;this.startDirection=this.direction=c;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,b,c,e){var d,g,h,f,k=c.lW,p=c.lH,l=c.plot,n,r=0,t=c.elArr.length-1;b?(k=c.nW,p=c.nH):n=c.elArr[c.elArr.length-1];m(c.elArr,function(a){if(b||r<t)0===c.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===c.direction?l.y+=f:l.x+=h;r+=1});c.reset();0===c.direction?c.width-=k:c.height-=p;l.y=l.parent.y+(l.parent.height-c.height);l.x=l.parent.x+(l.parent.width- |
c.width);a&&(c.direction=1-c.direction);b||c.addElement(n)},algorithmLowAspectRatio:function(a,b,c){var e=[],d=this,g,h={x:b.x,y:b.y,parent:b},f=0,k=c.length-1,p=new this.algorithmGroup(b.height,b.width,b.direction,h);m(c,function(c){g=c.val/b.val*b.height*b.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,b,c){var e=[],d,g=b.direction,f=b.x,k=b.y,n=b.width,p=b.height,l,q,r,t;m(c,function(c){d= |
c.val/b.val*b.height*b.width;l=f;q=k;0===g?(t=p,r=d/t,n-=r,f+=r):(r=n,t=d/r,p-=t,k+=t);e.push({x:l,y:q,width:r,height:t});a&&(g=1-g)});return e},strip:function(a,b){return this.algorithmLowAspectRatio(!1,a,b)},squarified:function(a,b){return this.algorithmLowAspectRatio(!0,a,b)},sliceAndDice:function(a,b){return this.algorithmFill(!0,a,b)},stripes:function(a,b){return this.algorithmFill(!1,a,b)},translate:function(){var a=this.rootNode=k(this.rootNode,this.options.rootId,""),b,c;u.prototype.translate.call(this); |
this.levelMap=B(this.options.levels,function(a,b){a[b.level]=b;return a},{});c=this.tree=this.getTree();b=this.nodeMap[a];""===a||b&&b.children.length||(this.drillToNode("",!1),a=this.rootNode,b=this.nodeMap[a]);this.setTreeValues(c);this.axisRatio=this.xAxis.len/this.yAxis.len;this.nodeMap[""].pointValues=a={x:0,y:0,width:100,height:100};this.nodeMap[""].values=a=v(a,{width:a.width*this.axisRatio,direction:"vertical"===this.options.layoutStartingDirection?0:1,val:c.val});this.calculateChildrenAreas(c, |
a);this.colorAxis?this.translateColors():this.options.colorByPoint||this.setColorRecursive(this.tree);this.options.allowDrillToNode&&(b=b.pointValues,this.xAxis.setExtremes(b.x,b.x+b.width,!1),this.yAxis.setExtremes(b.y,b.y+b.height,!1),this.xAxis.setScale(),this.yAxis.setScale());this.setPointValues()},drawDataLabels:function(){var a=this,b=x(a.points,function(a){return a.node.visible}),c,e;m(b,function(b){e=a.levelMap[b.node.levelDynamic];c={style:{}};b.node.isLeaf||(c.enabled=!1);e&&e.dataLabels&& |
(c=v(c,e.dataLabels),a._hasPointLabels=!0);b.shapeArgs&&(c.style.width=b.shapeArgs.width,b.dataLabel&&b.dataLabel.css({width:b.shapeArgs.width+"px"}));b.dlOptions=v(c,b.options.dataLabels)});u.prototype.drawDataLabels.call(this)},alignDataLabel:function(a){q.column.prototype.alignDataLabel.apply(this,arguments);a.dataLabel&&a.dataLabel.attr({zIndex:a.node.zIndex+1})},drawPoints:function(){var a=this,b=x(a.points,function(a){return a.node.visible});m(b,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]});q.column.prototype.drawPoints.call(this);a.options.allowDrillToNode&&m(b,function(b){b.graphic&&(b.drillId=a.options.interactByLeaf?a.drillToByLeaf(b):a.drillToByGroup(b))})},onClickDrillToNode:function(a){var b=(a=a.point)&&a.drillId;A(b)&&(a.setState(""),this.drillToNode(b))},drillToByGroup:function(a){var b=!1;1!==a.node.level-this.nodeMap[this.rootNode].level||a.node.isLeaf||(b=a.id);return b}, |
drillToByLeaf:function(a){var b=!1;if(a.node.parent!==this.rootNode&&a.node.isLeaf)for(a=a.node;!b;)a=this.nodeMap[a.parent],a.parent===this.rootNode&&(b=a.id);return b},drillUp:function(){var a=this.nodeMap[this.rootNode];a&&A(a.parent)&&this.drillToNode(a.parent)},drillToNode:function(a,b){var c=this.nodeMap[a];this.rootNode=a;""===a?this.drillUpButton=this.drillUpButton.destroy():this.showDrillUpButton(c&&c.name||a);this.isDirty=!0;k(b,!0)&&this.chart.redraw()},showDrillUpButton:function(a){var b= |
this;a=a||"\x3c Back";var c=b.options.drillUpButton,e,d;c.text&&(a=c.text);this.drillUpButton?this.drillUpButton.attr({text:a}).align():(d=(e=c.theme)&&e.states,this.drillUpButton=this.chart.renderer.button(a,null,null,function(){b.drillUp()},e,d&&d.hover,d&&d.select).attr({align:c.position.align,zIndex:7}).add().align(c.position,!1,c.relativeTo||"plotBox"))},buildKDTree:z,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),b=this.series,c=b.options;this.node.level<=b.nodeMap[b.rootNode].level? |
a+=" highcharts-above-level":this.node.isLeaf||k(c.interactByLeaf,!c.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:q.pie.prototype.pointClass.prototype.setVisible})})(n)}); |
/base/000_base/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","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","rootNode","p","length","concat","ignore","isLeaf","a","b","sortIndex","value","levelDynamic","calculateChildrenAreas","area","levelMap","algorithm","alternate","childrenValues","n","direction","index","values","pointValues","axisRatio","width","setPointValues","xAxis","yAxis","x2","y1","x1","Math","round","translate","crispCorr","y2","height","shapeType","shapeArgs","min","abs","plotX","plotY","setColorRecursive","color","colorIndex","algorithmGroup","h","w","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","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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/treemap.src.js |
---|
@@ -0,0 +1,893 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* |
* (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 |
seriesType('treemap', 'scatter', { |
showInLegend: false, |
marker: false, |
dataLabels: { |
enabled: true, |
defer: false, |
verticalAlign: 'middle', |
formatter: function() { // #2945 |
return this.point.name || this.point.id; |
}, |
inside: true |
}, |
tooltip: { |
headerFormat: '', |
pointFormat: '<b>{point.name}</b>: {point.value}</b><br/>' |
}, |
ignoreHiddenPoint: true, |
layoutAlgorithm: 'sliceAndDice', |
layoutStartingDirection: 'vertical', |
alternateStartingDirection: false, |
levelIsConstant: true, |
drillUpButton: { |
position: { |
align: 'right', |
x: -10, |
y: 10 |
} |
}, |
// Prototype members |
}, { |
pointArrayMap: ['value'], |
axisTypes: seriesTypes.heatmap ? ['xAxis', 'yAxis', 'colorAxis'] : ['xAxis', 'yAxis'], |
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]; |
// 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; |
}); |
// First give the children some values |
each(tree.children, function(child) { |
child = series.setTreeValues(child); |
children.push(child); |
if (!child.ignore) { |
childrenTotal += child.val; |
} else { |
// @todo Add predicate to avoid looping already ignored children |
recursive(child.children, function(children) { |
var next = false; |
each(children, function(node) { |
extend(node, { |
ignore: true, |
isLeaf: false, |
visible: false |
}); |
if (node.children.length) { |
next = (next || []).concat(node.children); |
} |
}); |
return next; |
}); |
} |
}); |
// 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: (options.levelIsConstant ? tree.level : (tree.level - series.nodeMap[series.rootNode].level)), |
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]; |
} |
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.dataLabel.attr({ |
zIndex: point.node.zIndex + 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)); |
})); |
/base/000_base/node_modules/highcharts/js/modules/xrange-series.js |
---|
@@ -0,0 +1,15 @@ |
/* |
Highcharts JS v5.0.12 (2017-05-24) |
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)}); |
/base/000_base/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"] |
} |
/base/000_base/node_modules/highcharts/js/modules/xrange-series.src.js |
---|
@@ -0,0 +1,258 @@ |
/** |
* @license Highcharts JS v5.0.12 (2017-05-24) |
* 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)); |
})); |