// 定义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<data.length;i++) {
|
var _data = data[i];
|
var li = $$('<li></li>');
|
var a = $$('<a href="#" class="home-item"></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.min<min?rsInitOpt.min:min;
|
data.yAxis.max = rsInitOpt.max>max?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<leng; i++) {
|
if(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);
|
});
|
}
|