diff options
author | Christian Marangi <ansuelsmth@gmail.com> | 2023-06-15 18:52:55 +0200 |
---|---|---|
committer | Paul Donald <newtwen@gmail.com> | 2023-12-07 00:15:33 +0100 |
commit | f1db42e67041d7c290fb2221ba5e787aa5e6b8bb (patch) | |
tree | 61c84ed5f35570919465492f131cd2099e49469c /modules/luci-mod-status/htdocs/luci-static/resources/view/status | |
parent | eb6ded749d5ed21bc29e39af04081c4e7126d618 (diff) |
luci-mod-status: add ACL entry for storage index
Add missing ACL entry for storage index page.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
luci-mod-status: expand storage index page with mount points
Expand storage index page with mount points. For custom mounts point we
use the device name and we reference the mount point between ().
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
luci-mod-status: ensure each storage getMountPoints result is unique
Signed-off-by: Paul Donald <newtwen@gmail.com>
Closes #2767
Diffstat (limited to 'modules/luci-mod-status/htdocs/luci-static/resources/view/status')
-rw-r--r-- | modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js | 56 |
1 files changed, 46 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; } |