7 var callSystemBoard
= rpc
.declare({
12 var callSystemInfo
= rpc
.declare({
17 return baseclass
.extend({
23 network
.getWANNetworks(),
24 network
.getWAN6Networks(),
25 L
.resolveDefault(callSystemBoard(), {}),
26 L
.resolveDefault(callSystemInfo(), {})
30 renderHtml: function(data
, type
) {
33 var title
= 'router' == type
? _('System') : _('Internet');
34 var container_wapper
= E('div', { 'class': type
+ '-status-self dashboard-bg box-s1'});
35 var container_box
= E('div', { 'class': type
+ '-status-info'});
36 var container_item
= E('div', { 'class': 'settings-info'});
38 if ('internet' == type
) {
39 icon
= (data
.v4
.connected
.value
|| data
.v6
.connected
.value
) ? type
: 'not-internet';
42 container_box
.appendChild(E('div', { 'class': 'title'}, [
44 'src': L
.resource('view/dashboard/icons/' + icon
+ '.svg'),
45 'width': 'router' == type
? 64 : 54,
52 container_box
.appendChild(E('hr'));
54 if ('internet' == type
) {
55 var container_internet_v4
= E('div');
56 var container_internet_v6
= E('div');
58 for(var idx
in data
) {
60 for(var ver
in data
[idx
]) {
63 visible
= data
[idx
][ver
].visible
;
65 if('connected' === ver
) {
66 classname
= data
[idx
][ver
].value
? 'label label-success' : 'label label-danger';
67 data
[idx
][ver
].value
= data
[idx
][ver
].value
? _('yes') : _('no');
72 if ('title' === ver
) {
73 container_internet_v4
.appendChild(
74 E('p', { 'class': 'mt-2'}, [
75 E('span', {'class': ''}, [ data
[idx
].title
]),
81 if ('addrsv4' === ver
) {
82 var addrs
= data
[idx
][ver
].value
;
83 if(Array
.isArray(addrs
) && addrs
.length
) {
84 for(var ip
in addrs
) {
85 data
[idx
][ver
].value
= addrs
[ip
].split('/')[0];
91 container_internet_v4
.appendChild(
92 E('p', { 'class': 'mt-2'}, [
93 E('span', {'class': ''}, [ data
[idx
][ver
].title
+ ':' ]),
94 E('span', {'class': classname
}, [ data
[idx
][ver
].value
]),
102 if ('title' === ver
) {
103 container_internet_v6
.appendChild(
104 E('p', { 'class': 'mt-2'}, [
105 E('span', {'class': ''}, [ data
[idx
].title
]),
112 container_internet_v6
.appendChild(
113 E('p', {'class': 'mt-2'}, [
114 E('span', {'class': ''}, [data
[idx
][ver
].title
+ ':']),
115 E('span', {'class': classname
}, [data
[idx
][ver
].value
]),
124 container_item
.appendChild(container_internet_v4
);
125 container_item
.appendChild(container_internet_v6
);
127 for(var idx
in data
) {
128 container_item
.appendChild(
129 E('p', { 'class': 'mt-2'}, [
130 E('span', {'class': ''}, [ data
[idx
].title
+ ':' ]),
131 E('span', {'class': ''}, [ data
[idx
].value
])
137 container_box
.appendChild(container_item
);
138 container_box
.appendChild(E('hr'));
139 container_wapper
.appendChild(container_box
);
140 return container_wapper
;
143 renderUpdateWanData: function(data
, v6
) {
145 for (var i
= 0; i
< data
.length
; i
++) {
149 this.params
.internet
.v6
.ipprefixv6
.value
= ifc
.getIP6Prefix() || '-';
150 this.params
.internet
.v6
.gatewayv6
.value
= ifc
.getGateway6Addr() || '-';
151 this.params
.internet
.v6
.protocol
.value
= ifc
.getI18n() || E('em', _('Not connected'));
152 this.params
.internet
.v6
.addrsv6
.value
= ifc
.getIP6Addrs() || [ '-' ];
153 this.params
.internet
.v6
.dnsv6
.value
= ifc
.getDNS6Addrs() || [ '-' ];
154 this.params
.internet
.v6
.connected
.value
= ifc
.isUp();
156 var uptime
= ifc
.getUptime();
157 this.params
.internet
.v4
.uptime
.value
= (uptime
> 0) ? '%t'.format(uptime
) : '-';
158 this.params
.internet
.v4
.protocol
.value
= ifc
.getI18n() || E('em', _('Not connected'));
159 this.params
.internet
.v4
.gatewayv4
.value
= ifc
.getGatewayAddr() || '0.0.0.0';
160 this.params
.internet
.v4
.connected
.value
= ifc
.isUp();
161 this.params
.internet
.v4
.addrsv4
.value
= ifc
.getIPAddrs() || [ '-'];
162 this.params
.internet
.v4
.dnsv4
.value
= ifc
.getDNSAddrs() || [ '-' ];
167 renderInternetBox: function(data
) {
169 this.params
.internet
= {
172 title
: _('IPv4 Internet'),
175 title
: _('Connected'),
181 title
: _('Connected since'),
187 title
: _('Protocol'),
199 title
: _('GatewayV4'),
212 title
: _('IPv6 Internet'),
215 title
: _('Connected'),
221 title
: _('Connected since'),
227 title
: _('Protocol'),
233 title
: _('IPv6 prefix'),
245 title
: _('GatewayV6'),
258 this.renderUpdateWanData(data
[0], false);
259 this.renderUpdateWanData(data
[1], true);
261 return this.renderHtml(this.params
.internet
, 'internet');
264 renderRouterBox: function(data
) {
266 var boardinfo
= data
[2],
267 systeminfo
= data
[3];
271 if (systeminfo
.localtime
) {
272 var date
= new Date(systeminfo
.localtime
* 1000);
274 datestr
= '%04d-%02d-%02d %02d:%02d:%02d'.format(
275 date
.getUTCFullYear(),
276 date
.getUTCMonth() + 1,
279 date
.getUTCMinutes(),
284 this.params
.router
= {
287 value
: systeminfo
.uptime
? '%t'.format(systeminfo
.uptime
) : null,
291 title
: _('Local Time'),
296 title
: _('Kernel Version'),
297 value
: boardinfo
.kernel
302 value
: boardinfo
.model
306 title
: _('Architecture'),
307 value
: boardinfo
.system
311 title
: _('Firmware Version'),
312 value
: boardinfo
.release
.description
316 return this.renderHtml(this.params
.router
, 'router');
319 render: function(data
) {
320 return [this.renderInternetBox(data
), this.renderRouterBox(data
)];