diff options
Diffstat (limited to 'wqflask/wqflask/static/packages/jqplot/plugins/jqplot.mekkoAxisRenderer.js')
-rw-r--r-- | wqflask/wqflask/static/packages/jqplot/plugins/jqplot.mekkoAxisRenderer.js | 611 |
1 files changed, 0 insertions, 611 deletions
diff --git a/wqflask/wqflask/static/packages/jqplot/plugins/jqplot.mekkoAxisRenderer.js b/wqflask/wqflask/static/packages/jqplot/plugins/jqplot.mekkoAxisRenderer.js deleted file mode 100644 index 74297685..00000000 --- a/wqflask/wqflask/static/packages/jqplot/plugins/jqplot.mekkoAxisRenderer.js +++ /dev/null @@ -1,611 +0,0 @@ -/** - * jqPlot - * Pure JavaScript plotting plugin using jQuery - * - * Version: 1.0.4 - * Revision: 1121 - * - * Copyright (c) 2009-2012 Chris Leonello - * jqPlot is currently available for use in all personal or commercial projects - * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL - * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can - * choose the license that best suits your project and use it accordingly. - * - * Although not required, the author would appreciate an email letting him - * know of any substantial use of jqPlot. You can reach the author at: - * chris at jqplot dot com or see http://www.jqplot.com/info.php . - * - * If you are feeling kind and generous, consider supporting the project by - * making a donation at: http://www.jqplot.com/donate.php . - * - * sprintf functions contained in jqplot.sprintf.js by Ash Searle: - * - * version 2007.04.27 - * author Ash Searle - * http://hexmen.com/blog/2007/03/printf-sprintf/ - * http://hexmen.com/js/sprintf.js - * The author (Ash Searle) has placed this code in the public domain: - * "This code is unrestricted: you are free to use it however you like." - * - */ -(function($) { - // class: $.jqplot.MekkoAxisRenderer - // An axis renderer for a Mekko chart. - // Should be used with a Mekko chart where the mekkoRenderer is used on the series. - // Displays the Y axis as a range from 0 to 1 (0 to 100%) and the x axis with a tick - // for each series scaled to the sum of all the y values. - $.jqplot.MekkoAxisRenderer = function() { - }; - - // called with scope of axis object. - $.jqplot.MekkoAxisRenderer.prototype.init = function(options){ - // prop: tickMode - // How to space the ticks on the axis. - // 'bar' will place a tick at the width of each bar. - // This is the default for the x axis. - // 'even' will place ticks at even intervals. This is - // the default for x2 axis and y axis. y axis cannot be changed. - this.tickMode; - // prop: barLabelRenderer - // renderer to use to draw labels under each bar. - this.barLabelRenderer = $.jqplot.AxisLabelRenderer; - // prop: barLabels - // array of labels to put under each bar. - this.barLabels = this.barLabels || []; - // prop: barLabelOptions - // options object to pass to the bar label renderer. - this.barLabelOptions = {}; - this.tickOptions = $.extend(true, {showGridline:false}, this.tickOptions); - this._barLabels = []; - $.extend(true, this, options); - if (this.name == 'yaxis') { - this.tickOptions.formatString = this.tickOptions.formatString || "%d\%"; - } - var db = this._dataBounds; - db.min = 0; - // for y axes, scale always go from 0 to 1 (0 to 100%) - if (this.name == 'yaxis' || this.name == 'y2axis') { - db.max = 100; - this.tickMode = 'even'; - } - // For x axes, scale goes from 0 to sum of all y values. - else if (this.name == 'xaxis'){ - this.tickMode = (this.tickMode == null) ? 'bar' : this.tickMode; - for (var i=0; i<this._series.length; i++) { - db.max += this._series[i]._sumy; - } - } - else if (this.name == 'x2axis'){ - this.tickMode = (this.tickMode == null) ? 'even' : this.tickMode; - for (var i=0; i<this._series.length; i++) { - db.max += this._series[i]._sumy; - } - } - }; - - // called with scope of axis - $.jqplot.MekkoAxisRenderer.prototype.draw = function(ctx, plot) { - if (this.show) { - // populate the axis label and value properties. - // createTicks is a method on the renderer, but - // call it within the scope of the axis. - this.renderer.createTicks.call(this); - // fill a div with axes labels in the right direction. - // Need to pregenerate each axis to get it's bounds and - // position it and the labels correctly on the plot. - var dim=0; - var temp; - - var elem = document.createElement('div'); - this._elem = $(elem); - this._elem.addClass('jqplot-axis jqplot-'+this.name); - this._elem.css('position', 'absolute'); - elem = null; - - if (this.name == 'xaxis' || this.name == 'x2axis') { - this._elem.width(this._plotDimensions.width); - } - else { - this._elem.height(this._plotDimensions.height); - } - - // draw the axis label - // create a _label object. - this.labelOptions.axis = this.name; - this._label = new this.labelRenderer(this.labelOptions); - if (this._label.show) { - this._elem.append(this._label.draw(ctx)); - } - - var t, tick, elem; - if (this.showTicks) { - t = this._ticks; - for (var i=0; i<t.length; i++) { - tick = t[i]; - if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { - this._elem.append(tick.draw(ctx)); - } - } - } - - // draw the series labels - for (i=0; i<this.barLabels.length; i++) { - this.barLabelOptions.axis = this.name; - this.barLabelOptions.label = this.barLabels[i]; - this._barLabels.push(new this.barLabelRenderer(this.barLabelOptions)); - if (this.tickMode != 'bar') { - this._barLabels[i].show = false; - } - if (this._barLabels[i].show) { - var elem = this._barLabels[i].draw(ctx, plot); - elem.removeClass('jqplot-'+this.name+'-label'); - elem.addClass('jqplot-'+this.name+'-tick'); - elem.addClass('jqplot-mekko-barLabel'); - elem.appendTo(this._elem); - elem = null; - } - } - - } - return this._elem; - }; - - // called with scope of an axis - $.jqplot.MekkoAxisRenderer.prototype.reset = function() { - this.min = this._min; - this.max = this._max; - this.tickInterval = this._tickInterval; - this.numberTicks = this._numberTicks; - // this._ticks = this.__ticks; - }; - - // called with scope of axis - $.jqplot.MekkoAxisRenderer.prototype.set = function() { - var dim = 0; - var temp; - var w = 0; - var h = 0; - var lshow = (this._label == null) ? false : this._label.show; - if (this.show && this.showTicks) { - var t = this._ticks; - for (var i=0; i<t.length; i++) { - var tick = t[i]; - if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { - if (this.name == 'xaxis' || this.name == 'x2axis') { - temp = tick._elem.outerHeight(true); - } - else { - temp = tick._elem.outerWidth(true); - } - if (temp > dim) { - dim = temp; - } - } - } - - if (lshow) { - w = this._label._elem.outerWidth(true); - h = this._label._elem.outerHeight(true); - } - if (this.name == 'xaxis') { - dim = dim + h; - this._elem.css({'height':dim+'px', left:'0px', bottom:'0px'}); - } - else if (this.name == 'x2axis') { - dim = dim + h; - this._elem.css({'height':dim+'px', left:'0px', top:'0px'}); - } - else if (this.name == 'yaxis') { - dim = dim + w; - this._elem.css({'width':dim+'px', left:'0px', top:'0px'}); - if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { - this._label._elem.css('width', w+'px'); - } - } - else { - dim = dim + w; - this._elem.css({'width':dim+'px', right:'0px', top:'0px'}); - if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { - this._label._elem.css('width', w+'px'); - } - } - } - }; - - // called with scope of axis - $.jqplot.MekkoAxisRenderer.prototype.createTicks = function() { - // we're are operating on an axis here - var ticks = this._ticks; - var userTicks = this.ticks; - var name = this.name; - // databounds were set on axis initialization. - var db = this._dataBounds; - var dim, interval; - var min, max; - var pos1, pos2; - var t, tt, i, j; - - // if we already have ticks, use them. - // ticks must be in order of increasing value. - - if (userTicks.length) { - // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed - for (i=0; i<userTicks.length; i++){ - var ut = userTicks[i]; - var t = new this.tickRenderer(this.tickOptions); - if (ut.constructor == Array) { - t.value = ut[0]; - t.label = ut[1]; - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(ut[0], this.name); - this._ticks.push(t); - } - - else { - t.value = ut; - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(ut, this.name); - this._ticks.push(t); - } - } - this.numberTicks = userTicks.length; - this.min = this._ticks[0].value; - this.max = this._ticks[this.numberTicks-1].value; - this.tickInterval = (this.max - this.min) / (this.numberTicks - 1); - } - - // we don't have any ticks yet, let's make some! - else { - if (name == 'xaxis' || name == 'x2axis') { - dim = this._plotDimensions.width; - } - else { - dim = this._plotDimensions.height; - } - - // if min, max and number of ticks specified, user can't specify interval. - if (this.min != null && this.max != null && this.numberTicks != null) { - this.tickInterval = null; - } - - min = (this.min != null) ? this.min : db.min; - max = (this.max != null) ? this.max : db.max; - - // if min and max are same, space them out a bit.+ - if (min == max) { - var adj = 0.05; - if (min > 0) { - adj = Math.max(Math.log(min)/Math.LN10, 0.05); - } - min -= adj; - max += adj; - } - - var range = max - min; - var rmin, rmax; - var temp, prev, curr; - var ynumticks = [3,5,6,11,21]; - - // yaxis divide ticks in nice intervals from 0 to 1. - if (this.name == 'yaxis' || this.name == 'y2axis') { - this.min = 0; - this.max = 100; - // user didn't specify number of ticks. - if (!this.numberTicks){ - if (this.tickInterval) { - this.numberTicks = 3 + Math.ceil(range / this.tickInterval); - } - else { - temp = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); - for (i=0; i<ynumticks.length; i++) { - curr = temp/ynumticks[i]; - if (curr == 1) { - this.numberTicks = ynumticks[i]; - break; - } - else if (curr > 1) { - prev = curr; - continue; - } - else if (curr < 1) { - // was prev or is curr closer to one? - if (Math.abs(prev - 1) < Math.abs(curr - 1)) { - this.numberTicks = ynumticks[i-1]; - break; - } - else { - this.numberTicks = ynumticks[i]; - break; - } - } - else if (i == ynumticks.length -1) { - this.numberTicks = ynumticks[i]; - } - } - this.tickInterval = range / (this.numberTicks - 1); - } - } - - // user did specify number of ticks. - else { - this.tickInterval = range / (this.numberTicks - 1); - } - - for (var i=0; i<this.numberTicks; i++){ - tt = this.min + i * this.tickInterval; - t = new this.tickRenderer(this.tickOptions); - // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(tt, this.name); - this._ticks.push(t); - } - } - - // for x axes, have number ot ticks equal to number of series and ticks placed - // at sum of y values for each series. - else if (this.tickMode == 'bar') { - this.min = 0; - this.numberTicks = this._series.length + 1; - t = new this.tickRenderer(this.tickOptions); - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(0, this.name); - this._ticks.push(t); - - temp = 0; - - for (i=1; i<this.numberTicks; i++){ - temp += this._series[i-1]._sumy; - t = new this.tickRenderer(this.tickOptions); - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(temp, this.name); - this._ticks.push(t); - } - this.max = this.max || temp; - - // if user specified a max and it is greater than sum, add a tick - if (this.max > temp) { - t = new this.tickRenderer(this.tickOptions); - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(this.max, this.name); - this._ticks.push(t); - - } - } - - else if (this.tickMode == 'even') { - this.min = 0; - this.max = this.max || db.max; - // get a desired number of ticks - var nt = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); - range = this.max - this.min; - this.numberTicks = nt; - this.tickInterval = range / (this.numberTicks - 1); - - for (i=0; i<this.numberTicks; i++){ - tt = this.min + i * this.tickInterval; - t = new this.tickRenderer(this.tickOptions); - // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); - if (!this.showTicks) { - t.showLabel = false; - t.showMark = false; - } - else if (!this.showTickMarks) { - t.showMark = false; - } - t.setTick(tt, this.name); - this._ticks.push(t); - } - - } - } - }; - - // called with scope of axis - $.jqplot.MekkoAxisRenderer.prototype.pack = function(pos, offsets) { - var ticks = this._ticks; - var max = this.max; - var min = this.min; - var offmax = offsets.max; - var offmin = offsets.min; - var lshow = (this._label == null) ? false : this._label.show; - - for (var p in pos) { - this._elem.css(p, pos[p]); - } - - this._offsets = offsets; - // pixellength will be + for x axes and - for y axes becasue pixels always measured from top left. - var pixellength = offmax - offmin; - var unitlength = max - min; - - // point to unit and unit to point conversions references to Plot DOM element top left corner. - this.p2u = function(p){ - return (p - offmin) * unitlength / pixellength + min; - }; - - this.u2p = function(u){ - return (u - min) * pixellength / unitlength + offmin; - }; - - if (this.name == 'xaxis' || this.name == 'x2axis'){ - this.series_u2p = function(u){ - return (u - min) * pixellength / unitlength; - }; - this.series_p2u = function(p){ - return p * unitlength / pixellength + min; - }; - } - - else { - this.series_u2p = function(u){ - return (u - max) * pixellength / unitlength; - }; - this.series_p2u = function(p){ - return p * unitlength / pixellength + max; - }; - } - - if (this.show) { - if (this.name == 'xaxis' || this.name == 'x2axis') { - for (var i=0; i<ticks.length; i++) { - var t = ticks[i]; - if (t.show && t.showLabel) { - var shim; - - if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { - // will need to adjust auto positioning based on which axis this is. - var temp = (this.name == 'xaxis') ? 1 : -1; - switch (t.labelPosition) { - case 'auto': - // position at end - if (temp * t.angle < 0) { - shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; - } - // position at start - else { - shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; - } - break; - case 'end': - shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; - break; - case 'start': - shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; - break; - case 'middle': - shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; - break; - default: - shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; - break; - } - } - else { - shim = -t.getWidth()/2; - } - var val = this.u2p(t.value) + shim + 'px'; - t._elem.css('left', val); - t.pack(); - } - } - var w; - if (lshow) { - w = this._label._elem.outerWidth(true); - this._label._elem.css('left', offmin + pixellength/2 - w/2 + 'px'); - if (this.name == 'xaxis') { - this._label._elem.css('bottom', '0px'); - } - else { - this._label._elem.css('top', '0px'); - } - this._label.pack(); - } - // now show the labels under the bars. - var b, l, r; - for (var i=0; i<this.barLabels.length; i++) { - b = this._barLabels[i]; - if (b.show) { - w = b.getWidth(); - l = this._ticks[i].getLeft() + this._ticks[i].getWidth(); - r = this._ticks[i+1].getLeft(); - b._elem.css('left', (r+l-w)/2+'px'); - b._elem.css('top', this._ticks[i]._elem.css('top')); - b.pack(); - } - } - } - else { - for (var i=0; i<ticks.length; i++) { - var t = ticks[i]; - if (t.show && t.showLabel) { - var shim; - if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { - // will need to adjust auto positioning based on which axis this is. - var temp = (this.name == 'yaxis') ? 1 : -1; - switch (t.labelPosition) { - case 'auto': - // position at end - case 'end': - if (temp * t.angle < 0) { - shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; - } - else { - shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; - } - break; - case 'start': - if (t.angle > 0) { - shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; - } - else { - shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; - } - break; - case 'middle': - shim = -t.getHeight()/2; - break; - default: - shim = -t.getHeight()/2; - break; - } - } - else { - shim = -t.getHeight()/2; - } - - var val = this.u2p(t.value) + shim + 'px'; - t._elem.css('top', val); - t.pack(); - } - } - if (lshow) { - var h = this._label._elem.outerHeight(true); - this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); - if (this.name == 'yaxis') { - this._label._elem.css('left', '0px'); - } - else { - this._label._elem.css('right', '0px'); - } - this._label.pack(); - } - } - } - }; -})(jQuery); |