luci-mod-status: add diskfree info 5546/head
authorFlorian Eckert <fe@dev.tdt.de>
Wed, 17 Nov 2021 17:25:59 +0000 (18:25 +0100)
committerFlorian Eckert <fe@dev.tdt.de>
Thu, 25 Nov 2021 07:41:48 +0000 (08:41 +0100)
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_diskfree.js [new file with mode: 0644]

diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_diskfree.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_diskfree.js
new file mode 100644 (file)
index 0000000..df6beac
--- /dev/null
@@ -0,0 +1,51 @@
+'use strict';
+'require baseclass';
+'require rpc';
+
+var callSystemInfo = rpc.declare({
+       object: 'system',
+       method: 'info'
+});
+
+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 usage'),
+
+       load: function() {
+               return L.resolveDefault(callSystemInfo(), {});
+       },
+
+       render: function(systeminfo) {
+               var 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);
+
+               var table = E('table', { 'class': 'table' });
+
+               for (var i = 0; i < fields.length; i += 3) {
+                       table.appendChild(E('tr', { 'class': 'tr' }, [
+                               E('td', { 'class': 'td left', 'width': '33%' }, [ fields[i] ]),
+                               E('td', { 'class': 'td left' }, [
+                                       (fields[i + 1] != null) ? progressbar(fields[i + 1], fields[i + 2], true) : '?'
+                               ])
+                       ]));
+               }
+
+               return table;
+       }
+});