diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js | 56 | ||||
-rw-r--r-- | modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json | 10 |
2 files changed, 56 insertions, 10 deletions
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js index f6a3cef036..60661f63e5 100644 --- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js +++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js @@ -7,6 +7,20 @@ var callSystemInfo = rpc.declare({ 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, @@ -24,27 +38,49 @@ return baseclass.extend({ title: _('Storage'), load: function() { - return L.resolveDefault(callSystemInfo(), {}); + return Promise.all([ + L.resolveDefault(callSystemInfo(), {}), + L.resolveDefault(callMountPoints(), {}), + ]); }, - render: function(systeminfo) { - var root = L.isObject(systeminfo.root) ? systeminfo.root : {}, + render: function(data) { + var systeminfo = data[0], + mounts = data[1], + root = L.isObject(systeminfo.root) ? systeminfo.root : {}, tmp = L.isObject(systeminfo.tmp) ? systeminfo.tmp : {}; - var fields = []; - fields.push(_('Disk space'), root.used*1024, root.total*1024); - fields.push(_('Temp space'), tmp.used*1024, tmp.total*1024); + 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' }); - for (var i = 0; i < fields.length; i += 3) { + Object.keys(fields).forEach(function(key) { table.appendChild(E('tr', { 'class': 'tr' }, [ - E('td', { 'class': 'td left', 'width': '33%' }, [ fields[i] ]), + E('td', { 'class': 'td left', 'width': '33%' }, [ key ]), E('td', { 'class': 'td left' }, [ - (fields[i + 1] != null) ? progressbar(fields[i + 1], fields[i + 2], true) : '?' + (fields[key].used != null) ? progressbar(fields[key].used, fields[key].size, true) : '?' ]) ])); - } + }); return table; } diff --git a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json index 20cd23bb6c..99b4d02b1d 100644 --- a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json +++ b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json @@ -19,6 +19,16 @@ } }, + "luci-mod-status-index-storage": { + "description": "Grant access to Storage and Mount status display", + "read": { + "ubus": { + "luci": [ "getMountPoints" ], + "system": [ "info" ] + } + } + }, + "luci-mod-status-index-dhcp": { "description": "Grant access to DHCP status display", "read": { |