treewide: import utility classes explicitly
[project/luci.git] / modules / luci-mod-status / htdocs / luci-static / resources / view / status / include / 20_memory.js
1 'use strict';
2 'require baseclass';
3 'require rpc';
4
5 var callSystemInfo = rpc.declare({
6 object: 'system',
7 method: 'info'
8 });
9
10 function progressbar(value, max, byte) {
11 var vn = parseInt(value) || 0,
12 mn = parseInt(max) || 100,
13 fv = byte ? String.format('%1024.2mB', value) : value,
14 fm = byte ? String.format('%1024.2mB', max) : max,
15 pc = Math.floor((100 / mn) * vn);
16
17 return E('div', {
18 'class': 'cbi-progressbar',
19 'title': '%s / %s (%d%%)'.format(fv, fm, pc)
20 }, E('div', { 'style': 'width:%.2f%%'.format(pc) }));
21 }
22
23 return baseclass.extend({
24 title: _('Memory'),
25
26 load: function() {
27 return L.resolveDefault(callSystemInfo(), {});
28 },
29
30 render: function(systeminfo) {
31 var mem = L.isObject(systeminfo.memory) ? systeminfo.memory : {},
32 swap = L.isObject(systeminfo.swap) ? systeminfo.swap : {};
33
34 var fields = [
35 _('Total Available'), (mem.available) ? mem.available : (mem.total && mem.free && mem.buffered) ? mem.free + mem.buffered : null, mem.total,
36 _('Used'), (mem.total && mem.free) ? (mem.total - mem.free) : null, mem.total,
37 _('Buffered'), (mem.total && mem.buffered) ? mem.buffered : null, mem.total
38 ];
39
40 if (mem.cached)
41 fields.push(_('Cached'), mem.cached, mem.total);
42
43 if (swap.total > 0)
44 fields.push(_('Swap free'), swap.free, swap.total);
45
46 var table = E('div', { 'class': 'table' });
47
48 for (var i = 0; i < fields.length; i += 3) {
49 table.appendChild(E('div', { 'class': 'tr' }, [
50 E('div', { 'class': 'td left', 'width': '33%' }, [ fields[i] ]),
51 E('div', { 'class': 'td left' }, [
52 (fields[i + 1] != null) ? progressbar(fields[i + 1], fields[i + 2], true) : '?'
53 ])
54 ]));
55 }
56
57 return table;
58 }
59 });