diff --git a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page index 3f1f14d98..b88a44dc4 100644 --- a/emhttp/plugins/dynamix.docker.manager/DockerContainers.page +++ b/emhttp/plugins/dynamix.docker.manager/DockerContainers.page @@ -192,10 +192,7 @@ $(function() { }); $.removeCookie('lockbutton'); loadlist(true); - dockerload.start(); + dockerload.start().monitor(); }); -window.onunload = function(){ - dockerload.stop(); -} diff --git a/emhttp/plugins/dynamix.vm.manager/VMUsageStats.page b/emhttp/plugins/dynamix.vm.manager/VMUsageStats.page index 953ca1582..f492ee950 100644 --- a/emhttp/plugins/dynamix.vm.manager/VMUsageStats.page +++ b/emhttp/plugins/dynamix.vm.manager/VMUsageStats.page @@ -4,8 +4,8 @@ Nchan="vm_usage:stop" Cond="exec(\"grep -o '^USAGE=.Y' /boot/config/domain.cfg 2>/dev/null\") && is_file('/var/run/libvirt/libvirtd.pid')" --- \ No newline at end of file diff --git a/emhttp/plugins/dynamix/ArrayOperation.page b/emhttp/plugins/dynamix/ArrayOperation.page index fc633f83a..873e8b44b 100644 --- a/emhttp/plugins/dynamix/ArrayOperation.page +++ b/emhttp/plugins/dynamix/ArrayOperation.page @@ -114,7 +114,7 @@ function toggle_state(device,name,action) { button = '[id^=button-]'; } devices.stop(); - $.post('/webGui/include/ToggleState.php',{device:device,name:name,action:action},function(){setTimeout(function(){devices.start();},1000);if (button) $(button).prop('disabled',false);}); + $.post('/webGui/include/ToggleState.php',{device:device,name:name,action:action},function(){setTimeout(function(){devices.start().monitor();},1000);if (button) $(button).prop('disabled',false);}); } function display_diskio() { @@ -364,7 +364,7 @@ mymonitor.on('message', function(state) { break; } }); -mymonitor.start(); +mymonitor.start().monitor(); var arraymonitor = new NchanSubscriber('/sub/arraymonitor',{subscriber:'websocket'}); @@ -420,7 +420,7 @@ devices.on('message', function(msg,meta) { break; } }); -devices.start(); +devices.start().monitor(); var fsState = new NchanSubscriber('/sub/fsState',{subscriber:'websocket'}); @@ -434,7 +434,7 @@ fsState.on('message', function(msg) { break; } }); -fsState.start(); +fsState.start().monitor(); setTimeout(function(){$('#pauseButton').prop('disabled',false);$('#cancelButton').prop('disabled',false);},250); diff --git a/emhttp/plugins/dynamix/DashStats.page b/emhttp/plugins/dynamix/DashStats.page index 5b11e0842..94e9c6966 100644 --- a/emhttp/plugins/dynamix/DashStats.page +++ b/emhttp/plugins/dynamix/DashStats.page @@ -1791,12 +1791,12 @@ $(function() { dropdown('enter_view'); startup = false; - dashboard.start(); + dashboard.start().monitor(); - vmdashusage.start(); + vmdashusage.start().monitor(); - apcups.start(); + apcups.start().monitor(); update900(); toggleChart(true); @@ -1809,22 +1809,15 @@ $(function() { $('#netline').val(netline); $.removeCookie('lockbutton'); // remember latest graph values - $(window).on('beforeunload',function(e){ - var data = {}; - data.cpu = cpu.tail(cpuline); - data.rxd = rxd.tail(netline); - data.txd = txd.tail(netline); - $.post('/webGui/include/InitCharts.php',{cmd:'set',data:JSON.stringify(data)}); - }); }); -window.onunload = function(){ - dashboard.stop(); - - vmdashusage.stop(); +// Start graphs over again when window back in focus + +$(window).blur(function() { + cpu = []; + rxd = []; + txd = []; +}); - - apcups.stop(); - -} + diff --git a/emhttp/plugins/dynamix/DisplaySettings.page b/emhttp/plugins/dynamix/DisplaySettings.page index 825d991f7..10d6a86ea 100644 --- a/emhttp/plugins/dynamix/DisplaySettings.page +++ b/emhttp/plugins/dynamix/DisplaySettings.page @@ -4,8 +4,8 @@ Icon="icon-display" Tag="desktop" --- + + + + : diff --git a/emhttp/plugins/dynamix/default.cfg b/emhttp/plugins/dynamix/default.cfg index 9096beced..46a20fb8e 100644 --- a/emhttp/plugins/dynamix/default.cfg +++ b/emhttp/plugins/dynamix/default.cfg @@ -35,6 +35,7 @@ headermetacolor="" headerdescription="yes" showBannerGradient="yes" favorites="yes" +liveUpdate="no" [parity] mode="0" hour="0 0" diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout.php b/emhttp/plugins/dynamix/include/DefaultPageLayout.php index 7fbb2469d..43c7906f6 100644 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout.php @@ -105,10 +105,14 @@ if (!file_exists($notes)) file_put_contents($notes,shell_exec("$docroot/plugins/ \n"; -echo "
"; +if (isset($myPage['Load']) && $myPage['Load']>0 && $display['liveUpdate'] !== "no") echo "\n\n";echo "
"; $tab = 1; $pages = []; if (!empty($myPage['text'])) $pages[$myPage['name']] = $myPage; @@ -1232,6 +1235,52 @@ $('body').on('click','a,.ca_href', function(e) { } } }); + +// Start & stop live updates when window loses focus +var nchanPaused = false; + +$(window).focus(function() { + if (nchanPaused !== false ) { + removeBannerWarning(nchanPaused); + nchanPaused = false; + subscribers.forEach(function(e) { + e.start(); + }); + } +}); + +// Stop nchan on loss of focus +$(window).blur(function() { + nchanFocusStop(); +}); + +// Include both beforeunload and unload as this may be unreliable in certain circumstances on mobile devices +window.onbeforeunload = function() { + nchanFocusStop(false); +} + +window.onunload = function() { + nchanFocusStop(false); +} + +function nchanFocusStop(banner=true) { + if ( subscribers.length ) { + if ( nchanPaused === false ) { + var newsub = subscribers; + subscribers.forEach(function(e) { + try { + e.stop(); + } catch(err) { + newsub.splice(newsub.indexOf(e,1)); + } + }); + subscribers = newsub; + if ( banner && subscribers.length ) { + nchanPaused = addBannerWarning("",false,true ); + } + } + } +}