5 lines
2.7 KiB
JavaScript
5 lines
2.7 KiB
JavaScript
|
(function(){var labels=[],data=[];jQuery('#ab_chart_data tfoot th').each(function(){labels.push(jQuery(this).text())});jQuery('#ab_chart_data tbody td').each(function(){data.push(jQuery(this).text())});var width=jQuery('#ab_chart').parent().width()+8,height=140,leftgutter=0,bottomgutter=22,topgutter=22,color='#135e96',r=Raphael('ab_chart',width,height),txt={font:'bold 12px "Open Sans", sans-serif',fill:'#1d2327'},X=(width-leftgutter*2)/labels.length,max=Math.max.apply(Math,data),Y=(height-bottomgutter-topgutter)/max;r.text(16,16,max).attr({font:'normal 10px "Open Sans", sans-serif',fill:'#a7aaad',});var path=r.path().attr({stroke:color,'stroke-width':2,'stroke-linejoin':'round'}),bgp=r.path().attr({stroke:'none',opacity:.3,fill:color}),label=r.set(),lx=0,ly=0,is_label_visible=!1,leave_timer,blanket=r.set();label.push(r.text(60,12,'').attr(txt));label.push(r.text(60,27,'').attr(txt).attr({fill:color}));label.hide();var frame=r.popup(100,100,label,'right').attr({fill:'#fff',stroke:'#444','stroke-width':1}).hide();var p,bgpp;for(var i=0,ii=labels.length;i<ii;i++){var y=Math.round(height-bottomgutter-Y*data[i]),x=Math.round(leftgutter+X*(i+.5));if(!i){p=['M',x,y,'C',x,y];bgpp=['M',leftgutter+X*.5,height-bottomgutter,'L',x,y,'C',x,y]}
|
|||
|
if(i&&i<ii-1){var Y0=Math.round(height-bottomgutter-Y*data[i-1]),X0=Math.round(leftgutter+X*(i-.5)),Y2=Math.round(height-bottomgutter-Y*data[i+1]),X2=Math.round(leftgutter+X*(i+1.5));var a=getAnchors(X0,Y0,x,y,X2,Y2);p=p.concat([a.x1,a.y1,x,y,a.x2,a.y2]);bgpp=bgpp.concat([a.x1,a.y1,x,y,a.x2,a.y2])}
|
|||
|
var dot=r.circle(x,y,4).attr({fill:'#fff',stroke:color,'stroke-width':1});blanket.push(r.rect(leftgutter+X*i,0,X,height-bottomgutter).attr({stroke:'none',fill:'#fff',opacity:.2}));var rect=blanket[blanket.length-1];(function(x,y,data,date,dot){var timer,i=0;rect.hover(function(){clearTimeout(leave_timer);var side='right';if(x+frame.getBBox().width>width){side='left'}
|
|||
|
label[0].attr({text:date});label[1].attr({text:data+'× Spam'});var ppp=r.popup(x,y,label,side,1),anim=Raphael.animation({path:ppp.path,transform:['t',ppp.dx,ppp.dy],},200*is_label_visible);lx=label[0].transform()[0][1]+ppp.dx;ly=label[0].transform()[0][2]+ppp.dy;frame.show().stop().animate(anim);label[0].show().stop().animateWith(frame,anim,{transform:['t',lx,ly]},200*is_label_visible);label[1].show().stop().animateWith(frame,anim,{transform:['t',lx,ly]},200*is_label_visible);dot.attr('r',6);is_label_visible=!0},function(){dot.attr('r',4);leave_timer=setTimeout(function(){frame.hide();label[0].hide();label[1].hide();is_label_visible=!1},1)})}(x,y,data[i],labels[i],dot))}
|
|||
|
p=p.concat([x,y,x,y]);bgpp=bgpp.concat([x,y,x,y,'L',x,height-bottomgutter,'z']);path.attr({path:p});bgp.attr({path:bgpp});frame.toFront();label[0].toFront();label[1].toFront();blanket.toFront()}())
|