]> git.proxmox.com Git - pve-manager.git/blob - www/manager/form/NodeSelector.js
imported from svn 'pve-manager/pve2'
[pve-manager.git] / www / manager / form / NodeSelector.js
1 Ext.define('PVE.form.NodeSelector', {
2 extend: 'PVE.form.ComboGrid',
3 requires: [
4 'Ext.data.Store',
5 'PVE.RestProxy'
6 ],
7 alias: ['widget.PVE.form.NodeSelector'],
8
9 // invalidate nodes which are offline
10 onlineValidator: false,
11
12 initComponent: function() {
13 var me = this;
14
15 var store = Ext.create('Ext.data.Store', {
16 fields: [ 'name', 'cpu', 'maxcpu', 'mem', 'maxmem', 'uptime' ],
17 autoLoad: true,
18 proxy: {
19 type: 'pve',
20 url: '/api2/json/nodes'
21 },
22 autoDestory: true,
23 sorters: [
24 {
25 property : 'mem',
26 direction: 'DESC'
27 },
28 {
29 property : 'name',
30 direction: 'ASC'
31 }
32 ]
33 });
34
35 Ext.apply(me, {
36 store: store,
37 valueField: 'name',
38 displayField: 'name',
39 listConfig: {
40 columns: [
41 {
42 header: 'Node',
43 dataIndex: 'name',
44 hideable: false,
45 flex: 1
46 },
47 {
48 header: 'Memory usage',
49 renderer: PVE.Utils.render_mem_usage,
50 width: 100,
51 dataIndex: 'mem'
52 },
53 {
54 header: 'CPU usage',
55 renderer: PVE.Utils.render_cpu,
56 sortable: true,
57 width: 100,
58 dataIndex: 'cpu'
59 }
60 ]
61 },
62 validator: function(value) {
63 /*jslint confusion: true */
64 if (!me.onlineValidator || (me.allowBlank && !value)) {
65 return true;
66 }
67
68 var offline = [];
69 Ext.Array.each(value.split(/\s*,\s*/), function(node) {
70 var rec = me.store.findRecord(me.valueField, node);
71 if (!(rec && rec.data) || !Ext.isNumeric(rec.data.mem)) {
72 offline.push(node);
73 }
74 });
75
76 if (offline.length == 0) {
77 return true;
78 }
79
80 return "Node " + offline.join(', ') + " seems to be offline!";
81 }
82 });
83
84 me.callParent();
85 }
86 });