123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <%+cbi/valueheader%>
- <script type="text/javascript">//<![CDATA[
- var freqlist = <%= luci.http.write_json(self.iwinfo.freqlist) %>;
- var hwmodes = <%= luci.http.write_json(self.iwinfo.hwmodelist or {}) %>;
- var htmodes = <%= luci.http.write_json(self.iwinfo.htmodelist) %>;
- var acs = <%= luci.http.write_json(self.hostapd_acs or 0) %>;
- var channels = {
- '11g': [
- 'auto', 'auto', true
- ],
- '11a': [
- 'auto', 'auto', true
- ]
- };
- if (acs < 1) {
- channels[(freqlist[freqlist.length - 1].mhz > 2484) ? '11a' : '11g'].length = 0;
- }
- for (var i = 0; i < freqlist.length; i++)
- channels[(freqlist[i].mhz > 2484) ? '11a' : '11g'].push(
- freqlist[i].channel,
- '%d (%d MHz)'.format(freqlist[i].channel, freqlist[i].mhz),
- !freqlist[i].restricted
- );
- var modes = [
- '', 'Legacy', true,
- 'n', 'N', hwmodes.n,
- 'ac', 'AC', hwmodes.ac,
- 'ax', 'AX', hwmodes.ax,
- 'be', 'BE', hwmodes.be
- ];
- var htmodes = {
- '': [
- '', '-', true
- ],
- 'n': [
- 'HT20', '20 MHz', htmodes.HT20,
- 'HT40', '40 MHz', htmodes.HT40
- ],
- 'ac': [
- 'VHT20', '20 MHz', htmodes.VHT20,
- 'VHT40', '40 MHz', htmodes.VHT40,
- 'VHT80', '80 MHz', htmodes.VHT80,
- 'VHT160', '160 MHz', htmodes.VHT160
- ],
- 'ax': [
- 'HE20', '20 MHz', htmodes.HE20,
- 'HE40', '40 MHz', htmodes.HE40,
- 'HE80', '80 MHz', htmodes.HE80,
- 'HE160', '160 MHz', htmodes.HE160
- ],
- 'be': [
- 'EHT20', '20 MHz', htmodes.EHT20,
- 'EHT40', '40 MHz', htmodes.EHT40,
- 'EHT80', '80 MHz', htmodes.EHT80,
- 'EHT160', '160 MHz', htmodes.EHT160,
- 'EHT320', '320 MHz', htmodes.EHT320
- ]
- };
- var bands = {
- '': [
- '11g', '2.4 GHz', (channels['11g'].length > 3),
- '11a', '5 GHz', (channels['11a'].length > 3)
- ],
- 'n': [
- '11g', '2.4 GHz', (channels['11g'].length > 3),
- '11a', '5 GHz', (channels['11a'].length > 3)
- ],
- 'ac': [
- '11a', '5 GHz', true
- ],
- 'ax': [
- '11a', '2 GHz', true,
- '11a', '5 GHz', true
- ],
- 'be': [
- '11a', '2 GHz', true,
- '11a', '5 GHz', true,
- '11a', '6 GHz', true
- ]
- };
- function cbi_set_values(sel, vals)
- {
- if (sel.vals)
- sel.vals.selected = sel.selectedIndex;
- while (sel.options[0])
- sel.remove(0);
- for (var i = 0; vals && i < vals.length; i += 3)
- {
- if (!vals[i+2])
- continue;
- var opt = document.createElement('option');
- opt.value = vals[i+0];
- opt.text = vals[i+1];
- sel.add(opt);
- }
- if (!isNaN(vals.selected))
- sel.selectedIndex = vals.selected;
- sel.parentNode.style.display = (sel.options.length <= 1) ? 'none' : '';
- sel.vals = vals;
- }
- function cbi_toggle_wifi_mode(id)
- {
- cbi_toggle_wifi_htmode(id);
- cbi_toggle_wifi_band(id);
- }
- function cbi_toggle_wifi_htmode(id)
- {
- var mode = document.getElementById(id + '.mode');
- var bwdt = document.getElementById(id + '.htmode');
- cbi_set_values(bwdt, htmodes[mode.value]);
- }
- function cbi_toggle_wifi_band(id)
- {
- var mode = document.getElementById(id + '.mode');
- var band = document.getElementById(id + '.band');
- cbi_set_values(band, bands[mode.value]);
- cbi_toggle_wifi_channel(id);
- }
- function cbi_toggle_wifi_channel(id)
- {
- var band = document.getElementById(id + '.band');
- var chan = document.getElementById(id + '.channel');
- cbi_set_values(chan, channels[band.value]);
- }
- function cbi_init_wifi(id)
- {
- var mode = document.getElementById(id + '.mode');
- var band = document.getElementById(id + '.band');
- var chan = document.getElementById(id + '.channel');
- var bwdt = document.getElementById(id + '.htmode');
- cbi_set_values(mode, modes);
- if (/EHT20|EHT40|EHT80|EHT160|EHT320/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
- mode.value = 'be';
- else if (/HE20|HE40|HE80|HE160/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
- mode.value = 'ax';
- else if (/VHT20|VHT40|VHT80|VHT160/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
- mode.value = 'ac';
- else if (/HT20|HT40/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
- mode.value = 'n';
- else
- mode.value = '';
- cbi_toggle_wifi_mode(id);
- if (/a/.test(<%= luci.http.write_json(self.map:get(section, "hwmode")) %>))
- band.value = '11a';
- else
- band.value = '11g';
- cbi_toggle_wifi_band(id);
- bwdt.value = <%= luci.http.write_json(self.map:get(section, "htmode")) %>;
- chan.value = <%= luci.http.write_json(self.map:get(section, "channel")) %>;
- }
- //]]></script>
- <label style="float:left; margin-right:3px">
- <%:Mode%><br />
- <select style="width:auto" id="<%= cbid %>.mode" name="<%= cbid %>.mode" onchange="cbi_toggle_wifi_mode('<%= cbid %>')"></select>
- </label>
- <label style="float:left; margin-right:3px">
- <%:Band%><br />
- <select style="width:auto" id="<%= cbid %>.band" name="<%= cbid %>.band" onchange="cbi_toggle_wifi_band('<%= cbid %>')"></select>
- </label>
- <label style="float:left; margin-right:3px">
- <%:Channel%><br />
- <select style="width:auto" id="<%= cbid %>.channel" name="<%= cbid %>.channel"></select>
- </label>
- <label style="float:left; margin-right:3px">
- <%:Width%><br />
- <select style="width:auto" id="<%= cbid %>.htmode" name="<%= cbid %>.htmode"></select>
- </label>
- <br style="clear:left" />
- <script type="text/javascript">cbi_init_wifi('<%= cbid %>');</script>
- <%+cbi/valuefooter%>
|