modules/admin-full: properly handle disabled radios in live overview

This commit is contained in:
Jo-Philipp Wich 2010-11-08 22:40:04 +00:00
parent b9c9b7ffeb
commit 97e27a0bcf
2 changed files with 43 additions and 20 deletions

View file

@ -224,14 +224,15 @@ end
function wifi_status() function wifi_status()
local path = luci.dispatcher.context.requestpath local path = luci.dispatcher.context.requestpath
local arp = luci.sys.net.arptable()
local rv = { } local rv = { }
local dev local dev
for dev in path[#path]:gmatch("[%w%.%-]+") do for dev in path[#path]:gmatch("[%w%.%-]+") do
local j = { id = dev }
local iw = luci.sys.wifi.getiwinfo(dev) local iw = luci.sys.wifi.getiwinfo(dev)
if iw then if iw then
local f local f
local j = { id = dev }
for _, f in ipairs({ for _, f in ipairs({
"channel", "frequency", "txpower", "bitrate", "signal", "noise", "channel", "frequency", "txpower", "bitrate", "signal", "noise",
"quality", "quality_max", "mode", "ssid", "bssid", "country", "quality", "quality_max", "mode", "ssid", "bssid", "country",
@ -239,9 +240,8 @@ function wifi_status()
}) do }) do
j[f] = iw[f] j[f] = iw[f]
end end
rv[#rv+1] = j
end end
rv[#rv+1] = j
end end
if #rv > 0 then if #rv > 0 then

View file

@ -109,11 +109,14 @@ $Id$
while (assoctable.rows.length > 1) while (assoctable.rows.length > 1)
assoctable.rows[1].parentNode.removeChild(assoctable.rows[1]); assoctable.rows[1].parentNode.removeChild(assoctable.rows[1]);
var devup = { };
for( var i = 0; i < st.length; i++ ) for( var i = 0; i < st.length; i++ )
{ {
var iw = st[i]; var iw = st[i];
var is_assoc = (iw.bssid && iw.channel);
var p = (100 / iw.quality_max * iw.quality); var p = (100 / iw.quality_max * iw.quality);
var q = (iw.bssid && iw.channel) ? p : -1; var q = is_assoc ? p : -1;
var icon; var icon;
if (q < 0) if (q < 0)
@ -129,6 +132,9 @@ $Id$
else else
icon = "<%=resource%>/icons/signal-75-100.png"; 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'); var sig = document.getElementById(iw.id + '-iw-signal');
if (sig) if (sig)
sig.innerHTML = String.format( sig.innerHTML = String.format(
@ -138,6 +144,8 @@ $Id$
var info = document.getElementById(iw.id + '-iw-status'); var info = document.getElementById(iw.id + '-iw-status');
if (info) if (info)
{
if (is_assoc)
info.innerHTML = String.format( info.innerHTML = String.format(
'<strong><%:SSID%>:</strong> %s | ' + '<strong><%:SSID%>:</strong> %s | ' +
'<strong><%:Mode%>:</strong> %s<br />' + '<strong><%:Mode%>:</strong> %s<br />' +
@ -146,9 +154,14 @@ $Id$
iw.ssid, iw.mode, iw.bssid, iw.ssid, iw.mode, iw.bssid,
iw.encryption ? iw.encryption.description : '<%:None%>' iw.encryption ? iw.encryption.description : '<%:None%>'
); );
else
info.innerHTML = '<em><%:Wireless is disabled or not associated%></em>';
}
var dev = document.getElementById(wifidevs[iw.id] + '-iw-devinfo'); var dev = document.getElementById(wifidevs[iw.id] + '-iw-devinfo');
if (dev) if (dev)
{
if (is_assoc)
dev.innerHTML = String.format( dev.innerHTML = String.format(
'<strong><%:Channel%>:</strong> %s (%s GHz) | ' + '<strong><%:Channel%>:</strong> %s (%s GHz) | ' +
'<strong><%:Bitrate%>:</strong> %s Mb/s', '<strong><%:Bitrate%>:</strong> %s Mb/s',
@ -156,6 +169,9 @@ $Id$
iw.frequency ? iw.frequency / 1000 : '?', iw.frequency ? iw.frequency / 1000 : '?',
iw.bitrate ? iw.bitrate / 1000 : '?' iw.bitrate ? iw.bitrate / 1000 : '?'
); );
else
dev.innerHTML = '';
}
if (assoctable) if (assoctable)
{ {
@ -218,6 +234,13 @@ $Id$
assoctable.rows[0].parentNode.appendChild(tr); assoctable.rows[0].parentNode.appendChild(tr);
} }
for (var dev in devup)
{
var img = document.getElementById(dev + '-iw-upstate');
if (img)
img.src = '<%=resource%>/icons/wifi' + (devup[dev] ? '' : '_disabled') + '.png';
}
} }
} }
) )
@ -236,7 +259,7 @@ $Id$
<table class="cbi-section-table" style="margin:10px; empty-cells:hide"> <table class="cbi-section-table" style="margin:10px; empty-cells:hide">
<!-- physical device --> <!-- physical device -->
<tr> <tr>
<td style="width:34px"><img src="<%=resource%>/icons/wifi<%=dev:is_up() and "" or "_disabled"%>.png" style="float:left; margin-right:10px" /></td> <td style="width:34px"><img src="<%=resource%>/icons/wifi_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td>
<td colspan="2" style="text-align:left"> <td colspan="2" style="text-align:left">
<big><strong><%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)</strong></big><br /> <big><strong><%=guess_wifi_hw(dev:name())%> (<%=dev:name()%>)</strong></big><br />
<span id="<%=dev:name()%>-iw-devinfo"></span> <span id="<%=dev:name()%>-iw-devinfo"></span>