]> git.proxmox.com Git - pmg-gui.git/blob - js/dashboard/NodeInfo.js
1c3cfa344c54bb7ab25427909c3fe91f307498f7
[pmg-gui.git] / js / dashboard / NodeInfo.js
1 Ext.define('PMG.NodeInfoPanel', {
2 extend: 'Proxmox.panel.StatusView',
3 alias: 'widget.pmgNodeInfoPanel',
4
5 layout: {
6 type: 'table',
7 columns: 2,
8 tableAttrs: {
9 style: {
10 width: '100%',
11 },
12 },
13 },
14
15 defaults: {
16 xtype: 'pmxInfoWidget',
17 padding: '0 10 5 10',
18 },
19
20 items: [
21 {
22 itemId: 'nodecpu',
23 iconCls: 'fa fa-fw pmx-itype-icon-processor pmx-icon',
24 title: gettext('CPU usage'),
25 valueField: 'cpu',
26 maxField: 'cpuinfo',
27 renderer: Proxmox.Utils.render_node_cpu_usage,
28 },
29 {
30 itemId: 'wait',
31 iconCls: 'pmx-icon-size fa fa-fw fa-clock-o',
32 title: gettext('IO delay'),
33 valueField: 'wait',
34 },
35 {
36 xtype: 'box',
37 colspan: 2,
38 padding: '0 0 20 0',
39 },
40 {
41 iconCls: 'fa fa-fw pmx-itype-icon-memory pmx-icon',
42 itemId: 'memory',
43 title: gettext('RAM usage'),
44 valueField: 'memory',
45 maxField: 'memory',
46 renderer: Proxmox.Utils.render_node_size_usage,
47 },
48 {
49 itemId: 'load',
50 iconCls: 'pmx-icon-size fa fa-fw fa-tasks',
51 title: gettext('Load average'),
52 printBar: false,
53 textField: 'loadavg',
54 },
55 {
56 iconCls: 'pmx-icon-size fa fa-fw fa-hdd-o',
57 itemId: 'rootfs',
58 title: gettext('HD space') + ' (root)',
59 valueField: 'rootfs',
60 maxField: 'rootfs',
61 renderer: ({ used, total }) => Proxmox.Utils.render_size_usage(used, total, true),
62 },
63 {
64 iconCls: 'pmx-icon-size fa fa-fw fa-refresh',
65 itemId: 'swap',
66 printSize: true,
67 title: gettext('SWAP usage'),
68 valueField: 'swap',
69 maxField: 'swap',
70 renderer: Proxmox.Utils.render_node_size_usage,
71 },
72 {
73 xtype: 'box',
74 colspan: 2,
75 padding: '0 0 20 0',
76 },
77 {
78 itemId: 'cpus',
79 colspan: 2,
80 printBar: false,
81 title: gettext('CPU(s)'),
82 textField: 'cpuinfo',
83 renderer: Proxmox.Utils.render_cpu_model,
84 value: '',
85 },
86 {
87 colspan: 2,
88 title: gettext('Kernel Version'),
89 printBar: false,
90 // TODO: remove with next major and only use newish current-kernel textfield
91 multiField: true,
92 //textField: 'current-kernel',
93 renderer: ({ data }) => {
94 if (!data['current-kernel']) {
95 return data.kversion;
96 }
97 let kernel = data['current-kernel'];
98 let buildDate = kernel.version.match(/\((.+)\)\s*$/)?.[1] ?? 'unknown';
99 return `${kernel.sysname} ${kernel.release} (${buildDate})`;
100 },
101 value: '',
102 },
103 {
104 xtype: 'pmxNodeInfoRepoStatus',
105 itemId: 'repositoryStatus',
106 product: 'Proxmox Mail Gateway',
107 repoLink: '#pmgServerAdministration:aptrepositories',
108 },
109 ],
110
111 updateTitle: function() {
112 var me = this;
113 var uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));
114 me.setTitle(Proxmox.NodeName + ' (' + gettext('Uptime') + ': ' + uptime + ')');
115 },
116
117 initComponent: function() {
118 let me = this;
119
120 me.rstore = Ext.create('Proxmox.data.ObjectStore', {
121 interval: 3000,
122 url: '/api2/json/nodes/localhost/status',
123 autoStart: true,
124 });
125
126 me.callParent();
127
128 me.on('destroy', function() { me.rstore.stopUpdate(); });
129 },
130 });