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