luci-app-dawn: network overview rewrite with div tables
[oweals/luci.git] / applications / luci-app-dawn / luasrc / model / cbi / dawn / dawn_network.lua
1 m = Map("dawn", "Network Overview", translate("Network Overview"))
2 m.pageaction = false
3
4 s = m:section(NamedSection, "__networkoverview__")
5
6 function s.render(self, sid)
7         local tpl = require "luci.template"
8         local json = require "luci.json"
9         local utl = require "luci.util"
10         tpl.render_string([[
11                 <%
12             local status = require "luci.tools.ieee80211"
13                 local utl = require "luci.util"
14                 local sys = require "luci.sys"
15                 local hosts = sys.net.host_hints()
16                 local stat = utl.ubus("dawn", "get_network", { })
17                 local name, macs
18                 for name, macs in pairs(stat) do
19                 %>
20
21                         <div class="cbi-section-node">
22                 <h3>SSID: <%= name %></h3>
23                         <div class="table" id=network_overview_main">
24                                 <div class="tr table-titles">
25                                         <div class="th">AP</div>
26                                         <div class="th">Clients</div>
27                                 </div>
28                         <%
29                         local mac, data
30                         for mac, data in pairs(macs) do
31                         %>
32                                 <div class="tr">
33                                         <div class="td" style="vertical-align: top;">
34                                                 <div class="table" id="ap-<%= mac %>">
35                                                         <div class="tr table-titles">
36                                                                 <div class="th">MAC</div>
37                                                                 <div class="th">Utilization</div>
38                                                                 <div class="th">Frequency</div>
39                                                                 <div class="th">Stations</div>
40                                                                 <div class="th">HT Sup</div>
41                                                                 <div class="th">VHT Sup</div>
42                                                         </div>
43                                                         <div class="tr">
44                                                                 <div class="td"><%= mac %></div>
45                                                                 <div class="td"><%= "%.2f" %(data.channel_utilization / 2.55) %> %</div>
46                                                                 <div class="td"><%= "%.3f" %( data.freq / 1000 ) %> GHz (Channel: <%= "%d" %( status.frequency_to_channel(data.freq) ) %>)</div>
47                                                                 <div class="td"><%= "%d" %data.num_sta %></div>
48                                                                 <div class="td"><%= (data.ht_support == true) and "available" or "not available" %></div>
49                                                                 <div class="td"><%= (data.vht_support == true) and "available" or "not available" %></div>
50                                                         </div>
51                                                         </div>
52                                                 </div>
53                                         <div class="td" style="vertical-align: top;">
54                                                 <div class="table" id="clients-<%= mac %>">
55                                                         <div class="tr table-titles">
56                                                                 <div class="th">MAC</div>
57                                                                 <div class="th">HT</div>
58                                                                 <div class="th">VHT</div>
59                                                                 <div class="th">Signal</div>
60                                                         </div>
61                                                         <%
62                                                         local mac2, data2
63                                                         for clientmac, clientvals in pairs(data) do
64                                                                 if (type(clientvals) == "table") then
65                                                         %>
66                                                                 <div class="tr">
67                                                                         <div class="td"><%= clientmac %></div>
68                                                                         <div class="td"><%= (clientvals.ht == true) and "available" or "not available" %></div>
69                                                                         <div class="td"><%= (clientvals.vht == true) and "available" or "not available" %></div>
70                                                                         <div class="td"><%= "%d" %clientvals.signal %></div>
71                                                                 </div>
72                                                                 <%
73                                                                 end
74                                                                 %>
75                                                         <%
76                                                         end
77                                                         %>
78                                                         </div>
79                                                 </div>
80                                         </div>
81                         <%
82                         end
83                         %>
84                         </div>
85                         </div>
86                 <%
87                 end
88                 %>
89         ]])
90 end
91
92 return m