diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-09-26 00:24:34 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-09-26 00:24:34 +0000 |
commit | fd052a6e648c309daacf0d0186f632f466e437d0 (patch) | |
tree | e68dd59b6a999d90f899c748263f8e6d7bcbe872 /modules/admin-full/luasrc/view/admin_status | |
parent | b2b3b181d830d4b10250c7a9a1d7014a314dc763 (diff) |
modules/admin-full: rework status javascript code to use XHR.poll()
Diffstat (limited to 'modules/admin-full/luasrc/view/admin_status')
-rw-r--r-- | modules/admin-full/luasrc/view/admin_status/index.htm | 550 |
1 files changed, 272 insertions, 278 deletions
diff --git a/modules/admin-full/luasrc/view/admin_status/index.htm b/modules/admin-full/luasrc/view/admin_status/index.htm index f76511e0a..57ff86fd4 100644 --- a/modules/admin-full/luasrc/view/admin_status/index.htm +++ b/modules/admin-full/luasrc/view/admin_status/index.htm @@ -119,350 +119,344 @@ $Id$ ); } - var iwxhr = new XHR(); var wifidevs = <%=luci.http.write_json(netdevs)%>; var arptable = <%=luci.http.write_json(arpcache)%>; - (function() { - var func = arguments.callee; + XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 }, + function(x, info) + { + var si = document.getElementById('wan4_i'); + var ss = document.getElementById('wan4_s'); + var ifc = info.wan; - iwxhr.get('<%=REQUEST_URI%>', { status: 1 }, - function(x, info) + if (ifc && ifc.ifname && ifc.proto != 'none') { - var si = document.getElementById('wan4_i'); - var ss = document.getElementById('wan4_s'); - var ifc = info.wan; - - if (ifc && ifc.ifname && ifc.proto != 'none') + var s = String.format( + '<strong><%:Type%>: </strong>%s<br />' + + '<strong><%:Address%>: </strong>%s<br />' + + '<strong><%:Netmask%>: </strong>%s<br />' + + '<strong><%:Gateway%>: </strong>%s<br />', + ifc.proto, + (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0', + (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255', + (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0' + ); + + for (var i = 0; i < ifc.dns.length; i++) { - var s = String.format( - '<strong><%:Type%>: </strong>%s<br />' + - '<strong><%:Address%>: </strong>%s<br />' + - '<strong><%:Netmask%>: </strong>%s<br />' + - '<strong><%:Gateway%>: </strong>%s<br />', - ifc.proto, - (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0', - (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255', - (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0' - ); - - for (var i = 0; i < ifc.dns.length; i++) - { - s += String.format( - '<strong><%:DNS%> %d: </strong>%s<br />', - i + 1, ifc.dns[i] - ); - } - - if (ifc.expires > -1) - { - s += String.format( - '<strong><%:Expires%>: </strong>%t<br />', - ifc.expires - ); - } - - if (ifc.uptime > 0) - { - s += String.format( - '<strong><%:Connected%>: </strong>%t<br />', - ifc.uptime - ); - } - - ss.innerHTML = String.format('<small>%s</small>', s); - si.innerHTML = String.format( - '<img src="<%=resource%>/icons/ethernet.png" />' + - '<br /><small><a href="%s">%s</a></small>', - ifc.link, ifc.ifname + s += String.format( + '<strong><%:DNS%> %d: </strong>%s<br />', + i + 1, ifc.dns[i] ); } - else + + if (ifc.expires > -1) { - si.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>'; - ss.innerHTML = '<em>Not connected</em>'; + s += String.format( + '<strong><%:Expires%>: </strong>%t<br />', + ifc.expires + ); } - <% if has_ipv6 then %> - var si6 = document.getElementById('wan6_i'); - var ss6 = document.getElementById('wan6_s'); - var ifc6 = info.wan6; - - if (ifc6 && ifc6.ifname && ifc6.proto != 'none') + if (ifc.uptime > 0) { - var s = String.format( - '<strong><%:Address%>: </strong>%s<br />' + - '<strong><%:Gateway%>: </strong>%s<br />', - (ifc6.ip6addr) ? ifc6.ip6addr : '::', - (ifc6.gw6addr) ? ifc6.gw6addr : '::' + s += String.format( + '<strong><%:Connected%>: </strong>%t<br />', + ifc.uptime ); + } - for (var i = 0; i < ifc6.dns.length; i++) - { - s += String.format( - '<strong><%:DNS%> %d: </strong>%s<br />', - i + 1, ifc6.dns[i] - ); - } + ss.innerHTML = String.format('<small>%s</small>', s); + si.innerHTML = String.format( + '<img src="<%=resource%>/icons/ethernet.png" />' + + '<br /><small><a href="%s">%s</a></small>', + ifc.link, ifc.ifname + ); + } + else + { + si.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>'; + ss.innerHTML = '<em>Not connected</em>'; + } - if (ifc6.uptime > 0) - { - s += String.format( - '<strong><%:Connected%>: </strong>%t<br />', - ifc6.uptime - ); - } + <% if has_ipv6 then %> + var si6 = document.getElementById('wan6_i'); + var ss6 = document.getElementById('wan6_s'); + var ifc6 = info.wan6; - ss6.innerHTML = String.format('<small>%s</small>', s); - si6.innerHTML = String.format( - '<img src="<%=resource%>/icons/ethernet.png" />' + - '<br /><small><a href="%s">%s</a></small>', - ifc6.link, ifc6.ifname - ); - } - else + if (ifc6 && ifc6.ifname && ifc6.proto != 'none') + { + var s = String.format( + '<strong><%:Address%>: </strong>%s<br />' + + '<strong><%:Gateway%>: </strong>%s<br />', + (ifc6.ip6addr) ? ifc6.ip6addr : '::', + (ifc6.gw6addr) ? ifc6.gw6addr : '::' + ); + + for (var i = 0; i < ifc6.dns.length; i++) { - si6.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>'; - ss6.innerHTML = '<em>Not connected</em>'; + s += String.format( + '<strong><%:DNS%> %d: </strong>%s<br />', + i + 1, ifc6.dns[i] + ); } - <% end %> - <% if has_dhcp then %> - var ls = document.getElementById('lease_status_table'); - if (ls) + if (ifc6.uptime > 0) { - /* clear all rows */ - while( ls.rows.length > 1 ) - ls.rows[0].parentNode.deleteRow(1); + s += String.format( + '<strong><%:Connected%>: </strong>%t<br />', + ifc6.uptime + ); + } - for( var i = 0; i < info.leases.length; i++ ) - { - var timestr; + ss6.innerHTML = String.format('<small>%s</small>', s); + si6.innerHTML = String.format( + '<img src="<%=resource%>/icons/ethernet.png" />' + + '<br /><small><a href="%s">%s</a></small>', + ifc6.link, ifc6.ifname + ); + } + else + { + si6.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>'; + ss6.innerHTML = '<em>Not connected</em>'; + } + <% end %> - if (info.leases[i].expires <= 0) - timestr = '<em><%:expired%></em>'; - else - timestr = String.format('%t', info.leases[i].expires); + <% if has_dhcp then %> + var ls = document.getElementById('lease_status_table'); + if (ls) + { + /* clear all rows */ + while( ls.rows.length > 1 ) + ls.rows[0].parentNode.deleteRow(1); - var tr = ls.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); + for( var i = 0; i < info.leases.length; i++ ) + { + var timestr; - tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?'; - tr.insertCell(-1).innerHTML = info.leases[i].ipaddr; - tr.insertCell(-1).innerHTML = info.leases[i].macaddr; - tr.insertCell(-1).innerHTML = timestr; - } + if (info.leases[i].expires <= 0) + timestr = '<em><%:expired%></em>'; + else + timestr = String.format('%t', info.leases[i].expires); - if( ls.rows.length == 1 ) - { - var tr = ls.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; + var tr = ls.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; - } + tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?'; + tr.insertCell(-1).innerHTML = info.leases[i].ipaddr; + tr.insertCell(-1).innerHTML = info.leases[i].macaddr; + tr.insertCell(-1).innerHTML = timestr; } - <% end %> - <% if has_wifi then %> - var assoclist = [ ]; - - var ws = document.getElementById('wifi_status_table'); - if (ws) + if( ls.rows.length == 1 ) { - var wsbody = ws.rows[0].parentNode; - while (ws.rows.length > 0) - wsbody.deleteRow(0); + var tr = ls.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row'; - for (var didx = 0; didx < info.wifinets.length; didx++) - { - var dev = info.wifinets[didx]; + var td = tr.insertCell(-1); + td.colSpan = 4; + td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; + } + } + <% end %> - var tr = wsbody.insertRow(-1); - var td; + <% if has_wifi then %> + var assoclist = [ ]; - td = tr.insertCell(-1); - td.width = "33%"; - td.innerHTML = dev.name; - td.style.verticalAlign = "top"; + var ws = document.getElementById('wifi_status_table'); + if (ws) + { + var wsbody = ws.rows[0].parentNode; + while (ws.rows.length > 0) + wsbody.deleteRow(0); - td = tr.insertCell(-1); + for (var didx = 0; didx < info.wifinets.length; didx++) + { + var dev = info.wifinets[didx]; - var s = ''; + var tr = wsbody.insertRow(-1); + var td; - for (var nidx = 0; nidx < dev.networks.length; nidx++) - { - var net = dev.networks[nidx]; - var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel); - - var icon; - if (!is_assoc) - icon = "<%=resource%>/icons/signal-none.png"; - else if (net.quality == 0) - icon = "<%=resource%>/icons/signal-0.png"; - else if (net.quality < 25) - icon = "<%=resource%>/icons/signal-0-25.png"; - else if (net.quality < 50) - icon = "<%=resource%>/icons/signal-25-50.png"; - else if (net.quality < 75) - icon = "<%=resource%>/icons/signal-50-75.png"; - else - icon = "<%=resource%>/icons/signal-75-100.png"; + td = tr.insertCell(-1); + td.width = "33%"; + td.innerHTML = dev.name; + td.style.verticalAlign = "top"; - s += String.format( - '<table><tr><td style="text-align:center; width:32px; padding:3px">' + - '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />' + - '<br /><small>%d%%</small>' + - '</td><td style="text-align:left; padding:3px"><small>' + - '<strong><%:SSID%>:</strong> <a href="%s">%h</a><br />' + - '<strong><%:Mode%>:</strong> %s<br />' + - '<strong><%:Channel%>:</strong> %d (%.2f GHz)<br />' + - '<strong><%:Bitrate%>:</strong> %s Mb/s<br />', - icon, net.signal, net.noise, - net.quality, - net.link, net.ssid, - net.mode, - net.channel, net.frequency, - net.bitrate || '?' - ); - - if (is_assoc) - { - s += String.format( - '<strong><%:BSSID%>:</strong> %s<br />' + - '<strong><%:Encryption%>:</strong> %s', - net.bssid, - net.encryption - ); - } - else - { - s += '<em><%:Wireless is disabled or not associated%></em>'; - } - - s += '</small></td></tr></table>'; - - for (var bssid in net.assoclist) - { - assoclist.push({ - bssid: bssid, - signal: net.assoclist[bssid].signal, - noise: net.assoclist[bssid].noise, - link: net.link, - name: net.name - }); - } - } + td = tr.insertCell(-1); - if (!s) - s = '<em><%:No information available%></em>'; + var s = ''; - td.innerHTML = s; - } - } - - var ac = document.getElementById('wifi_assoc_table'); - if (ac) - { - /* clear all rows */ - while( ac.rows.length > 1 ) - ac.rows[0].parentNode.deleteRow(1); - - assoclist.sort(function(a, b) { - return (a.name == b.name) - ? (a.bssid < b.bssid) - : (a.name > b.name ) - ; - }); - - for( var i = 0; i < assoclist.length; i++ ) + for (var nidx = 0; nidx < dev.networks.length; nidx++) { - var tr = ac.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); + var net = dev.networks[nidx]; + var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel); var icon; - var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5; - if (q < 1) + if (!is_assoc) + icon = "<%=resource%>/icons/signal-none.png"; + else if (net.quality == 0) icon = "<%=resource%>/icons/signal-0.png"; - else if (q < 2) + else if (net.quality < 25) icon = "<%=resource%>/icons/signal-0-25.png"; - else if (q < 3) + else if (net.quality < 50) icon = "<%=resource%>/icons/signal-25-50.png"; - else if (q < 4) + else if (net.quality < 75) icon = "<%=resource%>/icons/signal-50-75.png"; else icon = "<%=resource%>/icons/signal-75-100.png"; - tr.insertCell(-1).innerHTML = String.format( - '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />', - icon, assoclist[i].signal, assoclist[i].noise + s += String.format( + '<table><tr><td style="text-align:center; width:32px; padding:3px">' + + '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />' + + '<br /><small>%d%%</small>' + + '</td><td style="text-align:left; padding:3px"><small>' + + '<strong><%:SSID%>:</strong> <a href="%s">%h</a><br />' + + '<strong><%:Mode%>:</strong> %s<br />' + + '<strong><%:Channel%>:</strong> %d (%.2f GHz)<br />' + + '<strong><%:Bitrate%>:</strong> %s Mb/s<br />', + icon, net.signal, net.noise, + net.quality, + net.link, net.ssid, + net.mode, + net.channel, net.frequency, + net.bitrate || '?' ); - tr.insertCell(-1).innerHTML = assoclist[i].bssid; + if (is_assoc) + { + s += String.format( + '<strong><%:BSSID%>:</strong> %s<br />' + + '<strong><%:Encryption%>:</strong> %s', + net.bssid, + net.encryption + ); + } + else + { + s += '<em><%:Wireless is disabled or not associated%></em>'; + } - tr.insertCell(-1).innerHTML = String.format( - '<a href="%s">%h</a>', - assoclist[i].link, - assoclist[i].name - ); + s += '</small></td></tr></table>'; - tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].signal); - tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].noise); + for (var bssid in net.assoclist) + { + assoclist.push({ + bssid: bssid, + signal: net.assoclist[bssid].signal, + noise: net.assoclist[bssid].noise, + link: net.link, + name: net.name + }); + } } - if (ac.rows.length == 1) - { - var tr = ac.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; + if (!s) + s = '<em><%:No information available%></em>'; - var td = tr.insertCell(-1); - td.colSpan = 5; - td.innerHTML = '<br /><em><%:No information available%></em>'; - } + td.innerHTML = s; } - <% end %> + } - var e; + var ac = document.getElementById('wifi_assoc_table'); + if (ac) + { + /* clear all rows */ + while( ac.rows.length > 1 ) + ac.rows[0].parentNode.deleteRow(1); + + assoclist.sort(function(a, b) { + return (a.name == b.name) + ? (a.bssid < b.bssid) + : (a.name > b.name ) + ; + }); + + for( var i = 0; i < assoclist.length; i++ ) + { + var tr = ac.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); + + var icon; + var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5; + if (q < 1) + icon = "<%=resource%>/icons/signal-0.png"; + else if (q < 2) + icon = "<%=resource%>/icons/signal-0-25.png"; + else if (q < 3) + icon = "<%=resource%>/icons/signal-25-50.png"; + else if (q < 4) + icon = "<%=resource%>/icons/signal-50-75.png"; + else + icon = "<%=resource%>/icons/signal-75-100.png"; + + tr.insertCell(-1).innerHTML = String.format( + '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />', + icon, assoclist[i].signal, assoclist[i].noise + ); - if (e = document.getElementById('localtime')) - e.innerHTML = info.localtime; + tr.insertCell(-1).innerHTML = assoclist[i].bssid; - if (e = document.getElementById('uptime')) - e.innerHTML = String.format('%t', info.uptime); + tr.insertCell(-1).innerHTML = String.format( + '<a href="%s">%h</a>', + assoclist[i].link, + assoclist[i].name + ); - if (e = document.getElementById('loadavg')) - e.innerHTML = String.format('%.02f, %.02f, %.02f', - info.loadavg[0], info.loadavg[1], info.loadavg[2]); + tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].signal); + tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].noise); + } - if (e = document.getElementById('memtotal')) - e.innerHTML = progressbar( - (info.memfree + info.membuffers + info.memcached) + " kB", - info.memtotal + " kB" - ); + if (ac.rows.length == 1) + { + var tr = ac.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row'; - if (e = document.getElementById('memfree')) - e.innerHTML = progressbar( - info.memfree + " kB", info.memtotal + " kB" - ); + var td = tr.insertCell(-1); + td.colSpan = 5; + td.innerHTML = '<br /><em><%:No information available%></em>'; + } + } + <% end %> - if (e = document.getElementById('memcache')) - e.innerHTML = progressbar( - info.memcached + " kB", info.memtotal + " kB" - ); + var e; - if (e = document.getElementById('membuff')) - e.innerHTML = progressbar( - info.membuffers + " kB", info.memtotal + " kB" - ); + if (e = document.getElementById('localtime')) + e.innerHTML = info.localtime; - if (e = document.getElementById('conns')) - e.innerHTML = progressbar(info.conncount, info.connmax); + if (e = document.getElementById('uptime')) + e.innerHTML = String.format('%t', info.uptime); - window.setTimeout(func, 5000); - } - ) - })(); + if (e = document.getElementById('loadavg')) + e.innerHTML = String.format('%.02f, %.02f, %.02f', + info.loadavg[0], info.loadavg[1], info.loadavg[2]); + + if (e = document.getElementById('memtotal')) + e.innerHTML = progressbar( + (info.memfree + info.membuffers + info.memcached) + " kB", + info.memtotal + " kB" + ); + + if (e = document.getElementById('memfree')) + e.innerHTML = progressbar( + info.memfree + " kB", info.memtotal + " kB" + ); + + if (e = document.getElementById('memcache')) + e.innerHTML = progressbar( + info.memcached + " kB", info.memtotal + " kB" + ); + + if (e = document.getElementById('membuff')) + e.innerHTML = progressbar( + info.membuffers + " kB", info.memtotal + " kB" + ); + + if (e = document.getElementById('conns')) + e.innerHTML = progressbar(info.conncount, info.connmax); + + } + ); //]]></script> <h2><a id="content" name="content"><%:Status%></a></h2> |