luci: initial 802.11ac support
[project/luci.git] / modules / admin-full / luasrc / view / admin_network / wifi_overview.htm
index 1f59a18..8fb6483 100644 (file)
@@ -1,7 +1,7 @@
 <%#
 LuCI - Lua Configuration Interface
 Copyright 2008-2009 Steven Barth <steven@midlink.org>
-Copyright 2008-2011 Jo-Philipp Wich <xm@subsignal.org>
+Copyright 2008-2013 Jo-Philipp Wich <xm@subsignal.org>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -9,8 +9,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 
 <%-
@@ -25,19 +23,25 @@ $Id$
 
        ntm.init(uci)
 
-       function guess_wifi_hw(ifname)
+       function guess_wifi_hw(dev)
                local bands = ""
+               local ifname = dev:name()
                local name, idx = ifname:match("^([a-z]+)(%d+)")
                idx = tonumber(idx)
 
                if has_iwinfo then
-                       local iw = luci.sys.wifi.getiwinfo(ifname)
-                       local bl = iw.hwmodelist
+                       local bl = dev.iwinfo.hwmodelist
                        if bl and next(bl) then
                                if bl.a then bands = bands .. "a" end
                                if bl.b then bands = bands .. "b" end
                                if bl.g then bands = bands .. "g" end
                                if bl.n then bands = bands .. "n" end
+                               if bl.ac then bands = bands .. "ac" end
+                       end
+
+                       local hw = dev.iwinfo.hardware_name
+                       if hw then
+                               return "%s 802.11%s" %{ hw, bands }
                        end
                end
 
@@ -124,10 +128,14 @@ $Id$
 
        var is_reconnecting = false;
 
+       function nowrap(s) {
+               return s.replace(/ /g, '&#160;');
+       }
+
        function wifi_shutdown(id, toggle) {
                var reconnect = (toggle.getAttribute('active') == 'false');
 
-               if (!reconnect && !confirm(String.format('<%:Really shutdown network ?\nYou might lose access to this device if you are connected via this interface.%>')))
+               if (!reconnect && !confirm(String.format('<%:Really shut down network?\nYou might lose access to this device if you are connected via this interface.%>')))
                        return;
 
                is_reconnecting = true;
@@ -180,7 +188,7 @@ $Id$
                                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 is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel && iw.mode != 'Unknown');
                                        var p = iw.quality;
                                        var q = is_assoc ? p : -1;
 
@@ -211,7 +219,7 @@ $Id$
                                        var toggle = document.getElementById(iw.id + '-iw-toggle');
                                        if (toggle)
                                        {
-                                               if (is_assoc)
+                                               if (!iw.disabled)
                                                {
                                                        toggle.className = 'cbi-button cbi-button-reset';
                                                        toggle.value = '<%:Disable%>';
@@ -300,24 +308,24 @@ $Id$
                                                                icon, assoclist[j].signal, assoclist[j].noise
                                                        );
 
-                                                       tr.insertCell(-1).innerHTML = String.format('%h', iw.ssid ? iw.ssid : '?');
+                                                       tr.insertCell(-1).innerHTML = nowrap(String.format('%h', 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);
+                                                       tr.insertCell(-1).innerHTML = nowrap(String.format('%d <%:dBm%>', assoclist[j].signal));
+                                                       tr.insertCell(-1).innerHTML = nowrap(String.format('%d <%:dBm%>', assoclist[j].noise));
 
-                                                       tr.insertCell(-1).innerHTML = (assoclist[j].rx_mcs > -1)
+                                                       tr.insertCell(-1).innerHTML = nowrap((assoclist[j].rx_mcs > -1)
                                                                ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[j].rx_rate / 1000, assoclist[j].rx_mcs, assoclist[j].rx_40mhz ? 40 : 20)
                                                                : String.format('%.1f <%:Mbit/s%>', assoclist[j].rx_rate / 1000)
-                                                       ;
+                                                       );
 
-                                                       tr.insertCell(-1).innerHTML = (assoclist[j].tx_mcs > -1)
+                                                       tr.insertCell(-1).innerHTML = nowrap((assoclist[j].tx_mcs > -1)
                                                                ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[j].tx_rate / 1000, assoclist[j].tx_mcs, assoclist[j].tx_40mhz ? 40 : 20)
                                                                : String.format('%.1f <%:Mbit/s%>', assoclist[j].tx_rate / 1000)
-                                                       ;
+                                                       );
 
                                                        rowstyle = (rowstyle == 1) ? 2 : 1;
                                                }
@@ -363,7 +371,7 @@ $Id$
                        <tr>
                                <td style="width:34px"><img src="<%=resource%>/icons/wifi_big_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td>
                                <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)%> (<%=dev:name()%>)</strong></big><br />
                                        <span id="<%=dev:name()%>-iw-devinfo"></span>
                                </td>
                                <td style="width:310px;text-align:right">