2015-01-25 10:24:07 +00:00
|
|
|
function loadStatus(callback) {
|
2015-01-25 16:15:44 +00:00
|
|
|
var xhr = new XMLHttpRequest(),
|
|
|
|
loading = document.getElementById('loading');
|
|
|
|
|
|
|
|
loading.setAttribute('style', 'display: block;');
|
2015-01-25 10:24:07 +00:00
|
|
|
xhr.open('GET', '/status', true);
|
|
|
|
xhr.onreadystatechange = function() {
|
|
|
|
if (xhr.readyState === 4) {
|
|
|
|
if (xhr.status === 200) {
|
|
|
|
var queues = JSON.parse(xhr.responseText);
|
2015-01-25 16:15:44 +00:00
|
|
|
loading.setAttribute('style', 'display: none;');
|
2015-01-25 10:24:07 +00:00
|
|
|
callback(queues);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
xhr.send(null);
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateDashboard(queues) {
|
|
|
|
var queuesList = document.getElementById('queues'),
|
|
|
|
placeholder = document.getElementById('placeholder'),
|
2015-01-25 15:38:47 +00:00
|
|
|
fatThreshold = 100,
|
2015-01-25 10:24:07 +00:00
|
|
|
hotThreshold = 1000;
|
|
|
|
|
2015-01-26 13:40:55 +00:00
|
|
|
if (Object.keys(queues).length === 0) {
|
|
|
|
var td = placeholder.getElementsByTagName('td')[0];
|
|
|
|
td.innerHTML = 'Empty';
|
|
|
|
} else if (placeholder) {
|
2015-01-25 10:24:07 +00:00
|
|
|
queuesList.removeChild(placeholder);
|
|
|
|
}
|
|
|
|
|
|
|
|
for (queue in queues) {
|
|
|
|
var meta = queues[queue],
|
|
|
|
id = 'queue_' + queue,
|
|
|
|
tr = document.getElementById(id);
|
|
|
|
|
|
|
|
if (!tr) {
|
|
|
|
tr = document.createElement('tr');
|
|
|
|
tr.setAttribute('id', id);
|
2015-01-25 16:15:44 +00:00
|
|
|
|
|
|
|
var nameCol = document.createElement('td');
|
|
|
|
nameCol.appendChild(document.createTextNode(queue));
|
|
|
|
tr.appendChild(nameCol);
|
|
|
|
tr.appendChild(document.createElement('td'));
|
|
|
|
tr.appendChild(document.createElement('td'));
|
|
|
|
|
2015-01-25 10:24:07 +00:00
|
|
|
queuesList.appendChild(tr);
|
|
|
|
}
|
|
|
|
|
2015-01-25 16:15:44 +00:00
|
|
|
var cols = tr.getElementsByTagName('td'),
|
2015-01-25 15:38:47 +00:00
|
|
|
nameCol = cols[0],
|
|
|
|
messagesCol = cols[1],
|
|
|
|
subscriptionsCol = cols[2];
|
|
|
|
|
2015-01-26 13:41:17 +00:00
|
|
|
messagesCol.innerHTML = Number(meta.messages).toLocaleString();
|
|
|
|
subscriptionsCol.innerHTML = Number(meta.subscriptions).toLocaleString();
|
2015-01-25 15:38:47 +00:00
|
|
|
|
2015-01-25 16:15:44 +00:00
|
|
|
if (meta.messages > hotThreshold) {
|
2015-01-25 15:38:47 +00:00
|
|
|
nameCol.setAttribute('class', 'name hot');
|
|
|
|
messagesCol.setAttribute('class', 'messages hot');
|
2015-01-25 16:15:44 +00:00
|
|
|
} else if (meta.messages > fatThreshold) {
|
2015-01-25 15:38:47 +00:00
|
|
|
nameCol.setAttribute('class', 'name fat');
|
|
|
|
messagesCol.setAttribute('class', 'messages fat');
|
2015-01-25 16:15:44 +00:00
|
|
|
} else if (meta.messages === 0) {
|
2015-01-25 15:38:47 +00:00
|
|
|
messagesCol.setAttribute('class', 'messages zero');
|
2015-01-25 10:24:07 +00:00
|
|
|
} else {
|
2015-01-25 16:15:44 +00:00
|
|
|
nameCol.setAttribute('class', 'name');
|
2015-01-25 15:38:47 +00:00
|
|
|
messagesCol.setAttribute('class', 'messages');
|
2015-01-25 10:24:07 +00:00
|
|
|
}
|
|
|
|
|
2015-01-25 16:15:44 +00:00
|
|
|
if (meta.subscriptions === 0) {
|
2015-01-25 15:38:47 +00:00
|
|
|
subscriptionsCol.setAttribute('class', 'subscriptions zero');
|
2015-01-25 10:24:07 +00:00
|
|
|
} else {
|
2015-01-25 15:38:47 +00:00
|
|
|
subscriptionsCol.setAttribute('class', 'subscriptions');
|
2015-01-25 10:24:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-25 15:16:49 +00:00
|
|
|
function loop(timeout, func) {
|
2015-01-25 15:38:47 +00:00
|
|
|
func();
|
2015-01-25 15:16:49 +00:00
|
|
|
window.setTimeout(function(){
|
|
|
|
loop(timeout, func);
|
|
|
|
}, timeout);
|
|
|
|
}
|
|
|
|
|
|
|
|
loop(1000, function(){
|
2015-01-25 10:24:07 +00:00
|
|
|
loadStatus(updateDashboard);
|
2015-01-25 15:16:49 +00:00
|
|
|
});
|