]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/data/ResourceStore.js
ui: Utils: use render functions from widget-toolkit
[pve-manager.git] / www / manager6 / data / ResourceStore.js
CommitLineData
4053fc86 1Ext.define('PVE.data.ResourceStore', {
0c7c0d6b 2 extend: 'Proxmox.data.UpdateStore',
4053fc86
DM
3 singleton: true,
4
5 findVMID: function(vmid) {
6 var me = this, i;
0be88ae1 7
53e3ea84 8 return me.findExact('vmid', parseInt(vmid, 10)) >= 0;
4053fc86 9 },
0be88ae1 10
d9e02939
TL
11 // returns the cached data from all nodes
12 getNodes: function() {
13 var me = this;
14
15 var nodes = [];
16 me.each(function(record) {
17 if (record.get('type') == "node") {
8058410f 18 nodes.push(record.getData());
d9e02939
TL
19 }
20 });
21
22 return nodes;
23 },
24
01532f8d
WL
25 storageIsShared: function(storage_path) {
26 var me = this;
27
28 var index = me.findExact('id', storage_path);
29
30 return me.getAt(index).data.shared;
31 },
32
93418231
WL
33 guestNode: function(vmid) {
34 var me = this;
35
36 var index = me.findExact('vmid', parseInt(vmid, 10));
37
38 return me.getAt(index).data.node;
39 },
40
2ae20617
TL
41 guestName: function(vmid) {
42 let me = this;
43 let index = me.findExact('vmid', parseInt(vmid, 10));
44 if (index < 0) {
45 return '-';
46 }
47 let rec = me.getAt(index).data;
48 if ('name' in rec) {
49 return rec.name;
50 }
51 return '';
52 },
53
4053fc86
DM
54 constructor: function(config) {
55 // fixme: how to avoid those warnings
4053fc86
DM
56
57 var me = this;
58
59 config = config || {};
60
61 var field_defaults = {
62 type: {
63 header: gettext('Type'),
cfb353c8 64 type: 'string',
4053fc86
DM
65 renderer: PVE.Utils.render_resource_type,
66 sortable: true,
67 hideable: false,
f6710aac 68 width: 100,
4053fc86
DM
69 },
70 id: {
71 header: 'ID',
cfb353c8 72 type: 'string',
4053fc86
DM
73 hidden: true,
74 sortable: true,
f6710aac 75 width: 80,
4053fc86
DM
76 },
77 running: {
78 header: gettext('Online'),
79 type: 'boolean',
e7ade592 80 renderer: Proxmox.Utils.format_boolean,
4053fc86
DM
81 hidden: true,
82 convert: function(value, record) {
83 var info = record.data;
53e3ea84 84 return Ext.isNumeric(info.uptime) && info.uptime > 0;
f6710aac 85 },
4053fc86
DM
86 },
87 text: {
88 header: gettext('Description'),
cfb353c8 89 type: 'string',
4053fc86
DM
90 sortable: true,
91 width: 200,
92 convert: function(value, record) {
93 var info = record.data;
94 var text;
95
96 if (value) {
97 return value;
98 }
99
cf73d1ef 100 if (Ext.isNumeric(info.vmid) && info.vmid > 0) {
4053fc86
DM
101 text = String(info.vmid);
102 if (info.name) {
103 text += " (" + info.name + ')';
104 }
cf73d1ef
DC
105 } else { // node, pool, storage
106 text = info[info.type] || info.id;
107 if (info.node && info.type !== 'node') {
108 text += " (" + info.node + ")";
109 }
4053fc86 110 }
cf73d1ef 111
4053fc86 112 return text;
f6710aac 113 },
4053fc86
DM
114 },
115 vmid: {
116 header: 'VMID',
117 type: 'integer',
118 hidden: true,
119 sortable: true,
f6710aac 120 width: 80,
4053fc86
DM
121 },
122 name: {
123 header: gettext('Name'),
124 hidden: true,
125 sortable: true,
f6710aac 126 type: 'string',
4053fc86
DM
127 },
128 disk: {
129 header: gettext('Disk usage'),
130 type: 'integer',
131 renderer: PVE.Utils.render_disk_usage,
132 sortable: true,
728f1b97 133 width: 100,
f6710aac 134 hidden: true,
728f1b97
DC
135 },
136 diskuse: {
137 header: gettext('Disk usage') + " %",
138 type: 'number',
139 sortable: true,
140 renderer: PVE.Utils.render_disk_usage_percent,
141 width: 100,
142 calculate: PVE.Utils.calculate_disk_usage,
f6710aac 143 sortType: 'asFloat',
4053fc86
DM
144 },
145 maxdisk: {
146 header: gettext('Disk size'),
147 type: 'integer',
1bd7bcdb 148 renderer: Proxmox.Utils.render_size,
4053fc86
DM
149 sortable: true,
150 hidden: true,
f6710aac 151 width: 100,
4053fc86
DM
152 },
153 mem: {
154 header: gettext('Memory usage'),
155 type: 'integer',
156 renderer: PVE.Utils.render_mem_usage,
157 sortable: true,
728f1b97 158 hidden: true,
f6710aac 159 width: 100,
728f1b97
DC
160 },
161 memuse: {
162 header: gettext('Memory usage') + " %",
163 type: 'number',
164 renderer: PVE.Utils.render_mem_usage_percent,
165 calculate: PVE.Utils.calculate_mem_usage,
166 sortType: 'asFloat',
167 sortable: true,
f6710aac 168 width: 100,
4053fc86
DM
169 },
170 maxmem: {
171 header: gettext('Memory size'),
172 type: 'integer',
1bd7bcdb 173 renderer: Proxmox.Utils.render_size,
4053fc86
DM
174 hidden: true,
175 sortable: true,
f6710aac 176 width: 100,
4053fc86
DM
177 },
178 cpu: {
179 header: gettext('CPU usage'),
180 type: 'float',
1bd7bcdb 181 renderer: Proxmox.Utils.render_cpu,
4053fc86 182 sortable: true,
f6710aac 183 width: 100,
4053fc86
DM
184 },
185 maxcpu: {
186 header: gettext('maxcpu'),
187 type: 'integer',
188 hidden: true,
189 sortable: true,
f6710aac 190 width: 60,
4053fc86
DM
191 },
192 diskread: {
193 header: gettext('Total Disk Read'),
194 type: 'integer',
195 hidden: true,
196 sortable: true,
e7ade592 197 renderer: Proxmox.Utils.format_size,
f6710aac 198 width: 100,
4053fc86
DM
199 },
200 diskwrite: {
201 header: gettext('Total Disk Write'),
202 type: 'integer',
203 hidden: true,
204 sortable: true,
e7ade592 205 renderer: Proxmox.Utils.format_size,
f6710aac 206 width: 100,
4053fc86
DM
207 },
208 netin: {
209 header: gettext('Total NetIn'),
210 type: 'integer',
211 hidden: true,
212 sortable: true,
e7ade592 213 renderer: Proxmox.Utils.format_size,
f6710aac 214 width: 100,
4053fc86
DM
215 },
216 netout: {
217 header: gettext('Total NetOut'),
218 type: 'integer',
219 hidden: true,
220 sortable: true,
e7ade592 221 renderer: Proxmox.Utils.format_size,
f6710aac 222 width: 100,
4053fc86
DM
223 },
224 template: {
225 header: gettext('Template'),
226 type: 'integer',
227 hidden: true,
228 sortable: true,
f6710aac 229 width: 60,
4053fc86
DM
230 },
231 uptime: {
232 header: gettext('Uptime'),
233 type: 'integer',
e7ade592 234 renderer: Proxmox.Utils.render_uptime,
4053fc86 235 sortable: true,
f6710aac 236 width: 110,
0be88ae1 237 },
4053fc86
DM
238 node: {
239 header: gettext('Node'),
cfb353c8 240 type: 'string',
4053fc86
DM
241 hidden: true,
242 sortable: true,
f6710aac 243 width: 110,
4053fc86
DM
244 },
245 storage: {
246 header: gettext('Storage'),
cfb353c8 247 type: 'string',
4053fc86
DM
248 hidden: true,
249 sortable: true,
f6710aac 250 width: 110,
4053fc86
DM
251 },
252 pool: {
253 header: gettext('Pool'),
cfb353c8 254 type: 'string',
4053fc86
DM
255 hidden: true,
256 sortable: true,
f6710aac 257 width: 110,
2b2fe160
DC
258 },
259 hastate: {
260 header: gettext('HA State'),
261 type: 'string',
c9329af1 262 defaultValue: 'unmanaged',
2b2fe160 263 hidden: true,
f6710aac 264 sortable: true,
03f18f5e
DC
265 },
266 status: {
267 header: gettext('Status'),
268 type: 'string',
269 hidden: true,
270 sortable: true,
f6710aac 271 width: 110,
6284a48a
DC
272 },
273 lock: {
274 header: gettext('Lock'),
275 type: 'string',
276 hidden: true,
277 sortable: true,
f6710aac
TL
278 width: 110,
279 },
a62ee730
AD
280 hostcpu: {
281 header: gettext('Host CPU usage'),
282 type: 'float',
283 renderer: PVE.Utils.render_hostcpu,
284 calculate: PVE.Utils.calculate_hostcpu,
285 sortType: 'asFloat',
286 sortable: true,
287 width: 100
288 },
289 hostmemuse: {
290 header: gettext('Host Memory usage') + " %",
291 type: 'number',
292 renderer: PVE.Utils.render_hostmem_usage_percent,
293 calculate: PVE.Utils.calculate_hostmem_usage,
294 sortType: 'asFloat',
295 sortable: true,
296 width: 100
297 },
4053fc86
DM
298 };
299
300 var fields = [];
301 var fieldNames = [];
302 Ext.Object.each(field_defaults, function(key, value) {
8058410f 303 var field = { name: key, type: value.type };
2abb517f
DC
304 if (Ext.isDefined(value.convert)) {
305 field.convert = value.convert;
306 }
307
308 if (Ext.isDefined(value.calculate)) {
309 field.calculate = value.calculate;
728f1b97 310 }
2abb517f
DC
311
312 if (Ext.isDefined(value.defaultValue)) {
313 field.defaultValue = value.defaultValue;
314 }
315
316 fields.push(field);
317 fieldNames.push(key);
4053fc86
DM
318 });
319
320 Ext.define('PVEResources', {
321 extend: "Ext.data.Model",
322 fields: fields,
323 proxy: {
56a353b9 324 type: 'proxmox',
f6710aac
TL
325 url: '/api2/json/cluster/resources',
326 },
4053fc86
DM
327 });
328
329 Ext.define('PVETree', {
330 extend: "Ext.data.Model",
331 fields: fields,
f6710aac 332 proxy: { type: 'memory' },
4053fc86
DM
333 });
334
335 Ext.apply(config, {
336 storeid: 'PVEResources',
337 model: 'PVEResources',
3a8c89c2 338 defaultColumns: function() {
4053fc86
DM
339 var res = [];
340 Ext.Object.each(field_defaults, function(field, info) {
341 var fi = Ext.apply({ dataIndex: field }, info);
342 res.push(fi);
343 });
344 return res;
345 },
f6710aac 346 fieldNames: fieldNames,
4053fc86
DM
347 });
348
349 me.callParent([config]);
f6710aac 350 },
4053fc86 351});