'use strict';'require baseclass';'require rpc';var callSystemInfo=rpc.declare({object:'system',method:'info'});var callMountPoints=rpc.declare({object:'luci',method:'getMountPoints',expect:{result:[]}});var MountSkipList=["/rom","/tmp","/dev","/overlay","/",]
function progressbar(value,max,byte){var vn=parseInt(value)||0,mn=parseInt(max)||100,fv=byte?String.format('%1024.2mB',value):value,fm=byte?String.format('%1024.2mB',max):max,pc=Math.floor((100/mn)*vn);return E('div',{'class':'cbi-progressbar','title':'%s / %s (%d%%)'.format(fv,fm,pc)},E('div',{'style':'width:%.2f%%'.format(pc)}));}
return baseclass.extend({title:_('Storage'),load:function(){return Promise.all([L.resolveDefault(callSystemInfo(),{}),L.resolveDefault(callMountPoints(),{}),]);},render:function(data){var systeminfo=data[0],mounts=data[1],root=L.isObject(systeminfo.root)?systeminfo.root:{},tmp=L.isObject(systeminfo.tmp)?systeminfo.tmp:{};const existenceChk=function(fields,name,values){if(!fields.hasOwnProperty(name))
fields[name]=values;};var fields={};existenceChk(fields,_('Disk space'),{used:root.used*1024,size:root.total*1024});existenceChk(fields,_('Temp space'),{used:tmp.used*1024,size:tmp.total*1024});for(var i=0;i<mounts.length;i++){var entry=mounts[i];if(MountSkipList.includes(entry.mount))
continue;var name=entry.device+' ('+entry.mount+')',used=entry.size-entry.free;existenceChk(fields,name,{used:used,size:entry.size});}
var table=E('table',{'class':'table'});Object.keys(fields).forEach(function(key){table.appendChild(E('tr',{'class':'tr'},[E('td',{'class':'td left','width':'33%'},[key]),E('td',{'class':'td left'},[(fields[key].used!=null)?progressbar(fields[key].used,fields[key].size,true):'?'])]));});return table;}});