luci-mod-admin-full: improve reboot page
authorAnsuel Smith <ansuelsmth@gmail.com>
Tue, 5 Jun 2018 20:12:19 +0000 (22:12 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 3 Jul 2018 15:34:10 +0000 (17:34 +0200)
This fix problem with empty controller, the check function will never stop to
check if the device finish to reboot and we set more tries to wait the router
for a longer times.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
[reworked markup, simplified logic, removed superfluous alert]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm

index 6ec2b310d295ae4e3f8bf90de6d5cfa9e6045958..d23664adacd952af4e74ca1047d0ebaafdfa77d6 100644 (file)
 
 <hr />
 
+<input class="cbi-button cbi-button-action important" type="button" value="<%:Perform reboot%>" onclick="reboot(this)" />
+
+<p class="alert-message notice reboot-message" style="display:none">
+       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
+       <span><%:Device is rebooting...%></span>
+</p>
+
 <script type="text/javascript">//<![CDATA[
-       var tries = 0;
+       var tries = 0,
+           message = document.querySelector('p.reboot-message'),
+           label = message.querySelector('span');
 
        function ok() {
-               window.location = '<%=controller%>/admin';
+               window.location = '<%=url("admin")%>';
        }
 
        function check() {
-               if (tries++ < 12)
-                       window.setTimeout(ping, 5000);
-               else
-                       alert('<%:Device unreachable%>');
+               window.setTimeout(ping, 5000);
        }
 
        function ping() {
                img.onerror = check;
                img.src = '<%=resource%>/icons/loading.gif?' + Math.random();
 
-               document.getElementById('reboot-message').innerHTML = '<%:Waiting for device...%>';
+               if (tries++ >= 30) {
+                       message.classList.remove('notice');
+                       message.classList.add('warning');
+                       label.innerHTML = '<%:Device unreachable! Still waiting for device...%>';
+               }
        }
 
        function reboot(button) {
                button.style.display = 'none';
-               document.getElementById('reboot-message').parentNode.style.display = '';
+               message.style.display = '';
+               label.innerHTML = '<%:Waiting for device...%>';
 
-               (new XHR()).post('<%=controller%>/admin/system/reboot/call', { token: '<%=token%>' }, check);
+               (new XHR()).post('<%=url("admin/system/reboot/call")%>', { token: '<%=token%>' }, check);
        }
 //]]></script>
 
-<input class="cbi-button cbi-button-action important" type="button" value="<%:Perform reboot%>" onclick="reboot(this)" />
-
-<p class="alert-message" style="display:none">
-       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
-       <span id="reboot-message"><%:Device is rebooting...%></span>
-</p>
-
 <%+footer%>