⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canvas.js

📁 ntop网络监控软件,使用方面
💻 JS
📖 第 1 页 / 共 2 页
字号:
PlotKit.CanvasRenderer.prototype._renderLineAxis = function() {	this._renderAxis();};PlotKit.CanvasRenderer.prototype._renderAxis = function() {    if (!this.options.drawXAxis && !this.options.drawYAxis)        return;    var context = this.element.getContext("2d");    var labelStyle = {"style":         {"position": "absolute",          "fontSize": this.options.axisLabelFontSize + "px",          "zIndex": 10,          "color": this.options.axisLabelColor.toRGBString(),          "width": this.options.axisLabelWidth + "px",          "overflow": "hidden"         }    };    // axis lines    context.save();    context.strokeStyle = this.options.axisLineColor.toRGBString();    context.lineWidth = this.options.axisLineWidth;    if (this.options.drawYAxis) {        if (this.layout.yticks) {            var drawTick = function(tick) {                if (typeof(tick) == "function") return;                var x = this.area.x;                var y = this.area.y + tick[0] * this.area.h;                context.beginPath();                context.moveTo(x, y);                context.lineTo(x - this.options.axisTickSize, y);                context.closePath();                context.stroke();                var label = DIV(labelStyle, tick[1]);                label.style.top = (y - this.options.axisLabelFontSize) + "px";                label.style.left = (x - this.options.padding.left - this.options.axisTickSize) + "px";                label.style.textAlign = "right";                label.style.width = (this.options.padding.left - this.options.axisTickSize * 2) + "px";                MochiKit.DOM.appendChildNodes(this.container, label);                this.ylabels.push(label);            };                        MochiKit.Iter.forEach(this.layout.yticks, bind(drawTick, this));        }        context.beginPath();        context.moveTo(this.area.x, this.area.y);        context.lineTo(this.area.x, this.area.y + this.area.h);        context.closePath();        context.stroke();    }    if (this.options.drawXAxis) {        if (this.layout.xticks) {            var drawTick = function(tick) {                if (typeof(dataset) == "function") return;                                var x = this.area.x + tick[0] * this.area.w;                var y = this.area.y + this.area.h;                context.beginPath();                context.moveTo(x, y);                context.lineTo(x, y + this.options.axisTickSize);                context.closePath();                context.stroke();                var label = DIV(labelStyle, tick[1]);                label.style.top = (y + this.options.axisTickSize) + "px";                label.style.left = (x - this.options.axisLabelWidth/2) + "px";                label.style.textAlign = "center";                label.style.width = this.options.axisLabelWidth + "px";                MochiKit.DOM.appendChildNodes(this.container, label);                this.xlabels.push(label);            };                        MochiKit.Iter.forEach(this.layout.xticks, bind(drawTick, this));        }        context.beginPath();        context.moveTo(this.area.x, this.area.y + this.area.h);        context.lineTo(this.area.x + this.area.w, this.area.y + this.area.h);        context.closePath();        context.stroke();    }    context.restore();};PlotKit.CanvasRenderer.prototype._renderPieAxis = function() {    if (!this.options.drawXAxis)        return;	if (this.layout.xticks) {		// make a lookup dict for x->slice values		var lookup = new Array();		for (var i = 0; i < this.layout.slices.length; i++) {			lookup[this.layout.slices[i].xval] = this.layout.slices[i];		}				var centerx = this.area.x + this.area.w * 0.5;	    var centery = this.area.y + this.area.h * 0.5;	    var radius = Math.min(this.area.w * this.options.pieRadius,	                          this.area.h * this.options.pieRadius);		var labelWidth = this.options.axisLabelWidth;				for (var i = 0; i < this.layout.xticks.length; i++) {			var slice = lookup[this.layout.xticks[i][0]];			if (MochiKit.Base.isUndefinedOrNull(slice))				continue;											var angle = (slice.startAngle + slice.endAngle)/2;			// normalize the angle			var normalisedAngle = angle;			if (normalisedAngle > Math.PI * 2)				normalisedAngle = normalisedAngle - Math.PI * 2;			else if (normalisedAngle < 0)				normalisedAngle = normalisedAngle + Math.PI * 2;							var labelx = centerx + Math.sin(normalisedAngle) * (radius + 10);	        var labely = centery - Math.cos(normalisedAngle) * (radius + 10);			var attrib = {"position": "absolute",	                      "zIndex": 11,	                      "width": labelWidth + "px",	                      "fontSize": this.options.axisLabelFontSize + "px",	                      "overflow": "hidden",						  "color": this.options.axisLabelColor.toHexString()						};			if (normalisedAngle <= Math.PI * 0.5) {	            // text on top and align left	            attrib["textAlign"] = "left";	            attrib["verticalAlign"] = "top";	            attrib["left"] = labelx + "px";	            attrib["top"] = (labely - this.options.axisLabelFontSize) + "px";	        }	        else if ((normalisedAngle > Math.PI * 0.5) && (normalisedAngle <= Math.PI)) {	            // text on bottom and align left	            attrib["textAlign"] = "left";	            attrib["verticalAlign"] = "bottom";     	            attrib["left"] = labelx + "px";	            attrib["top"] = labely + "px";	        }	        else if ((normalisedAngle > Math.PI) && (normalisedAngle <= Math.PI*1.5)) {	            // text on bottom and align right	            attrib["textAlign"] = "right";	            attrib["verticalAlign"] = "bottom"; 	            attrib["left"] = (labelx  - labelWidth) + "px";	            attrib["top"] = labely + "px";	        }	        else {	            // text on top and align right	            attrib["textAlign"] = "right";	            attrib["verticalAlign"] = "bottom";  	            attrib["left"] = (labelx  - labelWidth) + "px";	            attrib["top"] = (labely - this.options.axisLabelFontSize) + "px";	        }				var label = DIV({'style': attrib}, this.layout.xticks[i][1]);			this.xlabels.push(label);			MochiKit.DOM.appendChildNodes(this.container, label);	  }			}};PlotKit.CanvasRenderer.prototype._renderBackground = function() {    var context = this.element.getContext("2d");    context.save();    context.fillStyle = this.options.backgroundColor.toRGBString();    context.fillRect(0, 0, this.width, this.height);    context.restore();};PlotKit.CanvasRenderer.prototype.clear = function() {    if (this.isIE) {        // VML takes a while to start up, so we just poll every this.IEDelay        try {            if (this.clearDelay) {                this.clearDelay.cancel();                this.clearDelay = null;            }            var context = this.element.getContext("2d");        }        catch (e) {            this.isFirstRender = false;            this.clearDelay = MochiKit.Async.wait(this.IEDelay);            this.clearDelay.addCallback(bind(this.clear, this));            return;        }    }    var context = this.element.getContext("2d");    context.clearRect(0, 0, this.width, this.height);    MochiKit.Iter.forEach(this.xlabels, MochiKit.DOM.removeElement);    MochiKit.Iter.forEach(this.ylabels, MochiKit.DOM.removeElement);    this.xlabels = new Array();    this.ylabels = new Array();};// ----------------------------------------------------------------//  Everything below here is experimental and undocumented.// ----------------------------------------------------------------PlotKit.CanvasRenderer.prototype._initialiseEvents = function() {    var connect = MochiKit.Signal.connect;    var bind = MochiKit.Base.bind;    //MochiKit.Signal.registerSignals(this, ['onmouseover', 'onclick', 'onmouseout', 'onmousemove']);    //connect(this.element, 'onmouseover', bind(this.onmouseover, this));    //connect(this.element, 'onmouseout', bind(this.onmouseout, this));    //connect(this.element, 'onmousemove', bind(this.onmousemove, this));    connect(this.element, 'onclick', bind(this.onclick, this));};PlotKit.CanvasRenderer.prototype._resolveObject = function(e) {    // does not work in firefox	//var x = (e.event().offsetX - this.area.x) / this.area.w;	//var y = (e.event().offsetY - this.area.y) / this.area.h;    var x = (e.mouse().page.x - PlotKit.Base.findPosX(this.element) - this.area.x) / this.area.w;    var y = (e.mouse().page.y - PlotKit.Base.findPosY(this.element) - this.area.y) / this.area.h;	    //log(x, y);    var isHit = this.layout.hitTest(x, y);    if (isHit)        return isHit;    return null;};PlotKit.CanvasRenderer.prototype._createEventObject = function(layoutObj, e) {    if (layoutObj == null) {        return null;    }    e.chart = layoutObj    return e;};PlotKit.CanvasRenderer.prototype.onclick = function(e) {    var layoutObject = this._resolveObject(e);    var eventObject = this._createEventObject(layoutObject, e);    if (eventObject != null)        MochiKit.Signal.signal(this, "onclick", eventObject);};PlotKit.CanvasRenderer.prototype.onmouseover = function(e) {    var layoutObject = this._resolveObject(e);    var eventObject = this._createEventObject(layoutObject, e);    if (eventObject != null)         signal(this, "onmouseover", eventObject);};PlotKit.CanvasRenderer.prototype.onmouseout = function(e) {    var layoutObject = this._resolveObject(e);    var eventObject = this._createEventObject(layoutObject, e);    if (eventObject == null)        signal(this, "onmouseout", e);    else         signal(this, "onmouseout", eventObject);};PlotKit.CanvasRenderer.prototype.onmousemove = function(e) {    var layoutObject = this._resolveObject(e);    var eventObject = this._createEventObject(layoutObject, e);    if ((layoutObject == null) && (this.event_isinside == null)) {        // TODO: should we emit an event anyway?        return;    }    if ((layoutObject != null) && (this.event_isinside == null))        signal(this, "onmouseover", eventObject);    if ((layoutObject == null) && (this.event_isinside != null))        signal(this, "onmouseout", eventObject);    if ((layoutObject != null) && (this.event_isinside != null))        signal(this, "onmousemove", eventObject);    this.event_isinside = layoutObject;    //log("move", x, y);    };PlotKit.CanvasRenderer.isSupported = function(canvasName) {    var canvas = null;    try {        if (MochiKit.Base.isUndefinedOrNull(canvasName))             canvas = MochiKit.DOM.CANVAS({});        else            canvas = MochiKit.DOM.getElement(canvasName);        var context = canvas.getContext("2d");    }    catch (e) {        var ie = navigator.appVersion.match(/MSIE (\d\.\d)/);        var opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);        if ((!ie) || (ie[1] < 6) || (opera))            return false;        return true;    }    return true;};// Namespace IniitialisationPlotKit.Canvas = {}PlotKit.Canvas.CanvasRenderer = PlotKit.CanvasRenderer;PlotKit.Canvas.EXPORT = [    "CanvasRenderer"];PlotKit.Canvas.EXPORT_OK = [    "CanvasRenderer"];PlotKit.Canvas.__new__ = function() {    var m = MochiKit.Base;        m.nameFunctions(this);        this.EXPORT_TAGS = {        ":common": this.EXPORT,        ":all": m.concat(this.EXPORT, this.EXPORT_OK)    };};PlotKit.Canvas.__new__();MochiKit.Base._exportSymbols(this, PlotKit.Canvas);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -