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