whyclj
2019-10-29 1c0469e45346d464e0c5672ee68f9ecd4fb6be7c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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);
}