21,7 → 21,7 |
} else { |
expires = ""; |
} |
document.cookie = name + "=" + value + expires + "; path=/"; |
document.cookie = name + "=" + value + expires + "; path=/; samesite=strict"; |
} |
|
/** |
288,6 → 288,13 |
pluginname: pluginname, |
success: function (data) { |
try { |
for (var propertyName in data.Plugins) { |
if ((data.Plugins[propertyName]["@attributes"] !== undefined) && |
((hostname = data.Plugins[propertyName]["@attributes"]["Hostname"]) !== undefined)) { |
$('span[class=hostname_' + pluginname + ']').html(hostname); |
} |
break; |
} |
// dynamic call |
window['renderPlugin_' + this.pluginname](data); |
changeLanguage(this.pluginname); |
313,9 → 320,13 |
}); |
} |
|
if (((ua=useragent.match(/Safari\/(\d+)\.[\d\.]+$/)) !== null) && (ua[1]<=534)) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari5.css'); |
} else if ((ua=useragent.match(/Firefox\/(\d+)\.[\d\.]+$/)) !== null) { |
if ((ua=useragent.match(/Version\/(\d+)\.[\d\.]+ (Mobile\/\S+ )?Safari\//)) !== null) { |
if (ua[1]<=5) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari5.css'); |
} else if (ua[1]<=8) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari8.css'); |
} |
} else if ((ua=useragent.match(/Firefox\/(\d+)\.[\d\.]+/)) !== null) { |
if (ua[1]<=15) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-firefox15.css'); |
} else if (ua[1]<=20) { |
325,6 → 336,18 |
} else if (ua[1]==28) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-firefox28.css'); |
} |
} else if ((ua=useragent.match(/Midori\/(\d+)\.?(\d+)?/)) !== null) { |
if ((ua[1]==0) && (ua.length==3) && (ua[2]<=4)) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori04.css'); |
} else if ((ua[1]==0) && (ua.length==3) && (ua[2]==5)) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori05.css'); |
} |
} else if ((ua=useragent.match(/Chrome\/(\d+)\.[\d\.]+/)) !== null) { |
if (ua[1]<=25) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-chrome25.css'); |
} else if (ua[1]<=28) { |
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-chrome28.css'); |
} |
} |
|
$(window).resize(); |
452,7 → 475,7 |
ip_string = ipv4[1]; |
ipv4 = ipv4[2].match(/[0-9]+/g); |
for (var i = 0;i < 4;i ++) { |
var byte = parseInt(ipv4[i],10); |
var byte = parseInt(ipv4[i], 10); |
if (byte<256) { |
ipv4[i] = ("0" + byte.toString(16)).substr(-2); |
} else { |
553,12 → 576,12 |
var timestamp = 0; |
var datetimeFormat; |
if ((data.Generation !== undefined) && (data.Generation["@attributes"] !== undefined) && (data.Generation["@attributes"].timestamp !== undefined) ) { |
timestamp = parseInt(data.Generation["@attributes"].timestamp)*1000; //server time |
timestamp = parseInt(data.Generation["@attributes"].timestamp, 10) * 1000; //server time |
if (isNaN(timestamp)) timestamp = Number(new Date()); //client time |
} else { |
timestamp = Number(new Date()); //client time |
} |
lastboot = new Date(timestamp - (parseInt(this.Uptime)*1000)); |
lastboot = new Date(timestamp - (parseInt(this.Uptime, 10) * 1000)); |
if (((datetimeFormat = data.Options["@attributes"].datetimeFormat) !== undefined) && (datetimeFormat.toLowerCase() === "locale")) { |
return lastboot.toLocaleString(); |
} else { |
596,24 → 619,24 |
html: function () { |
var processes = "", p111 = 0, p112 = 0, p113 = 0, p114 = 0, p115 = 0, p116 = 0; |
var not_first = false; |
processes = parseInt(this.Processes); |
processes = parseInt(this.Processes, 10); |
if (this.ProcessesRunning !== undefined) { |
p111 = parseInt(this.ProcessesRunning); |
p111 = parseInt(this.ProcessesRunning, 10); |
} |
if (this.ProcessesSleeping !== undefined) { |
p112 = parseInt(this.ProcessesSleeping); |
p112 = parseInt(this.ProcessesSleeping, 10); |
} |
if (this.ProcessesStopped !== undefined) { |
p113 = parseInt(this.ProcessesStopped); |
p113 = parseInt(this.ProcessesStopped, 10); |
} |
if (this.ProcessesZombie !== undefined) { |
p114 = parseInt(this.ProcessesZombie); |
p114 = parseInt(this.ProcessesZombie, 10); |
} |
if (this.ProcessesWaiting !== undefined) { |
p115 = parseInt(this.ProcessesWaiting); |
p115 = parseInt(this.ProcessesWaiting, 10); |
} |
if (this.ProcessesOther !== undefined) { |
p116 = parseInt(this.ProcessesOther); |
p116 = parseInt(this.ProcessesOther, 10); |
} |
if (p111 || p112 || p113 || p114 || p115 || p116) { |
processes += " ("; |
697,7 → 720,7 |
}, |
Bogomips: { |
text: function () { |
return parseInt(this.Bogomips); |
return parseInt(this.Bogomips, 10); |
} |
}, |
Load: { |
717,8 → 740,8 |
}, |
hwCount: { |
text: function() { |
if ((this.Count !== undefined) && !isNaN(this.Count) && (parseInt(this.Count)>1)) { |
return parseInt(this.Count); |
if ((this.Count !== undefined) && !isNaN(this.Count) && (parseInt(this.Count, 10)>1)) { |
return parseInt(this.Count, 10); |
} else { |
return ""; |
} |
726,7 → 749,30 |
} |
}; |
|
var mem_directives = { |
Speed: { |
html: function() { |
return formatMTps(this.Speed); |
} |
}, |
Voltage: { |
html: function() { |
return round(this.Voltage, 2) + ' V'; |
} |
}, |
Capacity: { |
html: function () { |
return formatBytes(this.Capacity, data.Options["@attributes"].byteFormat); |
} |
} |
}; |
|
var dev_directives = { |
Speed: { |
html: function() { |
return formatBPS(1000000*this.Speed); |
} |
}, |
Capacity: { |
html: function () { |
return formatBytes(this.Capacity, data.Options["@attributes"].byteFormat); |
779,15 → 825,23 |
$("#hardware-CPU").hide(); |
} |
|
var devparamlist = {Capacity:43,Manufacturer:122,Product:123,Serial:124}; |
for (hw_type in {PCI:0,IDE:1,SCSI:2,NVMe:3,USB:4,TB:5,I2C:6}) { |
var devparamlist = {Capacity:43,Manufacturer:122,Product:123,Speed:129,Voltage:52,Serial:124}; |
for (hw_type in {MEM:0,PCI:1,IDE:2,SCSI:3,NVMe:4,USB:5,TB:6,I2C:7}) { |
try { |
datas = items(data.Hardware[hw_type].Device); |
if (hw_type == 'MEM') { |
datas = items(data.Hardware[hw_type].Chip); |
} else { |
datas = items(data.Hardware[hw_type].Device); |
} |
for (i = 0; i < datas.length; i++) { |
if (i === 0) { |
html+="<tr id=\"hardware-" + hw_type + "\" class=\"treegrid-" + hw_type + "\">"; |
html+="<th>" + hw_type + "</th>"; |
html+="<td><span class=\"treegrid-span\">" + genlang('120') + ":</span></td>"; //Number of devices |
if (hw_type == 'MEM') { |
html+="<td><span class=\"treegrid-span\">" + genlang('128') + ":</span></td>"; //Number of memories |
} else { |
html+="<td><span class=\"treegrid-span\">" + genlang('120') + ":</span></td>"; //Number of devices |
} |
html+="<td class=\"rightCell\"><span id=\"" + hw_type + "Count\"></span></td>"; |
html+="</tr>"; |
} |
837,21 → 891,33 |
} |
|
var licz; |
for (hw_type in {PCI:0,IDE:1,SCSI:2,NVMe:3,USB:4,TB:5,I2C:6}) { |
for (hw_type in {MEM:0,PCI:1,IDE:2,SCSI:3,NVMe:4,USB:5,TB:6,I2C:7}) { |
try { |
licz = 0; |
datas = items(data.Hardware[hw_type].Device); |
if (hw_type == 'MEM') { |
datas = items(data.Hardware[hw_type].Chip); |
} else { |
datas = items(data.Hardware[hw_type].Device); |
} |
for (i = 0; i < datas.length; i++) { |
$('#hardware-'+hw_type+'-'+ i).render(datas[i]["@attributes"], hw_directives); |
if ((datas[i]["@attributes"].Count !== undefined) && !isNaN(datas[i]["@attributes"].Count) && (parseInt(datas[i]["@attributes"].Count)>1)) { |
licz += parseInt(datas[i]["@attributes"].Count); |
if ((datas[i]["@attributes"].Count !== undefined) && !isNaN(datas[i]["@attributes"].Count) && (parseInt(datas[i]["@attributes"].Count, 10)>1)) { |
licz += parseInt(datas[i]["@attributes"].Count, 10); |
} else { |
licz++; |
} |
for (proc_param in devparamlist) { |
if ((datas[i]["@attributes"][proc_param] !== undefined)) { |
$('#hardware-'+hw_type+'-'+ i +'-'+proc_param).render(datas[i]["@attributes"], dev_directives); |
if (hw_type == 'MEM') { |
for (proc_param in devparamlist) { |
if ((datas[i]["@attributes"][proc_param] !== undefined)) { |
$('#hardware-'+hw_type+'-'+ i +'-'+proc_param).render(datas[i]["@attributes"], mem_directives); |
} |
} |
} else { |
for (proc_param in devparamlist) { |
if ((datas[i]["@attributes"][proc_param] !== undefined)) { |
$('#hardware-'+hw_type+'-'+ i +'-'+proc_param).render(datas[i]["@attributes"], dev_directives); |
} |
} |
} |
} |
if (i > 0) { |
916,19 → 982,19 |
'<div class="progress-bar progress-bar-info" style="width:' + this["@attributes"].Percent + '%;"></div>' + |
'</div><div class="percent">' + this["@attributes"].Percent + '%</div>'; |
} else { |
var rest = parseInt(this["@attributes"].Percent); |
var rest = parseInt(this["@attributes"].Percent, 10); |
var html = '<div class="progress">'; |
if ((this.Details["@attributes"].AppPercent !== undefined) && (this.Details["@attributes"].AppPercent > 0)) { |
html += '<div class="progress-bar progress-bar-info" style="width:' + this.Details["@attributes"].AppPercent + '%;"></div>'; |
rest -= parseInt(this.Details["@attributes"].AppPercent); |
rest -= parseInt(this.Details["@attributes"].AppPercent, 10); |
} |
if ((this.Details["@attributes"].CachedPercent !== undefined) && (this.Details["@attributes"].CachedPercent > 0)) { |
html += '<div class="progress-bar progress-bar-warning" style="width:' + this.Details["@attributes"].CachedPercent + '%;"></div>'; |
rest -= parseInt(this.Details["@attributes"].CachedPercent); |
rest -= parseInt(this.Details["@attributes"].CachedPercent, 10); |
} |
if ((this.Details["@attributes"].BuffersPercent !== undefined) && (this.Details["@attributes"].BuffersPercent > 0)) { |
html += '<div class="progress-bar progress-bar-danger" style="width:' + this.Details["@attributes"].BuffersPercent + '%;"></div>'; |
rest -= parseInt(this.Details["@attributes"].BuffersPercent); |
rest -= parseInt(this.Details["@attributes"].BuffersPercent, 10); |
} |
if (rest > 0) { |
html += '<div class="progress-bar progress-bar-success" style="width:' + rest + '%;"></div>'; |
1013,29 → 1079,17 |
var directives = { |
Total: { |
html: function () { |
if ((this.Ignore !== undefined) && (this.Ignore > 0)) { |
return formatBytes(this.Total, data.Options["@attributes"].byteFormat, true); |
} else { |
return formatBytes(this.Total, data.Options["@attributes"].byteFormat); |
} |
return formatBytes(this.Total, data.Options["@attributes"].byteFormat, (this.Ignore !== undefined) && (this.Ignore > 0) && showtotals); |
} |
}, |
Free: { |
html: function () { |
if ((this.Ignore !== undefined) && (this.Ignore > 0)) { |
return formatBytes(this.Free, data.Options["@attributes"].byteFormat, true); |
} else { |
return formatBytes(this.Free, data.Options["@attributes"].byteFormat); |
} |
return formatBytes(this.Free, data.Options["@attributes"].byteFormat, (this.Ignore !== undefined) && (this.Ignore > 0) && showtotals); |
} |
}, |
Used: { |
html: function () { |
if ((this.Ignore !== undefined) && (this.Ignore >= 2)) { |
return formatBytes(this.Used, data.Options["@attributes"].byteFormat, true); |
} else { |
return formatBytes(this.Used, data.Options["@attributes"].byteFormat); |
} |
return formatBytes(this.Used, data.Options["@attributes"].byteFormat, (this.Ignore !== undefined) && (this.Ignore >= 3) && showtotals); |
} |
}, |
MountPoint: { |
1050,11 → 1104,23 |
}, |
Percent: { |
html: function () { |
return '<div class="progress">' + '<div class="' + |
( ( ((this.Ignore == undefined) || (this.Ignore < 3)) && ((data.Options["@attributes"].threshold !== undefined) && |
(parseInt(this.Percent) >= parseInt(data.Options["@attributes"].threshold))) ) ? 'progress-bar progress-bar-danger' : 'progress-bar progress-bar-info' ) + |
'" style="width:' + this.Percent + '% ;"></div>' + |
'</div>' + '<div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>'; |
var used1 = (this.Total != 0) ? Math.ceil((this.Used / this.Total) * 100) : 0; |
var used2 = Math.ceil(this.Percent); |
var used21= used2 - used1; |
if (used21 > 0) { |
return '<div class="progress">' + '<div class="' + |
( ( ((this.Ignore == undefined) || (this.Ignore < 4)) && ((data.Options["@attributes"].threshold !== undefined) && |
(parseInt(this.Percent, 10) >= parseInt(data.Options["@attributes"].threshold, 10))) ) ? 'progress-bar progress-bar-danger' : 'progress-bar progress-bar-info' ) + |
'" style="width:' + used1 + '% ;"></div>' + |
'<div class="progress-bar progress-bar-warning" style="width:' + used21 + '% ;"></div>' |
+'</div><div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>'; |
} else { |
return '<div class="progress">' + '<div class="' + |
( ( ((this.Ignore == undefined) || (this.Ignore < 4)) && ((data.Options["@attributes"].threshold !== undefined) && |
(parseInt(this.Percent, 10) >= parseInt(data.Options["@attributes"].threshold, 10))) ) ? 'progress-bar progress-bar-danger' : 'progress-bar progress-bar-info' ) + |
'" style="width:' + used2 + '% ;"></div>' + |
'</div>' + '<div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>'; |
} |
} |
} |
}; |
1063,23 → 1129,31 |
var fs_data = []; |
var datas = items(data.FileSystem.Mount); |
var total = {Total:0,Free:0,Used:0}; |
var showtotals = $("#hideTotals").val().toString()!=="true"; |
for (var i = 0; i < datas.length; i++) { |
fs_data.push(datas[i]["@attributes"]); |
if ((datas[i]["@attributes"].Ignore !== undefined) && (datas[i]["@attributes"].Ignore > 0)) { |
if (datas[i]["@attributes"].Ignore == 1) { |
total.Total += parseInt(datas[i]["@attributes"].Used); |
total.Used += parseInt(datas[i]["@attributes"].Used); |
if (showtotals) { |
if ((datas[i]["@attributes"].Ignore !== undefined) && (datas[i]["@attributes"].Ignore > 0)) { |
if (datas[i]["@attributes"].Ignore == 2) { |
total.Used += parseInt(datas[i]["@attributes"].Used, 10); |
} else if (datas[i]["@attributes"].Ignore == 1) { |
total.Total += parseInt(datas[i]["@attributes"].Used, 10); |
total.Used += parseInt(datas[i]["@attributes"].Used, 10); |
} |
} else { |
total.Total += parseInt(datas[i]["@attributes"].Total, 10); |
total.Free += parseInt(datas[i]["@attributes"].Free, 10); |
total.Used += parseInt(datas[i]["@attributes"].Used, 10); |
} |
} else { |
total.Total += parseInt(datas[i]["@attributes"].Total); |
total.Free += parseInt(datas[i]["@attributes"].Free); |
total.Used += parseInt(datas[i]["@attributes"].Used); |
total.Percent = (total.Total != 0) ? round(100 - (total.Free / total.Total) * 100, 2) : 0; |
} |
total.Percent = (total.Total !== 0) ? round((total.Used / total.Total) * 100, 2) : 0; |
} |
if (i > 0) { |
$('#filesystem-data').render(fs_data, directives); |
$('#filesystem-foot').render(total, directives); |
if (showtotals) { |
$('#filesystem-foot').render(total, directives); |
$('#filesystem-foot').show(); |
} |
$('#filesystem_MountPoint').removeClass("sorttable_sorted"); //reset sort order |
// sorttable.innerSortFunction.apply(document.getElementById('filesystem_MountPoint'), []); |
sorttable.innerSortFunction.apply($('#filesystem_MountPoint')[0], []); |
1292,13 → 1366,24 |
var directives = { |
Value: { |
html: function () { |
return round(this.Value,0) + String.fromCharCode(160) + genlang(63); //RPM |
if (this.Unit === "%") { |
return '<div class="progress">' + |
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' + |
'</div><div class="percent">' + round(this.Value,0) + '%</div>'; |
} else { |
return round(this.Value,0) + String.fromCharCode(160) + genlang(63); //RPM |
} |
} |
}, |
Min: { |
html: function () { |
if (this.Min !== undefined) |
return round(this.Min,0) + String.fromCharCode(160) + genlang(63); //RPM |
if (this.Min !== undefined) { |
if (this.Unit === "%") { |
return round(this.Min,0) + "%"; |
} else { |
return round(this.Min,0) + String.fromCharCode(160) + genlang(63); //RPM |
} |
} |
} |
}, |
Label: { |
1425,6 → 1510,18 |
} |
|
var directives = { |
Value: { |
html: function () { |
if (this.Unit === "%") { |
return '<div class="progress">' + |
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' + |
'</div><div class="percent">' + round(this.Value,0) + '%</div>'; |
// return round(this.Value,0) + "%"; |
} else { |
return this.Value; |
} |
} |
}, |
Label: { |
html: function () { |
if (this.Event === undefined) |
1643,6 → 1740,23 |
} |
|
/** |
* format a given MT/s value to a better readable statement with the right suffix |
* @param {Number} mtps mtps value that should be formatted |
* @return {String} html string with no breaking spaces and translation statements |
*/ |
function formatMTps(mtps) { |
if ((mtps >= 0) && (mtps < 1000)) { |
return mtps.toString() + String.fromCharCode(160) + genlang(131); |
} else { |
if (mtps >= 1000) { |
return round(mtps / 1000, 2) + String.fromCharCode(160) + genlang(132); |
} else { |
return ""; |
} |
} |
} |
|
/** |
* format the byte values into a user friendly value with the corespondenting unit expression<br>support is included |
* for binary and decimal output<br>user can specify a constant format for all byte outputs or the output is formated |
* automatically so that every value can be read in a user friendly way |