]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/node/StatusView.js
ui: node/status view: reduce quite generous paddings
[pve-manager.git] / www / manager6 / node / StatusView.js
1 Ext.define('PVE.node.StatusView', {
2 extend: 'Proxmox.panel.StatusView',
3 alias: 'widget.pveNodeStatus',
4
5 viewModel: {
6 data: {
7 subscriptionActive: '',
8 noSubscriptionRepo: '',
9 enterpriseRepo: '',
10 testRepo: '',
11 },
12 formulas: {
13 repoStatus: function(get) {
14 if (get('subscriptionActive') === '' || get('enterpriseRepo') === '') {
15 return '';
16 }
17
18 if (!get('subscriptionActive') && get('enterpriseRepo')) {
19 return 'no-sub';
20 } else if (get('noSubscriptionRepo') || get('testRepo')) {
21 return 'non-production';
22 } else if (!get('enterpriseRepo') || !get('noSubscriptionRepo') || !get('testRepo')) {
23 return 'no-repo';
24 }
25 return 'ok';
26 },
27 repoStatusMessage: function(get) {
28 const status = get('repoStatus');
29
30 let fmt = (txt, cls) => `<i class="fa fa-fw fa-${cls}"></i> ${txt}`;
31
32 if (status === 'ok') {
33 return fmt(gettext('Enterprise repository enabled'), 'check good') + ', ' +
34 fmt(gettext('Active subscription'), 'check good');
35 } else if (status === 'no-sub') {
36 return fmt(gettext('Enterprise repository enabled'), 'check good') + ', ' +
37 fmt(gettext('No active subscription'), 'exclamation-circle warning');
38 } else if (status === 'non-production') {
39 return fmt(gettext('No production-ready repository used'), 'exclamation-circle warning');
40 } else if (status === 'no-repo') {
41 return fmt(gettext('No Proxmox VE repository enabled!'), 'exclamation-circle critical');
42 }
43
44 return Proxmox.Utils.unknownText;
45 },
46 },
47 },
48
49 height: 300,
50 bodyPadding: '15 5 15 5',
51
52 layout: {
53 type: 'table',
54 columns: 2,
55 tableAttrs: {
56 style: {
57 width: '100%',
58 },
59 },
60 },
61
62 defaults: {
63 xtype: 'pmxInfoWidget',
64 padding: '0 10 5 10',
65 },
66
67 items: [
68 {
69 itemId: 'cpu',
70 iconCls: 'fa fa-fw pmx-itype-icon-processor pmx-icon',
71 title: gettext('CPU usage'),
72 valueField: 'cpu',
73 maxField: 'cpuinfo',
74 renderer: Proxmox.Utils.render_node_cpu_usage,
75 },
76 {
77 itemId: 'wait',
78 iconCls: 'fa fa-fw fa-clock-o',
79 title: gettext('IO delay'),
80 valueField: 'wait',
81 rowspan: 2,
82 },
83 {
84 itemId: 'load',
85 iconCls: 'fa fa-fw fa-tasks',
86 title: gettext('Load average'),
87 printBar: false,
88 textField: 'loadavg',
89 },
90 {
91 xtype: 'box',
92 colspan: 2,
93 padding: '0 0 20 0',
94 },
95 {
96 iconCls: 'fa fa-fw pmx-itype-icon-memory pmx-icon',
97 itemId: 'memory',
98 title: gettext('RAM usage'),
99 valueField: 'memory',
100 maxField: 'memory',
101 renderer: Proxmox.Utils.render_node_size_usage,
102 },
103 {
104 itemId: 'ksm',
105 printBar: false,
106 title: gettext('KSM sharing'),
107 textField: 'ksm',
108 renderer: function(record) {
109 return Proxmox.Utils.render_size(record.shared);
110 },
111 padding: '0 15 10 15',
112 },
113 {
114 iconCls: 'fa fa-fw fa-hdd-o',
115 itemId: 'rootfs',
116 title: gettext('HD space') + '(root)',
117 valueField: 'rootfs',
118 maxField: 'rootfs',
119 renderer: Proxmox.Utils.render_node_size_usage,
120 },
121 {
122 iconCls: 'fa fa-fw fa-refresh',
123 itemId: 'swap',
124 printSize: true,
125 title: gettext('SWAP usage'),
126 valueField: 'swap',
127 maxField: 'swap',
128 renderer: Proxmox.Utils.render_node_size_usage,
129 },
130 {
131 xtype: 'box',
132 colspan: 2,
133 padding: '0 0 20 0',
134 },
135 {
136 itemId: 'cpus',
137 colspan: 2,
138 printBar: false,
139 title: gettext('CPU(s)'),
140 textField: 'cpuinfo',
141 renderer: Proxmox.Utils.render_cpu_model,
142 value: '',
143 },
144 {
145 itemId: 'kversion',
146 colspan: 2,
147 title: gettext('Kernel Version'),
148 printBar: false,
149 textField: 'kversion',
150 value: '',
151 },
152 {
153 itemId: 'version',
154 colspan: 2,
155 printBar: false,
156 title: gettext('PVE Manager Version'),
157 textField: 'pveversion',
158 value: '',
159 },
160 {
161 itemId: 'repositoryStatus',
162 colspan: 2,
163 printBar: false,
164 title: gettext('Repository Status'),
165 // for bind
166 setValue: function(value) {
167 let me = this;
168 me.updateValue(value);
169 },
170 bind: {
171 value: '{repoStatusMessage}',
172 },
173 },
174 ],
175
176 updateTitle: function() {
177 var me = this;
178 var uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));
179 me.setTitle(me.pveSelNode.data.node + ' (' + gettext('Uptime') + ': ' + uptime + ')');
180 },
181
182 setRepositoryInfo: function(standardRepos) {
183 let me = this;
184 let vm = me.getViewModel();
185
186 for (const standardRepo of standardRepos) {
187 const handle = standardRepo.handle;
188 const status = standardRepo.status;
189
190 if (handle === "enterprise") {
191 vm.set('enterpriseRepo', status);
192 } else if (handle === "no-subscription") {
193 vm.set('noSubscriptionRepo', status);
194 } else if (handle === "test") {
195 vm.set('testRepo', status);
196 }
197 }
198 },
199
200 setSubscriptionStatus: function(status) {
201 let me = this;
202 let vm = me.getViewModel();
203
204 vm.set('subscriptionActive', status);
205 },
206 });