annotations.min.js 3.3 KB

1
  1. (function(j,c){function h(i){return typeof i==="number"}function g(i){return i!==a&&i!==null}var a,e,b,q=j.Chart,o=j.extend,k=j.each;b=["path","rect","circle"];e={top:0,left:0,center:0.5,middle:0.5,bottom:1,right:1};var l=c.inArray,f=j.merge,d=function(){this.init.apply(this,arguments)};d.prototype={init:function(m,p){var r=p.shape&&p.shape.type;this.chart=m;var i,n;n={xAxis:0,yAxis:0,title:{style:{},text:"",x:0,y:0},shape:{params:{stroke:"#000000",fill:"transparent",strokeWidth:2}}};i={circle:{params:{x:0,y:0}}};if(i[r]){n.shape=f(n.shape,i[r])}this.options=f({},n,p)},render:function(w){var t=this.chart,u=this.chart.renderer,v=this.group,r=this.title,s=this.shape,p=this.options,n=p.title,m=p.shape;if(!v){v=this.group=u.g()}if(!s&&m&&l(m.type,b)!==-1){s=this.shape=u[p.shape.type](m.params),s.add(v)}if(!r&&n){r=this.title=u.label(n),r.add(v)}v.add(t.annotations.group);this.linkObjects();w!==!1&&this.redraw()},redraw:function(){var L=this.options,I=this.chart,J=this.group,K=this.title,G=this.shape,H=this.linkedObject,E=I.xAxis[L.xAxis],p=I.yAxis[L.yAxis],B=L.width,n=L.height,m=e[L.anchorY],i=e[L.anchorX],D,A,F,z;if(H){D=H instanceof j.Point?"point":H instanceof j.Series?"series":null,D==="point"?(L.xValue=H.x,L.yValue=H.y,A=H.series):D==="series"&&(A=H),J.visibility!==A.group.visibility&&J.attr({visibility:A.group.visibility})}H=g(L.xValue)?E.toPixels(L.xValue+E.minPointOffset)-E.minPixelPadding:L.x;D=g(L.yValue)?p.toPixels(L.yValue):L.y;if(!isNaN(H)&&!isNaN(D)&&h(H)&&h(D)){K&&(K.attr(L.title),K.css(L.title.style));if(G){K=o({},L.shape.params);if(L.units==="values"){for(F in K){l(F,["width","x"])>-1?K[F]=E.translate(K[F]):l(F,["height","y"])>-1&&(K[F]=p.translate(K[F]))}K.width&&(K.width-=E.toPixels(0)-E.left);K.x&&(K.x+=E.minPixelPadding);if(L.shape.type==="path"){F=K.d;A=H;for(var u=D,t=F.length,C=0;C<t;){typeof F[C]==="number"&&typeof F[C+1]==="number"?(F[C]=E.toPixels(F[C])-A,F[C+1]=p.toPixels(F[C+1])-u,C+=2):C+=1}}}L.shape.type==="circle"&&(K.x+=K.r,K.y+=K.r);G.attr(K)}J.bBox=null;if(!h(B)){z=J.getBBox(),B=z.width}if(!h(n)){z||(z=J.getBBox()),n=z.height}if(!h(i)){i=e.center}if(!h(m)){m=e.center}H-=B*i;D-=n*m;I.animation&&g(J.translateX)&&g(J.translateY)?J.animate({translateX:H,translateY:D}):J.translate(H,D)}},destroy:function(){var i=this,m=this.chart.annotations.allItems,n=m.indexOf(i);n>-1&&m.splice(n,1);k(["title","shape","group"],function(p){i[p]&&(i[p].destroy(),i[p]=null)});i.group=i.title=i.shape=i.chart=i.options=null},update:function(i,m){o(this.options,i);this.linkObjects();this.render(m)},linkObjects:function(){var m=this.chart,n=this.linkedObject,p=n&&(n.id||n.options.id),i=this.options.linkedTo;if(g(i)){if(!g(n)||i!==p){this.linkedObject=m.get(i)}}else{this.linkedObject=null}}};o(q.prototype,{annotations:{add:function(m,r){var s=this.allItems,i=this.chart,n,p;Object.prototype.toString.call(m)==="[object Array]"||(m=[m]);for(p=m.length;p--;){n=new d(i,m[p]),s.push(n),n.render(r)}},redraw:function(){k(this.allItems,function(i){i.redraw()})}}});q.prototype.callbacks.push(function(i){var m=i.options.annotations,n;n=i.renderer.g("annotations");n.attr({zIndex:7});n.add();i.annotations.allItems=[];i.annotations.chart=i;i.annotations.group=n;Object.prototype.toString.call(m)==="[object Array]"&&m.length>0&&i.annotations.add(i.options.annotations);j.addEvent(i,"redraw",function(){i.annotations.redraw()})})})(Highcharts,HighchartsAdapter);