';
r += '
' + name + '
' + nodestate + '
';
@@ -1902,6 +1970,28 @@
for (var i in deviceHeadersTitles) { Q(i).title = deviceHeadersTitles[i]; }
}
+ // Show currently active sessions on this device
+ function showDeviceSessions() {
+ if (xxdialogMode || (currentNode == null)) return;
+ var node = currentNode, x = '';
+ for (var i in node.sessions) {
+ if ((i == 'kvm') && (node.sessions.multidesk == null)) {
+ x += '
' + "Remote Desktop" + '';
+ for (var j in node.sessions.kvm) { x += addHtmlValue4(getUserName(j), (node.sessions.kvm[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.kvm[j]))); }
+ } else if (i == 'multidesk') {
+ x += '
' + "Remote Desktop" + '';
+ for (var j in node.sessions.multidesk) { x += addHtmlValue4(getUserName(j), ((node.sessions.multidesk[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.multidesk[j])))); }
+ } else if (i == 'terminal') {
+ x += '
' + "Terminal" + '';
+ for (var j in node.sessions.terminal) { x += addHtmlValue4(getUserName(j), ((node.sessions.terminal[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.terminal[j])))); }
+ } else if (i == 'files') {
+ x += '
' + "Files" + '';
+ for (var j in node.sessions.files) { x += addHtmlValue4(getUserName(j), ((node.sessions.files[j] == 1) ? "1 session" : nobreak(format("{0} sessions", node.sessions.files[j])))); }
+ }
+ }
+ if (x != '') setDialogMode(2, "Sessions" + ' - ' + EscapeHtml(node.name), 1, null, x, 'SESSIONS-' + node._id);
+ }
+
var powerStatetable = ['', "Powered", "Sleep", "Sleep", "Sleep", "Hibernating", "Power off", "Present"];
var powerStateStrings = ['', "Powered", "Sleeping", "Sleeping", "Deep Sleep", "Hibernating", "Soft-Off", "Present"];
var powerStateStrings2 = ['', "Device is powered", "Device is in sleep state (S1)", "Device is in sleep state (S2)", "Device is in deep sleep state (S3)", "Device is hibernating (S4)", "Device is in soft-off state (S5)", "Device is present, but power state cannot be determined"];
@@ -1983,6 +2073,9 @@
if (!currentNode || currentNode._id != node._id || refresh == true) {
currentNode = node;
+ // Setup session notification
+ QV('p10deviceNotify', currentNode.sessions != null);
+
// Add node name
var nname = EscapeHtml(node.name);
if (nname.length == 0) { nname = '
' + "None" + ''; }
@@ -3669,6 +3762,7 @@
function printDateTime(d) { return d.toLocaleString(args.locale); }
function format(format) { var args = Array.prototype.slice.call(arguments, 1); return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
function nobreak(x) { return x.split(' ').join(' '); }
+ function getUserName(userid) { if (users && users[userid] != null) return users[userid].name; return userid.split('/')[2]; }
diff --git a/views/default.handlebars b/views/default.handlebars
index 1d71e46e..79d43989 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -3172,7 +3172,7 @@
if (showRealNames == true && node.rname != null) name = EscapeHtml(node.rname);
if (name.length == 0) { name = '
' + "None" + ''; }
- // Setup device notification (TODO)
+ // Setup device notification
var devNotify = '';
if (node.sessions != null) {
if (view == 2) {