]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/LVMEdit.js
remove displayfield height hack
[pve-manager.git] / www / manager6 / storage / LVMEdit.js
1 Ext.define('PVE.storage.VgSelector', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveVgSelector',
4 valueField: 'vg',
5 displayField: 'vg',
6 queryMode: 'local',
7 editable: false,
8 initComponent : function() {
9 var me = this;
10
11 if (!me.nodename) {
12 me.nodename = 'localhost';
13 }
14
15 var store = Ext.create('Ext.data.Store', {
16 autoLoad: {}, // true,
17 fields: [ 'vg', 'size', 'free' ],
18 proxy: {
19 type: 'pve',
20 url: '/api2/json/nodes/' + me.nodename + '/scan/lvm'
21 }
22 });
23
24 Ext.apply(me, {
25 store: store,
26 listConfig: {
27 loadingText: gettext('Scanning...'),
28 }
29 });
30
31 me.callParent();
32 }
33 });
34
35 Ext.define('PVE.storage.BaseStorageSelector', {
36 extend: 'Ext.form.field.ComboBox',
37 alias: 'widget.pveBaseStorageSelector',
38
39 existingGroupsText: gettext("Existing volume groups"),
40 queryMode: 'local',
41 editable: false,
42 value: '',
43 valueField: 'storage',
44 displayField: 'text',
45 initComponent : function() {
46 var me = this;
47
48 var store = Ext.create('Ext.data.Store', {
49 autoLoad: {
50 addRecords: true,
51 params: {
52 type: 'iscsi'
53 }
54 },
55 fields: [ 'storage', 'type', 'content',
56 {
57 name: 'text',
58 convert: function(value, record) {
59 if (record.data.storage) {
60 return record.data.storage + " (iSCSI)";
61 } else {
62 return me.existingGroupsText;
63 }
64 }
65 }],
66 proxy: {
67 type: 'pve',
68 url: '/api2/json/storage/'
69 }
70 });
71
72 store.loadData([{ storage: '' }], true);
73
74 Ext.apply(me, {
75 store: store,
76 });
77
78 me.callParent();
79 }
80 });
81
82 Ext.define('PVE.storage.LVMInputPanel', {
83 extend: 'PVE.panel.InputPanel',
84
85 onGetValues: function(values) {
86 var me = this;
87
88 if (me.create) {
89 values.type = 'lvm';
90 } else {
91 delete values.storage;
92 }
93
94 values.disable = values.enable ? 0 : 1;
95 delete values.enable;
96
97 return values;
98 },
99
100 initComponent : function() {
101 var me = this;
102
103 me.column1 = [
104 {
105 xtype: me.create ? 'textfield' : 'displayfield',
106 name: 'storage',
107 value: me.storageId || '',
108 fieldLabel: 'ID',
109 vtype: 'StorageId',
110 submitValue: !!me.create,
111 allowBlank: false
112 }
113 ];
114
115 var vgnameField = Ext.createWidget(me.create ? 'textfield' : 'displayfield', {
116 name: 'vgname',
117 hidden: !!me.create,
118 disabled: !!me.create,
119 value: '',
120 fieldLabel: gettext('Volume group'),
121 allowBlank: false
122 });
123
124 if (me.create) {
125 var vgField = Ext.create('PVE.storage.VgSelector', {
126 name: 'vgname',
127 fieldLabel: gettext('Volume group'),
128 allowBlank: false
129 });
130
131 var baseField = Ext.createWidget('pveFileSelector', {
132 name: 'base',
133 hidden: true,
134 disabled: true,
135 nodename: 'localhost',
136 storageContent: 'images',
137 fieldLabel: gettext('Base volume'),
138 allowBlank: false
139 });
140
141 me.column1.push({
142 xtype: 'pveBaseStorageSelector',
143 name: 'basesel',
144 fieldLabel: gettext('Base storage'),
145 submitValue: false,
146 listeners: {
147 change: function(f, value) {
148 if (value) {
149 vgnameField.setVisible(true);
150 vgnameField.setDisabled(false);
151 vgField.setVisible(false);
152 vgField.setDisabled(true);
153 baseField.setVisible(true);
154 baseField.setDisabled(false);
155 } else {
156 vgnameField.setVisible(false);
157 vgnameField.setDisabled(true);
158 vgField.setVisible(true);
159 vgField.setDisabled(false);
160 baseField.setVisible(false);
161 baseField.setDisabled(true);
162 }
163 baseField.setStorage(value);
164 }
165 }
166 });
167
168 me.column1.push(baseField);
169
170 me.column1.push(vgField);
171 }
172
173 me.column1.push(vgnameField);
174
175 me.column1.push({
176 xtype: 'pveContentTypeSelector',
177 cts: ['images', 'rootdir'],
178 fieldLabel: gettext('Content'),
179 name: 'content',
180 value: ['images', 'rootdir'],
181 multiSelect: true,
182 allowBlank: false
183 });
184
185 me.column2 = [
186 {
187 xtype: 'pveNodeSelector',
188 name: 'nodes',
189 fieldLabel: gettext('Nodes'),
190 emptyText: gettext('All') + ' (' +
191 gettext('No restrictions') +')',
192 multiSelect: true,
193 autoSelect: false
194 },
195 {
196 xtype: 'pvecheckbox',
197 name: 'enable',
198 checked: true,
199 uncheckedValue: 0,
200 fieldLabel: gettext('Enable')
201 },
202 {
203 xtype: 'pvecheckbox',
204 name: 'shared',
205 uncheckedValue: 0,
206 fieldLabel: gettext('Shared')
207 }
208 ];
209
210 me.callParent();
211 }
212 });
213
214 Ext.define('PVE.storage.LVMEdit', {
215 extend: 'PVE.window.Edit',
216
217 initComponent : function() {
218 var me = this;
219
220 me.create = !me.storageId;
221
222 if (me.create) {
223 me.url = '/api2/extjs/storage';
224 me.method = 'POST';
225 } else {
226 me.url = '/api2/extjs/storage/' + me.storageId;
227 me.method = 'PUT';
228 }
229
230 var ipanel = Ext.create('PVE.storage.LVMInputPanel', {
231 create: me.create,
232 storageId: me.storageId
233 });
234
235 Ext.apply(me, {
236 subject: PVE.Utils.format_storage_type('lvm'),
237 isAdd: true,
238 items: [ ipanel ]
239 });
240
241 me.callParent();
242
243 if (!me.create) {
244 me.load({
245 success: function(response, options) {
246 var values = response.result.data;
247 var ctypes = values.content || '';
248
249 values.content = ctypes.split(',');
250
251 if (values.nodes) {
252 values.nodes = values.nodes.split(',');
253 }
254 values.enable = values.disable ? 0 : 1;
255 ipanel.setValues(values);
256 }
257 });
258 }
259 }
260 });