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