152 lines
71 KiB
JavaScript
152 lines
71 KiB
JavaScript
/*
|
|
Highcharts JS v7.0.0 (2018-12-11)
|
|
Highstock as a plugin for Highcharts
|
|
|
|
(c) 2018 Torstein Honsi
|
|
|
|
License: www.highcharts.com/license
|
|
*/
|
|
(function(H){"object"===typeof module&&module.exports?module.exports=H:"function"===typeof define&&define.amd?define(function(){return H}):H("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(H){(function(b){var D=b.addEvent,n=b.Axis,E=b.Chart,p=b.css,C=b.defined,G=b.extend,B=b.noop,w=b.pick,A=b.timeUnits,z=b.wrap;z(b.Series.prototype,"init",function(b){var e;b.apply(this,Array.prototype.slice.call(arguments,1));(e=this.xAxis)&&e.options.ordinal&&D(this,"updatedData",function(){delete e.ordinalIndex})});
|
|
z(n.prototype,"getTimeTicks",function(b,e,d,l,a,f,u,m){var c=0,k,q,h={},y,r,x,g=[],t=-Number.MAX_VALUE,v=this.options.tickPixelInterval,K=this.chart.time;if(!this.options.ordinal&&!this.options.breaks||!f||3>f.length||void 0===d)return b.call(this,e,d,l,a);r=f.length;for(k=0;k<r;k++){x=k&&f[k-1]>l;f[k]<d&&(c=k);if(k===r-1||f[k+1]-f[k]>5*u||x){if(f[k]>t){for(q=b.call(this,e,f[c],f[k],a);q.length&&q[0]<=t;)q.shift();q.length&&(t=q[q.length-1]);g=g.concat(q)}c=k+1}if(x)break}b=q.info;if(m&&b.unitRange<=
|
|
A.hour){k=g.length-1;for(c=1;c<k;c++)K.dateFormat("%d",g[c])!==K.dateFormat("%d",g[c-1])&&(h[g[c]]="day",y=!0);y&&(h[g[0]]="day");b.higherRanks=h}g.info=b;if(m&&C(v)){m=K=g.length;k=[];var I;for(y=[];m--;)c=this.translate(g[m]),I&&(y[m]=I-c),k[m]=I=c;y.sort();y=y[Math.floor(y.length/2)];y<.6*v&&(y=null);m=g[K-1]>l?K-1:K;for(I=void 0;m--;)c=k[m],l=Math.abs(I-c),I&&l<.8*v&&(null===y||l<.8*y)?(h[g[m]]&&!h[g[m+1]]?(l=m+1,I=c):l=m,g.splice(l,1)):I=c}return g});G(n.prototype,{beforeSetTickPositions:function(){var b,
|
|
e=[],d,l=!1,a,f=this.getExtremes(),u=f.min,m=f.max,c,k=this.isXAxis&&!!this.options.breaks,f=this.options.ordinal,q=Number.MAX_VALUE,h=this.chart.options.chart.ignoreHiddenSeries,y;if(f||k){this.series.forEach(function(a,c){d=[];if(!(h&&!1===a.visible||!1===a.takeOrdinalPosition&&!k)&&(e=e.concat(a.processedXData),b=e.length,e.sort(function(g,a){return g-a}),q=Math.min(q,w(a.closestPointRange,q)),b)){for(c=0;c<b-1;)e[c]!==e[c+1]&&d.push(e[c+1]),c++;d[0]!==e[0]&&d.unshift(e[0]);e=d}a.isSeriesBoosting&&
|
|
(y=!0)});y&&(e.length=0);b=e.length;if(2<b){a=e[1]-e[0];for(c=b-1;c--&&!l;)e[c+1]-e[c]!==a&&(l=!0);!this.options.keepOrdinalPadding&&(e[0]-u>a||m-e[e.length-1]>a)&&(l=!0)}else this.options.overscroll&&(2===b?q=e[1]-e[0]:1===b?(q=this.options.overscroll,e=[e[0],e[0]+q]):q=this.overscrollPointsRange);l?(this.options.overscroll&&(this.overscrollPointsRange=q,e=e.concat(this.getOverscrollPositions())),this.ordinalPositions=e,a=this.ordinal2lin(Math.max(u,e[0]),!0),c=Math.max(this.ordinal2lin(Math.min(m,
|
|
e[e.length-1]),!0),1),this.ordinalSlope=m=(m-u)/(c-a),this.ordinalOffset=u-a*m):(this.overscrollPointsRange=w(this.closestPointRange,this.overscrollPointsRange),this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0)}this.isOrdinal=f&&l;this.groupIntervalFactor=null},val2lin:function(b,e){var d=this.ordinalPositions;if(d){var l=d.length,a,f;for(a=l;a--;)if(d[a]===b){f=a;break}for(a=l-1;a--;)if(b>d[a]||0===a){b=(b-d[a])/(d[a+1]-d[a]);f=a+b;break}e=e?f:this.ordinalSlope*(f||0)+this.ordinalOffset}else e=
|
|
b;return e},lin2val:function(b,e){var d=this.ordinalPositions;if(d){var l=this.ordinalSlope,a=this.ordinalOffset,f=d.length-1,u;if(e)0>b?b=d[0]:b>f?b=d[f]:(f=Math.floor(b),u=b-f);else for(;f--;)if(e=l*f+a,b>=e){l=l*(f+1)+a;u=(b-e)/(l-e);break}return void 0!==u&&void 0!==d[f]?d[f]+(u?u*(d[f+1]-d[f]):0):b}return b},getExtendedPositions:function(){var b=this,e=b.chart,d=b.series[0].currentDataGrouping,l=b.ordinalIndex,a=d?d.count+d.unitName:"raw",f=b.options.overscroll,u=b.getExtremes(),m,c;l||(l=b.ordinalIndex=
|
|
{});l[a]||(m={series:[],chart:e,getExtremes:function(){return{min:u.dataMin,max:u.dataMax+f}},options:{ordinal:!0},val2lin:n.prototype.val2lin,ordinal2lin:n.prototype.ordinal2lin},b.series.forEach(function(a){c={xAxis:m,xData:a.xData.slice(),chart:e,destroyGroupedData:B};c.xData=c.xData.concat(b.getOverscrollPositions());c.options={dataGrouping:d?{enabled:!0,forced:!0,approximation:"open",units:[[d.unitName,[d.count]]]}:{enabled:!1}};a.processData.apply(c);m.series.push(c)}),b.beforeSetTickPositions.apply(m),
|
|
l[a]=m.ordinalPositions);return l[a]},getOverscrollPositions:function(){var F=this.options.overscroll,e=this.overscrollPointsRange,d=[],l=this.dataMax;if(b.defined(e))for(d.push(l);l<=this.dataMax+F;)l+=e,d.push(l);return d},getGroupIntervalFactor:function(b,e,d){var l;d=d.processedXData;var a=d.length,f=[];l=this.groupIntervalFactor;if(!l){for(l=0;l<a-1;l++)f[l]=d[l+1]-d[l];f.sort(function(a,f){return a-f});f=f[Math.floor(a/2)];b=Math.max(b,d[0]);e=Math.min(e,d[a-1]);this.groupIntervalFactor=l=a*
|
|
f/(e-b)}return l},postProcessTickInterval:function(b){var e=this.ordinalSlope;return e?this.options.breaks?this.closestPointRange||b:b/(e/this.closestPointRange):b}});n.prototype.ordinal2lin=n.prototype.val2lin;z(E.prototype,"pan",function(b,e){var d=this.xAxis[0],l=d.options.overscroll,a=e.chartX,f=!1;if(d.options.ordinal&&d.series.length){var u=this.mouseDownX,m=d.getExtremes(),c=m.dataMax,k=m.min,q=m.max,h=this.hoverPoints,y=d.closestPointRange||d.overscrollPointsRange,u=(u-a)/(d.translationSlope*
|
|
(d.ordinalSlope||y)),r={ordinalPositions:d.getExtendedPositions()},y=d.lin2val,x=d.val2lin,g;r.ordinalPositions?1<Math.abs(u)&&(h&&h.forEach(function(g){g.setState()}),0>u?(h=r,g=d.ordinalPositions?d:r):(h=d.ordinalPositions?d:r,g=r),r=g.ordinalPositions,c>r[r.length-1]&&r.push(c),this.fixedRange=q-k,u=d.toFixedRange(null,null,y.apply(h,[x.apply(h,[k,!0])+u,!0]),y.apply(g,[x.apply(g,[q,!0])+u,!0])),u.min>=Math.min(m.dataMin,k)&&u.max<=Math.max(c,q)+l&&d.setExtremes(u.min,u.max,!0,!1,{trigger:"pan"}),
|
|
this.mouseDownX=a,p(this.container,{cursor:"move"})):f=!0}else f=!0;f&&(l&&(d.max=d.dataMax+l),b.apply(this,Array.prototype.slice.call(arguments,1)))});D(n,"foundExtremes",function(){this.isXAxis&&C(this.options.overscroll)&&this.max===this.dataMax&&(!this.chart.mouseIsDown||this.isInternal)&&(!this.eventArgs||this.eventArgs&&"navigator"!==this.eventArgs.trigger)&&(this.max+=this.options.overscroll,!this.isInternal&&C(this.userMin)&&(this.min+=this.options.overscroll))})})(H);(function(b){function D(){return Array.prototype.slice.call(arguments,
|
|
1)}function n(b){b.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,p(this.pointArrayMap,["y"]))}var E=b.addEvent,p=b.pick,C=b.wrap,G=b.extend,B=b.isArray,w=b.fireEvent,A=b.Axis,z=b.Series;G(A.prototype,{isInBreak:function(b,e){var d=b.repeat||Infinity,l=b.from,a=b.to-b.from;e=e>=l?(e-l)%d:d-(l-e)%d;return b.inclusive?e<=a:e<a&&0!==e},isInAnyBreak:function(b,e){var d=this.options.breaks,l=d&&d.length,a,f,u;if(l){for(;l--;)this.isInBreak(d[l],b)&&(a=!0,f||(f=p(d[l].showPoints,
|
|
this.isXAxis?!1:!0)));u=a&&e?a&&!f:a}return u}});E(A,"afterInit",function(){"function"===typeof this.setBreaks&&this.setBreaks(this.options.breaks,!1)});E(A,"afterSetTickPositions",function(){if(this.isBroken){var b=this.tickPositions,e=this.tickPositions.info,d=[],l;for(l=0;l<b.length;l++)this.isInAnyBreak(b[l])||d.push(b[l]);this.tickPositions=d;this.tickPositions.info=e}});E(A,"afterSetOptions",function(){this.isBroken&&(this.options.ordinal=!1)});A.prototype.setBreaks=function(b,e){function d(b){var f=
|
|
b,c,k;for(k=0;k<a.breakArray.length;k++)if(c=a.breakArray[k],c.to<=b)f-=c.len;else if(c.from>=b)break;else if(a.isInBreak(c,b)){f-=b-c.from;break}return f}function l(b){var f,c;for(c=0;c<a.breakArray.length&&!(f=a.breakArray[c],f.from>=b);c++)f.to<b?b+=f.len:a.isInBreak(f,b)&&(b+=f.len);return b}var a=this,f=B(b)&&!!b.length;a.isDirty=a.isBroken!==f;a.isBroken=f;a.options.breaks=a.userOptions.breaks=b;a.forceRedraw=!0;f||a.val2lin!==d||(delete a.val2lin,delete a.lin2val);f&&(a.userOptions.ordinal=
|
|
!1,a.val2lin=d,a.lin2val=l,a.setExtremes=function(a,b,c,f,q){if(this.isBroken){for(;this.isInAnyBreak(a);)a-=this.closestPointRange;for(;this.isInAnyBreak(b);)b-=this.closestPointRange}A.prototype.setExtremes.call(this,a,b,c,f,q)},a.setAxisTranslation=function(b){A.prototype.setAxisTranslation.call(this,b);this.unitLength=null;if(this.isBroken){b=a.options.breaks;var f=[],c=[],k=0,q,h,y=a.userMin||a.min,r=a.userMax||a.max,x=p(a.pointRangePadding,0),g,t;b.forEach(function(g){h=g.repeat||Infinity;a.isInBreak(g,
|
|
y)&&(y+=g.to%h-y%h);a.isInBreak(g,r)&&(r-=r%h-g.from%h)});b.forEach(function(a){g=a.from;for(h=a.repeat||Infinity;g-h>y;)g-=h;for(;g<y;)g+=h;for(t=g;t<r;t+=h)f.push({value:t,move:"in"}),f.push({value:t+(a.to-a.from),move:"out",size:a.breakSize})});f.sort(function(g,a){return g.value===a.value?("in"===g.move?0:1)-("in"===a.move?0:1):g.value-a.value});q=0;g=y;f.forEach(function(a){q+="in"===a.move?1:-1;1===q&&"in"===a.move&&(g=a.value);0===q&&(c.push({from:g,to:a.value,len:a.value-g-(a.size||0)}),k+=
|
|
a.value-g-(a.size||0))});a.breakArray=c;a.unitLength=r-y-k+x;w(a,"afterBreaks");a.staticScale?a.transA=a.staticScale:a.unitLength&&(a.transA*=(r-a.min+x)/a.unitLength);x&&(a.minPixelPadding=a.transA*a.minPointOffset);a.min=y;a.max=r}});p(e,!0)&&this.chart.redraw()};C(z.prototype,"generatePoints",function(b){b.apply(this,D(arguments));var e=this.xAxis,d=this.yAxis,l=this.points,a,f=l.length,u=this.options.connectNulls,m;if(e&&d&&(e.options.breaks||d.options.breaks))for(;f--;)a=l[f],m=null===a.y&&!1===
|
|
u,m||!e.isInAnyBreak(a.x,!0)&&!d.isInAnyBreak(a.y,!0)||(l.splice(f,1),this.data[f]&&this.data[f].destroyElements())});b.Series.prototype.drawBreaks=function(b,e){var d=this,l=d.points,a,f,u,m;b&&e.forEach(function(c){a=b.breakArray||[];f=b.isXAxis?b.min:p(d.options.threshold,b.min);l.forEach(function(k){m=p(k["stack"+c.toUpperCase()],k[c]);a.forEach(function(a){u=!1;if(f<a.from&&m>a.to||f>a.from&&m<a.from)u="pointBreak";else if(f<a.from&&m>a.from&&m<a.to||f>a.from&&m>a.to&&m<a.from)u="pointInBreak";
|
|
u&&w(b,u,{point:k,brk:a})})})})};b.Series.prototype.gappedPath=function(){var p=this.currentDataGrouping,e=p&&p.totalRange,p=this.options.gapSize,d=this.points.slice(),l=d.length-1,a=this.yAxis;if(p&&0<l)for("value"!==this.options.gapUnit&&(p*=this.closestPointRange),e&&e>p&&(p=e);l--;)d[l+1].x-d[l].x>p&&(e=(d[l].x+d[l+1].x)/2,d.splice(l+1,0,{isNull:!0,x:e}),this.options.stacking&&(e=a.stacks[this.stackKey][e]=new b.StackItem(a,a.options.stackLabels,!1,e,this.stack),e.total=0));return this.getGraphPath(d)};
|
|
C(b.seriesTypes.column.prototype,"drawPoints",n);C(b.Series.prototype,"drawPoints",n)})(H);(function(b){var D=b.addEvent,n=b.arrayMax,E=b.arrayMin,p=b.Axis,C=b.defaultPlotOptions,G=b.defined,B=b.extend,w=b.format,A=b.isNumber,z=b.merge,F=b.pick,e=b.Point,d=b.Series,l=b.Tooltip,a=b.wrap,f=d.prototype,u=f.processData,m=f.generatePoints,c={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"]}},k={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}},q=b.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]],h=b.approximations={sum:function(a){var c=a.length,b;if(!c&&a.hasNulls)b=null;else if(c)for(b=0;c--;)b+=a[c];return b},average:function(a){var c=a.length;a=h.sum(a);
|
|
A(a)&&c&&(a/=c);return a},averages:function(){var a=[];[].forEach.call(arguments,function(c){a.push(h.average(c))});return void 0===a[0]?void 0:a},open:function(a){return a.length?a[0]:a.hasNulls?null:void 0},high:function(a){return a.length?n(a):a.hasNulls?null:void 0},low:function(a){return a.length?E(a):a.hasNulls?null:void 0},close:function(a){return a.length?a[a.length-1]:a.hasNulls?null:void 0},ohlc:function(a,c,b,g){a=h.open(a);c=h.high(c);b=h.low(b);g=h.close(g);if(A(a)||A(c)||A(b)||A(g))return[a,
|
|
c,b,g]},range:function(a,c){a=h.low(a);c=h.high(c);if(A(a)||A(c))return[a,c];if(null===a&&null===c)return null}};f.groupData=function(a,b,f,g){var t=this,v=t.data,r=t.options.data,I=[],y=[],q=[],d=a.length,x,l,u=!!b,m=[];g="function"===typeof g?g:h[g]||k[t.type]&&h[k[t.type].approximation]||h[c.approximation];var e=t.pointArrayMap,p=e&&e.length,w=["x"].concat(e||["y"]),n=0,C=0,B,J;p?e.forEach(function(){m.push([])}):m.push([]);B=p||1;for(J=0;J<=d&&!(a[J]>=f[0]);J++);for(J;J<=d;J++){for(;void 0!==
|
|
f[n+1]&&a[J]>=f[n+1]||J===d;){x=f[n];t.dataGroupInfo={start:C,length:m[0].length};l=g.apply(t,m);G(t.dataGroupInfo.options)||(t.dataGroupInfo.options=z(t.pointClass.prototype.optionsToObject.call({series:t},t.options.data[C])),w.forEach(function(a){delete t.dataGroupInfo.options[a]}));void 0!==l&&(I.push(x),y.push(l),q.push(t.dataGroupInfo));C=J;for(x=0;x<B;x++)m[x].length=0,m[x].hasNulls=!1;n+=1;if(J===d)break}if(J===d)break;if(e){x=t.cropStart+J;l=v&&v[x]||t.pointClass.prototype.applyOptions.apply({series:t},
|
|
[r[x]]);var F;for(x=0;x<p;x++)F=l[e[x]],A(F)?m[x].push(F):null===F&&(m[x].hasNulls=!0)}else x=u?b[J]:null,A(x)?m[0].push(x):null===x&&(m[0].hasNulls=!0)}return[I,y,q]};f.processData=function(){var a=this.chart,c=this.options.dataGrouping,b=!1!==this.allowDG&&c&&F(c.enabled,a.options.isStock),g=this.visible||!a.options.chart.ignoreHiddenSeries,t,v=this.currentDataGrouping,k;this.forceCrop=b;this.groupPixelWidth=null;this.hasProcessed=!0;if(!1!==u.apply(this,arguments)&&b){this.destroyGroupedData();
|
|
var I,h=c.groupAll?this.xData:this.processedXData,d=c.groupAll?this.yData:this.processedYData,m=a.plotSizeX,a=this.xAxis,l=a.options.ordinal,e=this.groupPixelWidth=a.getGroupPixelWidth&&a.getGroupPixelWidth();if(e){this.isDirty=t=!0;this.points=null;b=a.getExtremes();k=b.min;b=b.max;l=l&&a.getGroupIntervalFactor(k,b,this)||1;e=e*(b-k)/m*l;m=a.getTimeTicks(a.normalizeTimeTickInterval(e,c.units||q),Math.min(k,h[0]),Math.max(b,h[h.length-1]),a.options.startOfWeek,h,this.closestPointRange);d=f.groupData.apply(this,
|
|
[h,d,m,c.approximation]);h=d[0];l=d[1];if(c.smoothed&&h.length){I=h.length-1;for(h[I]=Math.min(h[I],b);I--&&0<I;)h[I]+=e/2;h[0]=Math.max(h[0],k)}k=m.info;this.closestPointRange=m.info.totalRange;this.groupMap=d[2];if(G(h[0])&&h[0]<a.dataMin&&g){if(!G(a.options.min)&&a.min<=a.dataMin||a.min===a.dataMin)a.min=h[0];a.dataMin=h[0]}c.groupAll&&(c=this.cropData(h,l,a.min,a.max,1),h=c.xData,l=c.yData);this.processedXData=h;this.processedYData=l}else this.groupMap=null;this.hasGroupedData=t;this.currentDataGrouping=
|
|
k;this.preventGraphAnimation=(v&&v.totalRange)!==(k&&k.totalRange)}};f.destroyGroupedData=function(){var a=this.groupedData;(a||[]).forEach(function(c,b){c&&(a[b]=c.destroy?c.destroy():null)});this.groupedData=null};f.generatePoints=function(){m.apply(this);this.destroyGroupedData();this.groupedData=this.hasGroupedData?this.points:null};D(e,"update",function(){if(this.dataGroup)return b.error(24,!1,this.series.chart),!1});a(l.prototype,"tooltipFooterHeaderFormatter",function(a,c,b){var g=this.chart.time,
|
|
t=c.series,v=t.tooltipOptions,f=t.options.dataGrouping,h=v.xDateFormat,k,r=t.xAxis,d=v[(b?"footer":"header")+"Format"];return r&&"datetime"===r.options.type&&f&&A(c.key)?(a=t.currentDataGrouping,f=f.dateTimeLabelFormats,a?(v=f[a.unitName],1===a.count?h=v[0]:(h=v[1],k=v[2])):!h&&f&&(h=this.getXDateFormat(c,v,r)),h=g.dateFormat(h,c.key),k&&(h+=g.dateFormat(k,c.key+a.totalRange-1)),t.chart.styledMode&&(d=this.styledModeFormat(d)),w(d,{point:B(c.point,{key:h}),series:t},g)):a.call(this,c,b)});D(d,"destroy",
|
|
f.destroyGroupedData);D(d,"afterSetOptions",function(a){a=a.options;var b=this.type,f=this.chart.options.plotOptions,g=C[b].dataGrouping,t=this.useCommonDataGrouping&&c;if(k[b]||t)g||(g=z(c,k[b])),a.dataGrouping=z(t,g,f.series&&f.series.dataGrouping,f[b].dataGrouping,this.userOptions.dataGrouping);this.chart.options.isStock&&(this.requireSorting=!0)});D(p,"afterSetScale",function(){this.series.forEach(function(a){a.hasProcessed=!1})});p.prototype.getGroupPixelWidth=function(){var a=this.series,c=
|
|
a.length,b,g=0,t=!1,f;for(b=c;b--;)(f=a[b].options.dataGrouping)&&(g=Math.max(g,f.groupPixelWidth));for(b=c;b--;)(f=a[b].options.dataGrouping)&&a[b].hasProcessed&&(c=(a[b].processedXData||a[b].data).length,a[b].groupPixelWidth||c>this.chart.plotSizeX/g||c&&f.forced)&&(t=!0);return t?g:0};p.prototype.setDataGrouping=function(a,c){var b;c=F(c,!0);a||(a={forced:!1,units:null});if(this instanceof p)for(b=this.series.length;b--;)this.series[b].update({dataGrouping:a},!1);else this.chart.options.series.forEach(function(g){g.dataGrouping=
|
|
a},!1);this.ordinalSlope=null;c&&this.chart.redraw()}})(H);(function(b){var D=b.Point,n=b.seriesType,E=b.seriesTypes;n("ohlc","column",{lineWidth:1,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\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,states:{hover:{lineWidth:3}},stickyTracking:!0},{directTouch:!1,pointArrayMap:["open","high",
|
|
"low","close"],toYData:function(b){return[b.open,b.high,b.low,b.close]},pointValKey:"close",pointAttrToOptions:{stroke:"color","stroke-width":"lineWidth"},init:function(){E.column.prototype.init.apply(this,arguments);this.options.stacking=!1},pointAttribs:function(b,n){n=E.column.prototype.pointAttribs.call(this,b,n);var p=this.options;delete n.fill;!b.options.color&&p.upColor&&b.open<b.close&&(n.stroke=p.upColor);return n},translate:function(){var b=this,n=b.yAxis,G=!!b.modifyValue,B=["plotOpen",
|
|
"plotHigh","plotLow","plotClose","yBottom"];E.column.prototype.translate.apply(b);b.points.forEach(function(p){[p.open,p.high,p.low,p.close,p.low].forEach(function(w,z){null!==w&&(G&&(w=b.modifyValue(w)),p[B[z]]=n.toPixels(w,!0))});p.tooltipPos[1]=p.plotHigh+n.pos-b.chart.plotTop})},drawPoints:function(){var b=this,n=b.chart;b.points.forEach(function(p){var B,w,A,z,C=p.graphic,e,d=!C;void 0!==p.plotY&&(C||(p.graphic=C=n.renderer.path().add(b.group)),n.styledMode||C.attr(b.pointAttribs(p,p.selected&&
|
|
"select")),w=C.strokeWidth()%2/2,e=Math.round(p.plotX)-w,A=Math.round(p.shapeArgs.width/2),z=["M",e,Math.round(p.yBottom),"L",e,Math.round(p.plotHigh)],null!==p.open&&(B=Math.round(p.plotOpen)+w,z.push("M",e,B,"L",e-A,B)),null!==p.close&&(B=Math.round(p.plotClose)+w,z.push("M",e,B,"L",e+A,B)),C[d?"attr":"animate"]({d:z}).addClass(p.getClassName(),!0))})},animate:null},{getClassName:function(){return D.prototype.getClassName.call(this)+(this.open<this.close?" highcharts-point-up":" highcharts-point-down")}})})(H);
|
|
(function(b){var D=b.defaultPlotOptions,n=b.merge,E=b.seriesType,p=b.seriesTypes;E("candlestick","ohlc",n(D.column,{states:{hover:{lineWidth:2}},tooltip:D.ohlc.tooltip,threshold:null,lineColor:"#000000",lineWidth:1,upColor:"#ffffff",stickyTracking:!0}),{pointAttribs:function(b,n){var B=p.column.prototype.pointAttribs.call(this,b,n),w=this.options,A=b.open<b.close,z=w.lineColor||this.color;B["stroke-width"]=w.lineWidth;B.fill=b.options.color||(A?w.upColor||this.color:this.color);B.stroke=b.lineColor||
|
|
(A?w.upLineColor||z:z);n&&(b=w.states[n],B.fill=b.color||B.fill,B.stroke=b.lineColor||B.stroke,B["stroke-width"]=b.lineWidth||B["stroke-width"]);return B},drawPoints:function(){var b=this,p=b.chart,n=b.yAxis.reversed;b.points.forEach(function(w){var A=w.graphic,z,B,e,d,l,a,f,u=!A;void 0!==w.plotY&&(A||(w.graphic=A=p.renderer.path().add(b.group)),b.chart.styledMode||A.attr(b.pointAttribs(w,w.selected&&"select")).shadow(b.options.shadow),l=A.strokeWidth()%2/2,a=Math.round(w.plotX)-l,z=w.plotOpen,B=
|
|
w.plotClose,e=Math.min(z,B),z=Math.max(z,B),f=Math.round(w.shapeArgs.width/2),B=n?z!==w.yBottom:Math.round(e)!==Math.round(w.plotHigh),d=n?Math.round(e)!==Math.round(w.plotHigh):z!==w.yBottom,e=Math.round(e)+l,z=Math.round(z)+l,l=[],l.push("M",a-f,z,"L",a-f,e,"L",a+f,e,"L",a+f,z,"Z","M",a,e,"L",a,B?Math.round(n?w.yBottom:w.plotHigh):e,"M",a,z,"L",a,d?Math.round(n?w.plotHigh:w.yBottom):z),A[u?"attr":"animate"]({d:l}).addClass(w.getClassName(),!0))})}})})(H);var U=function(b){var D=b.defined,n=b.seriesTypes,
|
|
E=b.stableSort;return{getPlotBox:function(){return b.Series.prototype.getPlotBox.call(this.options.onSeries&&this.chart.get(this.options.onSeries)||this)},translate:function(){n.column.prototype.translate.apply(this);var b=this.options,C=this.chart,G=this.points,B=G.length-1,w,A,z=b.onSeries,z=z&&C.get(z),b=b.onKey||"y",F=z&&z.options.step,e=z&&z.points,d=e&&e.length,l=C.inverted,a=this.xAxis,f=this.yAxis,u=0,m,c,k,q;if(z&&z.visible&&d)for(u=(z.pointXOffset||0)+(z.barW||0)/2,w=z.currentDataGrouping,
|
|
c=e[d-1].x+(w?w.totalRange:0),E(G,function(a,b){return a.x-b.x}),b="plot"+b[0].toUpperCase()+b.substr(1);d--&&G[B]&&!(m=e[d],w=G[B],w.y=m.y,m.x<=w.x&&void 0!==m[b]&&(w.x<=c&&(w.plotY=m[b],m.x<w.x&&!F&&(k=e[d+1])&&void 0!==k[b]&&(q=(w.x-m.x)/(k.x-m.x),w.plotY+=q*(k[b]-m[b]),w.y+=q*(k.y-m.y))),B--,d++,0>B)););G.forEach(function(b,c){var k;b.plotX+=u;if(void 0===b.plotY||l)0<=b.plotX&&b.plotX<=a.len?l?(b.plotY=a.translate(b.x,0,1,0,1),b.plotX=D(b.y)?f.translate(b.y,0,0,0,1):0):b.plotY=C.chartHeight-
|
|
a.bottom-(a.opposite?a.height:0)+a.offset-f.top:b.shapeArgs={};(A=G[c-1])&&A.plotX===b.plotX&&(void 0===A.stackIndex&&(A.stackIndex=0),k=A.stackIndex+1);b.stackIndex=k});this.onSeries=z}}}(H);(function(b,D){function n(b){e[b+"pin"]=function(d,a,f,u,m){var c=m&&m.anchorX;m=m&&m.anchorY;"circle"===b&&u>f&&(d-=Math.round((u-f)/2),f=u);d=e[b](d,a,f,u);c&&m&&(d.push("M","circle"===b?d[1]-d[4]:d[1]+d[4]/2,a>m?a:a+u,"L",c,m),d=d.concat(e.circle(c-1,m-1,2,2)));return d}}var E=b.addEvent,p=b.merge,C=b.noop,
|
|
G=b.defined,B=b.Renderer,w=b.Series,A=b.seriesType,z=b.TrackerMixin,F=b.VMLRenderer,e=b.SVGRenderer.prototype.symbols;A("flags","column",{pointRange:0,allowOverlapX:!1,shape:"flag",stackDistance:12,textAlign:"center",tooltip:{pointFormat:"{point.text}\x3cbr/\x3e"},threshold:null,y:-30,fillColor:"#ffffff",lineWidth:1,states:{hover:{lineColor:"#000000",fillColor:"#ccd6eb"}},style:{fontSize:"11px",fontWeight:"bold"}},{sorted:!1,noSharedTooltip:!0,allowDG:!1,takeOrdinalPosition:!1,trackerGroups:["markerGroup"],
|
|
forceCrop:!0,init:w.prototype.init,pointAttribs:function(b,e){var a=this.options,f=b&&b.color||this.color,d=a.lineColor,m=b&&b.lineWidth;b=b&&b.fillColor||a.fillColor;e&&(b=a.states[e].fillColor,d=a.states[e].lineColor,m=a.states[e].lineWidth);return{fill:b||f,stroke:d||f,"stroke-width":m||a.lineWidth||0}},translate:D.translate,getPlotBox:D.getPlotBox,drawPoints:function(){var d=this.points,e=this.chart,a=e.renderer,f,u,m=e.inverted,c=this.options,k=c.y,q,h,y,r,x,g,t=this.yAxis,v={},K=[];for(h=d.length;h--;)y=
|
|
d[h],g=(m?y.plotY:y.plotX)>this.xAxis.len,f=y.plotX,r=y.stackIndex,q=y.options.shape||c.shape,u=y.plotY,void 0!==u&&(u=y.plotY+k-(void 0!==r&&r*c.stackDistance)),y.anchorX=r?void 0:y.plotX,x=r?void 0:y.plotY,r=y.graphic,void 0!==u&&0<=f&&!g?(r||(r=y.graphic=a.label("",null,null,q,null,null,c.useHTML),e.styledMode||r.attr(this.pointAttribs(y)).css(p(c.style,y.style)),r.attr({align:"flag"===q?"left":"center",width:c.width,height:c.height,"text-align":c.textAlign}).addClass("highcharts-point").add(this.markerGroup),
|
|
y.graphic.div&&(y.graphic.div.point=y),e.styledMode||r.shadow(c.shadow),r.isNew=!0),0<f&&(f-=r.strokeWidth()%2),q={y:u,anchorY:x},c.allowOverlapX&&(q.x=f,q.anchorX=y.anchorX),r.attr({text:y.options.title||c.title||"A"})[r.isNew?"attr":"animate"](q),c.allowOverlapX||(v[y.plotX]?v[y.plotX].size=Math.max(v[y.plotX].size,r.width):v[y.plotX]={align:0,size:r.width,target:f,anchorX:f}),y.tooltipPos=[f,u+t.pos-e.plotTop]):r&&(y.graphic=r.destroy());c.allowOverlapX||(b.objectEach(v,function(a){a.plotX=a.anchorX;
|
|
K.push(a)}),b.distribute(K,m?t.len:this.xAxis.len,100),d.forEach(function(a){var b=a.graphic&&v[a.plotX];b&&(a.graphic[a.graphic.isNew?"attr":"animate"]({x:b.pos,anchorX:a.anchorX}),G(b.pos)?a.graphic.isNew=!1:(a.graphic.attr({x:-9999,anchorX:-9999}),a.graphic.isNew=!0))}));c.useHTML&&b.wrap(this.markerGroup,"on",function(a){return b.SVGElement.prototype.on.apply(a.apply(this,[].slice.call(arguments,1)),[].slice.call(arguments,1))})},drawTracker:function(){var b=this.points;z.drawTrackerPoint.apply(this);
|
|
b.forEach(function(d){var a=d.graphic;a&&E(a.element,"mouseover",function(){0<d.stackIndex&&!d.raised&&(d._y=a.y,a.attr({y:d._y-8}),d.raised=!0);b.forEach(function(a){a!==d&&a.raised&&a.graphic&&(a.graphic.attr({y:a._y}),a.raised=!1)})})})},animate:function(b){b?this.setClip():this.animate=null},setClip:function(){w.prototype.setClip.apply(this,arguments);!1!==this.options.clip&&this.sharedClipKey&&this.markerGroup.clip(this.chart[this.sharedClipKey])},buildKDTree:C,invertGroups:C});e.flag=function(b,
|
|
l,a,f,u){var d=u&&u.anchorX||b;u=u&&u.anchorY||l;return e.circle(d-1,u-1,2,2).concat(["M",d,u,"L",b,l+f,b,l,b+a,l,b+a,l+f,b,l+f,"Z"])};n("circle");n("square");B===F&&["flag","circlepin","squarepin"].forEach(function(b){F.prototype.symbols[b]=e[b]})})(H,U);(function(b){function D(a,b,d){this.init(a,b,d)}var n=b.addEvent,E=b.Axis,p=b.correctFloat,C=b.defaultOptions,G=b.defined,B=b.destroyObjectProperties,w=b.fireEvent,A=b.hasTouch,z=b.merge,F=b.pick,e=b.removeEvent,d,l={height:b.isTouchDevice?20:14,
|
|
barBorderRadius:0,buttonBorderRadius:0,liveRedraw:void 0,margin:10,minWidth:6,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:1,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"#333333",trackBackgroundColor:"#f2f2f2",trackBorderColor:"#f2f2f2",trackBorderWidth:1};C.scrollbar=z(!0,l,C.scrollbar);b.swapXY=d=function(a,b){var f=a.length,d;if(b)for(b=0;b<f;b+=3)d=a[b+1],a[b+1]=a[b+2],a[b+2]=d;return a};
|
|
D.prototype={init:function(a,b,d){this.scrollbarButtons=[];this.renderer=a;this.userOptions=b;this.options=z(l,b);this.chart=d;this.size=F(this.options.size,this.options.height);b.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,b=this.options,e=this.size,m=this.chart.styledMode,c;this.group=c=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:e,width:e}).add(c);m||this.track.attr({fill:b.trackBackgroundColor,stroke:b.trackBorderColor,"stroke-width":b.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(c);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:e,width:e,r:b.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(d(["M",-3,e/4,"L",-3,2*e/3,"M",0,e/4,"L",0,2*e/3,"M",3,e/4,"L",3,2*e/3],
|
|
b.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);m||(this.scrollbar.attr({fill:b.barBackgroundColor,stroke:b.barBorderColor,"stroke-width":b.barBorderWidth}),this.scrollbarRifles.attr({stroke:b.rifleColor,"stroke-width":1}));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,q=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[q]({translateX:a,translateY:this.y});this.track[q]({width:d,height:e});this.scrollbarButtons[1][q]({translateX:c?0:d-b,translateY:c?e-f:0})},drawScrollbarButton:function(a){var b=
|
|
this.renderer,e=this.scrollbarButtons,m=this.options,c=this.size,k;k=b.g().add(this.group);e.push(k);k=b.rect().addClass("highcharts-scrollbar-button").add(k);this.chart.styledMode||k.attr({stroke:m.buttonBorderColor,"stroke-width":m.buttonBorderWidth,fill:m.buttonBackgroundColor});k.attr(k.crisp({x:-.5,y:-.5,width:c+1,height:c+1,r:m.buttonBorderRadius},k.strokeWidth()));k=b.path(d(["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],m.vertical)).addClass("highcharts-scrollbar-arrow").add(e[a]);
|
|
this.chart.styledMode||k.attr({fill:m.buttonArrowColor})},setRange:function(a,b){var f=this.options,d=f.vertical,c=f.minWidth,k=this.barWidth,e,h,y=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";G(k)&&(a=Math.max(a,0),e=Math.ceil(k*a),this.calculatedWidth=h=p(k*Math.min(b,1)-e),h<c&&(e=(k-c+h)*a,h=c),c=Math.floor(e+this.xOffset+this.yOffset),k=h/2-.5,this.from=a,this.to=b,d?(this.scrollbarGroup[y]({translateY:c}),this.scrollbar[y]({height:h}),
|
|
this.scrollbarRifles[y]({translateY:k}),this.scrollbarTop=c,this.scrollbarLeft=0):(this.scrollbarGroup[y]({translateX:c}),this.scrollbar[y]({width:h}),this.scrollbarRifles[y]({translateX:k}),this.scrollbarLeft=c,this.scrollbarTop=0),12>=h?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===f.showFull&&(0>=a&&1<=b?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var f=a.chart.pointer.normalize(b),e=a.options.vertical?
|
|
"chartY":"chartX",c=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][e]||(f=a.cursorToScrollbarPosition(f)[e],e=a[e],e=f-e,a.hasDragged=!0,a.updatePosition(c[0]+e,c[1]+e),a.hasDragged&&w(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&w(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 f=p(a.to-a.from)*a.options.step;a.updatePosition(p(a.from-f),p(a.to-f));w(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var f=(a.to-a.from)*a.options.step;a.updatePosition(a.from+f,a.to+f);w(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var f=a.chart.pointer.normalize(b),
|
|
e=a.to-a.from,c=a.y+a.scrollbarTop,k=a.x+a.scrollbarLeft;a.options.vertical&&f.chartY>c||!a.options.vertical&&f.chartX>k?a.updatePosition(a.from+e,a.to+e):a.updatePosition(a.from-e,a.to-e);w(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=p(1-p(b-a)),b=1);0>a&&(b=p(b-a),a=0);this.from=a;this.to=b},update:function(a){this.destroy();this.init(this.chart.renderer,z(!0,this.options,a),this.chart)},addEvents:function(){var a=this.options.inverted?[1,0]:[0,1],b=this.scrollbarButtons,e=this.scrollbarGroup.element,d=this.mouseDownHandler,c=this.mouseMoveHandler,k=this.mouseUpHandler,a=[[b[a[0]].element,"click",this.buttonToMinClick],[b[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[e,
|
|
"mousedown",d],[e.ownerDocument,"mousemove",c],[e.ownerDocument,"mouseup",k]];A&&a.push([e,"touchstart",d],[e.ownerDocument,"touchmove",c],[e.ownerDocument,"touchend",k]);a.forEach(function(a){n.apply(null,a)});this._events=a},removeEvents:function(){this._events.forEach(function(a){e.apply(null,a)});this._events.length=0},destroy:function(){var a=this.chart.scroller;this.removeEvents();["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(a){this[a]&&this[a].destroy&&
|
|
(this[a]=this[a].destroy())},this);a&&this===a.scrollbar&&(a.scrollbar=null,B(a.scrollbarButtons))}};n(E,"afterInit",function(){var a=this;a.options&&a.options.scrollbar&&a.options.scrollbar.enabled&&(a.options.scrollbar.vertical=!a.horiz,a.options.startOnTick=a.options.endOnTick=!1,a.scrollbar=new D(a.chart.renderer,a.options.scrollbar,a.chart),n(a.scrollbar,"changed",function(b){var e=Math.min(F(a.options.min,a.min),a.min,a.dataMin),d=Math.max(F(a.options.max,a.max),a.max,a.dataMax)-e,c;a.horiz&&
|
|
!a.reversed||!a.horiz&&a.reversed?(c=e+d*this.to,e+=d*this.from):(c=e+d*(1-this.from),e+=d*(1-this.to));a.setExtremes(e,c,!0,!1,b)}))});n(E,"afterRender",function(){var a=Math.min(F(this.options.min,this.min),this.min,F(this.dataMin,this.min)),b=Math.max(F(this.options.max,this.max),this.max,F(this.dataMax,this.max)),e=this.scrollbar,d=this.titleOffset||0;if(e){this.horiz?(e.position(this.left,this.top+this.height+2+this.chart.scrollbarsOffsets[1]+(this.opposite?0:d+this.axisTitleMargin+this.offset),
|
|
this.width,this.height),d=1):(e.position(this.left+this.width+2+this.chart.scrollbarsOffsets[0]+(this.opposite?d+this.axisTitleMargin+this.offset:0),this.top,this.width,this.height),d=0);if(!this.opposite&&!this.horiz||this.opposite&&this.horiz)this.chart.scrollbarsOffsets[d]+=this.scrollbar.size+this.scrollbar.options.margin;isNaN(a)||isNaN(b)||!G(this.min)||!G(this.max)?e.setRange(0,0):(d=(this.min-a)/(b-a),a=(this.max-a)/(b-a),this.horiz&&!this.reversed||!this.horiz&&this.reversed?e.setRange(d,
|
|
a):e.setRange(1-a,1-d))}});n(E,"afterGetOffset",function(){var a=this.horiz?2:1,b=this.scrollbar;b&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[a]+=b.size+b.options.margin)});b.Scrollbar=D})(H);(function(b){function D(a){this.init(a)}var n=b.addEvent,E=b.Axis,p=b.Chart,C=b.color,G=b.defaultOptions,B=b.defined,w=b.destroyObjectProperties,A=b.erase,z=b.error,F=b.extend,e=b.hasTouch,d=b.isArray,l=b.isNumber,a=b.isObject,f=b.isTouchDevice,u=b.merge,m=b.pick,c=b.removeEvent,k=b.Scrollbar,
|
|
q=b.Series,h=b.seriesTypes,y=b.wrap,r=[].concat(b.defaultDataGroupingUnits),x=function(a){var b=[].filter.call(arguments,l);if(b.length)return Math[a].apply(0,b)};r[4]=["day",[1,2,3,4]];r[5]=["week",[1,2,3]];h=void 0===h.areaspline?"line":"areaspline";F(G,{navigator:{height:40,margin:25,maskInside:!0,handles:{width:7,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:C("#6685c2").setOpacity(.3).get(),outlineColor:"#cccccc",
|
|
outlineWidth:1,series:{type:h,fillOpacity:.05,lineWidth:1,compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:r},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},pointRange:0,threshold:null},xAxis:{overscroll:0,className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#999999"},
|
|
x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}});b.Renderer.prototype.symbols["navigator-handle"]=function(a,b,c,e,d){a=d.width/2;b=Math.round(a/3)+.5;d=d.height;return["M",-a-1,.5,"L",a,.5,"L",a,d+.5,"L",-a-1,d+.5,"L",-a-1,.5,"M",-b,4,"L",-b,d-3,"M",b-1,4,"L",b-1,d-3]};D.prototype={drawHandle:function(a,b,c,e){var g=this.navigatorOptions.handles.height;
|
|
this.handles[b][e](c?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(a,10)+.5-g)}:{translateX:Math.round(this.left+parseInt(a,10)),translateY:Math.round(this.top+this.height/2-g/2-1)})},drawOutline:function(a,b,c,e){var g=this.navigatorOptions.maskInside,t=this.outline.strokeWidth(),v=t/2,t=t%2/2,d=this.outlineHeight,k=this.scrollbarHeight,h=this.size,f=this.left-k,q=this.top;c?(f-=v,c=q+b+t,b=q+a+t,a=["M",f+d,q-k-t,"L",f+d,c,"L",f,c,"L",f,b,"L",f+d,b,"L",f+
|
|
d,q+h+k].concat(g?["M",f+d,c-v,"L",f+d,b+v]:[])):(a+=f+k-t,b+=f+k-t,q+=v,a=["M",f,q,"L",a,q,"L",a,q+d,"L",b,q+d,"L",b,q,"L",f+h+2*k,q].concat(g?["M",a-v,q,"L",b+v,q]:[]));this.outline[e]({d:a})},drawMasks:function(a,b,c,e){var g=this.left,t=this.top,v=this.height,d,k,h,f;c?(h=[g,g,g],f=[t,t+a,t+b],k=[v,v,v],d=[a,b-a,this.size-b]):(h=[g,g+a,g+b],f=[t,t,t],k=[a,b-a,this.size-b],d=[v,v,v]);this.shades.forEach(function(a,b){a[e]({x:h[b],y:f[b],width:k[b],height:d[b]})})},renderElements:function(){var a=
|
|
this,b=a.navigatorOptions,c=b.maskInside,e=a.chart,d=e.renderer,k,h={cursor:e.inverted?"ns-resize":"ew-resize"};a.navigatorGroup=k=d.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();[!c,c,!c].forEach(function(g,c){a.shades[c]=d.rect().addClass("highcharts-navigator-mask"+(1===c?"-inside":"-outside")).add(k);e.styledMode||a.shades[c].attr({fill:g?b.maskFill:"rgba(0,0,0,0)"}).css(1===c&&h)});a.outline=d.path().addClass("highcharts-navigator-outline").add(k);e.styledMode||a.outline.attr({"stroke-width":b.outlineWidth,
|
|
stroke:b.outlineColor});b.handles.enabled&&[0,1].forEach(function(c){b.handles.inverted=e.inverted;a.handles[c]=d.symbol(b.handles.symbols[c],-b.handles.width/2-1,0,b.handles.width,b.handles.height,b.handles);a.handles[c].attr({zIndex:7-c}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][c]).add(k);if(!e.styledMode){var g=b.handles;a.handles[c].attr({fill:g.backgroundColor,stroke:g.borderColor,"stroke-width":g.lineWidth}).css(h)}})},update:function(b){(this.series||
|
|
[]).forEach(function(b){b.baseSeries&&delete b.baseSeries.navigatorSeries});this.destroy();u(!0,this.chart.options.navigator,this.options,b);this.init(this.chart)},render:function(a,c,e,d){var g=this.chart,t,v,k=this.scrollbarHeight,h,f=this.xAxis;t=f.fake?g.xAxis[0]:f;var q=this.navigatorEnabled,r,x=this.rendered;v=g.inverted;var y,K=g.xAxis[0].minRange,n=g.xAxis[0].options.maxRange;if(!this.hasDragged||B(e)){if(!l(a)||!l(c))if(x)e=0,d=m(f.width,t.width);else return;this.left=m(f.left,g.plotLeft+
|
|
k+(v?g.plotWidth:0));this.size=r=h=m(f.len,(v?g.plotHeight:g.plotWidth)-2*k);g=v?k:h+2*k;e=m(e,f.toPixels(a,!0));d=m(d,f.toPixels(c,!0));l(e)&&Infinity!==Math.abs(e)||(e=0,d=g);a=f.toValue(e,!0);c=f.toValue(d,!0);y=Math.abs(b.correctFloat(c-a));y<K?this.grabbedLeft?e=f.toPixels(c-K,!0):this.grabbedRight&&(d=f.toPixels(a+K,!0)):B(n)&&y>n&&(this.grabbedLeft?e=f.toPixels(c-n,!0):this.grabbedRight&&(d=f.toPixels(a+n,!0)));this.zoomedMax=Math.min(Math.max(e,d,0),r);this.zoomedMin=Math.min(Math.max(this.fixedWidth?
|
|
this.zoomedMax-this.fixedWidth:Math.min(e,d),0),r);this.range=this.zoomedMax-this.zoomedMin;r=Math.round(this.zoomedMax);e=Math.round(this.zoomedMin);q&&(this.navigatorGroup.attr({visibility:"visible"}),x=x&&!this.hasDragged?"animate":"attr",this.drawMasks(e,r,v,x),this.drawOutline(e,r,v,x),this.navigatorOptions.handles.enabled&&(this.drawHandle(e,0,v,x),this.drawHandle(r,1,v,x)));this.scrollbar&&(v?(v=this.top-k,t=this.left-k+(q||!t.opposite?0:(t.titleOffset||0)+t.axisTitleMargin),k=h+2*k):(v=this.top+
|
|
(q?this.height:-k),t=this.left-k),this.scrollbar.position(t,v,g,k),this.scrollbar.setRange(this.zoomedMin/(h||1),this.zoomedMax/(h||1)));this.rendered=!0}},addMouseEvents:function(){var a=this,b=a.chart,c=b.container,d=[],k,f;a.mouseMoveHandler=k=function(b){a.onMouseMove(b)};a.mouseUpHandler=f=function(b){a.onMouseUp(b)};d=a.getPartsEvents("mousedown");d.push(n(c,"mousemove",k),n(c.ownerDocument,"mouseup",f));e&&(d.push(n(c,"touchmove",k),n(c.ownerDocument,"touchend",f)),d.concat(a.getPartsEvents("touchstart")));
|
|
a.eventsToUnbind=d;a.series&&a.series[0]&&d.push(n(a.series[0].xAxis,"foundExtremes",function(){b.navigator.modifyNavigatorAxisExtremes()}))},getPartsEvents:function(a){var b=this,c=[];["shades","handles"].forEach(function(g){b[g].forEach(function(e,d){c.push(n(e.element,a,function(a){b[g+"Mousedown"](a,d)}))})});return c},shadesMousedown:function(a,b){a=this.chart.pointer.normalize(a);var c=this.chart,g=this.xAxis,e=this.zoomedMin,d=this.left,t=this.size,k=this.range,f=a.chartX,h,q;c.inverted&&(f=
|
|
a.chartY,d=this.top);1===b?(this.grabbedCenter=f,this.fixedWidth=k,this.dragOffset=f-e):(a=f-d-k/2,0===b?a=Math.max(0,a):2===b&&a+k>=t&&(a=t-k,this.reversedExtremes?(a-=k,q=this.getUnionExtremes().dataMin):h=this.getUnionExtremes().dataMax),a!==e&&(this.fixedWidth=k,b=g.toFixedRange(a,a+k,q,h),B(b.min)&&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],g=
|
|
this.reversedExtremes;0===b?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=g?c.min:c.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=g?c.max:c.min);a.fixedRange=null},onMouseMove:function(a){var c=this,g=c.chart,e=c.left,d=c.navigatorSize,k=c.range,h=c.dragOffset,q=g.inverted;a.touches&&0===a.touches[0].pageX||(a=g.pointer.normalize(a),g=a.chartX,q&&(e=c.top,g=a.chartY),c.grabbedLeft?(c.hasDragged=!0,c.render(0,0,g-e,c.otherHandlePos)):c.grabbedRight?
|
|
(c.hasDragged=!0,c.render(0,0,c.otherHandlePos,g-e)):c.grabbedCenter&&(c.hasDragged=!0,g<h?g=h:g>d+h-k&&(g=d+h-k),c.render(0,0,g-h,g-h+k)),c.hasDragged&&c.scrollbar&&m(c.scrollbar.options.liveRedraw,b.svg&&!f&&!this.chart.isBoosting)&&(a.DOMType=a.type,setTimeout(function(){c.onMouseUp(a)},0)))},onMouseUp:function(a){var b=this.chart,c=this.xAxis,g=this.scrollbar,e,d,k=a.DOMEvent||a;(!this.hasDragged||g&&g.hasDragged)&&"scrollbar"!==a.trigger||(g=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?
|
|
e=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(d=this.fixedExtreme),this.zoomedMax===this.size&&(d=this.reversedExtremes?g.dataMin:g.dataMax),0===this.zoomedMin&&(e=this.reversedExtremes?g.dataMax:g.dataMin),c=c.toFixedRange(this.zoomedMin,this.zoomedMax,e,d),B(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:k}));"mousemove"!==a.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=
|
|
this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null)},removeEvents:function(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(a){a()}),this.eventsToUnbind=void 0);this.removeBaseSeriesEvents()},removeBaseSeriesEvents:function(){var a=this.baseSeries||[];this.navigatorEnabled&&a[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&a.forEach(function(a){c(a,"updatedData",this.updatedDataHandler)},this),a[0].xAxis&&c(a[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))},
|
|
init:function(a){var b=a.options,c=b.navigator,g=c.enabled,e=b.scrollbar,d=e.enabled,b=g?c.height:0,f=d?e.height:0;this.handles=[];this.shades=[];this.chart=a;this.setBaseSeries();this.height=b;this.scrollbarHeight=f;this.scrollbarEnabled=d;this.navigatorEnabled=g;this.navigatorOptions=c;this.scrollbarOptions=e;this.outlineHeight=b+f;this.opposite=m(c.opposite,!g&&a.inverted);var h=this,g=h.baseSeries,e=a.xAxis.length,d=a.yAxis.length,q=g&&g[0]&&g[0].xAxis||a.xAxis[0]||{options:{}};a.isDirtyBox=!0;
|
|
h.navigatorEnabled?(h.xAxis=new E(a,u({breaks:q.options.breaks,ordinal:q.options.ordinal},c.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",isX:!0,type:"datetime",index:e,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},a.inverted?{offsets:[f,0,-f,0],width:b}:{offsets:[0,-f,0,f],height:b})),h.yAxis=new E(a,u(c.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:d,isInternal:!0,zoomEnabled:!1},a.inverted?{width:b}:{height:b})),
|
|
g||c.series.data?h.updateNavigatorSeries(!1):0===a.series.length&&(h.unbindRedraw=n(a,"beforeRedraw",function(){0<a.series.length&&!h.series&&(h.setBaseSeries(),h.unbindRedraw())})),h.reversedExtremes=a.inverted&&!h.xAxis.reversed||!a.inverted&&h.xAxis.reversed,h.renderElements(),h.addMouseEvents()):h.xAxis={translate:function(b,c){var g=a.xAxis[0],e=g.getExtremes(),d=g.len-2*f,h=x("min",g.options.min,e.dataMin),g=x("max",g.options.max,e.dataMax)-h;return c?b*g/d+h:d*(b-h)/g},toPixels:function(a){return this.translate(a)},
|
|
toValue:function(a){return this.translate(a,!0)},toFixedRange:E.prototype.toFixedRange,fake:!0};a.options.scrollbar.enabled&&(a.scrollbar=h.scrollbar=new k(a.renderer,u(a.options.scrollbar,{margin:h.navigatorEnabled?0:10,vertical:a.inverted}),a),n(h.scrollbar,"changed",function(b){var c=h.size,g=c*this.to,c=c*this.from;h.hasDragged=h.scrollbar.hasDragged;h.render(0,0,c,g);(a.options.scrollbar.liveRedraw||"mousemove"!==b.DOMType&&"touchmove"!==b.DOMType)&&setTimeout(function(){h.onMouseUp(b)})}));
|
|
h.addBaseSeriesEvents();h.addChartEvents()},getUnionExtremes:function(a){var b=this.chart.xAxis[0],c=this.xAxis,g=c.options,e=b.options,d;a&&null===b.dataMin||(d={dataMin:m(g&&g.min,x("min",e.min,b.dataMin,c.dataMin,c.min)),dataMax:m(g&&g.max,x("max",e.max,b.dataMax,c.dataMax,c.max))});return d},setBaseSeries:function(a,b){var c=this.chart,g=this.baseSeries=[];a=a||c.options&&c.options.navigator.baseSeries||0;(c.series||[]).forEach(function(b,c){b.options.isInternal||!b.options.showInNavigator&&(c!==
|
|
a&&b.options.id!==a||!1===b.options.showInNavigator)||g.push(b)});this.xAxis&&!this.xAxis.fake&&this.updateNavigatorSeries(!0,b)},updateNavigatorSeries:function(a,e){var g=this,h=g.chart,k=g.baseSeries,f,q,t=g.navigatorOptions.series,r,x={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",showInLegend:!1,stacking:!1,isInternal:!0},y=g.series=(g.series||[]).filter(function(a){var b=a.baseSeries;return 0>k.indexOf(b)?(b&&(c(b,"updatedData",
|
|
g.updatedDataHandler),delete b.navigatorSeries),a.chart&&a.destroy(),!1):!0});k&&k.length&&k.forEach(function(a){var b=a.navigatorSeries,c=F({color:a.color,visible:a.visible},d(t)?G.navigator.series:t);b&&!1===g.navigatorOptions.adaptToUpdatedData||(x.name="Navigator "+k.length,f=a.options||{},r=f.navigatorOptions||{},q=u(f,x,c,r),c=r.data||c.data,g.hasNavigatorData=g.hasNavigatorData||!!c,q.data=c||f.data&&f.data.slice(0),b&&b.options?b.update(q,e):(a.navigatorSeries=h.initSeries(q),a.navigatorSeries.baseSeries=
|
|
a,y.push(a.navigatorSeries)))});if(t.data&&(!k||!k.length)||d(t))g.hasNavigatorData=!1,t=b.splat(t),t.forEach(function(a,b){x.name="Navigator "+(y.length+1);q=u(G.navigator.series,{color:h.series[b]&&!h.series[b].options.isInternal&&h.series[b].color||h.options.colors[b]||h.options.colors[0]},x,a);q.data=a.data;q.data&&(g.hasNavigatorData=!0,y.push(h.initSeries(q)))});a&&this.addBaseSeriesEvents()},addBaseSeriesEvents:function(){var a=this,b=a.baseSeries||[];b[0]&&b[0].xAxis&&n(b[0].xAxis,"foundExtremes",
|
|
this.modifyBaseAxisExtremes);b.forEach(function(b){n(b,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)});n(b,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)});!1!==this.navigatorOptions.adaptToUpdatedData&&b.xAxis&&n(b,"updatedData",this.updatedDataHandler);n(b,"remove",function(){this.navigatorSeries&&(A(a.series,this.navigatorSeries),B(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)})},this)},
|
|
getBaseSeriesMin:function(a){return this.baseSeries.reduce(function(a,b){return Math.min(a,b.xData[0])},a)},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,e=b.dataMax,b=b.max-b.min,d=a.stickToMin,h=a.stickToMax,k=m(this.options.overscroll,0),f,q,r=a.series&&a.series[0],x=!!this.setExtremes;
|
|
this.eventArgs&&"rangeSelectorButton"===this.eventArgs.trigger||(d&&(q=c,f=q+b),h&&(f=e+k,d||(q=Math.max(f-b,a.getBaseSeriesMin(r&&r.xData?r.xData[0]:-Number.MAX_VALUE)))),x&&(d||h)&&l(q)&&(this.min=this.userMin=q,this.max=this.userMax=f));a.stickToMin=a.stickToMax=null},updatedDataHandler:function(){var a=this.chart.navigator,b=this.navigatorSeries,c=a.getBaseSeriesMin(this.xData[0]);a.stickToMax=a.reversedExtremes?0===Math.round(a.zoomedMin):Math.round(a.zoomedMax)>=Math.round(a.size);a.stickToMin=
|
|
l(this.xAxis.min)&&this.xAxis.min<=c&&(!this.chart.fixedRange||!a.stickToMax);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},addChartEvents:function(){this.eventsToUnbind||(this.eventsToUnbind=[]);this.eventsToUnbind.push(n(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)}),n(this.chart,"getMargins",function(){var a=this.navigator,
|
|
b=a.opposite?"plotTop":"marginBottom";this.inverted&&(b=a.opposite?"marginRight":"plotLeft");this[b]=(this[b]||0)+(a.navigatorEnabled||!this.inverted?a.outlineHeight:0)+a.navigatorOptions.margin}))},destroy:function(){this.removeEvents();this.xAxis&&(A(this.chart.xAxis,this.xAxis),A(this.chart.axes,this.xAxis));this.yAxis&&(A(this.chart.yAxis,this.yAxis),A(this.chart.axes,this.yAxis));(this.series||[]).forEach(function(a){a.destroy&&a.destroy()});"series xAxis yAxis shades outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" ").forEach(function(a){this[a]&&
|
|
this[a].destroy&&this[a].destroy();this[a]=null},this);[this.handles].forEach(function(a){w(a)},this)}};b.Navigator=D;y(E.prototype,"zoom",function(a,b,c){var e=this.chart.options,d=e.chart.zoomType,g=e.chart.pinchType,h=e.navigator,e=e.rangeSelector,k;this.isXAxis&&(h&&h.enabled||e&&e.enabled)&&("y"===d?k=!1:(!f&&"xy"===d||f&&"xy"===g)&&this.options.range&&(d=this.previousZoom,B(b)?this.previousZoom=[this.min,this.max]:d&&(b=d[0],c=d[1],delete this.previousZoom)));return void 0!==k?k:a.call(this,
|
|
b,c)});n(p,"beforeShowResetZoom",function(){var a=this.options,b=a.navigator,c=a.rangeSelector;if((b&&b.enabled||c&&c.enabled)&&(!f&&"x"===a.chart.zoomType||f&&"x"===a.chart.pinchType))return!1});n(p,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new D(this)});n(p,"afterSetChartSize",function(){var a=this.legend,b=this.navigator,c,e,d,h;b&&(e=a&&a.options,d=b.xAxis,h=b.yAxis,c=b.scrollbarHeight,this.inverted?(b.left=b.opposite?
|
|
this.chartWidth-c-b.height:this.spacing[3]+c,b.top=this.plotTop+c):(b.left=this.plotLeft+c,b.top=b.navigatorOptions.top||this.chartHeight-b.height-c-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(e&&"bottom"===e.verticalAlign&&e.enabled&&!e.floating?a.legendHeight+m(e.margin,10):0)),d&&h&&(this.inverted?d.options.left=h.options.left=b.left:d.options.top=h.options.top=b.top,d.setAxisSize(),h.setAxisSize()))});n(p,"update",function(a){var b=a.options.navigator||
|
|
{},c=a.options.scrollbar||{};this.navigator||this.scroller||!b.enabled&&!c.enabled||(u(!0,this.options.navigator,b),u(!0,this.options.scrollbar,c),delete a.options.navigator,delete a.options.scrollbar)});n(p,"afterUpdate",function(){this.navigator||this.scroller||!this.options.navigator.enabled&&!this.options.scrollbar.enabled||(this.scroller=this.navigator=new D(this))});y(q.prototype,"addPoint",function(b,c,e,d,h){var g=this.options.turboThreshold;g&&this.xData.length>g&&a(c,!0)&&this.chart.navigator&&
|
|
z(20,!0,this.chart);b.call(this,c,e,d,h)});n(p,"afterAddSeries",function(){this.navigator&&this.navigator.setBaseSeries(null,!1)});n(q,"afterUpdate",function(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)});p.prototype.callbacks.push(function(a){var b=a.navigator;b&&a.xAxis[0]&&(a=a.xAxis[0].getExtremes(),b.render(a.min,a.max))})})(H);(function(b){function D(a){this.init(a)}var n=b.addEvent,E=b.Axis,p=b.Chart,C=b.css,G=b.createElement,B=b.defaultOptions,
|
|
w=b.defined,A=b.destroyObjectProperties,z=b.discardElement,F=b.extend,e=b.fireEvent,d=b.isNumber,l=b.merge,a=b.pick,f=b.pInt,u=b.splat,m=b.wrap;F(B,{rangeSelector:{verticalAlign:"top",buttonTheme:{width:28,height:18,padding:2,zIndex:7},floating:!1,x:0,y:0,height:void 0,inputPosition:{align:"right",x:0,y:0},buttonPosition:{align:"left",x:0,y:0},labelStyle:{color:"#666666"}}});B.lang=l(B.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});D.prototype={clickButton:function(b,
|
|
e){var c=this,h=c.chart,k=c.buttonOptions[b],f=h.xAxis[0],x=h.scroller&&h.scroller.getUnionExtremes()||f||{},g=x.dataMin,t=x.dataMax,v,l=f&&Math.round(Math.min(f.max,a(t,f.max))),m=k.type,p,x=k._range,w,z,B,A=k.dataGrouping;if(null!==g&&null!==t){h.fixedRange=x;A&&(this.forcedDataGrouping=!0,E.prototype.setDataGrouping.call(f||{chart:this.chart},A,!1),this.frozenStates=k.preserveDataGrouping);if("month"===m||"year"===m)f?(m={range:k,max:l,chart:h,dataMin:g,dataMax:t},v=f.minFromRange.call(m),d(m.newMax)&&
|
|
(l=m.newMax)):x=k;else if(x)v=Math.max(l-x,g),l=Math.min(v+x,t);else if("ytd"===m)if(f)void 0===t&&(g=Number.MAX_VALUE,t=Number.MIN_VALUE,h.series.forEach(function(a){a=a.xData;g=Math.min(a[0],g);t=Math.max(a[a.length-1],t)}),e=!1),l=c.getYTDExtremes(t,g,h.time.useUTC),v=w=l.min,l=l.max;else{n(h,"beforeRender",function(){c.clickButton(b)});return}else"all"===m&&f&&(v=g,l=t);v+=k._offsetMin;l+=k._offsetMax;c.setSelected(b);f?f.setExtremes(v,l,a(e,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:k}):
|
|
(p=u(h.options.xAxis)[0],B=p.range,p.range=x,z=p.min,p.min=w,n(h,"load",function(){p.range=B;p.min=z}))}},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 b=this,c=a.options.rangeSelector,d=c.buttons||[].concat(b.defaultButtons),f=c.selected,r=function(){var a=b.minInput,
|
|
c=b.maxInput;a&&a.blur&&e(a,"blur");c&&c.blur&&e(c,"blur")};b.chart=a;b.options=c;b.buttons=[];a.extraTopMargin=c.height;b.buttonOptions=d;this.unMouseDown=n(a.container,"mousedown",r);this.unResize=n(a,"resize",r);d.forEach(b.computeButtonRange);void 0!==f&&d[f]&&this.clickButton(f,!1);n(a,"load",function(){a.xAxis&&a.xAxis[0]&&n(a.xAxis[0],"setExtremes",function(c){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==c.trigger&&"updatedData"!==c.trigger&&b.forcedDataGrouping&&!b.frozenStates&&
|
|
this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this,b=this.chart,e=b.xAxis[0],h=Math.round(e.max-e.min),f=!e.hasVisibleSeries,r=b.scroller&&b.scroller.getUnionExtremes()||e,x=r.dataMin,g=r.dataMax,b=a.getYTDExtremes(g,x,b.time.useUTC),l=b.min,v=b.max,m=a.selected,p=d(m),n=a.options.allButtonsEnabled,u=a.buttons;a.buttonOptions.forEach(function(b,c){var d=b._range,k=b.type,q=b.count||1,r=u[c],t=0;b=b._offsetMax-b._offsetMin;c=c===m;var y=d>g-x,w=d<e.minRange,I=!1,z=!1,d=d===h;
|
|
("month"===k||"year"===k)&&h+36E5>=864E5*{month:28,year:365}[k]*q-b&&h-36E5<=864E5*{month:31,year:366}[k]*q+b?d=!0:"ytd"===k?(d=v-l+b===h,I=!c):"all"===k&&(d=e.max-e.min>=g-x,z=!c&&p&&d);k=!n&&(y||w||z||f);q=c&&d||d&&!p&&!I||c&&a.frozenStates;k?t=3:q&&(p=!0,t=2);r.state!==t&&r.setState(t)})},computeButtonRange:function(b){var c=b.type,e=b.count||1,d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[c])b._range=d[c]*e;else if("month"===c||"year"===c)b._range=864E5*{month:30,
|
|
year:365}[c]*e;b._offsetMin=a(b.offsetMin,0);b._offsetMax=a(b.offsetMax,0);b._range+=b._offsetMax-b._offsetMin},setInputValue:function(a,b){var c=this.chart.options.rangeSelector,e=this.chart.time,d=this[a+"Input"];w(b)&&(d.previousValue=d.HCTime,d.HCTime=b);d.value=e.dateFormat(c.inputEditDateFormat||"%Y-%m-%d",d.HCTime);this[a+"DateBox"].attr({text:e.dateFormat(c.inputDateFormat||"%b %e, %Y",d.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];C(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){C(this[a+"Input"],{border:0,width:"1px",height:"1px"});this.setInputValue(a)},drawInput:function(a){function c(){var a=v.value,b=(x.inputDateParser||Date.parse)(a),c=h.xAxis[0],g=h.scroller&&h.scroller.xAxis?h.scroller.xAxis:c,k=g.dataMin,g=g.dataMax;b!==v.previousValue&&(v.previousValue=b,d(b)||(b=a.split("-"),b=Date.UTC(f(b[0]),f(b[1])-1,f(b[2]))),d(b)&&(h.time.useUTC||(b+=
|
|
6E4*(new Date).getTimezoneOffset()),t?b>e.maxInput.HCTime?b=void 0:b<k&&(b=k):b<e.minInput.HCTime?b=void 0:b>g&&(b=g),void 0!==b&&c.setExtremes(t?b:c.min,t?c.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))}var e=this,h=e.chart,m=h.renderer.style||{},r=h.renderer,x=h.options.rangeSelector,g=e.div,t="min"===a,v,p,n=this.inputGroup;this[a+"Label"]=p=r.label(B.lang[t?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(n);n.offset+=
|
|
p.width+5;this[a+"DateBox"]=r=r.label("",n.offset).addClass("highcharts-range-input").attr({padding:2,width:x.inputBoxWidth||90,height:x.inputBoxHeight||17,"text-align":"center"}).on("click",function(){e.showInput(a);e[a+"Input"].focus()});h.styledMode||r.attr({stroke:x.inputBoxBorderColor||"#cccccc","stroke-width":1});r.add(n);n.offset+=r.width+(t?10:0);this[a+"Input"]=v=G("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:h.plotTop+"px"},g);h.styledMode||(p.css(l(m,x.labelStyle)),
|
|
r.css(l({color:"#333333"},m,x.inputStyle)),C(v,F({position:"absolute",border:0,width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:m.fontSize,fontFamily:m.fontFamily,top:"-9999em"},x.inputStyle)));v.onfocus=function(){e.showInput(a)};v.onblur=function(){v===b.doc.activeElement&&(c(),e.hideInput(a))};v.onchange=c;v.onkeypress=function(a){13===a.keyCode&&c()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a="top"===b.verticalAlign?a.plotTop-a.axisOffset[0]:0;return{buttonTop:a+
|
|
b.buttonPosition.y,inputTop:a+b.inputPosition.y-10}},getYTDExtremes:function(a,b,e){var c=this.chart.time,d=new c.Date(a),f=c.get("FullYear",d);e=e?c.Date.UTC(f,0,1):+new c.Date(f,0,1);b=Math.max(b||0,e);d=d.getTime();return{max:Math.min(a||d,d),min:b}},render:function(b,e){var c=this,d=c.chart,f=d.renderer,k=d.container,x=d.options,g=x.exporting&&!1!==x.exporting.enabled&&x.navigation&&x.navigation.buttonOptions,l=B.lang,v=c.div,m=x.rangeSelector,n=a(x.chart.style&&x.chart.style.zIndex,0)+1,x=m.floating,
|
|
p=c.buttons,v=c.inputGroup,u=m.buttonTheme,w=m.buttonPosition,z=m.inputPosition,A=m.inputEnabled,C=u&&u.states,D=d.plotLeft,F,E=c.buttonGroup,H;H=c.rendered;var O=c.options.verticalAlign,Q=d.legend,R=Q&&Q.options,J=w.y,P=z.y,S=H||!1,T=S?"animate":"attr",N=0,L=0,M;if(!1!==m.enabled){H||(c.group=H=f.g("range-selector-group").attr({zIndex:7}).add(),c.buttonGroup=E=f.g("range-selector-buttons").add(H),c.zoomText=f.text(l.rangeSelectorZoom,0,15).add(E),d.styledMode||(c.zoomText.css(m.labelStyle),u["stroke-width"]=
|
|
a(u["stroke-width"],0)),c.buttonOptions.forEach(function(a,b){p[b]=f.button(a.text,0,0,function(){var d=a.events&&a.events.click,e;d&&(e=d.call(a));!1!==e&&c.clickButton(b);c.isActive=!0},u,C&&C.hover,C&&C.select,C&&C.disabled).attr({"text-align":"center"}).add(E)}),!1!==A&&(c.div=v=G("div",null,{position:"relative",height:0,zIndex:n}),k.parentNode.insertBefore(v,k),c.inputGroup=v=f.g("input-group").add(H),v.offset=0,c.drawInput("min"),c.drawInput("max")));c.zoomText[T]({x:a(D+w.x,D)});F=a(D+w.x,
|
|
D)+c.zoomText.getBBox().width+5;c.buttonOptions.forEach(function(b,c){p[c][T]({x:F});F+=p[c].width+a(m.buttonSpacing,5)});D=d.plotLeft-d.spacing[3];c.updateButtonStates();g&&this.titleCollision(d)&&"top"===O&&"right"===w.align&&w.y+E.getBBox().height-12<(g.y||0)+g.height&&(N=-40);"left"===w.align?M=w.x-d.spacing[3]:"right"===w.align&&(M=w.x+N-d.spacing[1]);E.align({y:w.y,width:E.getBBox().width,align:w.align,x:M},!0,d.spacingBox);c.group.placed=S;c.buttonGroup.placed=S;!1!==A&&(N=g&&this.titleCollision(d)&&
|
|
"top"===O&&"right"===z.align&&z.y-v.getBBox().height-12<(g.y||0)+g.height+d.spacing[0]?-40:0,"left"===z.align?M=D:"right"===z.align&&(M=-Math.max(d.axisOffset[1],-N)),v.align({y:z.y,width:v.getBBox().width,align:z.align,x:z.x+M-2},!0,d.spacingBox),k=v.alignAttr.translateX+v.alignOptions.x-N+v.getBBox().x+2,g=v.alignOptions.width,l=E.alignAttr.translateX+E.getBBox().x,M=E.getBBox().width+20,(z.align===w.align||l+M>k&&k+g>l&&J<P+v.getBBox().height)&&v.attr({translateX:v.alignAttr.translateX+(d.axisOffset[1]>=
|
|
-N?0:-N),translateY:v.alignAttr.translateY+E.getBBox().height+10}),c.setInputValue("min",b),c.setInputValue("max",e),c.inputGroup.placed=S);c.group.align({verticalAlign:O},!0,d.spacingBox);b=c.group.getBBox().height+20;e=c.group.alignAttr.translateY;"bottom"===O&&(Q=R&&"bottom"===R.verticalAlign&&R.enabled&&!R.floating?Q.legendHeight+a(R.margin,10):0,b=b+Q-20,L=e-b-(x?0:m.y)-10);if("top"===O)x&&(L=0),d.titleOffset&&(L=d.titleOffset+d.options.title.margin),L+=d.margin[0]-d.spacing[0]||0;else if("middle"===
|
|
O)if(P===J)L=0>P?e+void 0:e;else if(P||J)L=0>P||0>J?L-Math.min(P,J):e-b+NaN;c.group.translate(m.x,m.y+Math.floor(L));!1!==A&&(c.minInput.style.marginTop=c.group.translateY+"px",c.maxInput.style.marginTop=c.group.translateY+"px");c.rendered=!0}},getHeight:function(){var a=this.options,b=this.group,d=a.y,e=a.buttonPosition.y,a=a.inputPosition.y,b=b?b.getBBox(!0).height+13+d:0,d=Math.min(a,e);if(0>a&&0>e||0<a&&0<e)b+=Math.abs(d);return b},titleCollision:function(a){return!(a.options.title.text||a.options.subtitle.text)},
|
|
update:function(a){var b=this.chart;l(!0,b.options.rangeSelector,a);this.destroy();this.init(b);b.rangeSelector.render()},destroy:function(){var a=this,d=a.minInput,e=a.maxInput;a.unMouseDown();a.unResize();A(a.buttons);d&&(d.onfocus=d.onblur=d.onchange=null);e&&(e.onfocus=e.onblur=e.onchange=null);b.objectEach(a,function(b,c){b&&"chart"!==c&&(b.destroy?b.destroy():b.nodeType&&z(this[c]));b!==D.prototype[c]&&(a[c]=null)},this)}};E.prototype.toFixedRange=function(b,e,f,h){var c=this.chart&&this.chart.fixedRange;
|
|
b=a(f,this.translate(b,!0,!this.horiz));e=a(h,this.translate(e,!0,!this.horiz));f=c&&(e-b)/c;.7<f&&1.3>f&&(h?b=e-c:e=b+c);d(b)&&d(e)||(b=e=void 0);return{min:b,max:e}};E.prototype.minFromRange=function(){var b=this.range,e={month:"Month",year:"FullYear"}[b.type],f,h=this.max,l,r,x=function(a,b){var c=new Date(a),d=c["get"+e]();c["set"+e](d+b);d===c["get"+e]()&&c.setDate(0);return c.getTime()-a};d(b)?(f=h-b,r=b):(f=h+x(h,-b.count),this.chart&&(this.chart.fixedRange=h-f));l=a(this.dataMin,Number.MIN_VALUE);
|
|
d(f)||(f=l);f<=l&&(f=l,void 0===r&&(r=x(f,b.count)),this.newMax=Math.min(f+r,this.dataMax));d(h)||(f=void 0);return f};n(p,"afterGetContainer",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new D(this))});m(p.prototype,"render",function(a,b,e){var c=this.axes,d=this.rangeSelector;d&&(c.forEach(function(a){a.updateNames();a.setScale()}),this.getAxisMargins(),d.render(),c=d.options.verticalAlign,d.options.floating||("bottom"===c?this.extraBottomMargin=!0:"middle"!==c&&(this.extraTopMargin=
|
|
!0)));a.call(this,b,e)});n(p,"update",function(a){var b=a.options.rangeSelector;a=this.rangeSelector;var c=this.extraBottomMargin,d=this.extraTopMargin;b&&b.enabled&&!w(a)&&(this.options.rangeSelector.enabled=!0,this.rangeSelector=new D(this));this.extraTopMargin=this.extraBottomMargin=!1;a&&(a.render(),b=b&&b.verticalAlign||a.options&&a.options.verticalAlign,a.options.floating||("bottom"===b?this.extraBottomMargin=!0:"middle"!==b&&(this.extraTopMargin=!0)),this.extraBottomMargin!==c||this.extraTopMargin!==
|
|
d)&&(this.isDirtyBox=!0)});m(p.prototype,"redraw",function(a,b,d){var c=this.rangeSelector;c&&!c.options.floating&&(c.render(),c=c.options.verticalAlign,"bottom"===c?this.extraBottomMargin=!0:"middle"!==c&&(this.extraTopMargin=!0));a.call(this,b,d)});n(p,"getMargins",function(){var a=this.rangeSelector;a&&(a=a.getHeight(),this.extraTopMargin&&(this.plotTop+=a),this.extraBottomMargin&&(this.marginBottom+=a))});p.prototype.callbacks.push(function(a){function b(){c=a.xAxis[0].getExtremes();d(c.min)&&
|
|
e.render(c.min,c.max)}var c,e=a.rangeSelector,f,r;e&&(r=n(a.xAxis[0],"afterSetExtremes",function(a){e.render(a.min,a.max)}),f=n(a,"redraw",b),b());n(a,"destroy",function(){e&&(f(),r())})});b.RangeSelector=D})(H);(function(b){var D=b.addEvent,n=b.arrayMax,E=b.arrayMin,p=b.Axis,C=b.Chart,G=b.defined,B=b.extend,w=b.format,A=b.isNumber,z=b.isString,F=b.merge,e=b.pick,d=b.Point,l=b.Renderer,a=b.Series,f=b.splat,u=b.SVGRenderer,m=b.VMLRenderer,c=b.wrap,k=a.prototype,q=k.init,h=k.processData,y=d.prototype.tooltipFormatter;
|
|
b.StockChart=b.stockChart=function(a,c,d){var g=z(a)||a.nodeName,h=arguments[g?1:0],k=h,r=h.series,l=b.getOptions(),x,m=e(h.navigator&&h.navigator.enabled,l.navigator.enabled,!0),p=m?{startOnTick:!1,endOnTick:!1}:null,n={marker:{enabled:!1,radius:2}},q={shadow:!1,borderWidth:0};h.xAxis=f(h.xAxis||{}).map(function(a,b){return F({minPadding:0,maxPadding:0,overscroll:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"},showLastLabel:!0},l.xAxis,l.xAxis&&l.xAxis[b],a,{type:"datetime",categories:null},
|
|
p)});h.yAxis=f(h.yAxis||{}).map(function(a,b){x=e(a.opposite,!0);return F({labels:{y:-2},opposite:x,showLastLabel:!(!a.categories&&"category"!==a.type),title:{text:null}},l.yAxis,l.yAxis&&l.yAxis[b],a)});h.series=null;h=F({chart:{panning:!0,pinchType:"x"},navigator:{enabled:m},scrollbar:{enabled:e(l.scrollbar.enabled,!0)},rangeSelector:{enabled:e(l.rangeSelector.enabled,!0)},title:{text:null},tooltip:{split:e(l.tooltip.split,!0),crosshairs:!0},legend:{enabled:!1},plotOptions:{line:n,spline:n,area:n,
|
|
areaspline:n,arearange:n,areasplinerange:n,column:q,columnrange:q,candlestick:q,ohlc:q}},h,{isStock:!0});h.series=k.series=r;return g?new C(a,h,d):new C(h,c)};c(p.prototype,"autoLabelAlign",function(a){var b=this.chart,c=this.options,b=b._labelPanes=b._labelPanes||{},d=this.options.labels;return this.chart.options.isStock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled)?(15===d.x&&(d.x=0),void 0===d.align&&(d.align="right"),b[c]=this,"right"):a.apply(this,[].slice.call(arguments,1))});
|
|
D(p,"destroy",function(){var a=this.chart,b=this.options&&this.options.top+","+this.options.height;b&&a._labelPanes&&a._labelPanes[b]===this&&delete a._labelPanes[b]});c(p.prototype,"getPlotLinePath",function(a,c,d,f,h,k){var g=this,l=this.isLinked&&!this.series?this.linkedParent.series:this.series,r=g.chart,m=r.renderer,x=g.left,t=g.top,n,v,p,q,w=[],u=[],y,B;if("xAxis"!==g.coll&&"yAxis"!==g.coll)return a.apply(this,[].slice.call(arguments,1));u=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=g.options[b];
|
|
return A(a)?[r[b][a]]:z(a)?[r.get(a)]:l.map(function(a){return a[b]})}(g.coll);(g.isXAxis?r.yAxis:r.xAxis).forEach(function(a){if(G(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=G(a.options[b])?r[b][a.options[b]]:r[b][0];g===b&&u.push(a)}});y=u.length?[]:[g.isXAxis?r.yAxis[0]:r.xAxis[0]];u.forEach(function(a){-1!==y.indexOf(a)||b.find(y,function(b){return b.pos===a.pos&&b.len===a.len})||y.push(a)});B=e(k,g.translate(c,null,null,f));A(B)&&(g.horiz?y.forEach(function(a){var b;
|
|
v=a.pos;q=v+a.len;n=p=Math.round(B+g.transB);"pass"!==h&&(n<x||n>x+g.width)&&(h?n=p=Math.min(Math.max(x,n),x+g.width):b=!0);b||w.push("M",n,v,"L",p,q)}):y.forEach(function(a){var b;n=a.pos;p=n+a.len;v=q=Math.round(t+g.height-B);"pass"!==h&&(v<t||v>t+g.height)&&(h?v=q=Math.min(Math.max(t,v),g.top+g.height):b=!0);b||w.push("M",n,v,"L",p,q)}));return 0<w.length?m.crispPolyLine(w,d||1):null});u.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};l===m&&(m.prototype.crispPolyLine=u.prototype.crispPolyLine);c(p.prototype,"hideCrosshair",function(a,b){a.call(this,b);this.crossLabel&&(this.crossLabel=this.crossLabel.hide())});D(p,"afterDrawCrosshair",function(a){var b,c;if(G(this.crosshair.label)&&this.crosshair.label.enabled&&this.cross){var d=this.chart,f=this.options.crosshair.label,h=this.horiz;b=this.opposite;c=this.left;var k=this.top,l=this.crossLabel,m=f.format,
|
|
r="",n="inside"===this.options.tickPosition,p=!1!==this.crosshair.snap,q=0,u=a.e||this.cross&&this.cross.e,y=a.point;a=this.lin2log;var z,A;this.isLog?(z=a(this.min),A=a(this.max)):(z=this.min,A=this.max);a=h?"center":b?"right"===this.labelAlign?"right":"left":"left"===this.labelAlign?"left":"center";l||(l=this.crossLabel=d.renderer.label(null,null,null,f.shape||"callout").addClass("highcharts-crosshair-label"+(this.series[0]&&" highcharts-color-"+this.series[0].colorIndex)).attr({align:f.align||
|
|
a,padding:e(f.padding,8),r:e(f.borderRadius,3),zIndex:2}).add(this.labelGroup),d.styledMode||l.attr({fill:f.backgroundColor||this.series[0]&&this.series[0].color||"#666666",stroke:f.borderColor||"","stroke-width":f.borderWidth||0}).css(B({color:"#ffffff",fontWeight:"normal",fontSize:"11px",textAlign:"center"},f.style)));h?(a=p?y.plotX+c:u.chartX,k+=b?0:this.height):(a=b?this.width+c:0,k=p?y.plotY+k:u.chartY);m||f.formatter||(this.isDatetimeAxis&&(r="%b %d, %Y"),m="{value"+(r?":"+r:"")+"}");r=p?y[this.isXAxis?
|
|
"x":"y"]:this.toValue(h?u.chartX:u.chartY);l.attr({text:m?w(m,{value:r},d.time):f.formatter.call(this,r),x:a,y:k,visibility:r<z||r>A?"hidden":"visible"});f=l.getBBox();if(h){if(n&&!b||!n&&b)k=l.y-f.height}else k=l.y-f.height/2;h?(b=c-f.x,c=c+this.width-f.x):(b="left"===this.labelAlign?c:0,c="right"===this.labelAlign?c+this.width:d.chartWidth);l.translateX<b&&(q=b-l.translateX);l.translateX+f.width>=c&&(q=-(l.translateX+f.width-c));l.attr({x:a+q,y:k,anchorX:h?a:this.opposite?0:d.chartWidth,anchorY:h?
|
|
this.opposite?d.chartHeight:0:k+f.height/2})}});k.init=function(){q.apply(this,arguments);this.setCompare(this.options.compare)};k.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)};k.processData=function(){var a,b=-1,c,d,e=!0===this.options.compareStart?
|
|
0:1,f,k;h.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,f=d.length,this.pointArrayMap&&(b=this.pointArrayMap.indexOf("close"),-1===b&&(b=this.pointArrayMap.indexOf(this.pointValKey||"y"))),a=0;a<f-e;a++)if(k=d[a]&&-1<b?d[a][b]:d[a],A(k)&&c[a+e]>=this.xAxis.min&&0!==k){this.compareValue=k;break}};c(k,"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=E(b),this.dataMax=n(b))});p.prototype.setCompare=function(a,b){this.isXAxis||(this.series.forEach(function(b){b.setCompare(a)}),e(b,!0)&&this.chart.redraw())};d.prototype.tooltipFormatter=function(a){a=a.replace("{point.change}",(0<this.change?"+":"")+b.numberFormat(this.change,e(this.series.tooltipOptions.changeDecimals,2)));return y.apply(this,[a])};c(a.prototype,"render",function(a){var b;this.chart.is3d&&this.chart.is3d()||this.chart.polar||!this.xAxis||this.xAxis.isRadial||(b=this.yAxis.len-
|
|
(this.xAxis.axisLine?Math.floor(this.xAxis.axisLine.strokeWidth()/2):0),!this.clipBox&&this.animate?(this.clipBox=F(this.chart.clipBox),this.clipBox.width=this.xAxis.len,this.clipBox.height=b):this.chart[this.sharedClipKey]?this.chart[this.sharedClipKey].attr({width:this.xAxis.len,height:b}):this.clipBox&&(this.clipBox.width=this.xAxis.len,this.clipBox.height=b));a.call(this)});c(C.prototype,"getSelectedPoints",function(a){var b=a.call(this);this.series.forEach(function(a){a.hasGroupedData&&(b=b.concat((a.points||
|
|
[]).filter(function(a){return a.selected})))});return b});D(C,"update",function(a){a=a.options;"scrollbar"in a&&this.navigator&&(F(!0,this.options.scrollbar,a.scrollbar),this.navigator.update({},!1),delete a.scrollbar)})})(H)});
|
|
//# sourceMappingURL=stock.js.map
|