// 定义Dom7 var $$ = Dom7; // 跨域请求配置 //const CORS= 'http://localhost:8080/sensor/'; // 开启跨域请求(调试时开启) const CORS=''; // 关闭跨域请求(发布时开启) var monthNames = monthNamesShort = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月' , '9月' , '10月', '11月', '12月']; var dayNames = dayNamesShort = ['日', '一', '二', '三', '四', '五', '六']; //定义计时器 function Interval() { this.timer = null; this.time = ''; this.callback = ''; } // 开启计时器并添加 Interval.prototype.start = function(callback, time) { // 先关闭计时器 this.stop(); // 配置执行函数 if(typeof callback == 'function' && typeof time == 'number') { this.callback = callback; this.time = time; callback(); this.timer = setInterval(callback, time); }else { console.warn('未完整配置参数!'); } }; // 开启计时器 Interval.prototype.open = function() { var callback = this.callback; var time = this.time; this.start(callback, time); }; // 关闭计时器 Interval.prototype.stop = function() { clearInterval(this.timer); }; // 延时计时器 function Timeout() { this.timer = null; this.time = ''; this.callback = ''; } // 开启计时器并添加 Timeout.prototype.start = function(callback, time, exe) { // 先关闭计时器 this.stop(); // 配置执行函数 if(typeof callback == 'function' && typeof time == 'number') { this.callback = callback; this.time = time; if(exe != 'exe') { callback(); } this.timer = setTimeout(callback, time); }else { console.warn('未完整配置参数!'); } }; // 开启计时器 Timeout.prototype.open = function() { var callback = this.callback; var time = this.time; this.start(callback, time, 'exe'); }; // 关闭计时器 Timeout.prototype.stop = function() { clearTimeout(this.timer); }; /*从多维数组中获取最大值*/ function getMaxFromArr(arr) { var newArray = arr.join(",").split(","); return Math.max.apply({},newArray); } /*从多维数组中获取最小值*/ function getMinFromArr (arr) { var newArray = arr.join(",").split(","); return Math.min.apply({},newArray); } function ajax(option) { $.ajax({ type: 'post', async: true, url: CORS+option.url, data: option.data, dataType: 'json', success: option.success, error: option.error, complete: option.complete }); } // 格式化时间 Date.prototype.format =function(format) { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond }; if(/(y+)/.test(format)) format=format.replace(RegExp.$1, (this.getFullYear()+"").substr(4- RegExp.$1.length)); for(var k in o)if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length==1? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); return format; }; // 根据对象获取url function getUrlStr(props) { var str = ""; Object.keys(props).forEach(function(key) { str+=props[key]+"/"; }); return str; } // 根据数据生成列表 function createList(container, data) { container.text(""); for(var i=0; i'); var a = $$(''); a.text(_data.text); a.data('data', _data); li.append(a); container.append(li); } } // 地图图标 const mapImgSrc = function() { var imagesBase64 = { normal: 'data:image/gif;base64,R0lGODlhHgAeAMQVAGud9K/K+Y6091SO82CV9N3o/dLh/MbZ+3ek9Zm7+Ojw/aTD+aTC+IKs9rvS+o2z97rR+tHh/PT3/v///0mG8v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABUALAAAAAAeAB4AAAXnYCWOZFUwDaIyh1S+cAURVG3Xg6DEcAHcQNsAwiMVBsFkTVA0IZXKBE9Cg0IPsYTVOnCVFMHBDzio3gKvQPBwCAKoQMILAXwoAg/gIWAI7khBBgESCQQEdA8GDnA3RIBAEwEOEw0TkYoKBw1ADCQRQRMLBgULlqSlCwucJBKgkpQSlwEFBps3nY83BwuEZgmCE2Y1aCRjNggSeDcEB4pBBSVaQA5tQA1HZC8FSU9kQUxzW1Z/X+JKuDAQ5kAATdLrb00VAvBe8vRb8fIj+Er6+/z82QMYkN1AggVr/ENYAt9Chg0fxggBADs=', smoke: 'data:image/gif;base64,R0lGODlhHgAeAMQUAPzn5+tYVfKUkvGIhuxkYfnPz+xkYvvb2/a3tvWrqvjDwu98evvb2vnPzu5wbvSgnulMSf7z8+hAPf///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABQALAAAAAAeAB4AAAX/ICWOpDIYUioZg0K+8IgEaq0GSBxHThoIhchkEikIaBJHRDdioCCJoXQ6SUAkAQYzgiIAqOAJgIBdxnoEYRgcITtiCAnkuw4DrrkXLVpfJ7AvClhTBw+Gh4gHUzQuIwISAoQDDoiGAQOKUo8CJCgFVEYOk6IOBJ9TBUkkKWpSBQNgDqdSESmrEmAHc4S7VLYjKWEIEA7FDhAIYb8irGEJBKKmYbUSJD2zUw5xf3Sgqo6QwhACBAuwYJskDXJ2EgUBCQthVw16Eg9sBwD7rVIPgIHkZOrDS0KjFwskpCFIi8wCHVwUDqxzgIwBMzuePOg3JcKDKxeZjBiQYpwCOgAUMAi4ImGAyBd/bMhM8BLGMJkl89R8wYBlDQhadsYAgEKFAQBCtySUsABjUh0DXO4MAQA7', airhum: 'data:image/gif;base64,R0lGODlhHgAeANU/AOgrRPaqtOyKpOk5UOtHXfzj5uNOaO9ygvrU2dkTNuNPdvnHzf3x8+xWaetIXfbE0fe4wPjT2d4xT/rV2udsjfe4we5kdvGAj/OOm+A/XNkUSP3w9PO2xuVddfKOm/nGze6Yr/Scp/jT3e6Yp/ScqPbEzf3w8scSPPri6MshSPGntOJdf/jT3NdObuOJnvjh591AaNsjU+BAaudsgeqmttM/Yep6jvGnuvO1wOB6kdZNbuFPdep7mOYdN////////yH5BAEAAD8ALAAAAAAeAB4AAAb/wJ9wSESELI0BoGEJIYjQ6DDg6FmvWEdAKi00rATSxEf2TUgEa6PAHUIAPcKiTC8v0oBPO2C91P9lF1YQUghwAYCJPnwAT1BVB2URHQYlimQHPQ5QHj0DdB0jOBKXPgwDPVtDh3QGZAmli55unnWuPrCxqIQ/mX6tDw+5pYIHQqgVtgICw5cVmkJWc63LzT4KFH8LVtE9fwbVdAIgFBx1DNw/VgXKzGUPCj4bMht0BenSdRnVJmQKKGQeZLOTDhWiMjY6LJvhCgWFF2XileEzQEimSGUSsIihQYSECA9WpMjhgoZETD2M/YDQAwCDMhJEaNDwIEOJDQpSnDhR4yS6hB68fqDCUMbAiAccVJDywQOGjhY7bpTBMGtKS3Y+TBjIkOFjGRAKFJgjU+AQlC8EXpKJEKEUgzQNopSNozbW26uF4BAYU2oCHkd5rRzA+qdAppaAuSCoAgZDhQULKmBIY8VB4jY/OmHZbMUD5i4WOFuxwOYzlw9frjTQY/pzgAEDVH0OAgA7', airtmp: 'data:image/gif;base64,R0lGODlhHgAeANUkAOlMSetYVfKUkucnQO1dcOxkYvnJz/zn5/jDwuxkYfWrqvi8w+5wbvB4iOk1TPa3tvGIhvvX2+xQZPnPz/vb2vvb2+98ev7y8/KGlPSgnvWhq/aut+9rfPzk5/nPzupCWPOToP7z8+hAPf///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAeAB4AAAb/QJJwSERACqKkqABBEJ/Q4SOgrCoDj2g0xEgGBJPQaBSaCKgiRkg7pCABirF8PlIARAEKO4RMHOiAIwcJeGtRXQlidAYdcxEGIYQMUQ8iAH90BBIOBhISGw0YBgd3WU9UcXILIAYOIK4fEhgLERF1eE8IeIsgEQQgA70RFw0cF2NUTkMCIgJ0GgQLv8GBI8wCREgTdA0DG9Mg1RNpREmKqqzg1SFJ5SKABiAd6tXtQ0mAq9LAGNUj9kLMBQLRoJiDY4AOACTRZRsgAhoGDCBgIJCuScuaDSTgYICDateIeLAUiNgACQsChbjj4ZSIVP4CZcCVy1KFmIAq3FH2xIKIVkQ45UQSYUELn583cVYgVMDQljcZztEJkeFOUzZDICQBIAABpgMIBNwRAQHrEwVW0r40C+XB2LQATLF9QuGtEgB65kY5gERJgQN69/gk6jSwFghl5wYBADs=' }; // 普通 var normal = new Image(); normal.src = imagesBase64.normal; // 烟感告警 var smoke = new Image(); smoke.src = imagesBase64.smoke; // 湿度告警图标 var airhum = new Image(); airhum.src = imagesBase64.airhum; // 温度告警图标 var airtmp = new Image(); airtmp.src = imagesBase64.airtmp; return { normal: normal, smoke: smoke, airhum: airhum, airtmp: airtmp } }(); // 自定义面板 function MyModal(id) { this.id = id; this.elem = $(id); this._init(); } MyModal.prototype._init = function() { var showElems = $('.show-my-modal'); var self = this; var id = this.id; // 设置显示按钮 showElems.each(function() { var href = $(this).data('href'); if(href && href==id) { $(this).click(function() { self.show(); }); } }); var toggleElems = $('.toggle-my-modal'); // toggle显示按钮 toggleElems.each(function() { var href = $(this).data('href'); if(href && href==id) { $(this).click(function() { self.toggle(); }); } }); // 设置关闭按钮 var closeElems = this.elem.find('.my-modal-close'); closeElems.click(function() { self.hide(); }); }; MyModal.prototype.show = function() { if(!this.elem.hasClass('my-modal-show')) { this.elem.addClass('my-modal-show'); setTimeout(function() { // 设置内容的高度 var container = this.elem.find('.my-modal-container'); var header = this.elem.find('.my-modal-header'); var content = this.elem.find('.my-modal-content'); var footer = this.elem.find('.my-modal-footer'); content.height(container.height()-header.height()-footer.height()); }.bind(this), 400); } }; MyModal.prototype.hide = function() { this.elem.removeClass('my-modal-show'); var modalContent = this.elem.find('.my-modal-content'); }; MyModal.prototype.toggle = function() { if(this.elem.hasClass('my-modal-show')) { this.hide(); }else { this.show(); } } // 折线图 function LineGraph(id, option) { this.$el = $("#"+id); this.chart=""; this.plus= {}; this.initOpt = option; this.option = ''; this._init(); } // 初始化图表 LineGraph.prototype._init = function() { var graph = this.$el.find('.graph').get(0); this.chart = echarts.init(graph); }; // 自适应大小 LineGraph.prototype.resize = function() { this.setOption(this.option); }; // 设置配置项 LineGraph.prototype.setOption = function(option) { var initOpt = this.initOpt; //console.log(initOpt); var initDefault = { title: '', subtext: '', name: '', min: 0, max: 1, unit: '' }; var rsInitOpt = $.extend({}, initDefault, initOpt); // console.log(rsInitOpt); var defaults = { title: { text: rsInitOpt.title, subtext: rsInitOpt.subtext, x: 'center', }, tooltip: { trigger: 'axis' }, xAxis: { type: 'category', boundaryGap : false, data:[] }, yAxis: { name: 'y'+initOpt.unit, type: 'value', min: rsInitOpt.min, max: rsInitOpt.max }, grid: { left: '3%', right: '2%', bottom: '3%', containLabel: true }, visualMap: false, series: { name: rsInitOpt.name, data: [], type: 'line', smooth: true, markLine: false } }; var data = $.extend(true, {}, defaults, option, this.plus); var min = getMinFromArr(data.series.data); var max = getMaxFromArr(data.series.data); data.yAxis.min = rsInitOpt.minmax?rsInitOpt.max:max; // 生成echarts this.option = data; this.chart.resize(); this.chart.setOption(data); }; //页面中的分页信息 function MyPages(pre, next,pages) { this.pre = pre; this.next = next; this.data = []; var defaults = { total: 0, pageSize: 10, pageCurrent: 1, pageTotal: 0 }; this.pages = $.extend({}, defaults, pages); this._changeBtn(); } //修改按钮的状态 MyPages.prototype._changeBtn = function() { var pages = this.pages; // 更改向前翻页按钮的状态 if(pages.pageCurrent == 1) { this.pre.addClass('my-pages-tmp-hide'); }else { this.pre.removeClass('my-pages-tmp-hide'); } // 更改向后翻页按钮的状态 if(pages.pageCurrent >= pages.pageTotal) { this.next.addClass('my-pages-tmp-hide'); }else { this.next.removeClass('my-pages-tmp-hide'); } }; //设置数据 MyPages.prototype.setData = function(data,pre,next) { this.data = data; this._setTotal(data.length); this.pages.pageCurrent = 1; // 初始化页数为第一页 var data = this._getData(); pre(data); this._changeBtn(); // 更改按钮的状态 this._addEvents(pre, next); }; //设置数据总数 MyPages.prototype._setTotal = function(total) { this.pages.total = total; this.pages.pageTotal = Math.ceil(total/this.pages.pageSize); }; //根据分页的信息返回data的值 MyPages.prototype._getData = function() { var data = this.data; var pages = this.pages; var currentIndex = (pages.pageCurrent-1)*pages.pageSize; var leng = currentIndex+pages.pageSize; var result = []; for(var i=currentIndex; i=data.length) { break; } result.push(data[i]); } return result; }; //给按钮添加绑定事件 MyPages.prototype._addEvents = function(pre, next) { var _self = this; // 向前翻页 this.pre.off('click.pages').on('click.pages', function() { _self.pages.pageCurrent--; _self._changeBtn(); var data = _self._getData(); pre(data); }); // 向前翻页 this.next.off('click.pages').on('click.pages', function() { _self.pages.pageCurrent++; _self._changeBtn(); var data = _self._getData(); next(data); }); }