// 电池组图片 var eleGroupImg = new Image(); eleGroupImg.src="image/eleCircle/elegroup.png"; //用电负载 var loadImg = new Image(); loadImg.src = "image/eleCircle/load.png"; //整流器图标 var screenImg = new Image(); screenImg.src = "image/eleCircle/screen.png"; ;(function($, window, document, gl) { // 设置命名空间 gl.namespace('statusImg'); // orange var orangeImg = new Image(); orangeImg.src = "image/eleCircle/orange.png"; // red var redImg = new Image(); redImg.src = 'image/eleCircle/red.png'; // blue var greenImg = new Image(); greenImg.src = 'image/eleCircle/green.png'; // gray var gayImg = new Image(); gayImg.src = 'image/eleCircle/gray.png'; // 根据设备放电模块获取图标 function getdisChargeImg(status) { var i = parseInt(status); var rs = gayImg; switch(i) { case 1: // 核容测试 case 5: // kd rs = orangeImg; break; case 2: // 预充电 rs = greenImg; break; } return rs; } // 根据设备充电状态获取图标 function getChargeImg(status) { var i = parseInt(status); var rs = gayImg; switch(i) { case 1: // 核容测试 case 5: // kd rs = greenImg; break; case 2: rs = orangeImg; break; } return rs; } // 根据设备工作状态图标 function getImg(status) { var i = parseInt(status); var rs = gayImg; switch(i) { case 0: case 4: rs = greenImg break; case 1: case 2: case 5: rs = orangeImg; break; case 3: rs = redImg; break; } return rs; } // 将函数绑定到GLOBAL.statusImg命名空间下 gl.statusImg.getdisChargeImg = getdisChargeImg; gl.statusImg.getChargeImg = getChargeImg; gl.statusImg.getImg = getImg; })(jQuery, window, document, GLOBAL); var nStatusImg = GLOBAL.statusImg; var EleCircle = function(canvas, options) { this.canvas = document.getElementById(canvas); this.context = this.canvas.getContext('2d'); this.opts = []; this.timer = ''; this.start(); this.groupVol = '0V'; this.eleCurrent = '0A'; }; // 绘制电路图的线 EleCircle.prototype.drawLine = function(options) { var defaults = { startX: 0, startY: 0, endX:0, endY: 0, lineWidth: 4, strokeStyle: '#000', fillStyle: '#000', id:'' }; var opts = $.extend({}, defaults, options || {}); this.context.strokeStyle = opts.strokeStyle; this.context.fillStyle = opts.fillStyle; this.context.lineWidth = opts.lineWidth; this.context.beginPath(); this.context.moveTo(opts.startX, opts.startY); this.context.lineTo(opts.endX, opts.endY); this.context.closePath(); this.context.stroke(); var lineInfo = { options: opts, type:'drawLine', }; this.opts.push(lineInfo); }; // 绘制BAT端 EleCircle.prototype.drawBAT = function(options) { var defaults = { startX: 0, startY: 0, endX:0, endY: 0, width: 16, lineWidth: 4, strokeStyle: '#000', fillStyle: '#000', nPosition: 'up', name: '', id:'' }; var opts = $.extend({}, defaults, options || {}); this.context.fillStyle = opts.fillStyle; this.context.strokeStyle = opts.strokeStyle; this.context.lineWidth = opts.lineWidth; this.context.fillRect(opts.startX, opts.startY-opts.width/2, opts.width, opts.width); this.context.strokeRect(opts.startX, opts.startY-opts.width/2, opts.width, opts.width); this.context.fillStyle = '#000'; this.context.font="12px Arial"; if(opts.nPosition == 'up') { this.context.fillText(opts.name, opts.startX+opts.width+5,opts.startY-opts.width/2); }else { this.context.fillText(opts.name, opts.startX+opts.width+5,opts.startY+opts.width); } var BATInfor = { options: opts, type:'drawBAT', }; this.opts.push(BATInfor); }; // 绘制DCDC模块 EleCircle.prototype.drawDCDC = function(options) { var defaults = { startX: 0, startY: 0, endX:0, endY: 0, width: 100, lineWidth: 1, strokeStyle: '#000', fillStyle: '#000', statusImg: -1, name: '', id:'' }; var opts = $.extend({}, defaults, options || {}); this.context.strokeStyle = opts.strokeStyle; this.context.lineWidth = opts.lineWidth; this.context.strokeRect(opts.startX - opts.width/2, opts.startY, opts.width, opts.width); var lineHeight = 16; var textList = opts.name.split('&'); this.context.font = 14 this.context.fillStyle= opts.fillStyle; for(var i=0; i 0) { this.context.beginPath(); this.context.fillStyle = '#FFFFFF'; this.context.rect(opts.startX-20,opts.startY+16*2+156, 30,32); this.context.fill(); } var textList = opts.name.split('&'); this.context.fillStyle = opts.strokeStyle; var lineHeight = 16; for(var i=0; i= 2) { this.context.moveTo(opts.points[0][0], opts.points[0][1]); for(var i=1; i endP[0]) { // 不是最后一组点 if(opts.index != (opts.moveLine.length-1)) { opts.index += 1; }else { opts.index = 0; } opts.startX = opts.moveLine[opts.index].startP[0]; opts.startY = opts.moveLine[opts.index].startP[1]; } }else { opts.startX -= opts.step; // 超出就换下一组并切换开始点 if(opts.startX < endP[0]) { // 不是最后一组点 if(opts.index != (opts.moveLine.length-1)) { opts.index += 1; }else { opts.index = 0; } opts.startX = opts.moveLine[opts.index].startP[0]; opts.startY = opts.moveLine[opts.index].startP[1]; } } }else { // 开始点在上方 if(startP[1] endP[1]) { // 不是最后一组点 if(opts.index != (opts.moveLine.length-1)) { opts.index += 1; }else { opts.index = 0; } opts.startX = opts.moveLine[opts.index].startP[0]; opts.startY = opts.moveLine[opts.index].startP[1]; } }else { opts.startY -= opts.step; // 超出就换下一组并切换开始点 if(opts.startY < endP[1]) { // 不是最后一组点 if(opts.index != (opts.moveLine.length-1)) { opts.index += 1; }else { opts.index = 0; } opts.startX = opts.moveLine[opts.index].startP[0]; opts.startY = opts.moveLine[opts.index].startP[1]; } } } // 存储内容 var _tmp = { type: 'drawRect', options: opts }; this.opts.push(_tmp); }; //绘制多点 EleCircle.prototype.drawRectList = function(lists) { // 移除旧的通过lists添加的点 this._delRectList(); // 遍历lists重新绘制亮点 for(var i=0; iopts.name.length)?opts.name.length:opts.txtLength; // 分割name字符串 var reg= new RegExp(".{"+tLength+"}", 'g'); var rs=opts.name.match(reg); if(opts.name.substring(rs.join('').length).length>0) { rs.push(opts.name.substring(rs.join('').length)); } var txtWidth = opts.fontSize*tLength; var txtHeight = opts.lineHeight*rs.length; // 文本开始描绘的位置 var txtX = opts.startX; var txtY = opts.startY; switch(opts.pos) { case 'left': textX = opts.startX - txtWidth; textY = opts.startY - txtHeight/2; break; case 'up': textX = opts.startX - txtWidth/2; textY = opts.startY - txtHeight-5; break; case 'down': textX = opts.startX - txtWidth/2; textY = opts.startY - txtHeight+5; break; default: textX = opts.startX +5; textY = opts.startY - txtHeight/2; break; } if(opts.isBg) { // 绘制背景色 context.beginPath(); context.fillStyle = '#FFFFFF'; var strWidth = getStringWidth(rs[0]); context.rect(textX,textY-12,strWidth,12); context.fill(); } context.lineWidth = opts.lineWidth; context.font = opts.fontSize+'px Arial'; context.font += " "+opts.fontWeight; context.fillStyle= opts.fillStyle; for(var i=0; i end[1])?start[1]:end[1]; min = (start[1] < end[1])?start[1]:end[1]; rs = (point[1]<=max && point[1]>=min)? true: false; }else { max = (start[0] > end[0])?start[0]:end[0]; min = (start[0] < end[0])?start[0]:end[0]; rs = (point[0]<=max && point[0]>=min)? true: false; } return rs; } // 通过对象id获取对象然后修改对应的属性值的属性值对对象进行修改 function changeEleCircleOpt(eleCircle, id, options) { // 遍历eleCircle对象的集合根据id的值修改内容 for(var i=0; i