1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00
openmptcprouter-feeds/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js
2023-06-23 02:14:05 +08:00

324 lines
7.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
'require baseclass';
'require fs';
'require rpc';
'require network';
var callSystemBoard = rpc.declare({
object: 'system',
method: 'board'
});
var callSystemInfo = rpc.declare({
object: 'system',
method: 'info'
});
return baseclass.extend({
params: [],
load: function() {
return Promise.all([
network.getWANNetworks(),
network.getWAN6Networks(),
L.resolveDefault(callSystemBoard(), {}),
L.resolveDefault(callSystemInfo(), {})
]);
},
renderHtml: function(data, type) {
var icon = type;
var title = 'router' == type ? _('System') : _('Internet');
var container_wapper = E('div', { 'class': type + '-status-self dashboard-bg box-s1'});
var container_box = E('div', { 'class': type + '-status-info'});
var container_item = E('div', { 'class': 'settings-info'});
if ('internet' == type) {
icon = (data.v4.connected.value || data.v6.connected.value) ? type : 'not-internet';
}
container_box.appendChild(E('div', { 'class': 'title'}, [
E('img', {
'src': L.resource('view/dashboard/icons/' + icon + '.svg'),
'width': 'router' == type ? 64 : 54,
'title': title,
'class': 'middle'
}),
E('h3', title)
]));
container_box.appendChild(E('hr'));
if ('internet' == type) {
var container_internet_v4 = E('div');
var container_internet_v6 = E('div');
for(var idx in data) {
for(var ver in data[idx]) {
var classname = ver,
suppelements = '',
visible = data[idx][ver].visible;
if('connected' === ver) {
classname = data[idx][ver].value ? 'label label-success' : 'label label-danger';
data[idx][ver].value = data[idx][ver].value ? _('yes') : _('no');
}
if ('v4' === idx) {
if ('title' === ver) {
container_internet_v4.appendChild(
E('p', { 'class': 'mt-2'}, [
E('span', {'class': ''}, [ data[idx].title ]),
])
);
continue;
}
if ('addrsv4' === ver) {
var addrs = data[idx][ver].value;
if(Array.isArray(addrs) && addrs.length) {
for(var ip in addrs) {
data[idx][ver].value = addrs[ip].split('/')[0];
}
}
}
if (visible) {
container_internet_v4.appendChild(
E('p', { 'class': 'mt-2'}, [
E('span', {'class': ''}, [ data[idx][ver].title + '' ]),
E('span', {'class': classname }, [ data[idx][ver].value ]),
suppelements
])
);
}
} else {
if ('title' === ver) {
container_internet_v6.appendChild(
E('p', { 'class': 'mt-2'}, [
E('span', {'class': ''}, [ data[idx].title ]),
])
);
continue;
}
if (visible) {
container_internet_v6.appendChild(
E('p', {'class': 'mt-2'}, [
E('span', {'class': ''}, [data[idx][ver].title + '']),
E('span', {'class': classname}, [data[idx][ver].value]),
suppelements
])
);
}
}
}
}
container_item.appendChild(container_internet_v4);
container_item.appendChild(container_internet_v6);
} else {
for(var idx in data) {
container_item.appendChild(
E('p', { 'class': 'mt-2'}, [
E('span', {'class': ''}, [ data[idx].title + '' ]),
E('span', {'class': ''}, [ data[idx].value ])
])
);
}
}
container_box.appendChild(container_item);
container_box.appendChild(E('hr'));
container_wapper.appendChild(container_box);
return container_wapper;
},
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'));
this.params.internet.v6.addrsv6.value = ifc.getIP6Addrs() || [ '-' ];
this.params.internet.v6.dnsv6.value = ifc.getDNS6Addrs() || [ '-' ];
this.params.internet.v6.connected.value = ifc.isUp();
} else {
var uptime = ifc.getUptime();
this.params.internet.v4.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
this.params.internet.v4.protocol.value= ifc.getI18n() || E('em', _('Not connected'));
this.params.internet.v4.gatewayv4.value = ifc.getGatewayAddr() || '0.0.0.0';
this.params.internet.v4.connected.value = ifc.isUp();
this.params.internet.v4.addrsv4.value = ifc.getIPAddrs() || [ '-'];
this.params.internet.v4.dnsv4.value = ifc.getDNSAddrs() || [ '-' ];
}
}
},
renderInternetBox: function(data) {
this.params.internet = {
v4: {
title: _('IPv4 Internet'),
connected: {
title: _('Connected'),
visible: true,
value: false
},
uptime: {
title: _('Uptime'),
visible: true,
value: '-'
},
protocol: {
title: _('Protocol'),
visible: true,
value: '-'
},
addrsv4: {
title: _('IPv4'),
visible: true,
value: [ '-' ]
},
gatewayv4: {
title: _('GatewayV4'),
visible: true,
value: '-'
},
dnsv4: {
title: _('DNSv4'),
visible: true,
value: ['-']
}
},
v6: {
title: _('IPv6 Internet'),
connected: {
title: _('Connected'),
visible: true,
value: false
},
uptime: {
title: _('Uptime'),
visible: true,
value: '-'
},
protocol: {
title: _('Protocol'),
visible: true,
value: ' - '
},
ipprefixv6 : {
title: _('IPv6 prefix'),
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);
return this.renderHtml(this.params.internet, 'internet');
},
renderRouterBox: function(data) {
var boardinfo = data[2],
systeminfo = data[3];
var datestr = null;
if (systeminfo.localtime) {
var date = new Date(systeminfo.localtime * 1000);
datestr = '%04d-%02d-%02d %02d:%02d:%02d'.format(
date.getUTCFullYear(),
date.getUTCMonth() + 1,
date.getUTCDate(),
date.getUTCHours(),
date.getUTCMinutes(),
date.getUTCSeconds()
);
}
this.params.router = {
uptime: {
title: _('Uptime'),
value: systeminfo.uptime ? '%t'.format(systeminfo.uptime) : null,
},
localtime: {
title: _('Local Time'),
value: datestr
},
kernel: {
title: _('Kernel Version'),
value: boardinfo.kernel
},
model: {
title: _('Model'),
value: boardinfo.model
},
system: {
title: _('Architecture'),
value: boardinfo.system
},
release: {
title: _('Firmware Version'),
value: boardinfo.release.description
}
};
return this.renderHtml(this.params.router, 'router');
},
render: function(data) {
return [this.renderInternetBox(data), this.renderRouterBox(data)];
}
});