aboutsummaryrefslogtreecommitdiffstats
path: root/public/javascripts/jquery.flot.tickrotor.min.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/javascripts/jquery.flot.tickrotor.min.js')
-rw-r--r--public/javascripts/jquery.flot.tickrotor.min.js1
1 files changed, 1 insertions, 0 deletions
diff --git a/public/javascripts/jquery.flot.tickrotor.min.js b/public/javascripts/jquery.flot.tickrotor.min.js
new file mode 100644
index 000000000..87fc79d10
--- /dev/null
+++ b/public/javascripts/jquery.flot.tickrotor.min.js
@@ -0,0 +1 @@
+(function($){var options={};function init(plot){var ticks=[];var font;var secondPass=false;var rotateTicks,rotateTicksRads,radsAboveHoriz;plot.hooks.draw.push(function(plot,ctx){if(!secondPass){var opts=plot.getAxes().xaxis.options;if(opts.rotateTicks===undefined){return}rotateTicks=parseInt(opts.rotateTicks,10);if(rotateTicks.toString()!=opts.rotateTicks||rotateTicks==0||rotateTicks>=180){return}rotateTicksRads=rotateTicks*Math.PI/180;if(rotateTicks>90){radsAboveHoriz=Math.PI-rotateTicksRads}else{radsAboveHoriz=Math.PI/2-rotateTicksRads}font=opts.rotateTicksFont;if(!font){font=$(".tickLabel").css("font")}if(!font){font="smaller sans-serif"}var elem,maxLabelWidth=0,maxLabelHeight=0,minX=0,maxX=0;var xaxis=plot.getAxes().xaxis;ticks=plot.getAxes().xaxis.ticks;opts.ticks=[];var x;for(var i=0;i<ticks.length;i++){elem=$('<span style="font:'+font+'">'+ticks[i].label+"</span>");plot.getPlaceholder().append(elem);ticks[i].height=elem.outerHeight(true);ticks[i].width=elem.outerWidth(true);elem.remove();if(ticks[i].height>maxLabelHeight){maxLabelHeight=ticks[i].height}if(ticks[i].width>maxLabelWidth){maxLabelWidth=ticks[i].width}var tick=ticks[i];if(rotateTicks>90){x=Math.round(plot.getPlotOffset().left+xaxis.p2c(tick.v))-Math.ceil(Math.cos(radsAboveHoriz)*tick.height)-Math.ceil(Math.cos(radsAboveHoriz)*tick.width);if(x<minX){minX=x}}else{x=Math.round(plot.getPlotOffset().left+xaxis.p2c(tick.v))+Math.ceil(Math.cos(radsAboveHoriz)*tick.height)+Math.ceil(Math.cos(radsAboveHoriz)*tick.width);if(x>maxX){maxX=x}}}if(rotateTicks>90){var acuteRads=rotateTicksRads-Math.PI/2;opts.labelHeight=Math.ceil(Math.sin(acuteRads)*maxLabelWidth)+Math.ceil(Math.sin(acuteRads)*maxLabelHeight)}else{var acuteRads=Math.PI/2-rotateTicksRads;opts.labelHeight=Math.ceil(Math.sin(rotateTicksRads)*maxLabelWidth)+Math.ceil(Math.sin(acuteRads)*maxLabelHeight)}if(minX<0){plot.getAxes().yaxis.options.labelWidth=-1*minX}secondPass=true;plot.setupGrid();plot.draw()}else{if(ticks.length==0){return}var xaxis=plot.getAxes().xaxis;var box=xaxis.box;var tick,label,xoffset,yoffset;for(var i=0;i<ticks.length;i++){tick=ticks[i];if(!tick.label){continue}ctx.save();ctx.font=font;if(rotateTicks<=90){xoffset=-Math.ceil(Math.cos(radsAboveHoriz)*tick.height);yoffset=Math.ceil(Math.sin(radsAboveHoriz)*tick.height);ctx.translate(Math.round(plot.getPlotOffset().left+xaxis.p2c(tick.v))+xoffset,box.top+box.padding+plot.getOptions().grid.labelMargin+yoffset);ctx.rotate(rotateTicksRads)}else{xoffset=Math.ceil(Math.cos(radsAboveHoriz)*tick.height)-Math.ceil(Math.cos(radsAboveHoriz)*tick.width);yoffset=Math.ceil(Math.sin(radsAboveHoriz)*tick.width)+Math.ceil(Math.sin(radsAboveHoriz)*tick.height);ctx.translate(Math.round(plot.getPlotOffset().left+xaxis.p2c(tick.v)+xoffset),box.top+box.padding+plot.getOptions().grid.labelMargin+yoffset);ctx.rotate(-radsAboveHoriz)}ctx.fillText(tick.label,0,0);ctx.restore()}}})}$.plot.plugins.push({init:init,options:options,name:"tickRotor",version:"1.0"})})(jQuery); \ No newline at end of file