summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/luasrc/view/wifi_assoclist.htm
blob: 700d998ad8fb309b19071876c6ef6227248d0879 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<script type="text/javascript">//<![CDATA[
	function wifirate(bss, rx) {
		var p = rx ? 'rx_' : 'tx_',
		    s = '%.1f <%:Mbit/s%>, %d<%:MHz%>'
					.format(bss[p+'rate'] / 1000, bss[p+'mhz']),
		    ht = bss[p+'ht'], vht = bss[p+'vht'],
			mhz = bss[p+'mhz'], nss = bss[p+'nss'],
			mcs = bss[p+'mcs'], sgi = bss[p+'short_gi'];

		if (ht || vht) {
			if (vht) s += ', VHT-MCS %d'.format(mcs);
			if (nss) s += ', VHT-NSS %d'.format(nss);
			if (ht)  s += ', MCS %s'.format(mcs);
			if (sgi) s += ', <%:Short GI%>';
		}

		return s;
	}

	XHR.poll(5, '<%=url('admin/wireless_assoclist')%>', null,
		function(x, st)
		{
			var tb = document.getElementById('wifi_assoclist_table');
			if (st && tb)
			{
				var rows = [];

				st.forEach(function(bss) {
					var icon;
					var q = (-1 * (bss.noise - bss.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";

					rows.push([
						'<span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> <a href="%s">%h</a><small>&#160;(%h)</small></span>'.format(
							bss.radio,
							bss.link,
							bss.name,
							bss.ifname),
						bss.bssid,
						bss.host_hint ? '%h (%h)'.format(bss.host_name || '?', bss.host_hint) : (bss.host_name || '?'),
						'<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>'.format(
							bss.signal,
							bss.noise,
							bss.signal - bss.noise,
							icon,
							bss.signal,
							bss.noise),
						E('span', {}, [
							E('span', wifirate(bss, true)),
							E('br'),
							E('span', wifirate(bss, false))
						])
					]);
				});

				cbi_update_table(tb, rows, '<em><%:No information available%></em>');
			}
		}
	);
//]]></script>

<div class="table" id="wifi_assoclist_table">
	<div class="tr table-titles">
		<div class="th nowrap"><%:Network%></div>
		<div class="th hide-xs"><%:MAC-Address%></div>
		<div class="th nowrap"><%:Host%></div>
		<div class="th nowrap"><%:Signal%> / <%:Noise%></div>
		<div class="th nowrap"><%:RX Rate%> / <%:TX Rate%></div>
	</div>
	<div class="tr placeholder">
		<div class="td"><em><%:Collecting data...%></em></div>
	</div>
</div>