Created
March 31, 2011 19:15
-
-
Save jasonpgignac/897023 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function pullUpdates() { | |
jQuery.ajax({ | |
url: url, | |
dataType: 'json', | |
data: [], | |
success: function(data) { | |
groupedData = groupData(data); | |
groupedFilteredData = applyFilters(groupedData); | |
renderAlerts(groupedFilteredData); | |
setTimeout(pullUpdates, 30000); | |
}, | |
failure: function(data) { | |
alert("Screw up!"); | |
setTimeout(pullUpdates, 30000); | |
} | |
}) | |
} | |
function manualRefresh() { | |
jQuery.ajax({ | |
url: url, | |
dataType: 'json', | |
data: [], | |
success: function(data) { | |
groupedData = groupData(data); | |
groupedFilteredData = applyFilters(groupedData); | |
renderAlerts(groupedFilteredData); | |
}, | |
failure: function(data) { | |
alert("Screw up!"); | |
} | |
}) | |
} | |
function groupData(data) { | |
var unassigned = []; | |
var assigned = []; | |
var assigned_to_user = []; | |
jQuery.each(data, function(i, alarm){ | |
if (alarm.assigned_to === current_user) { | |
assigned.push(alarm); | |
assigned_to_user.push(alarm); | |
} else if (alarm.assigned_to === null) { | |
unassigned.push(alarm); | |
} else { | |
assigned.push(alarm); | |
} | |
}) | |
var groupedData = []; | |
groupedData[0] = ["unassigned", unassigned]; | |
groupedData[1] = ["assigned", assigned]; | |
groupedData[2] = ["assigned_to_user", assigned_to_user]; | |
return groupedData; | |
} | |
function renderAlerts(grouped_alerts) { | |
var formatted_alerts = []; | |
jQuery.each(grouped_alerts, function(i, alerts_with_group){ | |
var group = alerts_with_group[0]; | |
var alerts = alerts_with_group[1]; | |
var alerts_html = ""; | |
jQuery.each(alerts, function(i, alert) { | |
alerts_html = alerts_html + renderAlert(alert) + "\n"; | |
}); | |
formatted_alerts.push([group, alerts_html]); | |
}); | |
jQuery.each(formatted_alerts, function(i, formatted_alert_list) { | |
group = formatted_alert_list[0]; | |
html = formatted_alert_list[1]; | |
jQuery("#" + group + " ul.event_list").html(html); | |
jQuery("#" + group + " div.messages").hide(); | |
}); | |
} | |
function renderAlert(the_alert) { | |
alertLi = '<li data-severity="' + the_alert.severity + '">' + "\n"; | |
alertLi = alertLi + " <div>\n"; | |
alertLi = alertLi + ' <h1 class="severity_' + the_alert.severity + '">' + the_alert.severity + "</h1>\n"; | |
alertLi = alertLi + " " + the_alert.entity.name + " (" + the_alert.entity.ip_address + ")\n"; | |
alertLi = alertLi + " <p>" + the_alert.message + "</p>\n"; | |
alertLi = alertLi + " " + the_alert.time + ', Count: ' + the_alert.count + "<br />\n"; | |
alertLi = alertLi + " Assigned to: " + the_alert.assigned_to + "<br />\n"; | |
alertLi = alertLi + " Source: " + the_alert.source + "\n"; | |
alertLi = alertLi + " </div>\n"; | |
alertLi = alertLi + "</li>\n"; | |
return alertLi | |
} | |
function applyFilters(data) { | |
var filteredData = []; | |
jQuery.each(data, function(i, dataset) { | |
var group = dataset[0]; | |
var alerts = dataset[1]; | |
var minimum_severity = jQuery("#" + group + "_severity option:selected").val(); | |
var filtered_alerts = []; | |
jQuery.each(alerts, function(i,alert) { | |
if(severityNumberOf(alert) >= minimum_severity) { | |
filtered_alerts.push(alert) | |
} | |
}); | |
filteredData.push([group, filtered_alerts]); | |
}); | |
return filteredData; | |
} | |
function severityNumberOf(alert) { | |
switch(alert.severity) { | |
case "Informational": return 0;break; | |
case "Warning": return 1;break; | |
case "Minor": return 2;break; | |
case "Major": return 3;break; | |
case "Critical": return 4;break; | |
default: return null;break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment