]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/ResourceEdit.js
add 'delete_if_default' helper and use it
[pve-manager.git] / www / manager6 / ha / ResourceEdit.js
1 Ext.define('PVE.ha.VMResourceInputPanel', {
2 extend: 'PVE.panel.InputPanel',
3 onlineHelp: 'ha_manager_service_operations',
4 vmid: undefined,
5
6 onGetValues: function(values) {
7 var me = this;
8
9 if (me.create) {
10 values.sid = values.vmid;
11 }
12
13
14 delete values.vmid;
15
16 if (values.enable) {
17 values.state = 'enabled';
18 } else {
19 values.state = 'disabled';
20 }
21 delete values.enable;
22
23 PVE.Utils.delete_if_default(values, 'group', '', me.create);
24 PVE.Utils.delete_if_default(values, 'max_restart', '1', me.create);
25 PVE.Utils.delete_if_default(values, 'max_relocate', '1', me.create);
26
27 return values;
28 },
29
30 initComponent : function() {
31 var me = this;
32
33 var disabledHint = Ext.createWidget({
34 xtype: 'displayfield', //submitValue is false, so we don't get submitted
35 userCls: 'pve-hint',
36 value: gettext('Disabling the resource will stop the guest system. ' +
37 'See the online help for details.'),
38 hidden: true
39 });
40
41 me.column1 = [
42 {
43 xtype: me.vmid ? 'displayfield' : 'pveVMIDSelector',
44 name: 'vmid',
45 fieldLabel: 'VM ID',
46 value: me.vmid,
47 loadNextFreeVMID: false,
48 validateExists: true
49 },
50 {
51 xtype: 'numberfield',
52 name: 'max_restart',
53 fieldLabel: gettext('Max. Restart'),
54 value: 1,
55 minValue: 0,
56 maxValue: 10,
57 allowBlank: false
58 },
59 {
60 xtype: 'numberfield',
61 name: 'max_relocate',
62 fieldLabel: gettext('Max. Relocate'),
63 value: 1,
64 minValue: 0,
65 maxValue: 10,
66 allowBlank: false
67 }
68 ];
69
70 me.column2 = [
71 {
72 xtype: 'pveHAGroupSelector',
73 name: 'group',
74 value: '',
75 fieldLabel: gettext('Group')
76 },
77 {
78 xtype: 'pvecheckbox',
79 name: 'enable',
80 checked: true,
81 uncheckedValue: 0,
82 fieldLabel: gettext('enabled'),
83 listeners: {
84 'change': function(field, newValue) {
85 if (newValue === false) {
86 disabledHint.setVisible(true);
87 }
88 else {
89 if (disabledHint.isVisible()) {
90 disabledHint.setVisible(false);
91 }
92 }
93 }
94 }
95 },
96 disabledHint
97 ];
98
99 me.columnB = [
100 {
101 xtype: 'textfield',
102 name: 'comment',
103 fieldLabel: gettext('Comment')
104 }
105 ];
106
107 me.callParent();
108 }
109 });
110
111 Ext.define('PVE.ha.VMResourceEdit', {
112 extend: 'PVE.window.Edit',
113
114 vmid: undefined,
115
116 initComponent : function() {
117 var me = this;
118
119 me.create = !me.vmid;
120
121 if (me.create) {
122 me.url = '/api2/extjs/cluster/ha/resources';
123 me.method = 'POST';
124 } else {
125 me.url = '/api2/extjs/cluster/ha/resources/' + me.vmid;
126 me.method = 'PUT';
127 }
128
129 var ipanel = Ext.create('PVE.ha.VMResourceInputPanel', {
130 create: me.create,
131 vmid: me.vmid
132 });
133
134 Ext.apply(me, {
135 subject: gettext('VM Resource'),
136 isAdd: true,
137 items: [ ipanel ]
138 });
139
140 me.callParent();
141
142 if (!me.create) {
143 me.load({
144 success: function(response, options) {
145 var values = response.result.data;
146
147 values.enable = true;
148 if (values.state === 'disabled') {
149 values.enable = false;
150 }
151
152 var regex = /^(\S+):(\S+)$/;
153 var res = regex.exec(values.sid);
154
155 if (res[1] !== 'vm' && res[1] !== 'ct') {
156 throw "got unexpected resource type";
157 }
158
159 values.vmid = res[2];
160
161 ipanel.setValues(values);
162 }
163 });
164 }
165 }
166 });