1667eca6ff56eb62c06932f36ace8e7b72c8b8b2
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 var min_metric
= 2000000000;
146 var min_metric_i
= 0;
147 for (var i
= 0; i
< data
.length
; i
++) {
148 var metric
= data
[i
].getMetric();
149 if (metric
< min_metric
) {
155 var ifc
= data
[min_metric_i
];
158 var uptime
= ifc
.getUptime();
159 this.params
.internet
.v6
.uptime
.value
= (uptime
> 0) ? '%t'.format(uptime
) : '-';
160 this.params
.internet
.v6
.ipprefixv6
.value
= ifc
.getIP6Prefix() || '-';
161 this.params
.internet
.v6
.gatewayv6
.value
= ifc
.getGateway6Addr() || '-';
162 this.params
.internet
.v6
.protocol
.value
= ifc
.getI18n() || E('em', _('Not connected'));
163 this.params
.internet
.v6
.addrsv6
.value
= ifc
.getIP6Addrs() || [ '-' ];
164 this.params
.internet
.v6
.dnsv6
.value
= ifc
.getDNS6Addrs() || [ '-' ];
165 this.params
.internet
.v6
.connected
.value
= ifc
.isUp();
167 var uptime
= ifc
.getUptime();
168 this.params
.internet
.v4
.uptime
.value
= (uptime
> 0) ? '%t'.format(uptime
) : '-';
169 this.params
.internet
.v4
.protocol
.value
= ifc
.getI18n() || E('em', _('Not connected'));
170 this.params
.internet
.v4
.gatewayv4
.value
= ifc
.getGatewayAddr() || '0.0.0.0';
171 this.params
.internet
.v4
.connected
.value
= ifc
.isUp();
172 this.params
.internet
.v4
.addrsv4
.value
= ifc
.getIPAddrs() || [ '-'];
173 this.params
.internet
.v4
.dnsv4
.value
= ifc
.getDNSAddrs() || [ '-' ];
177 renderInternetBox: function(data
) {
179 this.params
.internet
= {
182 title
: _('IPv4 Internet'),
185 title
: _('Connected'),
197 title
: _('Protocol'),
209 title
: _('GatewayV4'),
222 title
: _('IPv6 Internet'),
225 title
: _('Connected'),
237 title
: _('Protocol'),
243 title
: _('IPv6 prefix'),
255 title
: _('GatewayV6'),
268 this.renderUpdateWanData(data
[0], false);
269 this.renderUpdateWanData(data
[1], true);
271 return this.renderHtml(this.params
.internet
, 'internet');
274 renderRouterBox: function(data
) {
276 var boardinfo
= data
[2],
277 systeminfo
= data
[3];
281 if (systeminfo
.localtime
) {
282 var date
= new Date(systeminfo
.localtime
* 1000);
284 datestr
= '%04d-%02d-%02d %02d:%02d:%02d'.format(
285 date
.getUTCFullYear(),
286 date
.getUTCMonth() + 1,
289 date
.getUTCMinutes(),
294 this.params
.router
= {
297 value
: systeminfo
.uptime
? '%t'.format(systeminfo
.uptime
) : null,
301 title
: _('Local Time'),
306 title
: _('Kernel Version'),
307 value
: boardinfo
.kernel
312 value
: boardinfo
.model
316 title
: _('Architecture'),
317 value
: boardinfo
.system
321 title
: _('Firmware Version'),
322 value
: boardinfo
.release
.description
326 return this.renderHtml(this.params
.router
, 'router');
329 render: function(data
) {
330 return [this.renderInternetBox(data
), this.renderRouterBox(data
)];