2015-12-21 00:07:35 -07:00

188 lines
6.2 KiB
JavaScript

$(function(){
sensorArray(false);
eventArray();
//bind Clear button to clearEvents function
$("#btnClearEvents").bind("click", clearEvents);
//advanced view switch
$('.advancedview').switchButton({
labels_placement: "left",
on_label: 'Advanced View',
off_label: 'Basic View',
checked: $.cookie('ipmitool_sensor_mode') == 'advanced'
});
//set cookie and toggle advanced columns
$('.advancedview').change(function () {
$('.advanced').toggle('slow');
$.cookie('ipmitool_sensor_mode', $('.advancedview').prop('checked') ? 'advanced' : 'basic', { expires: 3650 });
});
// select all packages switch
$('#allEvents')
.switchButton({
labels_placement: "right",
on_label: 'Select All',
off_label: 'Select All',
checked: false
})
.change(function() { //on change
if(this.checked) { // check select status
$('.checkEvent').each(function() { //loop through each checkbox
$(this).switchButton({checked: true});
});
}else{
$('.checkEvent').each(function() { //loop through each checkbox
$(this).switchButton({checked: false});
});
}
});
$('#tblSensor').tablesorter({headers:{0:{sorter:false}}});
$('#tblEvent').tablesorter({headers:{5:{sorter:false}}});
sensorRefresh();
});
function clearEvents() {
//if all events checked clear all
if($('#allEvents').prop('checked')) {
$('#allEvents').switchButton({checked: false});
$.ajax({
type : "POST",
url : "/plugins/ipmitool-plugin/include/delete_event.php",
data : {options: "clear" + Options + atob(Password)},
success: function(data) {
$("#tblEvent tbody").empty();
},
error : function() { }
});
} else {
// clear only checked events
$(':checkbox:checked').each(function(){
var EventId = $(this).val(); //get event id
var par = $(this).parent().parent(); //get table row
$.ajax({
type : "POST",
url : "/plugins/ipmitool-plugin/include/delete_event.php",
data : {options: "delete " + EventId + Options + atob(Password)},
success: function(data) {
par.remove(); //remove table row
},
error : function() { }
});
});
}
};
//sensor refresh
(function sensorRefresh() {
sensorArray(true);
setTimeout(sensorRefresh, 30000);
}());
//load ipmi sensor table
function sensorArray(Refresh){
var Display = 'none';
if ($.cookie('ipmitool_sensor_mode') == 'advanced') {
$('.advanced').show();
Display = 'table-cell';
}
$.ajax({
type: "POST",
dataType: "json",
url: "/plugins/ipmitool-plugin/include/ipmitool_array.php",
data : {options: "-vc sdr" + Options + atob(Password)},
success: function(data) {
$.each(data, function (i, val) {
if (data[i][3] != "ns") {
var Reading = data[i][1];
var LowerNonRec = data[i][13];
var LowerCritical = data[i][14];
var LowerNonCrit = data[i][15];
var UpperNonCrit = data[i][12];
var UpperCritical = data[i][11];
var UpperNonRec = data[i][10];
var Color = "green";
var Name = data[i][0].replace('+', 'plus_').replace('-', 'minus_').replace(' ', '_').replace('.', '_');
if (data[i][6]=="Voltage"){
if (parseFloat(Reading) > parseFloat(LowerNonRec) && parseFloat(Reading) < parseFloat(UpperNonRec))
Color = "red";
if (parseFloat(Reading) > parseFloat(LowerCritical) && parseFloat(Reading) < parseFloat(UpperCritical))
Color = "yellow";
if (parseFloat(Reading) > parseFloat(LowerNonCrit) && parseFloat(Reading) < parseFloat(UpperNonCrit))
Color = "green";
} else if (data[i][6]=="Fan"){
if (parseInt(Reading) < parseInt(LowerNonCrit))
Color = "red";
} else if (data[i][6]=="Temperature"){
if (parseInt(Reading) > parseInt(UpperNonCrit))
Color = "red";
}
if (Refresh) {
$("#" + Name + " td.reading").html("<font color='" + Color + "'>" + Reading + "</font>");
} else {
$("#tblSensor tbody").append(
"<tr id='"+Name+"'>"+
"<td title='"+data[i][3]+"'><img src='/plugins/ipmitool-plugin/images/green-on.png'/></td>"+ //status
"<td>"+data[i][0]+"</td>"+ //sensor name
"<td class='advanced' style='display:" + Display + ";'>" + LowerNonRec + "</td>"+
"<td class='advanced' style='display:" + Display + ";'>" + LowerCritical + "</td>"+
"<td class='advanced' style='display:" + Display + ";'>" + LowerNonCrit + "</td>"+
"<td class='reading'>" + "<font color='" + Color + "'>" + Reading + "</font>" + "</td>"+ //sensor reading
"<td>"+data[i][2]+"</td>"+ //sensor units
"<td class='advanced' style='display:" + Display + ";'>" + UpperNonCrit + "</td>"+
"<td class='advanced' style='display:" + Display + ";'>" + UpperCritical + "</td>"+
"<td class='advanced' style='display:" + Display + ";'>" + UpperNonRec + "</td>"+
"</tr>");
}
}
});
$("#tblSensor").trigger("update"); //update sensor table for tablesorter
},
error : function() {},
cache: false
});
};
//load ipmi event table
function eventArray(){
$("#tblEvent tbody").empty();
$.ajax({
type: "POST",
dataType: "json",
url: "/plugins/ipmitool-plugin/include/ipmitool_array.php",
data : {options: "-c sel elist" + Options + atob(Password)},
success: function(data) {
$.each(data, function (i, val) {
var Status = (data[i][5] == 'Asserted') ? 'red' : 'green';
$("#tblEvent tbody").append(
"<tr>"+
"<td title='"+data[i][5]+"'><img src='/plugins/ipmitool-plugin/images/" + Status + "-on.png'/></td>"+ //status
"<td>" + data[i][0] + "</td>"+ //event id
"<td>" + data[i][1] + " "+data[i][2]+"</td>"+ //time stamp
"<td>" + data[i][3] + "</td>"+ //sensor name
"<td>" + data[i][4] +"</td>"+ //subject
"<td> <input class='checkEvent' type='checkbox' value=" + data[i][0] + "></td>"+ //checkbox
"</tr>");
$("#tblEvent").trigger("update"); //update table for tablesorter
});
},
complete: function () {
$(".checkEvent")
.switchButton({
labels_placement: 'right',
on_label: 'On',
off_label: 'Off',
checked: false
});
},
error : function() {}
});
};