var ScrollBar = function(opts) {
|
this.defaults = {
|
'step': 0,
|
'speed': 4, // 滚动的速度
|
'initData': [],
|
'oldData':[],
|
'newData': [],
|
'lng': 10, // 数据存储长度
|
'times': 1000*60*30, // 最新告警时间段
|
};
|
this.timer = null;
|
|
this.opts = $.extend({}, this.defaults, opts);
|
this.checkWidth();
|
this.createScrollBar();
|
}
|
|
ScrollBar.prototype.startTimer = function () {
|
var that = this;
|
clearInterval(this.timer);
|
this.timer = setInterval(function() {
|
that.changeScrollBar();
|
}, 100);
|
};
|
|
ScrollBar.prototype.stopTimer = function() {
|
clearInterval(this.timer);
|
};
|
|
ScrollBar.prototype.changeScrollBar = function() {
|
//console.info(this);
|
var tab = $('.scroll-bar .scroll-content');
|
var tab1 = $('.scroll-bar .scroll-content .list-one');
|
var firstWidth = tab1.find('a').eq(0).width() - this.opts.speed + 26;
|
if(tab.scrollLeft() >= firstWidth) {
|
tab.scrollLeft(0);
|
this.opts.step = 0;
|
this.createScrollBar();
|
}else {
|
this.opts.step += this.opts.speed;
|
tab.scrollLeft(this.opts.step);
|
}
|
};
|
// 生成滚动块内容
|
ScrollBar.prototype.createScrollBar = function () {
|
var tab = $('.scroll-bar .scroll-content')
|
var tab1 = $('.scroll-bar .scroll-content .list-one');
|
var aList = tab1.find('a');
|
var aRemove = tab1.find('a').eq(0).next();
|
tab1.find('a').eq(0).remove();
|
var shiftWidth = tab1.width() - tab.width()-20;
|
if(aRemove.width() < shiftWidth) { // 容器内部内容达到规定值就不会添加数据
|
return;
|
}
|
var $a = "";
|
if(this.opts.newData.length> 0) {
|
var newHData = this.opts.newData.splice(0, 1);
|
$a = this.checkTime(newHData[0]); // 监测时间返回指定的字符串
|
if(this.opts.oldData.length<this.opts.lng) {
|
this.opts.oldData.push(newHData[0]);
|
}else {
|
this.opts.oldData.pop();
|
this.opts.oldData.push(newHData[0]);
|
}
|
|
}else {
|
if(this.opts.oldData != 0 && !aRemove.hasClass('no-content-scroll')) {
|
var oldHdata = this.opts.oldData.shift();
|
var dataJson = JSON.stringify(oldHdata);
|
this.opts.oldData.push(oldHdata);
|
$a = this.checkTime(oldHdata); // 监测时间返回指定的字符串
|
}
|
|
}
|
|
if($a != "") {
|
tab1.append($a);
|
}
|
|
this.checkWidth();
|
};
|
|
// 检测容器内的长度是否足够的长,短就用空白块补齐
|
ScrollBar.prototype.checkWidth = function() {
|
var tab = $('.scroll-bar .scroll-content')
|
var tab1 = $('.scroll-bar .scroll-content .list-one');
|
var aList = tab1.find('a');
|
var realWidth = tab.width() + aList.eq(0).width()+20;
|
if(realWidth > tab1.width()) {
|
var $a = $('<a href="javascript:;" class="no-content-scroll"></a>');
|
tab1.append($a);
|
this.checkWidth();
|
}
|
};
|
|
// 根据规定的时间返回特定的字符串
|
ScrollBar.prototype.checkTime = function(warnData) {
|
var rs = "";
|
var _nowDate = new Date();
|
_nowDate = _nowDate.getTime();
|
var warnDate = new Date(warnData.alm_start_time);
|
|
var shiftTime = _nowDate - warnDate;
|
|
if(shiftTime < this.opts.times) { // 小于设置的时间段就是最新的告警
|
if(warnData.num == 0) {
|
rs = $('<a href="javascript:;" class="new ele-warn">'+warnData.note+'</a>');
|
addAttrToEleWarn(rs, warnData);
|
}else {
|
rs = $('<a href="javascript:;" class="new equip-warn">'+warnData.note+'</a>');
|
addAttrToEquipWarn(rs, warnData);
|
}
|
}else {
|
if(warnData.num == 0) {
|
rs = $('<a href="javascript:;" class="ele-warn">'+warnData.note+'</a>');
|
addAttrToEleWarn(rs, warnData);
|
}else {
|
rs = $('<a href="javascript:;" class="equip-warn">'+warnData.note+'</a>');
|
addAttrToEquipWarn(rs, warnData);
|
}
|
}
|
|
return rs;
|
}
|
|
|
|
// 给电池告警添加属性
|
function addAttrToEleWarn(eleWarn, data) {
|
eleWarn.attr('data-batt-group-id', data.BattGroupId); // 电池组ID
|
eleWarn.attr('data-alm-id', data.alm_id); // 告警ID
|
eleWarn.attr('data-alm-start-time', data.alm_start_time); // 告警时间
|
eleWarn.attr('data-mon-num', data.MonNum); // 单体编号
|
}
|
|
// 给设备告警添加属性
|
function addAttrToEquipWarn(equipWarn, data) {
|
equipWarn.attr('data-alm-id', data.alm_id);
|
equipWarn.attr('data-alm-signal-id', data.alm_signal_id);
|
equipWarn.attr('data-alm-start-time', data.alm_start_time);
|
}
|