Edit C:\Users\Administrator\Desktop\Back\galaxie - Copy\js\edeal\libraries\jqplot\1.0.8\plugins\jqplot.pyramidAxisRenderer.js
/** * jqPlot * Pure JavaScript plotting plugin using jQuery * * Version: 1.0.8 * Revision: 1250 * * Copyright (c) 2009-2013 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($) { $.jqplot.PyramidAxisRenderer = function() { $.jqplot.LinearAxisRenderer.call(this); }; $.jqplot.PyramidAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); $.jqplot.PyramidAxisRenderer.prototype.constructor = $.jqplot.PyramidAxisRenderer; // called with scope of axis $.jqplot.PyramidAxisRenderer.prototype.init = function(options){ // Group: Properties // // prop: position // Position of axis. Values are: top, bottom , left, center, right. // By default, x and x2 axes are bottom, y axis is center. this.position = null; // prop: drawBaseline // True to draw the axis baseline. this.drawBaseline = true; // prop: baselineWidth // width of the baseline in pixels. this.baselineWidth = null; // prop: baselineColor // CSS color spec for the baseline. this.baselineColor = null; this.tickSpacingFactor = 25; this._type = 'pyramid'; this._splitAxis = false; this._splitLength = null; this.category = false; this._autoFormatString = ''; this._overrideFormatString = false; $.extend(true, this, options); this.renderer.options = options; this.resetDataBounds = this.renderer.resetDataBounds; this.resetDataBounds(); }; $.jqplot.PyramidAxisRenderer.prototype.resetDataBounds = function() { // Go through all the series attached to this axis and find // the min/max bounds for this axis. var db = this._dataBounds; db.min = null; db.max = null; var temp; for (var i=0; i<this._series.length; i++) { var s = this._series[i]; var d = s._plotData; for (var j=0, l=d.length; j<l; j++) { if (this.name.charAt(0) === 'x') { temp = d[j][1]; if ((temp !== null && temp < db.min) || db.min === null) { db.min = temp; } if ((temp !== null && temp > db.max) || db.max === null) { db.max = temp; } } else { temp = d[j][0]; if ((temp !== null && temp < db.min) || db.min === null) { db.min = temp; } if ((temp !== null && temp > db.max) || db.max === null) { db.max = temp; } } } } }; // called with scope of axis $.jqplot.PyramidAxisRenderer.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, plot); // fill a div with axes labels in the right direction. // Need to pregenerate each axis to get its bounds and // position it and the labels correctly on the plot. var dim=0; var temp; // Added for theming. if (this._elem) { // Memory Leaks patch //this._elem.empty(); this._elem.emptyForce(); this._elem = null; } this._elem = $(document.createElement('div')); this._elem.addClass('jqplot-axis jqplot-'+this.name); this._elem.css('position', 'absolute'); if (this.name == 'xaxis' || this.name == 'x2axis') { this._elem.width(this._plotDimensions.width); } else { this._elem.height(this._plotDimensions.height); } // create a _label object. this.labelOptions.axis = this.name; this._label = new this.labelRenderer(this.labelOptions); if (this._label.show) { var elem = this._label.draw(ctx, plot); elem.appendTo(this._elem); elem = null; } var t = this._ticks; var tick; for (var i=0; i<t.length; i++) { tick = t[i]; if (tick.show && tick.showLabel && (!tick.isMinorTick)) { this._elem.append(tick.draw(ctx, plot)); } } tick = null; t = null; } return this._elem; }; // Note, primes can be found on http://primes.utm.edu/ var _primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]; var _primesHash = {}; for (var i =0, l = _primes.length; i < l; i++) { _primesHash[_primes[i]] = _primes[i]; } // called with scope of axis $.jqplot.PyramidAxisRenderer.prototype.createTicks = function(plot) { // we're are operating on an axis here var userTicks = this.ticks; // databounds were set on axis initialization. var db = this._dataBounds; var dim; var interval; var min; var max; var range; var pos1; var pos2; var tt; var i; var l; var s; // get a copy of user's settings for min/max. var userMin = this.min; var userMax = this.max; var ut; var t; var threshold; var tdim; var scalefact; var ret; var tumin; var tumax; var maxVisibleTicks; var val; var skip = null; var temp; // 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, l=userTicks.length; i<l; i++){ ut = userTicks[i]; t = new this.tickRenderer(this.tickOptions); if ($.isArray(ut)) { t.value = ut[0]; t.label = ut[1]; t.setTick(ut[0], this.name); this._ticks.push(t); } else if ($.isPlainObject(ut)) { $.extend(true, t, ut); t.axis = this.name; this._ticks.push(t); } else { if (typeof ut === 'string') { val = i + plot.defaultAxisStart; } else { val = ut; } t.value = val; t.label = ut; t.axis = 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); // use user specified tickInterval if there is one if (this._options.tickInterval) { // hide every tick except for ticks on interval var ti = this._options.tickInterval; for (i=0; i<this.numberTicks; i++) { if (i%ti !== 0) { // this._ticks[i].show = false; this._ticks[i].isMinorTick = true; } } } else { // check if we have too many ticks dim = (this.name.charAt(0) === 'x') ? this._plotDimensions.width : this._plotDimensions.height; maxVisibleTicks = Math.round(2.0 + dim/this.tickSpacingFactor); if (this.numberTicks > maxVisibleTicks) { // check for number of ticks we can skip temp = this.numberTicks - 1; for (i=2; i<temp; i++) { if (temp % i === 0 && temp/i < maxVisibleTicks) { skip = i-1; break; } } if (skip !== null) { var count = 1; for (i=1, l=this._ticks.length; i<l; i++) { if (count <= skip) { this._ticks[i].show = false; count += 1; } else { count = 1; } } } } } // if category style, add minor ticks in between temp = []; if (this.category) { // turn off gridline and mark on first tick this._ticks[0].showGridline = false; this._ticks[0].showMark = false; for (i=this._ticks.length-1; i>0; i--) { t = new this.tickRenderer(this.tickOptions); t.value = this._ticks[i-1].value + this.tickInterval/2.0; t.label = ''; t.showLabel = false; t.axis = this.name; this._ticks[i].showGridline = false; this._ticks[i].showMark = false; this._ticks.splice(i, 0, t); // temp.push(t); } // merge in the new ticks // for (i=1, l=temp.length; i<l; i++) { // this._ticks.splice(i, 0, temp[i]); // } // now add a tick at beginning and end t = new this.tickRenderer(this.tickOptions); t.value = this._ticks[0].value - this.tickInterval/2.0; t.label = ''; t.showLabel = false; t.axis = this.name; this._ticks.unshift(t); t = new this.tickRenderer(this.tickOptions); t.value = this._ticks[this._ticks.length-1].value + this.tickInterval/2.0; t.label = ''; t.showLabel = false; t.axis = this.name; this._ticks.push(t); this.tickInterval = this.tickInterval / 2.0; this.numberTicks = this._ticks.length; this.min = this._ticks[0].value; this.max = this._ticks[this._ticks.length-1].value; } } // we don't have any ticks yet, let's make some! else { if (this.name.charAt(0) === 'x') { dim = this._plotDimensions.width; // make sure x axis is symetric about 0. var tempmax = Math.max(db.max, Math.abs(db.min)); var tempmin = Math.min(db.min, -tempmax); // min = ((this.min != null) ? this.min : tempmin); // max = ((this.max != null) ? this.max : tempmax); min = tempmin; max = tempmax; range = max - min; if (this.tickOptions == null || !this.tickOptions.formatString) { this._overrideFormatString = true; } threshold = 30; tdim = Math.max(dim, threshold+1); scalefact = (tdim-threshold)/300.0; ret = $.jqplot.LinearTickGenerator(min, max, scalefact); // calculate a padded max and min, points should be less than these // so that they aren't too close to the edges of the plot. // User can adjust how much padding is allowed with pad, padMin and PadMax options. tumin = min + range*(this.padMin - 1); tumax = max - range*(this.padMax - 1); if (min < tumin || max > tumax) { tumin = min - range*(this.padMin - 1); tumax = max + range*(this.padMax - 1); ret = $.jqplot.LinearTickGenerator(tumin, tumax, scalefact); } this.min = ret[0]; this.max = ret[1]; this.numberTicks = ret[2]; this._autoFormatString = ret[3]; this.tickInterval = ret[4]; } else { dim = this._plotDimensions.height; // ticks will be on whole integers like 1, 2, 3, ... or 1, 4, 7, ... min = db.min; max = db.max; s = this._series[0]; this._ticks = []; range = max - min; // if range is a prime, will get only 2 ticks, expand range in that case. if (_primesHash[range]) { range += 1; max += 1; } this.max = max; this.min = min; maxVisibleTicks = Math.round(2.0 + dim/this.tickSpacingFactor); if (range + 1 <= maxVisibleTicks) { this.numberTicks = range + 1; this.tickInterval = 1.0; } else { // figure out a round number of ticks to skip in every interval // range / ti + 1 = nt // ti = range / (nt - 1) for (var i=maxVisibleTicks; i>1; i--) { if (range/(i - 1) === Math.round(range/(i - 1))) { this.numberTicks = i; this.tickInterval = range/(i - 1); break; } } } } if (this._overrideFormatString && this._autoFormatString != '') { this.tickOptions = this.tickOptions || {}; this.tickOptions.formatString = this._autoFormatString; } var labelval; for (i=0; i<this.numberTicks; i++) { this.tickOptions.axis = this.name; labelval = this.min + this.tickInterval * i; if (this.name.charAt(0) === 'x') { labelval = Math.abs(labelval); } // this.tickOptions.label = String (labelval); this.tickOptions.value = this.min + this.tickInterval * i; t = new this.tickRenderer(this.tickOptions); t.label = t.prefix + t.formatter(t.formatString, labelval); this._ticks.push(t); // for x axis, if y axis is in middle, add a symetrical 0 tick if (this.name.charAt(0) === 'x' && plot.axes.yMidAxis.show && this.tickOptions.value === 0) { this._splitAxis = true; this._splitLength = plot.axes.yMidAxis.getWidth(); // t.value = -this.max/2000.0; t = new this.tickRenderer(this.tickOptions); this._ticks.push(t); t.value = this.max/2000.0; } } t = null; } }; // called with scope of axis $.jqplot.PyramidAxisRenderer.prototype.set = function() { var dim = 0; var temp; var w = 0; var h = 0; var i; var t; var tick; var lshow = (this._label == null) ? false : this._label.show; if (this.show) { t = this._ticks; l = t.length; for (i=0; i<l; i++) { tick = t[i]; if (!tick._breakTick && tick.show && tick.showLabel && !tick.isMinorTick) { if (this.name.charAt(0) === 'x') { temp = tick._elem.outerHeight(true); } else { temp = tick._elem.outerWidth(true); } if (temp > dim) { dim = temp; } } } if (this.name === 'yMidAxis') { for (i=0; i<l; i++) { tick = t[i]; if (tick._elem) { temp = (dim - tick._elem.outerWidth(true))/2.0; tick._elem.css('left', temp); } } } tick = null; t = null; 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 if (this.name === 'yMidAxis') { // don't include width of label at all in width of axis? // dim = (dim > w) ? dim : w; var temp = dim/2.0 - w/2.0; this._elem.css({'width':dim+'px', top:'0px'}); if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { this._label._elem.css({width: w, left: temp, top: 0}); } } 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'); } } } }; $.jqplot.PyramidAxisRenderer.prototype.pack = function(pos, offsets) { // Add defaults for repacking from resetTickValues function. pos = pos || {}; offsets = offsets || this._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; var sl = this._splitLength; // point to unit and unit to point conversions references to Plot DOM element top left corner. if (this._splitAxis) { pixellength -= this._splitLength; // don't know that this one is correct. this.p2u = function(p){ return (p - offmin) * unitlength / pixellength + min; }; this.u2p = function(u){ if (u <= 0) { return (u - min) * pixellength / unitlength + offmin; } else { return (u - min) * pixellength / unitlength + offmin + sl; } }; this.series_u2p = function(u){ if (u <= 0) { return (u - min) * pixellength / unitlength; } else { return (u - min) * pixellength / unitlength + sl; } }; // don't know that this one is correct. this.series_p2u = function(p){ return p * unitlength / pixellength + min; }; } else { this.p2u = function(p){ return (p - offmin) * unitlength / pixellength + min; }; this.u2p = function(u){ return (u - min) * pixellength / unitlength + offmin; }; if (this.name.charAt(0) === 'x'){ 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.charAt(0) === 'x') { 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(); } } if (lshow) { var 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(); } } else { for (var i=0; i<ticks.length; i++) { var t = ticks[i]; if (t.show && t.showLabel && !t.isMinorTick) { 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': // if (t.angle > 0) { // shim = -t.getHeight()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; // } // else { // shim = -t.getHeight()/2 - t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; // } 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); if (this.name !== 'yMidAxis') { this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); } if (this.name == 'yaxis') { this._label._elem.css('left', '0px'); } else if (this.name !== 'yMidAxis') { this._label._elem.css('right', '0px'); } this._label.pack(); } } } ticks = null; }; })(jQuery);
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de