/
websocket.js
65 lines (64 loc) · 2.75 KB
/
websocket.js
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
var maxNumRows = 200;
var alertsCount = 0;
var socket = io.connect('http://' + location.hostname, {'port': 8000});
socket.on('connect', function() {
socket.on('msg', function(data) {
for (var s in streams) {
if (streams[s].Terms.length > 0) {
var message = data['message'];
var pattern = '^';
var highlight = [];
var negative = [];
for (var t in streams[s].Terms) {
var term = streams[s].Terms[t];
if (term.substr(0,1) == '!') {
negative.push(term.slice(1));
} else {
pattern += '(?=.*' + term + ')';
highlight.push(term);
}
}
if (negative.length > 0) {
pattern += '((?!' + negative.join('|') + ').)*$';
} else {
pattern += '.*';
}
var regex = new RegExp(pattern, 'i');
if (regex.test(message)) {
regex = new RegExp('(' + highlight.join('|') + ')', 'gi');
message = message.replace(regex, "<span style=\"background-color: #fd8645;\">$1</span>");
if (s == 'alerts') {
$('#alertsnum').html(++alertsCount);
}
var num_rows = $('div#logs_container > div#' + s + '_logs > table > tbody:last > tr').size();
if (num_rows > maxNumRows) {
$('div#logs_container > div#' + s + '_logs > table > tbody:last > tr:last').remove();
}
$('div#logs_container > div#' + s + '_logs > table > tbody:last').prepend('<tr class="row"><td>'+
data['date'] + '</td><td>'+
data['host'] + '</td><td>'+
data['severity'] + '</td><td>'+
data['facility'] + '</td><td class="message"><div class="hideextra">'+
message + '</div></td></tr>');
$('div#logs_container > div#' + s +'_logs > table > tbody:last > tr.row:first').click(function() {
$(this).toggleClass('message_expanded');
$(this).children('td.message').children('div').toggleClass('hideextra');
});
}
}
}
var num_rows = $('div#logs_container > div#all_logs > table > tbody:last > tr').size();
if (num_rows > maxNumRows) {
$('div#logs_container > div#all_logs > table > tbody:last > tr:last').remove();
}
$('div#logs_container > div#all_logs > table > tbody:last').prepend('<tr class="row"><td>'+
data['date'] + '</td><td>'+
data['host'] + '</td><td>'+
data['severity'] + '</td><td>'+
data['facility'] + '</td><td class="message"><div class="hideextra">' + data['message'] + '</div></td></tr>');
$('div#logs_container > div#all_logs > table > tbody:last > tr.row:first').click(function() {
$(this).toggleClass('message_expanded');
$(this).children('td.message').children('div').toggleClass('hideextra');
});
});
});