'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)];}});