1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-29 07:27:06 +00:00

More bootstrap work, status page now updates

This commit is contained in:
James Hillyerd
2015-08-18 22:58:29 -07:00
parent da28a8ee55
commit 5623ac1e8e
7 changed files with 157 additions and 165 deletions

View File

@@ -2,32 +2,33 @@
{{define "script"}}
<script src="/public/jquery.sparkline.min.js" type="text/javascript" charset="utf-8"></script>
<script src="/public/jquery.color-2.1.2.min.js" type="text/javascript" charset="utf-8"></script>
<script>
jQuery.ajaxSetup({ cache: false })
flashOn = jQuery.Color("rgba(255,255,0,1)")
flashOff = jQuery.Color("rgba(255,255,0,0)")
dataHist = new Object()
jQuery.ajaxSetup({ cache: false });
flashOn = jQuery.Color("rgba(255,255,0,1)");
flashOff = jQuery.Color("rgba(255,255,0,0)");
dataHist = new Object();
function timeFilter(seconds) {
if (seconds < 60) {
return seconds + " seconds"
} else if (seconds < 3600) {
return (seconds/60).toFixed(0) + " minute(s)"
} else if (seconds < 86400) {
return (seconds/3600).toFixed(1) + " hour(s)"
return seconds + " seconds";
} else if (seconds < 3600) {
return (seconds/60).toFixed(0) + " minute(s)";
} else if (seconds < 86400) {
return (seconds/3600).toFixed(1) + " hour(s)";
}
return (seconds/86400).toFixed(0) + " day(s)"
return (seconds/86400).toFixed(0) + " day(s)";
}
function sizeFilter(bytes) {
if (bytes < 1024) {
return bytes + " bytes"
} else if (bytes < 1048576) {
return (bytes/1024).toFixed(0) + " KB"
} else if (bytes < 1073741824) {
return (bytes/1048576).toFixed(2) + " MB"
return bytes + " bytes";
} else if (bytes < 1048576) {
return (bytes/1024).toFixed(0) + " KB";
} else if (bytes < 1073741824) {
return (bytes/1048576).toFixed(2) + " MB";
}
return (bytes/1073741824).toFixed(2) + " GB"
return (bytes/1073741824).toFixed(2) + " GB";
}
function numberFilter(x) {
@@ -37,101 +38,102 @@
}
function appendHistory(name, value) {
var h = dataHist[name]
var h = dataHist[name];
if (! h) {
h = new Array(0)
h = new Array(0);
}
// Prevent array from growing
if (h.length >= 60) {
h = h.slice(1,60)
h = h.slice(1,60);
}
h.push(parseInt(value))
dataHist[name] = h
el = $('#s-' + name)
h.push(parseInt(value));
dataHist[name] = h;
el = $('#s-' + name);
if (el) {
el.sparkline(dataHist[name])
el.sparkline(dataHist[name]);
}
}
// Show spikes for numbers that only increase
function setHistoryOfActivity(name, value) {
var h = value.split(",")
var prev = parseInt(h[0])
var h = value.split(",");
var prev = parseInt(h[0]);
for (i=0; i<h.length; i++) {
var t = parseInt(h[i])
h[i] = t-prev
prev = t
var t = parseInt(h[i]);
h[i] = t-prev;
prev = t;
}
// First value will always be zero
if (h.length > 0) {
h = h.slice(1)
h = h.slice(1);
}
el = $('#s-' + name)
el = $('#s-' + name);
if (el) {
el.sparkline(h)
el.sparkline(h);
}
}
// Show up/down for numbers that can decrease
function setHistoryOfCount(name, value) {
var h = value.split(",")
el = $('#s-' + name)
var h = value.split(",");
el = $('#s-' + name);
if (el) {
el.sparkline(h)
el.sparkline(h);
}
}
function metric(name, value, filter, chartable) {
if (chartable) {
appendHistory(name, value)
appendHistory(name, value);
}
if (filter) {
value = filter(value)
value = filter(value);
}
var el = $('#m-' + name)
if (el.text() != value) {
el.text(value)
el.css('background-color', flashOn)
el.animate({ backgroundColor: flashOff }, 1500)
el.text(value);
el.css('background-color', flashOn);
el.animate({ backgroundColor: flashOff }, 1500);
}
}
function displayMetrics(data, textStatus, jqXHR) {
// Non graphing
metric('uptime', data.uptime, timeFilter, false)
metric('retentionScanCompleted', data.retention.SecondsSinceScanCompleted, timeFilter, false)
metric('retentionPeriod', data.retention.Period, timeFilter, false)
metric('uptime', data.uptime, timeFilter, false);
metric('retentionScanCompleted', data.retention.SecondsSinceScanCompleted, timeFilter, false);
metric('retentionPeriod', data.retention.Period, timeFilter, false);
// JavaScript history
metric('memstatsSys', data.memstats.Sys, sizeFilter, true)
metric('memstatsHeapAlloc', data.memstats.HeapAlloc, sizeFilter, true)
metric('memstatsHeapSys', data.memstats.HeapSys, sizeFilter, true)
metric('memstatsHeapObjects', data.memstats.HeapObjects, numberFilter, true)
metric('smtpConnectsCurrent', data.smtp.ConnectsCurrent, numberFilter, true)
metric('memstatsSys', data.memstats.Sys, sizeFilter, true);
metric('memstatsHeapAlloc', data.memstats.HeapAlloc, sizeFilter, true);
metric('memstatsHeapSys', data.memstats.HeapSys, sizeFilter, true);
metric('memstatsHeapObjects', data.memstats.HeapObjects, numberFilter, true);
metric('smtpConnectsCurrent', data.smtp.ConnectsCurrent, numberFilter, true);
// Server-side history
metric('smtpReceivedTotal', data.smtp.ReceivedTotal, numberFilter, false)
setHistoryOfActivity('smtpReceivedTotal', data.smtp.ReceivedHist)
metric('smtpConnectsTotal', data.smtp.ConnectsTotal, numberFilter, false)
setHistoryOfActivity('smtpConnectsTotal', data.smtp.ConnectsHist)
metric('smtpWarnsTotal', data.smtp.WarnsTotal, numberFilter, false)
setHistoryOfActivity('smtpWarnsTotal', data.smtp.WarnsHist)
metric('smtpErrorsTotal', data.smtp.ErrorsTotal, numberFilter, false)
setHistoryOfActivity('smtpErrorsTotal', data.smtp.ErrorsHist)
metric('retentionDeletesTotal', data.retention.DeletesTotal, numberFilter, false)
setHistoryOfActivity('retentionDeletesTotal', data.retention.DeletesHist)
metric('retainedCurrent', data.retention.RetainedCurrent, numberFilter, false)
setHistoryOfCount('retainedCurrent', data.retention.RetainedHist)
metric('smtpReceivedTotal', data.smtp.ReceivedTotal, numberFilter, false);
setHistoryOfActivity('smtpReceivedTotal', data.smtp.ReceivedHist);
metric('smtpConnectsTotal', data.smtp.ConnectsTotal, numberFilter, false);
setHistoryOfActivity('smtpConnectsTotal', data.smtp.ConnectsHist);
metric('smtpWarnsTotal', data.smtp.WarnsTotal, numberFilter, false);
setHistoryOfActivity('smtpWarnsTotal', data.smtp.WarnsHist);
metric('smtpErrorsTotal', data.smtp.ErrorsTotal, numberFilter, false);
setHistoryOfActivity('smtpErrorsTotal', data.smtp.ErrorsHist);
metric('retentionDeletesTotal', data.retention.DeletesTotal, numberFilter, false);
setHistoryOfActivity('retentionDeletesTotal', data.retention.DeletesHist);
metric('retainedCurrent', data.retention.RetainedCurrent, numberFilter, false);
setHistoryOfCount('retainedCurrent', data.retention.RetainedHist);
}
function loadMetrics() {
// jQuery.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )
jQuery.getJSON('/debug/vars', null, displayMetrics)
jQuery.getJSON('/debug/vars', null, displayMetrics);
}
function aboutInit() {
loadMetrics()
setInterval(loadMetrics, 10000)
$('#navStatus').addClass('active');
loadMetrics();
setInterval(loadMetrics, 10000);
}
$(document).ready(aboutInit)