]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/NodeSelector.js
load the store later, move non-dynamic properties and methods to class body
[pve-manager.git] / www / manager6 / form / NodeSelector.js
1 Ext.define('PVE.form.NodeSelector', {
2 extend: 'PVE.form.ComboGrid',
3 alias: ['widget.pveNodeSelector'],
4
5 // invalidate nodes which are offline
6 onlineValidator: false,
7
8 selectCurNode: false,
9
10 // only allow those nodes (array)
11 allowedNodes: undefined,
12
13 valueField: 'node',
14 displayField: 'node',
15 store: {
16 fields: [ 'node', 'cpu', 'maxcpu', 'mem', 'maxmem', 'uptime' ],
17 proxy: {
18 type: 'pve',
19 url: '/api2/json/nodes'
20 },
21 sorters: [
22 {
23 property : 'node',
24 direction: 'ASC'
25 },
26 {
27 property : 'mem',
28 direction: 'DESC'
29 }
30 ]
31 },
32
33 listConfig: {
34 columns: [
35 {
36 header: gettext('Node'),
37 dataIndex: 'node',
38 sortable: true,
39 hideable: false,
40 flex: 1
41 },
42 {
43 header: gettext('Memory usage'),
44 renderer: PVE.Utils.render_mem_usage,
45 sortable: true,
46 width: 100,
47 dataIndex: 'mem'
48 },
49 {
50 header: gettext('CPU usage'),
51 renderer: PVE.Utils.render_cpu,
52 sortable: true,
53 width: 100,
54 dataIndex: 'cpu'
55 }
56 ],
57 },
58
59 validator: function(value) {
60 /*jslint confusion: true */
61 var me = this;
62 if (!me.onlineValidator || (me.allowBlank && !value)) {
63 return true;
64 }
65
66 var offline = [];
67 var notAllowed = [];
68
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 } else if (me.allowedNodes && !Ext.Array.contains(me.allowedNodes, node)) {
74 notAllowed.push(node);
75 }
76 });
77
78 if (notAllowed.length !== 0) {
79 return "Node " + notAllowed.join(', ') + " is not allowed for this action!";
80 }
81
82 if (offline.length !== 0) {
83 return "Node " + offline.join(', ') + " seems to be offline!";
84 }
85 return true;
86 },
87
88 initComponent: function() {
89 var me = this;
90
91 if (me.selectCurNode && PVE.curSelectedNode.data.node) {
92 me.preferredValue = PVE.curSelectedNode.data.node;
93 }
94
95 me.callParent();
96 me.getStore().load();
97 }
98 });