diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars
index 184eda09..9c19b364 100644
--- a/views/default-mobile.handlebars
+++ b/views/default-mobile.handlebars
@@ -1794,8 +1794,7 @@
//onSortSelectChange(true);
//drawNotifications();
refreshDevice(node._id);
- //updateMapMarkers();
- mainUpdate(4);
+ updateDeviceViewDevice(node);
if (currentNode == node) { updateDeviceDetails(); }
//if ((currentNode == node) && (xxdialogMode != null) && (xxdialogTag == '@xxmap')) { p10showNodeLocationDialog(); }
@@ -1853,9 +1852,8 @@
// Clear sesssion information if needed
if ((node.conn & 1) == 0) { delete node.sessions; }
- mainUpdate(4);
refreshDevice(node._id);
- //updateMapMarkers();
+ updateDeviceViewDevice(node);
}
break;
}
@@ -1893,7 +1891,7 @@
}
refreshDevice(message.event.nodeid);
- mainUpdate(4);
+ updateDeviceViewDevice(node);
//if ((currentNode != null) && (currentNode._id == message.event.nodeid)) { gotoDevice(currentNode._id, xxcurrentView, true); }
// If we are looking at the sessions dialog box for this device now, update it
@@ -2774,77 +2772,88 @@
}
function onDevicesScrollEx() {
+ var devdivs = document.getElementsByName('xxdevice');
onDevicesScrollnagleTimer = null;
- var visibleTop = Q('xdevices').scrollTop - 250, visibleBottom = Q('xdevices').scrollTop + Q('xdevices').clientHeight + 250, devdivs = document.getElementsByName('xxdevice');
for (var i = 0; i < devdivs.length; i++) {
- if ((devdivs[i].offsetTop >= visibleTop) && (devdivs[i].offsetTop < visibleBottom)) {
- // Show
- var node = getNodeFromId(devdivs[i].id)
- if (node == null) break;
+ // Show
+ var node = getNodeFromId(devdivs[i].id)
+ if (node == null) break;
+ updateDeviceViewHtml(devdivs[i], node);
+ }
+ }
- var title = EscapeHtml(node.name);
- if (title.length == 0) { title = '' + "None" + ''; }
- if ((node.rname != null) && (node.rname.length > 0)) { title += ' / ' + EscapeHtml(node.rname); }
- var name = EscapeHtml(node.name);
- if (showRealNames == true && node.rname != null) name = EscapeHtml(node.rname);
- if (name.length == 0) { name = '' + "None" + ''; }
+ // Update a single device in the current view
+ function updateDeviceViewDevice(node) {
+ if (node == null) return;
+ var devdiv = Q(node._id);
+ if ((devdiv != null) && (devdiv.innerHTML != '')) { updateDeviceViewHtml(devdiv, node); } // Only update if the device is visible
+ }
- // Add device notification icons
- var devNotify = '', devNotifySub = '';
+ function updateDeviceViewHtml(div, node) {
+ var visibleTop = Q('xdevices').scrollTop - 250, visibleBottom = Q('xdevices').scrollTop + Q('xdevices').clientHeight + 250;
+ if ((div.offsetTop >= visibleTop) && (div.offsetTop < visibleBottom)) {
+ var title = EscapeHtml(node.name);
+ if (title.length == 0) { title = '' + "None" + ''; }
+ if ((node.rname != null) && (node.rname.length > 0)) { title += ' / ' + EscapeHtml(node.rname); }
+ var name = EscapeHtml(node.name);
+ if (showRealNames == true && node.rname != null) name = EscapeHtml(node.rname);
+ if (name.length == 0) { name = '' + "None" + ''; }
- // This device is "starred"
- if (stars[node._id] == 1) {
- devNotifySub += '';
- }
+ // Add device notification icons
+ var devNotify = '', devNotifySub = '';
- // This device has session information
- if (node.sessions != null) {
- // Display any agent messages
- if (node.sessions.msg != null) {
- devNotifySub += '