olap/tpldata/jqplot.categoryAxisRenderer...

1 line
9.0 KiB
JavaScript

(function(a){a.jqplot.CategoryAxisRenderer=function(b){a.jqplot.LinearAxisRenderer.call(this);this.sortMergedLabels=false};a.jqplot.CategoryAxisRenderer.prototype=new a.jqplot.LinearAxisRenderer();a.jqplot.CategoryAxisRenderer.prototype.constructor=a.jqplot.CategoryAxisRenderer;a.jqplot.CategoryAxisRenderer.prototype.init=function(f){this.groups=1;this.groupLabels=[];this._groupLabels=[];this._grouped=false;this._barsPerGroup=null;a.extend(true,this,{tickOptions:{formatString:"%d"}},f);var b=this._dataBounds;for(var e=0;e<this._series.length;e++){var g=this._series[e];if(g.groups){this.groups=g.groups}var h=g.data;for(var c=0;c<h.length;c++){if(this.name=="xaxis"||this.name=="x2axis"){if(h[c][0]<b.min||b.min==null){b.min=h[c][0]}if(h[c][0]>b.max||b.max==null){b.max=h[c][0]}}else{if(h[c][1]<b.min||b.min==null){b.min=h[c][1]}if(h[c][1]>b.max||b.max==null){b.max=h[c][1]}}}}if(this.groupLabels.length){this.groups=this.groupLabels.length}};a.jqplot.CategoryAxisRenderer.prototype.createTicks=function(){var C=this._ticks;var B=this.ticks;var F=this.name;var D=this._dataBounds;var x,A;var v,z;var f,d;var b,y;if(B.length){if(this.groups>1&&!this._grouped){var u=B.length;var r=parseInt(u/this.groups,10);var g=0;for(var y=r;y<u;y+=r){B.splice(y+g,0," ");g++}this._grouped=true}this.min=0.5;this.max=B.length+0.5;var m=this.max-this.min;this.numberTicks=2*B.length+1;for(y=0;y<B.length;y++){b=this.min+2*y*m/(this.numberTicks-1);var h=new this.tickRenderer(this.tickOptions);h.showLabel=false;h.setTick(b,this.name);this._ticks.push(h);var h=new this.tickRenderer(this.tickOptions);h.label=B[y];h.showMark=false;h.showGridline=false;h.setTick(b+0.5,this.name);this._ticks.push(h)}var h=new this.tickRenderer(this.tickOptions);h.showLabel=false;h.setTick(b+1,this.name);this._ticks.push(h)}else{if(F=="xaxis"||F=="x2axis"){x=this._plotDimensions.width}else{x=this._plotDimensions.height}if(this.min!=null&&this.max!=null&&this.numberTicks!=null){this.tickInterval=null}if(this.min!=null&&this.max!=null&&this.tickInterval!=null){if(parseInt((this.max-this.min)/this.tickInterval,10)!=(this.max-this.min)/this.tickInterval){this.tickInterval=null}}var q=[];var o=0;var v=0.5;var z,E;var e=false;for(var y=0;y<this._series.length;y++){var k=this._series[y];for(var w=0;w<k.data.length;w++){if(this.name=="xaxis"||this.name=="x2axis"){E=k.data[w][0]}else{E=k.data[w][1]}if(a.inArray(E,q)==-1){e=true;o+=1;q.push(E)}}}if(e&&this.sortMergedLabels){q.sort()}this.ticks=q;for(var y=0;y<this._series.length;y++){var k=this._series[y];for(var w=0;w<k.data.length;w++){if(this.name=="xaxis"||this.name=="x2axis"){E=k.data[w][0]}else{E=k.data[w][1]}var n=a.inArray(E,q)+1;if(this.name=="xaxis"||this.name=="x2axis"){k.data[w][0]=n}else{k.data[w][1]=n}}}if(this.groups>1&&!this._grouped){var u=q.length;var r=parseInt(u/this.groups,10);var g=0;for(var y=r;y<u;y+=r+1){q[y]=" "}this._grouped=true}z=o+0.5;if(this.numberTicks==null){this.numberTicks=2*o+1}var m=z-v;this.min=v;this.max=z;var p=0;var c=parseInt(3+x/10,10);var r=parseInt(o/c,10);if(this.tickInterval==null){this.tickInterval=m/(this.numberTicks-1)}for(var y=0;y<this.numberTicks;y++){b=this.min+y*this.tickInterval;var h=new this.tickRenderer(this.tickOptions);if(y/2==parseInt(y/2,10)){h.showLabel=false;h.showMark=true}else{if(r>0&&p<r){h.showLabel=false;p+=1}else{h.showLabel=true;p=0}h.label=h.formatter(h.formatString,q[(y-1)/2]);h.showMark=false;h.showGridline=false}h.setTick(b,this.name);this._ticks.push(h)}}};a.jqplot.CategoryAxisRenderer.prototype.draw=function(b,j){if(this.show){this.renderer.createTicks.call(this);var h=0;var c;if(this._elem){this._elem.emptyForce()}this._elem=this._elem||a('<div class="jqplot-axis jqplot-'+this.name+'" style="position:absolute;"></div>');if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var g=this._label.draw(b,j);g.appendTo(this._elem)}var f=this._ticks;for(var e=0;e<f.length;e++){var d=f[e];if(d.showLabel&&(!d.isMinorTick||this.showMinorTicks)){var g=d.draw(b,j);g.appendTo(this._elem)}}this._groupLabels=[];for(var e=0;e<this.groupLabels.length;e++){var g=a('<div style="position:absolute;" class="jqplot-'+this.name+'-groupLabel"></div>');g.html(this.groupLabels[e]);this._groupLabels.push(g);g.appendTo(this._elem)}}return this._elem};a.jqplot.CategoryAxisRenderer.prototype.set=function(){var g=0;var m;var k=0;var f=0;var c=(this._label==null)?false:this._label.show;if(this.show){var n=this._ticks;for(var d=0;d<n.length;d++){var e=n[d];if(e.showLabel&&(!e.isMinorTick||this.showMinorTicks)){if(this.name=="xaxis"||this.name=="x2axis"){m=e._elem.outerHeight(true)}else{m=e._elem.outerWidth(true)}if(m>g){g=m}}}var j=0;for(var d=0;d<this._groupLabels.length;d++){var b=this._groupLabels[d];if(this.name=="xaxis"||this.name=="x2axis"){m=b.outerHeight(true)}else{m=b.outerWidth(true)}if(m>j){j=m}}if(c){k=this._label._elem.outerWidth(true);f=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){g+=j+f;this._elem.css({height:g+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){g+=j+f;this._elem.css({height:g+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){g+=j+k;this._elem.css({width:g+"px",left:"0px",top:"0px"});if(c&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}else{g+=j+k;this._elem.css({width:g+"px",right:"0px",top:"0px"});if(c&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}}}}};a.jqplot.CategoryAxisRenderer.prototype.pack=function(l,g){var C=this._ticks;var y=this.max;var s=this.min;var b=g.max;var d=g.min;var q=(this._label==null)?false:this._label.show;var x;for(var r in l){this._elem.css(r,l[r])}this._offsets=g;var f=b-d;var e=y-s;this.p2u=function(h){return(h-d)*e/f+s};this.u2p=function(h){return(h-s)*f/e+d};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(h-s)*f/e};this.series_p2u=function(h){return h*e/f+s}}else{this.series_u2p=function(h){return(h-y)*f/e};this.series_p2u=function(h){return h*e/f+y}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(x=0;x<C.length;x++){var o=C[x];if(o.show&&o.showLabel){var c;if(o.constructor==a.jqplot.CanvasAxisTickRenderer&&o.angle){var A=(this.name=="xaxis")?1:-1;switch(o.labelPosition){case"auto":if(A*o.angle<0){c=-o.getWidth()+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2}else{c=-o._textRenderer.height*Math.sin(o._textRenderer.angle)/2}break;case"end":c=-o.getWidth()+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2;break;case"start":c=-o._textRenderer.height*Math.sin(o._textRenderer.angle)/2;break;case"middle":c=-o.getWidth()/2+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2;break;default:c=-o.getWidth()/2+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2;break}}else{c=-o.getWidth()/2}var D=this.u2p(o.value)+c+"px";o._elem.css("left",D);o.pack()}}var u=["bottom",0];if(q){var n=this._label._elem.outerWidth(true);this._label._elem.css("left",d+f/2-n/2+"px");if(this.name=="xaxis"){this._label._elem.css("bottom","0px");u=["bottom",this._label._elem.outerHeight(true)]}else{this._label._elem.css("top","0px");u=["top",this._label._elem.outerHeight(true)]}this._label.pack()}var k=parseInt(this._ticks.length/this.groups,10);for(x=0;x<this._groupLabels.length;x++){var B=0;var m=0;for(var v=x*k;v<=(x+1)*k;v++){if(this._ticks[v]._elem&&this._ticks[v].label!=" "){var o=this._ticks[v]._elem;var r=o.position();B+=r.left+o.outerWidth(true)/2;m++}}B=B/m;this._groupLabels[x].css({left:(B-this._groupLabels[x].outerWidth(true)/2)});this._groupLabels[x].css(u[0],u[1])}}else{for(x=0;x<C.length;x++){var o=C[x];if(o.show&&o.showLabel){var c;if(o.constructor==a.jqplot.CanvasAxisTickRenderer&&o.angle){var A=(this.name=="yaxis")?1:-1;switch(o.labelPosition){case"auto":case"end":if(A*o.angle<0){c=-o._textRenderer.height*Math.cos(-o._textRenderer.angle)/2}else{c=-o.getHeight()+o._textRenderer.height*Math.cos(o._textRenderer.angle)/2}break;case"start":if(o.angle>0){c=-o._textRenderer.height*Math.cos(-o._textRenderer.angle)/2}else{c=-o.getHeight()+o._textRenderer.height*Math.cos(o._textRenderer.angle)/2}break;case"middle":c=-o.getHeight()/2;break;default:c=-o.getHeight()/2;break}}else{c=-o.getHeight()/2}var D=this.u2p(o.value)+c+"px";o._elem.css("top",D);o.pack()}}var u=["left",0];if(q){var z=this._label._elem.outerHeight(true);this._label._elem.css("top",b-f/2-z/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px");u=["left",this._label._elem.outerWidth(true)]}else{this._label._elem.css("right","0px");u=["right",this._label._elem.outerWidth(true)]}this._label.pack()}var k=parseInt(this._ticks.length/this.groups,10);for(x=0;x<this._groupLabels.length;x++){var B=0;var m=0;for(var v=x*k;v<=(x+1)*k;v++){if(this._ticks[v]._elem&&this._ticks[v].label!=" "){var o=this._ticks[v]._elem;var r=o.position();B+=r.top+o.outerHeight()/2;m++}}B=B/m;this._groupLabels[x].css({top:B-this._groupLabels[x].outerHeight()/2});this._groupLabels[x].css(u[0],u[1])}}}}})(jQuery);