update app
31
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css
Executable file → Normal file
|
@ -8,7 +8,6 @@
|
|||
|
||||
.Dashboard h3 {
|
||||
color:#000;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.Dashboard hr {
|
||||
|
@ -21,7 +20,7 @@
|
|||
}
|
||||
|
||||
.Dashboard .box-s1 {
|
||||
min-height: 550px;
|
||||
min-height: 466px;
|
||||
}
|
||||
|
||||
.Dashboard .internet-status-self .internet-status-info .title {
|
||||
|
@ -33,13 +32,6 @@
|
|||
background-color: #e0e0e0;
|
||||
}
|
||||
|
||||
.Dashboard div > table > tbody > tr:nth-of-type(2n), div > .table > .tr:nth-of-type(2n) {
|
||||
background-color: transparent;
|
||||
}
|
||||
.Dashboard .tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.Dashboard .title {
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -109,11 +101,11 @@
|
|||
}
|
||||
|
||||
.Dashboard .internet-status-self .settings-info p:first-child span:first-child{
|
||||
font-size: 12px;
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
//.Dashboard .internet-status-self .settings-info p:first-child span:first-child,
|
||||
.Dashboard .internet-status-self .settings-info p:nth-child(2) span:first-child,
|
||||
.Dashboard .router-status-wifi .wifi-info .settings-info p:first-child span:first-child,
|
||||
.Dashboard .router-status-wifi .wifi-info .settings-info p:nth-child(2) span:first-child{
|
||||
font-weight: 700;
|
||||
|
@ -128,10 +120,11 @@
|
|||
.Dashboard .settings-info p span:nth-child(2){
|
||||
display: inline-block;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
max-height: 16px;
|
||||
position: relative;
|
||||
top:2px;
|
||||
}
|
||||
|
||||
.Dashboard .settings-info p span:nth-child(2).label {
|
||||
padding: 1px 4px 1px 4px;
|
||||
font-size: 9.75px;
|
||||
}
|
||||
|
||||
.Dashboard .router-status-info .settings-info p span:nth-child(2){
|
||||
|
@ -199,14 +192,6 @@
|
|||
border-bottom:1px solid rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
.Dashboard .label-success {
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
.Dashboard .label-danger {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
/**
|
||||
* Responsive
|
||||
**/
|
||||
|
|
0
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg
Executable file → Normal file
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 452 B |
0
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg
Executable file → Normal file
Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 250 B |
0
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg
Executable file → Normal file
Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 250 B |
0
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg
Executable file → Normal file
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 315 B |
0
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg
Executable file → Normal file
Before Width: | Height: | Size: 268 B After Width: | Height: | Size: 268 B |
222
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js
Executable file → Normal file
|
@ -14,24 +14,16 @@ var callSystemInfo = rpc.declare({
|
|||
method: 'info'
|
||||
});
|
||||
|
||||
var callOpenMPTCProuterInfo = rpc.declare({
|
||||
object: 'openmptcprouter',
|
||||
method: 'status'
|
||||
});
|
||||
|
||||
|
||||
return baseclass.extend({
|
||||
|
||||
params: [],
|
||||
|
||||
formatBytes: function(a,b=2){if(0===a)return"0 Bytes";const c=0>b?0:b,d=Math.floor(Math.log(a)/Math.log(1024));return parseFloat((a/Math.pow(1024,d)).toFixed(c))+" "+["Bytes","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"][d]},
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
network.getWANNetworks(),
|
||||
network.getWAN6Networks(),
|
||||
L.resolveDefault(callSystemBoard(), {}),
|
||||
L.resolveDefault(callSystemInfo(), {}),
|
||||
L.resolveDefault(callOpenMPTCProuterInfo(), {})
|
||||
L.resolveDefault(callSystemInfo(), {})
|
||||
]);
|
||||
},
|
||||
|
||||
|
@ -44,7 +36,7 @@ return baseclass.extend({
|
|||
var container_item = E('div', { 'class': 'settings-info'});
|
||||
|
||||
if ('internet' == type) {
|
||||
icon = (data.internet.v4.connected.value || data.internet.v6.connected.value) ? type : 'not-internet';
|
||||
icon = (data.v4.connected.value || data.v6.connected.value) ? type : 'not-internet';
|
||||
}
|
||||
|
||||
container_box.appendChild(E('div', { 'class': 'title'}, [
|
||||
|
@ -60,45 +52,19 @@ return baseclass.extend({
|
|||
container_box.appendChild(E('hr'));
|
||||
|
||||
if ('internet' == type) {
|
||||
|
||||
var container_internet_v4 = E('div');
|
||||
var container_internet_v6 = E('div');
|
||||
var container_internet_vps = E('div');
|
||||
|
||||
for(var idx in data['vps']) {
|
||||
var classname = ver,
|
||||
suppelements = '',
|
||||
visible = data['vps'][idx].visible;
|
||||
if ('title' === idx) {
|
||||
container_internet_vps.appendChild(
|
||||
E('p', { 'class': 'mt-2'}, [
|
||||
E('h4', {'class': ''}, [ data['vps'].title ]),
|
||||
])
|
||||
);
|
||||
continue;
|
||||
}
|
||||
if (visible) {
|
||||
container_internet_vps.appendChild(
|
||||
E('p', { 'class': 'mt-2'}, [
|
||||
E('span', {'class': ''}, [ data['vps'][idx].title + ':' ]),
|
||||
E('span', {'class': ''}, [ data['vps'][idx].value ]),
|
||||
suppelements
|
||||
])
|
||||
);
|
||||
}
|
||||
}
|
||||
for(var idx in data) {
|
||||
|
||||
|
||||
for(var idx in data['internet']) {
|
||||
|
||||
for(var ver in data['internet'][idx]) {
|
||||
for(var ver in data[idx]) {
|
||||
var classname = ver,
|
||||
suppelements = '',
|
||||
visible = data['internet'][idx][ver].visible;
|
||||
visible = data[idx][ver].visible;
|
||||
|
||||
if('connected' === ver) {
|
||||
classname = data['internet'][idx][ver].value ? 'label label-success' : 'label label-danger';
|
||||
data['internet'][idx][ver].value = data['internet'][idx][ver].value ? _('yes') : _('no');
|
||||
classname = data[idx][ver].value ? 'label label-success' : 'label label-danger';
|
||||
data[idx][ver].value = data[idx][ver].value ? _('yes') : _('no');
|
||||
}
|
||||
|
||||
if ('v4' === idx) {
|
||||
|
@ -106,17 +72,17 @@ return baseclass.extend({
|
|||
if ('title' === ver) {
|
||||
container_internet_v4.appendChild(
|
||||
E('p', { 'class': 'mt-2'}, [
|
||||
E('h4', {'class': ''}, [ data['internet'][idx].title ]),
|
||||
E('span', {'class': ''}, [ data[idx].title ]),
|
||||
])
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ('addrsv4' === ver) {
|
||||
var addrs = data['internet'][idx][ver].value;
|
||||
var addrs = data[idx][ver].value;
|
||||
if(Array.isArray(addrs) && addrs.length) {
|
||||
for(var ip in addrs) {
|
||||
data['internet'][idx][ver].value = addrs[ip].split('/')[0];
|
||||
data[idx][ver].value = addrs[ip].split('/')[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -124,8 +90,8 @@ return baseclass.extend({
|
|||
if (visible) {
|
||||
container_internet_v4.appendChild(
|
||||
E('p', { 'class': 'mt-2'}, [
|
||||
E('span', {'class': ''}, [ data['internet'][idx][ver].title + ':' ]),
|
||||
E('span', {'class': classname }, [ data['internet'][idx][ver].value ]),
|
||||
E('span', {'class': ''}, [ data[idx][ver].title + ':' ]),
|
||||
E('span', {'class': classname }, [ data[idx][ver].value ]),
|
||||
suppelements
|
||||
])
|
||||
);
|
||||
|
@ -136,7 +102,7 @@ return baseclass.extend({
|
|||
if ('title' === ver) {
|
||||
container_internet_v6.appendChild(
|
||||
E('p', { 'class': 'mt-2'}, [
|
||||
E('h4', {'class': ''}, [ data['internet'][idx].title ]),
|
||||
E('span', {'class': ''}, [ data[idx].title ]),
|
||||
])
|
||||
);
|
||||
continue;
|
||||
|
@ -145,8 +111,8 @@ return baseclass.extend({
|
|||
if (visible) {
|
||||
container_internet_v6.appendChild(
|
||||
E('p', {'class': 'mt-2'}, [
|
||||
E('span', {'class': ''}, [data['internet'][idx][ver].title + ':']),
|
||||
E('span', {'class': classname}, [data['internet'][idx][ver].value]),
|
||||
E('span', {'class': ''}, [data[idx][ver].title + ':']),
|
||||
E('span', {'class': classname}, [data[idx][ver].value]),
|
||||
suppelements
|
||||
])
|
||||
);
|
||||
|
@ -155,19 +121,8 @@ return baseclass.extend({
|
|||
}
|
||||
}
|
||||
|
||||
container_item.appendChild(E('p', { 'class': 'table'}, [
|
||||
E('div', { 'class': 'tr' }, [
|
||||
E('div', { 'class': 'td' }, [ container_internet_vps ])
|
||||
]),
|
||||
E('div', { 'class': 'tr' }, [
|
||||
E('div', { 'class': 'td' }, [
|
||||
container_internet_v4
|
||||
]),
|
||||
E('div', { 'class': 'td' }, [
|
||||
container_internet_v6
|
||||
])
|
||||
])
|
||||
]));
|
||||
container_item.appendChild(container_internet_v4);
|
||||
container_item.appendChild(container_internet_v6);
|
||||
} else {
|
||||
for(var idx in data) {
|
||||
container_item.appendChild(
|
||||
|
@ -186,10 +141,13 @@ return baseclass.extend({
|
|||
},
|
||||
|
||||
renderUpdateWanData: function(data, v6) {
|
||||
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var ifc = data[i];
|
||||
|
||||
if (v6) {
|
||||
var uptime = ifc.getUptime();
|
||||
this.params.internet.v6.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
|
||||
this.params.internet.v6.ipprefixv6.value = ifc.getIP6Prefix() || '-';
|
||||
this.params.internet.v6.gatewayv6.value = ifc.getGateway6Addr() || '-';
|
||||
this.params.internet.v6.protocol.value= ifc.getI18n() || E('em', _('Not connected'));
|
||||
|
@ -207,115 +165,102 @@ return baseclass.extend({
|
|||
}
|
||||
}
|
||||
},
|
||||
renderUpdateOpenMPTCProuterData: function(data, v6) {
|
||||
if (data.openmptcprouter != undefined) {
|
||||
if (data.openmptcprouter.wan_addr != '') this.params.omrvps.internet.v4.connected.value = true;
|
||||
if (data.openmptcprouter.wan_addr) this.params.omrvps.internet.v4.addrsv4.value = data.openmptcprouter.wan_addr || [ '-'];
|
||||
if (data.openmptcprouter.wan_addr6) this.params.omrvps.internet.v6.addrsv6.value = data.openmptcprouter.wan_addr6 || [ '-'];
|
||||
if (data.openmptcprouter.vps_kernel) this.params.omrvps.vps.version.value = data.openmptcprouter.vps_kernel + ' ' + data.openmptcprouter.vps_omr_version || [ '-'];
|
||||
if (data.openmptcprouter.vps_loadavg) {
|
||||
var vps_loadavg = data.openmptcprouter.vps_loadavg.split(" ");
|
||||
this.params.omrvps.vps.load.value = '%s, %s, %s'.format(vps_loadavg[0],vps_loadavg[1],vps_loadavg[2]);
|
||||
}
|
||||
if (data.openmptcprouter.vps_uptime) this.params.omrvps.vps.uptime.value = String.format('%t', data.openmptcprouter.vps_uptime) || [ '-'];
|
||||
if (data.openmptcprouter.proxy_traffic) this.params.omrvps.vps.trafficproxy.value = this.formatBytes(data.openmptcprouter.proxy_traffic) || [ '-'];
|
||||
if (data.openmptcprouter.vpn_traffic) this.params.omrvps.vps.trafficvpn.value = this.formatBytes(data.openmptcprouter.vpn_traffic) || [ '-'];
|
||||
if (data.openmptcprouter.total_traffic) this.params.omrvps.vps.traffictotal.value = this.formatBytes(data.openmptcprouter.total_traffic) || [ '-'];
|
||||
if (data.openmptcprouter.ipv6 != 'disabled') this.params.omrvps.internet.v6.connected.value = true;
|
||||
}
|
||||
},
|
||||
|
||||
renderInternetBox: function(data) {
|
||||
|
||||
this.params.omrvps = {
|
||||
vps: {
|
||||
title: _('Server'),
|
||||
this.params.internet = {
|
||||
|
||||
version: {
|
||||
title: _('Version'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
},
|
||||
v4: {
|
||||
title: _('IPv4 Internet'),
|
||||
|
||||
load: {
|
||||
title: _('Load'),
|
||||
connected: {
|
||||
title: _('Connected'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
value: false
|
||||
},
|
||||
|
||||
uptime: {
|
||||
title: _('Uptime'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
value: '-'
|
||||
},
|
||||
|
||||
trafficproxy: {
|
||||
title: _('Proxy traffic'),
|
||||
protocol: {
|
||||
title: _('Protocol'),
|
||||
visible: true,
|
||||
value: '-'
|
||||
},
|
||||
|
||||
addrsv4: {
|
||||
title: _('IPv4'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
},
|
||||
|
||||
trafficvpn: {
|
||||
title: _('VPN traffic'),
|
||||
gatewayv4: {
|
||||
title: _('GatewayV4'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
value: '-'
|
||||
},
|
||||
|
||||
traffictotal: {
|
||||
title: _('Total traffic'),
|
||||
dnsv4: {
|
||||
title: _('DNSv4'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
value: ['-']
|
||||
}
|
||||
},
|
||||
|
||||
internet: {
|
||||
v6: {
|
||||
title: _('IPv6 Internet'),
|
||||
|
||||
v4: {
|
||||
title: _('IPv4 Internet'),
|
||||
|
||||
connected: {
|
||||
title: _('Connected'),
|
||||
visible: true,
|
||||
value: false
|
||||
},
|
||||
|
||||
addrsv4: {
|
||||
title: _('IPv4'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
}
|
||||
connected: {
|
||||
title: _('Connected'),
|
||||
visible: true,
|
||||
value: false
|
||||
},
|
||||
|
||||
v6: {
|
||||
title: _('IPv6 Internet'),
|
||||
uptime: {
|
||||
title: _('Uptime'),
|
||||
visible: true,
|
||||
value: '-'
|
||||
},
|
||||
|
||||
connected: {
|
||||
title: _('Connected'),
|
||||
visible: true,
|
||||
value: false
|
||||
},
|
||||
protocol: {
|
||||
title: _('Protocol'),
|
||||
visible: true,
|
||||
value: ' - '
|
||||
},
|
||||
|
||||
ipprefixv6 : {
|
||||
title: _('IPv6 prefix'),
|
||||
visible: false,
|
||||
value: ' - '
|
||||
},
|
||||
ipprefixv6 : {
|
||||
title: _('IPv6 prefix'),
|
||||
visible: true,
|
||||
value: ' - '
|
||||
},
|
||||
|
||||
addrsv6: {
|
||||
title: _('IPv6'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
}
|
||||
addrsv6: {
|
||||
title: _('IPv6'),
|
||||
visible: false,
|
||||
value: [ '-' ]
|
||||
},
|
||||
|
||||
gatewayv6: {
|
||||
title: _('GatewayV6'),
|
||||
visible: true,
|
||||
value: '-'
|
||||
},
|
||||
|
||||
dnsv6: {
|
||||
title: _('DNSv6'),
|
||||
visible: true,
|
||||
value: [ '-' ]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//this.renderUpdateWanData(data[0], false);
|
||||
//this.renderUpdateWanData(data[1], true);
|
||||
this.renderUpdateOpenMPTCProuterData(data[4], true);
|
||||
this.renderUpdateWanData(data[0], false);
|
||||
this.renderUpdateWanData(data[1], true);
|
||||
|
||||
return this.renderHtml(this.params.omrvps, 'internet');
|
||||
return this.renderHtml(this.params.internet, 'internet');
|
||||
},
|
||||
|
||||
renderRouterBox: function(data) {
|
||||
|
@ -349,11 +294,6 @@ return baseclass.extend({
|
|||
value: datestr
|
||||
},
|
||||
|
||||
load: {
|
||||
title: _('Load Average'),
|
||||
value: Array.isArray(systeminfo.load) ? '%.2f, %.2f, %.2f'.format(systeminfo.load[0] / 65535.0,systeminfo.load[1] / 65535.0,systeminfo.load[2] / 65535.0) : null
|
||||
},
|
||||
|
||||
kernel: {
|
||||
title: _('Kernel Version'),
|
||||
value: boardinfo.kernel
|
||||
|
@ -371,7 +311,7 @@ return baseclass.extend({
|
|||
|
||||
release: {
|
||||
title: _('Firmware Version'),
|
||||
value: (typeof boardinfo.release !== "undefined") ? ((typeof boardinfo.release.description !== "undefined") ? boardinfo.release.description : null) : null
|
||||
value: boardinfo.release.description
|
||||
}
|
||||
};
|
||||
|
||||
|
|
12
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js
Executable file → Normal file
|
@ -70,13 +70,11 @@ return baseclass.extend({
|
|||
]));
|
||||
}
|
||||
|
||||
if (this.params.lan.devices.length > 0) {
|
||||
container_box.appendChild(E('hr'));
|
||||
container_box.appendChild(container_devices);
|
||||
container_box.appendChild(E('hr'));
|
||||
container_box.appendChild(container_deviceslist);
|
||||
container_wapper.appendChild(container_box);
|
||||
}
|
||||
container_box.appendChild(E('hr'));
|
||||
container_box.appendChild(container_devices);
|
||||
container_box.appendChild(E('hr'));
|
||||
container_box.appendChild(container_deviceslist);
|
||||
container_wapper.appendChild(container_box);
|
||||
|
||||
return container_wapper;
|
||||
},
|
||||
|
|
38
luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js
Executable file → Normal file
|
@ -78,20 +78,20 @@ return baseclass.extend({
|
|||
|
||||
container_box.appendChild(container_radio);
|
||||
|
||||
var container_devices = E('div', { 'class': 'table assoclist devices-info' }, [
|
||||
E('div', { 'class': 'tr table-titles dashboard-bg' }, [
|
||||
E('div', { 'class': 'th nowrap' }, _('Hostname')),
|
||||
E('div', { 'class': 'th' }, _('Wireless')),
|
||||
E('div', { 'class': 'th' }, _('Signal')),
|
||||
E('div', { 'class': 'th' }, '%s / %s'.format( _('Up.'), _('Down.')))
|
||||
var container_devices = E('table', { 'class': 'table assoclist devices-info' }, [
|
||||
E('tr', { 'class': 'tr table-titles dashboard-bg' }, [
|
||||
E('th', { 'class': 'th nowrap' }, _('Hostname')),
|
||||
E('th', { 'class': 'th' }, _('Wireless')),
|
||||
E('th', { 'class': 'th' }, _('Signal')),
|
||||
E('th', { 'class': 'th' }, '%s / %s'.format( _('Up.'), _('Down.')))
|
||||
])
|
||||
]);
|
||||
|
||||
var container_devices_item;
|
||||
var container_devices_list = E('div', { 'class': 'table assoclist devices-info' });
|
||||
var container_devices_list = E('table', { 'class': 'table assoclist devices-info' });
|
||||
|
||||
for (var i =0; i < this.params.wifi.devices.length; i++) {
|
||||
container_devices_item = E('div', { 'class': 'tr cbi-rowstyle-1' });
|
||||
container_devices_item = E('tr', { 'class': 'tr cbi-rowstyle-1' });
|
||||
|
||||
for(var idx in this.params.wifi.devices[i]) {
|
||||
var device = this.params.wifi.devices[i];
|
||||
|
@ -109,7 +109,7 @@ return baseclass.extend({
|
|||
])
|
||||
]);
|
||||
} else if ('rate' == idx) {
|
||||
container_content = E('div', { 'class': 'td device-info' }, [
|
||||
container_content = E('td', { 'class': 'td device-info' }, [
|
||||
E('p', {}, [
|
||||
E('span', { 'class': ''}, [ device[idx].value.rx ]),
|
||||
E('br'),
|
||||
|
@ -117,7 +117,7 @@ return baseclass.extend({
|
|||
])
|
||||
]);
|
||||
} else {
|
||||
container_content = E('div', { 'class': 'td device-info'}, [
|
||||
container_content = E('td', { 'class': 'td device-info'}, [
|
||||
E('p', {}, [
|
||||
E('span', { 'class': ''}, [ device[idx].value ]),
|
||||
])
|
||||
|
@ -130,13 +130,11 @@ return baseclass.extend({
|
|||
container_devices_list.appendChild(container_devices_item);
|
||||
}
|
||||
|
||||
if (this.params.wifi.devices.length > 0) {
|
||||
container_devices.appendChild(container_devices_list);
|
||||
container_box.appendChild(E('hr'));
|
||||
container_box.appendChild(container_devices);
|
||||
container_box.appendChild(container_devices_list);
|
||||
container_wapper.appendChild(container_box);
|
||||
}
|
||||
container_devices.appendChild(container_devices_list);
|
||||
container_box.appendChild(E('hr'));
|
||||
container_box.appendChild(container_devices);
|
||||
container_box.appendChild(container_devices_list);
|
||||
container_wapper.appendChild(container_box);
|
||||
|
||||
return container_wapper;
|
||||
},
|
||||
|
@ -149,7 +147,7 @@ return baseclass.extend({
|
|||
for (var j = 0; j < network_items.length; j++) {
|
||||
var net = network_items[j],
|
||||
is_assoc = (net.getBSSID() != '00:00:00:00:00:00' && net.getChannel() && !net.isDisabled()),
|
||||
chan = net.getChannel(),
|
||||
chan = net.getChannel(),
|
||||
freq = net.getFrequency(),
|
||||
rate = net.getBitRate();
|
||||
|
||||
|
@ -264,6 +262,8 @@ return baseclass.extend({
|
|||
|
||||
this.renderUpdateData(data[0], data[1], data[2]);
|
||||
|
||||
return this.renderHtml();
|
||||
if (this.params.wifi.radios.length)
|
||||
return this.renderHtml();
|
||||
return E([]);
|
||||
}
|
||||
});
|
||||
|
|