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