X
@@ -2202,7 +2236,7 @@
var bat = nodes[i].sessions.battery;
var statestr = '';
if (bat.state == 'ac') { statestr = "Device is plugged-in"; }
- if (bat.state == 'dc') { statestr = "Device is battery powered"; }
+ else if (bat.state == 'dc') { statestr = "Device is battery powered"; }
var levelstr = '', levelnum = -1;
if ((typeof bat.level == 'number') && (bat.level >= 0) && (bat.level <= 100)) {
@@ -2224,11 +2258,7 @@
// Node
var icon = nodes[i].icon, nodestate = NodeStateStr(nodes[i]);
if ((!nodes[i].conn) || (nodes[i].conn == 0)) { icon += ' gray'; }
- r += '
' + devNotify;
- r += '
';
- r += '
';
- r += '
' + name + '
' + nodestate + '
';
- r += '
';
+ r += '
' + devNotify + '
' + name + '
' + nodestate + '
';
// If we are displaying devices by group, put the device in the right group.
/*
@@ -2281,6 +2311,29 @@
deviceHeaderSet();
for (var i in deviceHeaders) { QH(i, deviceHeaders[i]); }
for (var i in deviceHeadersTitles) { Q(i).title = deviceHeadersTitles[i]; }
+ onDevicesScrollEx();
+ }
+
+ var onDevicesTouchActive = false;
+ var onDevicesScrollnagleTimer = null;
+ function onDevicesScroll() {
+ if (onDevicesScrollnagleTimer != null) { clearTimeout(onDevicesScrollnagleTimer); onDevicesScrollnagleTimer = null; }
+ if (onDevicesTouchActive) return;
+ onDevicesScrollnagleTimer = setTimeout(onDevicesScrollEx, 50);
+ }
+
+ function onDeviceTouch(x) {
+ if (onDevicesTouchActive == x) return;
+ onDevicesTouchActive = x;
+ if (x == false) onDevicesScrollEx();
+ }
+
+ function onDevicesScrollEx() {
+ 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++) {
+ devdivs[i].childNodes[0].style.display = ((devdivs[i].offsetTop >= visibleTop) && (devdivs[i].offsetTop < visibleBottom)) ? null : 'none';
+ }
}
// Show currently active sessions on this device
@@ -4336,7 +4389,7 @@
function putstore(name, val) { try { if ((typeof (localStorage) === 'undefined') || (localStorage.getItem(name) == val)) return; if (val == null) { localStorage.removeItem(name); } else { localStorage.setItem(name, val); } } catch (e) { } if (name[0] != '_') { var s = {}; for (var i = 0, len = localStorage.length; i < len; ++i) { var k = localStorage.key(i); if (k[0] != '_') { s[k] = localStorage.getItem(k); } } meshserver.send({ action: 'userWebState', state: JSON.stringify(s) }); } }
function getstore(name, val) { try { if (typeof (localStorage) === 'undefined') return val; var v = localStorage.getItem(name); if ((v == null) || (v == null)) return val; return v; } catch (e) { return val; } }
- function center() { QS('dialog').left = ((((getDocWidth() - 300) / 2)) + 'px'); deskAdjust(); deskAdjust(); /*drawDeviceTimeline();*/ }
+ function center() { onDevicesScroll(); QS('dialog').left = ((((getDocWidth() - 300) / 2)) + 'px'); deskAdjust(); deskAdjust(); /*drawDeviceTimeline();*/ }
function messagebox(t, m) { QH('id_dialogMessage', m); setDialogMode(1, t, 1); }
function statusbox(t, m) { QH('id_dialogMessage', m); setDialogMode(1, t); }
function getDocWidth() { if (window.innerWidth) return window.innerWidth; if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientWidth != 0) return document.documentElement.clientWidth; return document.getElementsByTagName('body')[0].clientWidth; }