vendor/assets/javascripts/jqplot-plugins/jqplot.pyramidGridRenderer.js in outfielding-jqplot-rails-1.0.8 vs vendor/assets/javascripts/jqplot-plugins/jqplot.pyramidGridRenderer.js in outfielding-jqplot-rails-1.0.9

- old
+ new

@@ -1,429 +1,429 @@ -/** - * 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($) { - // Class: $.jqplot.CanvasGridRenderer - // The default jqPlot grid renderer, creating a grid on a canvas element. - // The renderer has no additional options beyond the <Grid> class. - $.jqplot.PyramidGridRenderer = function(){ - $.jqplot.CanvasGridRenderer.call(this); - }; - - $.jqplot.PyramidGridRenderer.prototype = new $.jqplot.CanvasGridRenderer(); - $.jqplot.PyramidGridRenderer.prototype.constructor = $.jqplot.PyramidGridRenderer; - - // called with context of Grid object - $.jqplot.CanvasGridRenderer.prototype.init = function(options) { - this._ctx; - this.plotBands = { - show: false, - color: 'rgb(230, 219, 179)', - axis: 'y', - start: null, - interval: 10 - }; - $.extend(true, this, options); - // set the shadow renderer options - var sopts = {lineJoin:'miter', lineCap:'round', fill:false, isarc:false, angle:this.shadowAngle, offset:this.shadowOffset, alpha:this.shadowAlpha, depth:this.shadowDepth, lineWidth:this.shadowWidth, closePath:false, strokeStyle:this.shadowColor}; - this.renderer.shadowRenderer.init(sopts); - }; - - $.jqplot.PyramidGridRenderer.prototype.draw = function() { - this._ctx = this._elem.get(0).getContext("2d"); - var ctx = this._ctx; - var axes = this._axes; - var xp = axes.xaxis.u2p; - var yp = axes.yMidAxis.u2p; - var xnudge = axes.xaxis.max/1000.0; - var xp0 = xp(0); - var xpn = xp(xnudge); - var ax = ['xaxis', 'yaxis', 'x2axis', 'y2axis','yMidAxis']; - // Add the grid onto the grid canvas. This is the bottom most layer. - ctx.save(); - ctx.clearRect(0, 0, this._plotDimensions.width, this._plotDimensions.height); - ctx.fillStyle = this.backgroundColor || this.background; - - ctx.fillRect(this._left, this._top, this._width, this._height); - - if (this.plotBands.show) { - ctx.save(); - var pb = this.plotBands; - ctx.fillStyle = pb.color; - var axis; - var x, y, w, h; - // find axis to work with - if (pb.axis.charAt(0) === 'x') { - if (axes.xaxis.show) { - axis = axes.xaxis; - } - } - else if (pb.axis.charAt(0) === 'y') { - if (axes.yaxis.show) { - axis = axes.yaxis; - } - else if (axes.y2axis.show) { - axis = axes.y2axis; - } - else if (axes.yMidAxis.show) { - axis = axes.yMidAxis; - } - } - - if (axis !== undefined) { - // draw some rectangles - var start = pb.start; - if (start === null) { - start = axis.min; - } - for (var i = start; i < axis.max; i += 2 * pb.interval) { - if (axis.name.charAt(0) === 'y') { - x = this._left; - if ((i + pb.interval) < axis.max) { - y = axis.series_u2p(i + pb.interval) + this._top; - } - else { - y = axis.series_u2p(axis.max) + this._top; - } - w = this._right - this._left; - h = axis.series_u2p(start) - axis.series_u2p(start + pb.interval); - ctx.fillRect(x, y, w, h); - } - // else { - // y = 0; - // x = axis.series_u2p(i); - // h = this._height; - // w = axis.series_u2p(start + pb.interval) - axis.series_u2p(start); - // } - - } - } - ctx.restore(); - } - - ctx.save(); - ctx.lineJoin = 'miter'; - ctx.lineCap = 'butt'; - ctx.lineWidth = this.gridLineWidth; - ctx.strokeStyle = this.gridLineColor; - var b, e, s, m; - for (var i=5; i>0; i--) { - var name = ax[i-1]; - var axis = axes[name]; - var ticks = axis._ticks; - var numticks = ticks.length; - if (axis.show) { - if (axis.drawBaseline) { - var bopts = {}; - if (axis.baselineWidth !== null) { - bopts.lineWidth = axis.baselineWidth; - } - if (axis.baselineColor !== null) { - bopts.strokeStyle = axis.baselineColor; - } - switch (name) { - case 'xaxis': - if (axes.yMidAxis.show) { - drawLine (this._left, this._bottom, xp0, this._bottom, bopts); - drawLine (xpn, this._bottom, this._right, this._bottom, bopts); - } - else { - drawLine (this._left, this._bottom, this._right, this._bottom, bopts); - } - break; - case 'yaxis': - drawLine (this._left, this._bottom, this._left, this._top, bopts); - break; - case 'yMidAxis': - drawLine(xp0, this._bottom, xp0, this._top, bopts); - drawLine(xpn, this._bottom, xpn, this._top, bopts); - break; - case 'x2axis': - if (axes.yMidAxis.show) { - drawLine (this._left, this._top, xp0, this._top, bopts); - drawLine (xpn, this._top, this._right, this._top, bopts); - } - else { - drawLine (this._left, this._bottom, this._right, this._bottom, bopts); - } - break; - case 'y2axis': - drawLine (this._right, this._bottom, this._right, this._top, bopts); - break; - - } - } - for (var j=numticks; j>0; j--) { - var t = ticks[j-1]; - if (t.show) { - var pos = Math.round(axis.u2p(t.value)) + 0.5; - switch (name) { - case 'xaxis': - // draw the grid line if we should - if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { - drawLine(pos, this._top, pos, this._bottom); - } - - // draw the mark - if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { - s = t.markSize; - m = t.mark; - var pos = Math.round(axis.u2p(t.value)) + 0.5; - switch (m) { - case 'outside': - b = this._bottom; - e = this._bottom+s; - break; - case 'inside': - b = this._bottom-s; - e = this._bottom; - break; - case 'cross': - b = this._bottom-s; - e = this._bottom+s; - break; - default: - b = this._bottom; - e = this._bottom+s; - break; - } - // draw the shadow - if (this.shadow) { - this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); - } - // draw the line - drawLine(pos, b, pos, e); - } - break; - case 'yaxis': - // draw the grid line - if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { - drawLine(this._right, pos, this._left, pos); - } - - // draw the mark - if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { - s = t.markSize; - m = t.mark; - var pos = Math.round(axis.u2p(t.value)) + 0.5; - switch (m) { - case 'outside': - b = this._left-s; - e = this._left; - break; - case 'inside': - b = this._left; - e = this._left+s; - break; - case 'cross': - b = this._left-s; - e = this._left+s; - break; - default: - b = this._left-s; - e = this._left; - break; - } - // draw the shadow - if (this.shadow) { - this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); - } - drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); - } - break; - case 'yMidAxis': - // draw the grid line - if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { - drawLine(this._left, pos, xp0, pos); - drawLine(xpn, pos, this._right, pos); - } - // draw the mark - if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { - s = t.markSize; - m = t.mark; - var pos = Math.round(axis.u2p(t.value)) + 0.5; - - b = xp0; - e = xp0 + s; - // draw the shadow - if (this.shadow) { - this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); - } - drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); - - b = xpn - s; - e = xpn; - // draw the shadow - if (this.shadow) { - this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); - } - drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); - } - break; - case 'x2axis': - // draw the grid line - if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { - drawLine(pos, this._bottom, pos, this._top); - } - - // draw the mark - if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { - s = t.markSize; - m = t.mark; - var pos = Math.round(axis.u2p(t.value)) + 0.5; - switch (m) { - case 'outside': - b = this._top-s; - e = this._top; - break; - case 'inside': - b = this._top; - e = this._top+s; - break; - case 'cross': - b = this._top-s; - e = this._top+s; - break; - default: - b = this._top-s; - e = this._top; - break; - } - // draw the shadow - if (this.shadow) { - this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); - } - drawLine(pos, b, pos, e); - } - break; - case 'y2axis': - // draw the grid line - if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { - drawLine(this._left, pos, this._right, pos); - } - - // draw the mark - if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { - s = t.markSize; - m = t.mark; - var pos = Math.round(axis.u2p(t.value)) + 0.5; - switch (m) { - case 'outside': - b = this._right; - e = this._right+s; - break; - case 'inside': - b = this._right-s; - e = this._right; - break; - case 'cross': - b = this._right-s; - e = this._right+s; - break; - default: - b = this._right; - e = this._right+s; - break; - } - // draw the shadow - if (this.shadow) { - this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); - } - drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); - } - break; - default: - break; - } - } - } - t = null; - } - axis = null; - ticks = null; - } - - ctx.restore(); - - function drawLine(bx, by, ex, ey, opts) { - ctx.save(); - opts = opts || {}; - if (opts.lineWidth == null || opts.lineWidth != 0){ - $.extend(true, ctx, opts); - ctx.beginPath(); - ctx.moveTo(bx, by); - ctx.lineTo(ex, ey); - ctx.stroke(); - } - ctx.restore(); - } - - if (this.shadow) { - if (axes.yMidAxis.show) { - var points = [[this._left, this._bottom], [xp0, this._bottom]]; - this.renderer.shadowRenderer.draw(ctx, points); - var points = [[xpn, this._bottom], [this._right, this._bottom], [this._right, this._top]]; - this.renderer.shadowRenderer.draw(ctx, points); - var points = [[xp0, this._bottom], [xp0, this._top]]; - this.renderer.shadowRenderer.draw(ctx, points); - } - else { - var points = [[this._left, this._bottom], [this._right, this._bottom], [this._right, this._top]]; - this.renderer.shadowRenderer.draw(ctx, points); - } - } - // Now draw border around grid. Use axis border definitions. start at - // upper left and go clockwise. - if (this.borderWidth != 0 && this.drawBorder) { - if (axes.yMidAxis.show) { - drawLine (this._left, this._top, xp0, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); - drawLine (xpn, this._top, this._right, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); - drawLine (this._right, this._top, this._right, this._bottom, {lineCap:'round', strokeStyle:axes.y2axis.borderColor, lineWidth:axes.y2axis.borderWidth}); - drawLine (this._right, this._bottom, xpn, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); - drawLine (xp0, this._bottom, this._left, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); - drawLine (this._left, this._bottom, this._left, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); - drawLine (xp0, this._bottom, xp0, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); - drawLine (xpn, this._bottom, xpn, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); - } - else { - drawLine (this._left, this._top, this._right, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); - drawLine (this._right, this._top, this._right, this._bottom, {lineCap:'round', strokeStyle:axes.y2axis.borderColor, lineWidth:axes.y2axis.borderWidth}); - drawLine (this._right, this._bottom, this._left, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); - drawLine (this._left, this._bottom, this._left, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); - } - } - // ctx.lineWidth = this.borderWidth; - // ctx.strokeStyle = this.borderColor; - // ctx.strokeRect(this._left, this._top, this._width, this._height); - - ctx.restore(); - ctx = null; - axes = null; - }; +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: d96a669 + * + * Copyright (c) 2009-2016 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.CanvasGridRenderer + // The default jqPlot grid renderer, creating a grid on a canvas element. + // The renderer has no additional options beyond the <Grid> class. + $.jqplot.PyramidGridRenderer = function(){ + $.jqplot.CanvasGridRenderer.call(this); + }; + + $.jqplot.PyramidGridRenderer.prototype = new $.jqplot.CanvasGridRenderer(); + $.jqplot.PyramidGridRenderer.prototype.constructor = $.jqplot.PyramidGridRenderer; + + // called with context of Grid object + $.jqplot.CanvasGridRenderer.prototype.init = function(options) { + this._ctx; + this.plotBands = { + show: false, + color: 'rgb(230, 219, 179)', + axis: 'y', + start: null, + interval: 10 + }; + $.extend(true, this, options); + // set the shadow renderer options + var sopts = {lineJoin:'miter', lineCap:'round', fill:false, isarc:false, angle:this.shadowAngle, offset:this.shadowOffset, alpha:this.shadowAlpha, depth:this.shadowDepth, lineWidth:this.shadowWidth, closePath:false, strokeStyle:this.shadowColor}; + this.renderer.shadowRenderer.init(sopts); + }; + + $.jqplot.PyramidGridRenderer.prototype.draw = function() { + this._ctx = this._elem.get(0).getContext("2d"); + var ctx = this._ctx; + var axes = this._axes; + var xp = axes.xaxis.u2p; + var yp = axes.yMidAxis.u2p; + var xnudge = axes.xaxis.max/1000.0; + var xp0 = xp(0); + var xpn = xp(xnudge); + var ax = ['xaxis', 'yaxis', 'x2axis', 'y2axis','yMidAxis']; + // Add the grid onto the grid canvas. This is the bottom most layer. + ctx.save(); + ctx.clearRect(0, 0, this._plotDimensions.width, this._plotDimensions.height); + ctx.fillStyle = this.backgroundColor || this.background; + + ctx.fillRect(this._left, this._top, this._width, this._height); + + if (this.plotBands.show) { + ctx.save(); + var pb = this.plotBands; + ctx.fillStyle = pb.color; + var axis; + var x, y, w, h; + // find axis to work with + if (pb.axis.charAt(0) === 'x') { + if (axes.xaxis.show) { + axis = axes.xaxis; + } + } + else if (pb.axis.charAt(0) === 'y') { + if (axes.yaxis.show) { + axis = axes.yaxis; + } + else if (axes.y2axis.show) { + axis = axes.y2axis; + } + else if (axes.yMidAxis.show) { + axis = axes.yMidAxis; + } + } + + if (axis !== undefined) { + // draw some rectangles + var start = pb.start; + if (start === null) { + start = axis.min; + } + for (var i = start; i < axis.max; i += 2 * pb.interval) { + if (axis.name.charAt(0) === 'y') { + x = this._left; + if ((i + pb.interval) < axis.max) { + y = axis.series_u2p(i + pb.interval) + this._top; + } + else { + y = axis.series_u2p(axis.max) + this._top; + } + w = this._right - this._left; + h = axis.series_u2p(start) - axis.series_u2p(start + pb.interval); + ctx.fillRect(x, y, w, h); + } + // else { + // y = 0; + // x = axis.series_u2p(i); + // h = this._height; + // w = axis.series_u2p(start + pb.interval) - axis.series_u2p(start); + // } + + } + } + ctx.restore(); + } + + ctx.save(); + ctx.lineJoin = 'miter'; + ctx.lineCap = 'butt'; + ctx.lineWidth = this.gridLineWidth; + ctx.strokeStyle = this.gridLineColor; + var b, e, s, m; + for (var i=5; i>0; i--) { + var name = ax[i-1]; + var axis = axes[name]; + var ticks = axis._ticks; + var numticks = ticks.length; + if (axis.show) { + if (axis.drawBaseline) { + var bopts = {}; + if (axis.baselineWidth !== null) { + bopts.lineWidth = axis.baselineWidth; + } + if (axis.baselineColor !== null) { + bopts.strokeStyle = axis.baselineColor; + } + switch (name) { + case 'xaxis': + if (axes.yMidAxis.show) { + drawLine (this._left, this._bottom, xp0, this._bottom, bopts); + drawLine (xpn, this._bottom, this._right, this._bottom, bopts); + } + else { + drawLine (this._left, this._bottom, this._right, this._bottom, bopts); + } + break; + case 'yaxis': + drawLine (this._left, this._bottom, this._left, this._top, bopts); + break; + case 'yMidAxis': + drawLine(xp0, this._bottom, xp0, this._top, bopts); + drawLine(xpn, this._bottom, xpn, this._top, bopts); + break; + case 'x2axis': + if (axes.yMidAxis.show) { + drawLine (this._left, this._top, xp0, this._top, bopts); + drawLine (xpn, this._top, this._right, this._top, bopts); + } + else { + drawLine (this._left, this._bottom, this._right, this._bottom, bopts); + } + break; + case 'y2axis': + drawLine (this._right, this._bottom, this._right, this._top, bopts); + break; + + } + } + for (var j=numticks; j>0; j--) { + var t = ticks[j-1]; + if (t.show) { + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (name) { + case 'xaxis': + // draw the grid line if we should + if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { + drawLine(pos, this._top, pos, this._bottom); + } + + // draw the mark + if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._bottom; + e = this._bottom+s; + break; + case 'inside': + b = this._bottom-s; + e = this._bottom; + break; + case 'cross': + b = this._bottom-s; + e = this._bottom+s; + break; + default: + b = this._bottom; + e = this._bottom+s; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); + } + // draw the line + drawLine(pos, b, pos, e); + } + break; + case 'yaxis': + // draw the grid line + if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { + drawLine(this._right, pos, this._left, pos); + } + + // draw the mark + if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._left-s; + e = this._left; + break; + case 'inside': + b = this._left; + e = this._left+s; + break; + case 'cross': + b = this._left-s; + e = this._left+s; + break; + default: + b = this._left-s; + e = this._left; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + case 'yMidAxis': + // draw the grid line + if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { + drawLine(this._left, pos, xp0, pos); + drawLine(xpn, pos, this._right, pos); + } + // draw the mark + if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + + b = xp0; + e = xp0 + s; + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + + b = xpn - s; + e = xpn; + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + case 'x2axis': + // draw the grid line + if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { + drawLine(pos, this._bottom, pos, this._top); + } + + // draw the mark + if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._top-s; + e = this._top; + break; + case 'inside': + b = this._top; + e = this._top+s; + break; + case 'cross': + b = this._top-s; + e = this._top+s; + break; + default: + b = this._top-s; + e = this._top; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); + } + drawLine(pos, b, pos, e); + } + break; + case 'y2axis': + // draw the grid line + if (t.showGridline && this.drawGridlines && (!t.isMinorTick || axis.showMinorTicks)) { + drawLine(this._left, pos, this._right, pos); + } + + // draw the mark + if (t.showMark && t.mark && (!t.isMinorTick || axis.showMinorTicks)) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._right; + e = this._right+s; + break; + case 'inside': + b = this._right-s; + e = this._right; + break; + case 'cross': + b = this._right-s; + e = this._right+s; + break; + default: + b = this._right; + e = this._right+s; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + default: + break; + } + } + } + t = null; + } + axis = null; + ticks = null; + } + + ctx.restore(); + + function drawLine(bx, by, ex, ey, opts) { + ctx.save(); + opts = opts || {}; + if (opts.lineWidth == null || opts.lineWidth != 0){ + $.extend(true, ctx, opts); + ctx.beginPath(); + ctx.moveTo(bx, by); + ctx.lineTo(ex, ey); + ctx.stroke(); + } + ctx.restore(); + } + + if (this.shadow) { + if (axes.yMidAxis.show) { + var points = [[this._left, this._bottom], [xp0, this._bottom]]; + this.renderer.shadowRenderer.draw(ctx, points); + var points = [[xpn, this._bottom], [this._right, this._bottom], [this._right, this._top]]; + this.renderer.shadowRenderer.draw(ctx, points); + var points = [[xp0, this._bottom], [xp0, this._top]]; + this.renderer.shadowRenderer.draw(ctx, points); + } + else { + var points = [[this._left, this._bottom], [this._right, this._bottom], [this._right, this._top]]; + this.renderer.shadowRenderer.draw(ctx, points); + } + } + // Now draw border around grid. Use axis border definitions. start at + // upper left and go clockwise. + if (this.borderWidth != 0 && this.drawBorder) { + if (axes.yMidAxis.show) { + drawLine (this._left, this._top, xp0, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); + drawLine (xpn, this._top, this._right, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); + drawLine (this._right, this._top, this._right, this._bottom, {lineCap:'round', strokeStyle:axes.y2axis.borderColor, lineWidth:axes.y2axis.borderWidth}); + drawLine (this._right, this._bottom, xpn, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); + drawLine (xp0, this._bottom, this._left, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); + drawLine (this._left, this._bottom, this._left, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); + drawLine (xp0, this._bottom, xp0, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); + drawLine (xpn, this._bottom, xpn, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); + } + else { + drawLine (this._left, this._top, this._right, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); + drawLine (this._right, this._top, this._right, this._bottom, {lineCap:'round', strokeStyle:axes.y2axis.borderColor, lineWidth:axes.y2axis.borderWidth}); + drawLine (this._right, this._bottom, this._left, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); + drawLine (this._left, this._bottom, this._left, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); + } + } + // ctx.lineWidth = this.borderWidth; + // ctx.strokeStyle = this.borderColor; + // ctx.strokeRect(this._left, this._top, this._width, this._height); + + ctx.restore(); + ctx = null; + axes = null; + }; })(jQuery); \ No newline at end of file