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 | |
parent | b2b3b181d830d4b10250c7a9a1d7014a314dc763 (diff) |
modules/admin-full: rework status javascript code to use XHR.poll()
6 files changed, 650 insertions, 695 deletions
diff --git a/modules/admin-full/luasrc/view/admin_network/iface_overview.htm b/modules/admin-full/luasrc/view/admin_network/iface_overview.htm index 6a94c2dfe..8a91ca47e 100644 --- a/modules/admin-full/luasrc/view/admin_network/iface_overview.htm +++ b/modules/admin-full/luasrc/view/admin_network/iface_overview.htm @@ -44,8 +44,7 @@ $Id$ s.innerHTML = '<%:Waiting for router...%>'; } - var rcxhr = new XHR(); - rcxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/iface_' + (reconnect ? 'reconnect' : 'shutdown') + '/' + id, null, + XHR.get('<%=luci.dispatcher.build_url("admin", "network")%>/iface_' + (reconnect ? 'reconnect' : 'shutdown') + '/' + id, null, function(x) { if (s) @@ -67,117 +66,112 @@ $Id$ var wifidevs = <%=luci.http.write_json(netdevs)%>; var arptable = <%=luci.http.write_json(arpcache)%>; - (function() { - var func = arguments.callee; - iwxhr.get('<%=luci.dispatcher.build_url("admin", "network", "iface_status", table.concat(netlist, ","))%>', null, - function(x, ifcs) + XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "iface_status", table.concat(netlist, ","))%>', null, + function(x, ifcs) + { + if (ifcs) { - if (ifcs) + for (var idx = 0; idx < ifcs.length; idx++) { - for (var idx = 0; idx < ifcs.length; idx++) + var ifc = ifcs[idx]; + var html = ''; + + var s = document.getElementById(ifc.id + '-ifc-devices'); + if (s) { - var ifc = ifcs[idx]; - var html = ''; + var stat = String.format( + '<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px; vertical-align:middle" />', + ifc.type, + ifc.is_up ? '' : '_disabled' + ); - var s = document.getElementById(ifc.id + '-ifc-devices'); - if (s) + if (ifc.subdevices && ifc.subdevices.length) { - var stat = String.format( - '<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px; vertical-align:middle" />', - ifc.type, - ifc.is_up ? '' : '_disabled' - ); + stat += ' <strong>('; - if (ifc.subdevices && ifc.subdevices.length) + for (var j = 0; j < ifc.subdevices.length; j++) { - stat += ' <strong>('; - - for (var j = 0; j < ifc.subdevices.length; j++) - { - var sif = ifc.subdevices[j]; + var sif = ifc.subdevices[j]; + + stat += String.format( + '<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px; vertical-align:middle" title="%q" />', + sif.type, + sif.is_up ? '' : '_disabled', + sif.name + ); + } - stat += String.format( - '<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px; vertical-align:middle" title="%q" />', - sif.type, - sif.is_up ? '' : '_disabled', - sif.name - ); - } + stat += ')</strong>'; + } - stat += ')</strong>'; - } + stat += String.format( + '<br /><small>%s</small>', + ifc.name + ); - stat += String.format( - '<br /><small>%s</small>', - ifc.name - ); + s.innerHTML = stat; + } - s.innerHTML = stat; + var d = document.getElementById(ifc.id + '-ifc-description'); + if (d && ifc.ifname) + { + if (ifc.is_up) + { + html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime); } - var d = document.getElementById(ifc.id + '-ifc-description'); - if (d && ifc.ifname) + if (ifc.type != 'tunnel') { - if (ifc.is_up) - { - html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime); - } - - if (ifc.type != 'tunnel') - { - html += String.format('<strong><%:MAC Address%>:</strong> %s<br />', ifc.macaddr); - } - - html += String.format( - '<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' + - '<strong><%:TX%></strong>: %.2mB (%d <%:Pkts.%>)<br />', - ifc.rx_bytes, ifc.rx_packets, - ifc.tx_bytes, ifc.tx_packets - ); + html += String.format('<strong><%:MAC Address%>:</strong> %s<br />', ifc.macaddr); + } - if (ifc.ipaddrs && ifc.ipaddrs.length) - { - html += '<strong><%:IPv4%>: </strong>'; + html += String.format( + '<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' + + '<strong><%:TX%></strong>: %.2mB (%d <%:Pkts.%>)<br />', + ifc.rx_bytes, ifc.rx_packets, + ifc.tx_bytes, ifc.tx_packets + ); - for (var i = 0; i < ifc.ipaddrs.length; i++) - html += String.format( - '%s%s/%d', - i ? ', ' : '', - ifc.ipaddrs[i].addr, - ifc.ipaddrs[i].prefix - ); + if (ifc.ipaddrs && ifc.ipaddrs.length) + { + html += '<strong><%:IPv4%>: </strong>'; - html += '<br />'; - } + for (var i = 0; i < ifc.ipaddrs.length; i++) + html += String.format( + '%s%s/%d', + i ? ', ' : '', + ifc.ipaddrs[i].addr, + ifc.ipaddrs[i].prefix + ); - if (ifc.ip6addrs && ifc.ip6addrs.length) - { - html += '<strong><%:IPv6%>: </strong>'; + html += '<br />'; + } - for (var i = 0; i < ifc.ip6addrs.length; i++) - html += String.format( - '%s%s/%d', - i ? ', ' : '', - ifc.ip6addrs[i].addr.toUpperCase(), - ifc.ip6addrs[i].prefix - ); + if (ifc.ip6addrs && ifc.ip6addrs.length) + { + html += '<strong><%:IPv6%>: </strong>'; - html += '<br />'; - } + for (var i = 0; i < ifc.ip6addrs.length; i++) + html += String.format( + '%s%s/%d', + i ? ', ' : '', + ifc.ip6addrs[i].addr.toUpperCase(), + ifc.ip6addrs[i].prefix + ); - d.innerHTML = html; - } - else if (d) - { - d.innerHTML = '<em><%:Interface not present or not connected yet.%></em>'; + html += '<br />'; } + + d.innerHTML = html; + } + else if (d) + { + d.innerHTML = '<em><%:Interface not present or not connected yet.%></em>'; } } - - window.setTimeout(func, 5000); } - ) - })(); + } + ); //]]></script> <fieldset class="cbi-section" style="display:none"> diff --git a/modules/admin-full/luasrc/view/admin_network/iface_status.htm b/modules/admin-full/luasrc/view/admin_network/iface_status.htm index 69ae05272..f80fb5e53 100644 --- a/modules/admin-full/luasrc/view/admin_network/iface_status.htm +++ b/modules/admin-full/luasrc/view/admin_network/iface_status.htm @@ -1,89 +1,81 @@ <%+cbi/valueheader%> <script type="text/javascript">//<![CDATA[ - var iwxhr = new XHR(); - - (function() { - var func = arguments.callee; - - iwxhr.get('<%=luci.dispatcher.build_url("admin", "network", "iface_status", self.network)%>', null, - function(x, ifc) + XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "iface_status", self.network)%>', null, + function(x, ifc) + { + if (ifc && (ifc = ifc[0])) { - if (ifc && (ifc = ifc[0])) + var html = ''; + + var s = document.getElementById('<%=self.option%>-ifc-signal'); + if (s) + s.innerHTML = String.format( + '<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px" />' + + '<br /><small>%s</small>', + ifc.type, ifc.is_up ? '' : '_disabled', + ifc.is_up ? ifc.ifname : '?' + ); + + var d = document.getElementById('<%=self.option%>-ifc-description'); + if (d && ifc.ifname && ifc.macaddr != '00:00:00:00:00:00') { - var html = ''; - - var s = document.getElementById('<%=self.option%>-ifc-signal'); - if (s) - s.innerHTML = String.format( - '<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px" />' + - '<br /><small>%s</small>', - ifc.type, ifc.is_up ? '' : '_disabled', - ifc.is_up ? ifc.ifname : '?' - ); - - var d = document.getElementById('<%=self.option%>-ifc-description'); - if (d && ifc.ifname && ifc.macaddr != '00:00:00:00:00:00') + if (ifc.is_up) { - if (ifc.is_up) - { - html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime); - } - - if (ifc.type != 'tunnel') - { - html += String.format('<strong><%:MAC Address%>:</strong> %s<br />', ifc.macaddr); - } + html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime); + } - html += String.format( - '<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' + - '<strong><%:TX%></strong>: %.2mB (%d <%:Pkts.%>)<br />', - ifc.rx_bytes, ifc.rx_packets, - ifc.tx_bytes, ifc.tx_packets - ); + if (ifc.type != 'tunnel') + { + html += String.format('<strong><%:MAC Address%>:</strong> %s<br />', ifc.macaddr); + } - if (ifc.ipaddrs && ifc.ipaddrs.length) - { - html += '<strong><%:IPv4%>: </strong>'; + html += String.format( + '<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' + + '<strong><%:TX%></strong>: %.2mB (%d <%:Pkts.%>)<br />', + ifc.rx_bytes, ifc.rx_packets, + ifc.tx_bytes, ifc.tx_packets + ); - for (var i = 0; i < ifc.ipaddrs.length; i++) - html += String.format( - '%s%s/%d', - i ? ', ' : '', - ifc.ipaddrs[i].addr, - ifc.ipaddrs[i].prefix - ); + if (ifc.ipaddrs && ifc.ipaddrs.length) + { + html += '<strong><%:IPv4%>: </strong>'; - html += '<br />'; - } + for (var i = 0; i < ifc.ipaddrs.length; i++) + html += String.format( + '%s%s/%d', + i ? ', ' : '', + ifc.ipaddrs[i].addr, + ifc.ipaddrs[i].prefix + ); - if (ifc.ip6addrs && ifc.ip6addrs.length) - { - html += '<strong><%:IPv6%>: </strong>'; + html += '<br />'; + } - for (var i = 0; i < ifc.ip6addrs.length; i++) - html += String.format( - '%s%s/%d', - i ? ', ' : '', - ifc.ip6addrs[i].addr.toUpperCase(), - ifc.ip6addrs[i].prefix - ); + if (ifc.ip6addrs && ifc.ip6addrs.length) + { + html += '<strong><%:IPv6%>: </strong>'; - html += '<br />'; - } + for (var i = 0; i < ifc.ip6addrs.length; i++) + html += String.format( + '%s%s/%d', + i ? ', ' : '', + ifc.ip6addrs[i].addr.toUpperCase(), + ifc.ip6addrs[i].prefix + ); - d.innerHTML = html; - } - else if (d) - { - d.innerHTML = '<em><%:Interface not present or not connected yet.%></em>'; + html += '<br />'; } - } - window.setTimeout(func, 5000); + d.innerHTML = html; + } + else if (d) + { + d.innerHTML = '<em><%:Interface not present or not connected yet.%></em>'; + } } - ) - })(); + } + ); //]]></script> <table> diff --git a/modules/admin-full/luasrc/view/admin_network/lease_status.htm b/modules/admin-full/luasrc/view/admin_network/lease_status.htm index 519b63e09..bf5a5c267 100644 --- a/modules/admin-full/luasrc/view/admin_network/lease_status.htm +++ b/modules/admin-full/luasrc/view/admin_network/lease_status.htm @@ -1,56 +1,48 @@ <script type="text/javascript">//<![CDATA[ - var stxhr = new XHR(); - - (function() { - var func = arguments.callee; - - stxhr.get('<%=luci.dispatcher.build_url("admin", "network", "dhcplease_status")%>', null, - function(x, st) + XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "dhcplease_status")%>', null, + function(x, st) + { + var tb = document.getElementById('lease_status_table'); + if (st && tb) { - var tb = document.getElementById('lease_status_table'); - if (st && tb) + /* clear all rows */ + while( tb.rows.length > 1 ) + tb.deleteRow(1); + + for( var i = 0; i < st.length; i++ ) { - /* clear all rows */ - while( tb.rows.length > 1 ) - tb.deleteRow(1); + var timestr; - for( var i = 0; i < st.length; i++ ) + if (st[i].expires <= 0) { - var timestr; - - if (st[i].expires <= 0) - { - timestr = '<em><%:expired%></em>'; - } - else - { - timestr = String.format('%t', st[i].expires); - } - - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - - tr.insertCell(-1).innerHTML = st[i].hostname ? st[i].hostname : '?'; - tr.insertCell(-1).innerHTML = st[i].ipaddr; - tr.insertCell(-1).innerHTML = st[i].macaddr; - tr.insertCell(-1).innerHTML = timestr; + timestr = '<em><%:expired%></em>'; } - - if( tb.rows.length == 1 ) + else { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; + timestr = String.format('%t', st[i].expires); } + + var tr = tb.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); + + tr.insertCell(-1).innerHTML = st[i].hostname ? st[i].hostname : '?'; + tr.insertCell(-1).innerHTML = st[i].ipaddr; + tr.insertCell(-1).innerHTML = st[i].macaddr; + tr.insertCell(-1).innerHTML = timestr; } - window.setTimeout(func, 5000); + if( tb.rows.length == 1 ) + { + var tr = tb.insertRow(-1); + tr.className = 'cbi-section-table-row'; + + var td = tr.insertCell(-1); + td.colSpan = 4; + td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; + } } - ) - })(); + } + ); //]]></script> <fieldset class="cbi-section"> diff --git a/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm b/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm index 06725c1b9..485ad4069 100644 --- a/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm +++ b/modules/admin-full/luasrc/view/admin_network/wifi_overview.htm @@ -119,7 +119,6 @@ $Id$ <script type="text/javascript" src="<%=resource%>/cbi.js"></script> <script type="text/javascript">//<![CDATA[ - var iwxhr = new XHR(); var wifidevs = <%=luci.http.write_json(netdevs)%>; var arptable = <%=luci.http.write_json(arpcache)%>; @@ -147,8 +146,7 @@ $Id$ st.innerHTML = '<em><%:Wireless is restarting...%></em>'; } - var rcxhr = new XHR(); - rcxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/wireless_' + (reconnect ? 'reconnect' : 'shutdown') + '/' + id, null, + XHR.get('<%=luci.dispatcher.build_url("admin", "network")%>/wireless_' + (reconnect ? 'reconnect' : 'shutdown') + '/' + id, null, function(x) { if (s) @@ -166,182 +164,175 @@ $Id$ ); } - (function() { - var func = arguments.callee; - - iwxhr.get('<%=luci.dispatcher.build_url("admin", "network", "wireless_status", table.concat(netlist, ","))%>', null, - function(x, st) + XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "wireless_status", table.concat(netlist, ","))%>', null, + function(x, st) + { + if (st) { - if (st) - { - var assoctable = document.getElementById('iw-assoclist'); - if (assoctable) - while (assoctable.rows.length > 1) - assoctable.rows[1].parentNode.removeChild(assoctable.rows[1]); + var assoctable = document.getElementById('iw-assoclist'); + if (assoctable) + while (assoctable.rows.length > 1) + assoctable.rows[1].parentNode.removeChild(assoctable.rows[1]); - var devup = { }; - var rowstyle = 1; + var devup = { }; + var rowstyle = 1; - for( var i = 0; i < st.length; i++ ) + for( var i = 0; i < st.length; i++ ) + { + var iw = st[i]; + var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel); + var p = iw.quality; + var q = is_assoc ? p : -1; + + var icon; + if (q < 0) + icon = "<%=resource%>/icons/signal-none.png"; + else if (q == 0) + icon = "<%=resource%>/icons/signal-0.png"; + else if (q < 25) + icon = "<%=resource%>/icons/signal-0-25.png"; + else if (q < 50) + icon = "<%=resource%>/icons/signal-25-50.png"; + else if (q < 75) + icon = "<%=resource%>/icons/signal-50-75.png"; + else + icon = "<%=resource%>/icons/signal-75-100.png"; + + if (!devup[wifidevs[iw.id]]) + devup[wifidevs[iw.id]] = is_assoc; + + var sig = document.getElementById(iw.id + '-iw-signal'); + if (sig) + sig.innerHTML = String.format( + '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" /><br />' + + '<small>%d%%</small>', icon, iw.signal, iw.noise, p + ); + + var toggle = document.getElementById(iw.id + '-iw-toggle'); + if (toggle) { - var iw = st[i]; - var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel); - var p = iw.quality; - var q = is_assoc ? p : -1; - - var icon; - if (q < 0) - icon = "<%=resource%>/icons/signal-none.png"; - else if (q == 0) - icon = "<%=resource%>/icons/signal-0.png"; - else if (q < 25) - icon = "<%=resource%>/icons/signal-0-25.png"; - else if (q < 50) - icon = "<%=resource%>/icons/signal-25-50.png"; - else if (q < 75) - icon = "<%=resource%>/icons/signal-50-75.png"; + if (is_assoc) + { + toggle.style.backgroundImage = 'url(<%=resource%>/cbi/reset.gif)'; + toggle.value = '<%:Disable%>'; + toggle.title = '<%:Shutdown this network%>'; + } else - icon = "<%=resource%>/icons/signal-75-100.png"; + { + toggle.style.backgroundImage = 'url(<%=resource%>/cbi/reload.gif)'; + toggle.value = '<%:Enable%>'; + toggle.title = '<%:Activate this network%>'; + } - if (!devup[wifidevs[iw.id]]) - devup[wifidevs[iw.id]] = is_assoc; + toggle.setAttribute('active', is_assoc); + } - var sig = document.getElementById(iw.id + '-iw-signal'); - if (sig) - sig.innerHTML = String.format( - '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" /><br />' + - '<small>%d%%</small>', icon, iw.signal, iw.noise, p + var info = document.getElementById(iw.id + '-iw-status'); + if (info) + { + if (is_assoc) + info.innerHTML = String.format( + '<strong><%:SSID%>:</strong> %h | ' + + '<strong><%:Mode%>:</strong> %s<br />' + + '<strong><%:BSSID%>:</strong> %s | ' + + '<strong><%:Encryption%>:</strong> %s', + iw.ssid, iw.mode, iw.bssid, + iw.encryption ? iw.encryption : '<%:None%>' ); + else + info.innerHTML = String.format( + '<strong><%:SSID%>:</strong> %h | ' + + '<strong><%:Mode%>:</strong> %s<br />' + + '<em>%s</em>', + iw.ssid || '?', iw.mode, + is_reconnecting + ? '<em><%:Wireless is restarting...%></em>' + : '<em><%:Wireless is disabled or not associated%></em>' + ); + } - var toggle = document.getElementById(iw.id + '-iw-toggle'); - if (toggle) - { - if (is_assoc) - { - toggle.style.backgroundImage = 'url(<%=resource%>/cbi/reset.gif)'; - toggle.value = '<%:Disable%>'; - toggle.title = '<%:Shutdown this network%>'; - } - else - { - toggle.style.backgroundImage = 'url(<%=resource%>/cbi/reload.gif)'; - toggle.value = '<%:Enable%>'; - toggle.title = '<%:Activate this network%>'; - - } - - toggle.setAttribute('active', is_assoc); - } + var dev = document.getElementById(wifidevs[iw.id] + '-iw-devinfo'); + if (dev) + { + if (is_assoc) + dev.innerHTML = String.format( + '<strong><%:Channel%>:</strong> %s (%s GHz) | ' + + '<strong><%:Bitrate%>:</strong> %s Mb/s', + iw.channel ? iw.channel : '?', + iw.frequency ? iw.frequency : '?', + iw.bitrate ? iw.bitrate : '?' + ); + else + dev.innerHTML = ''; + } - var info = document.getElementById(iw.id + '-iw-status'); - if (info) + if (assoctable) + { + var assoclist = [ ]; + for( var bssid in iw.assoclist ) { - if (is_assoc) - info.innerHTML = String.format( - '<strong><%:SSID%>:</strong> %h | ' + - '<strong><%:Mode%>:</strong> %s<br />' + - '<strong><%:BSSID%>:</strong> %s | ' + - '<strong><%:Encryption%>:</strong> %s', - iw.ssid, iw.mode, iw.bssid, - iw.encryption ? iw.encryption : '<%:None%>' - ); - else - info.innerHTML = String.format( - '<strong><%:SSID%>:</strong> %h | ' + - '<strong><%:Mode%>:</strong> %s<br />' + - '<em>%s</em>', - iw.ssid || '?', iw.mode, - is_reconnecting - ? '<em><%:Wireless is restarting...%></em>' - : '<em><%:Wireless is disabled or not associated%></em>' - ); + assoclist.push(iw.assoclist[bssid]); + assoclist[assoclist.length-1].bssid = bssid; } - var dev = document.getElementById(wifidevs[iw.id] + '-iw-devinfo'); - if (dev) + assoclist.sort(function(a, b) { a.bssid < b.bssid }); + + for( var j = 0; j < assoclist.length; j++ ) { - if (is_assoc) - dev.innerHTML = String.format( - '<strong><%:Channel%>:</strong> %s (%s GHz) | ' + - '<strong><%:Bitrate%>:</strong> %s Mb/s', - iw.channel ? iw.channel : '?', - iw.frequency ? iw.frequency : '?', - iw.bitrate ? iw.bitrate : '?' - ); + var tr = assoctable.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + rowstyle; + + var icon; + var q = (-1 * (assoclist[j].noise - assoclist[j].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 - dev.innerHTML = ''; - } + icon = "<%=resource%>/icons/signal-75-100.png"; - if (assoctable) - { - var assoclist = [ ]; - for( var bssid in iw.assoclist ) - { - assoclist.push(iw.assoclist[bssid]); - assoclist[assoclist.length-1].bssid = bssid; - } - - assoclist.sort(function(a, b) { a.bssid < b.bssid }); - - for( var j = 0; j < assoclist.length; j++ ) - { - var tr = assoctable.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + rowstyle; - - var icon; - var q = (-1 * (assoclist[j].noise - assoclist[j].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[j].signal, assoclist[j].noise - ); - - tr.insertCell(-1).innerHTML = iw.ssid ? iw.ssid : '?'; - tr.insertCell(-1).innerHTML = assoclist[j].bssid; - - tr.insertCell(-1).innerHTML = arptable[assoclist[j].bssid] - ? arptable[assoclist[j].bssid] : '?'; - - tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[j].signal); - tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[j].noise); - - rowstyle = (rowstyle == 1) ? 2 : 1; - } - } - } + tr.insertCell(-1).innerHTML = String.format( + '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />', + icon, assoclist[j].signal, assoclist[j].noise + ); - if (assoctable && assoctable.rows.length == 1) - { - var tr = assoctable.insertRow(-1); - tr.className = 'cbi-section-table-row'; + tr.insertCell(-1).innerHTML = iw.ssid ? iw.ssid : '?'; + tr.insertCell(-1).innerHTML = assoclist[j].bssid; - var td = tr.insertCell(-1); - td.colSpan = 6; - td.innerHTML = '<br /><em><%:No information available%></em>'; - } + tr.insertCell(-1).innerHTML = arptable[assoclist[j].bssid] + ? arptable[assoclist[j].bssid] : '?'; - for (var dev in devup) - { - var img = document.getElementById(dev + '-iw-upstate'); - if (img) - img.src = '<%=resource%>/icons/wifi_big' + (devup[dev] ? '' : '_disabled') + '.png'; + tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[j].signal); + tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[j].noise); + + rowstyle = (rowstyle == 1) ? 2 : 1; + } } } - window.setTimeout(func, 5000); + if (assoctable && assoctable.rows.length == 1) + { + var tr = assoctable.insertRow(-1); + tr.className = 'cbi-section-table-row'; + + var td = tr.insertCell(-1); + td.colSpan = 6; + td.innerHTML = '<br /><em><%:No information available%></em>'; + } + + for (var dev in devup) + { + var img = document.getElementById(dev + '-iw-upstate'); + if (img) + img.src = '<%=resource%>/icons/wifi_big' + (devup[dev] ? '' : '_disabled') + '.png'; + } } - ) - })(); + } + ); //]]></script> <h2><a id="content" name="content"><%:Wireless Overview%></a></h2> diff --git a/modules/admin-full/luasrc/view/admin_network/wifi_status.htm b/modules/admin-full/luasrc/view/admin_network/wifi_status.htm index 76635bf70..900071b89 100644 --- a/modules/admin-full/luasrc/view/admin_network/wifi_status.htm +++ b/modules/admin-full/luasrc/view/admin_network/wifi_status.htm @@ -1,73 +1,65 @@ <%+cbi/valueheader%> <script type="text/javascript">//<![CDATA[ - var iwxhr = new XHR(); - - (function() { - var func = arguments.callee; - - iwxhr.get('<%=luci.dispatcher.build_url("admin", "network", "wireless_status", self.ifname)%>', null, - function(x, iw) + XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "wireless_status", self.ifname)%>', null, + function(x, iw) + { + if (iw && (iw = iw[0])) { - if (iw && (iw = iw[0])) - { - var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel); - var p = iw.quality; - var q = is_assoc ? p : -1; - - var icon; - if (q < 0) - icon = "<%=resource%>/icons/signal-none.png"; - else if (q == 0) - icon = "<%=resource%>/icons/signal-0.png"; - else if (q < 25) - icon = "<%=resource%>/icons/signal-0-25.png"; - else if (q < 50) - icon = "<%=resource%>/icons/signal-25-50.png"; - else if (q < 75) - icon = "<%=resource%>/icons/signal-50-75.png"; - else - icon = "<%=resource%>/icons/signal-75-100.png"; + var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel); + var p = iw.quality; + var q = is_assoc ? p : -1; - var s = document.getElementById('<%=self.option%>-iw-signal'); - if (s) - s.innerHTML = String.format( - '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" /><br />' + - '<small>%d%%</small>', icon, iw.signal, iw.noise, p - ); + var icon; + if (q < 0) + icon = "<%=resource%>/icons/signal-none.png"; + else if (q == 0) + icon = "<%=resource%>/icons/signal-0.png"; + else if (q < 25) + icon = "<%=resource%>/icons/signal-0-25.png"; + else if (q < 50) + icon = "<%=resource%>/icons/signal-25-50.png"; + else if (q < 75) + icon = "<%=resource%>/icons/signal-50-75.png"; + else + icon = "<%=resource%>/icons/signal-75-100.png"; - var d = document.getElementById('<%=self.option%>-iw-description'); - if (d && is_assoc) - d.innerHTML = String.format( - '<strong><%:Mode%>:</strong> %s | ' + - '<strong><%:SSID%>:</strong> %h<br />' + - '<strong><%:BSSID%>:</strong> %s | ' + - '<strong><%:Encryption%>:</strong> %s<br />' + - '<strong><%:Channel%>:</strong> %d (%.3f GHz) | ' + - '<strong><%:Tx-Power%>:</strong> %d dBm<br />' + - '<strong><%:Signal%>:</strong> %d dBm | ' + - '<strong><%:Noise%>:</strong> %d dBm<br />' + - '<strong><%:Bit Rate%>:</strong> %.1f MBit/s | ' + - '<strong><%:Country%>:</strong> %s', - iw.mode, iw.ssid, iw.bssid, - iw.encryption ? iw.encryption : '<%:None%>', - iw.channel, iw.frequency ? iw.frequency : 0, - iw.txpower, iw.signal, iw.noise, - iw.bitrate ? iw.bitrate : 0, iw.country - ); - else if (d) - d.innerHTML = String.format( - '<strong><%:SSID%>:</strong> %h | ' + - '<strong><%:Mode%>:</strong> %s<br />' + - '<em><%:Wireless is disabled or not associated%></em>', - iw.ssid || '?', iw.mode - ); - } + var s = document.getElementById('<%=self.option%>-iw-signal'); + if (s) + s.innerHTML = String.format( + '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" /><br />' + + '<small>%d%%</small>', icon, iw.signal, iw.noise, p + ); - window.setTimeout(func, 5000); + var d = document.getElementById('<%=self.option%>-iw-description'); + if (d && is_assoc) + d.innerHTML = String.format( + '<strong><%:Mode%>:</strong> %s | ' + + '<strong><%:SSID%>:</strong> %h<br />' + + '<strong><%:BSSID%>:</strong> %s | ' + + '<strong><%:Encryption%>:</strong> %s<br />' + + '<strong><%:Channel%>:</strong> %d (%.3f GHz) | ' + + '<strong><%:Tx-Power%>:</strong> %d dBm<br />' + + '<strong><%:Signal%>:</strong> %d dBm | ' + + '<strong><%:Noise%>:</strong> %d dBm<br />' + + '<strong><%:Bit Rate%>:</strong> %.1f MBit/s | ' + + '<strong><%:Country%>:</strong> %s', + iw.mode, iw.ssid, iw.bssid, + iw.encryption ? iw.encryption : '<%:None%>', + iw.channel, iw.frequency ? iw.frequency : 0, + iw.txpower, iw.signal, iw.noise, + iw.bitrate ? iw.bitrate : 0, iw.country + ); + else if (d) + d.innerHTML = String.format( + '<strong><%:SSID%>:</strong> %h | ' + + '<strong><%:Mode%>:</strong> %s<br />' + + '<em><%:Wireless is disabled or not associated%></em>', + iw.ssid || '?', iw.mode + ); } - ) - })(); + } + ); //]]></script> <table> 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> |