]> git.proxmox.com Git - pve-manager.git/blame - www/manager5/form/NodeSelector.js
update build infrastucture to be able to develop with Ext6
[pve-manager.git] / www / manager5 / form / NodeSelector.js
CommitLineData
0af13848
DM
1Ext.define('PVE.form.NodeSelector', {
2 extend: 'PVE.form.ComboGrid',
3 alias: ['widget.PVE.form.NodeSelector'],
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 initComponent: function() {
14 var me = this;
15
16 var store = Ext.create('Ext.data.Store', {
17 fields: [ 'node', 'cpu', 'maxcpu', 'mem', 'maxmem', 'uptime' ],
18 autoLoad: true,
19 proxy: {
20 type: 'pve',
21 url: '/api2/json/nodes'
22 },
23 sorters: [
24 {
25 property : 'node',
26 direction: 'ASC'
27 },
28 {
29 property : 'mem',
30 direction: 'DESC'
31 }
32 ]
33 });
34
35 Ext.apply(me, {
36 store: store,
37 valueField: 'node',
38 displayField: 'node',
39 listConfig: {
40 columns: [
41 {
42 header: gettext('Node'),
43 dataIndex: 'node',
44 sortable: true,
45 hideable: false,
46 flex: 1
47 },
48 {
49 header: gettext('Memory usage'),
50 renderer: PVE.Utils.render_mem_usage,
51 sortable: true,
52 width: 100,
53 dataIndex: 'mem'
54 },
55 {
56 header: gettext('CPU usage'),
57 renderer: PVE.Utils.render_cpu,
58 sortable: true,
59 width: 100,
60 dataIndex: 'cpu'
61 }
62 ]
63 },
64 validator: function(value) {
65 /*jslint confusion: true */
66 if (!me.onlineValidator || (me.allowBlank && !value)) {
67 return true;
68 }
69
70 var offline = [];
71 var notAllowed = [];
72
73 Ext.Array.each(value.split(/\s*,\s*/), function(node) {
74 var rec = me.store.findRecord(me.valueField, node);
75 if (!(rec && rec.data) || !Ext.isNumeric(rec.data.mem)) {
76 offline.push(node);
77 } else if (me.allowedNodes && !Ext.Array.contains(me.allowedNodes, node)) {
78 notAllowed.push(node);
79 }
80 });
81
82 if (notAllowed.length !== 0) {
83 return "Node " + notAllowed.join(', ') + " is not allowed for this action!";
84 }
85
86 if (offline.length !== 0) {
87 return "Node " + offline.join(', ') + " seems to be offline!";
88 }
89 return true;
90 }
91 });
92
93 if (me.selectCurNode && PVE.curSelectedNode.data.node) {
94 me.preferredValue = PVE.curSelectedNode.data.node;
95 }
96
97 me.callParent();
98 }
99});