]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/lxc/MPEdit.js
1 /*jslint confusion: true*/
2 /* hidden: boolean and string
3 * bind: function and object
4 * disabled: boolean and string
6 Ext
.define('PVE.lxc.MountPointInputPanel', {
7 extend
: 'Proxmox.panel.InputPanel',
8 xtype
: 'pveLxcMountPointInputPanel',
12 onlineHelp
: 'pct_container_storage',
14 unused
: false, // add unused disk imaged
18 vmconfig
: {}, // used to select unused disks
20 setUnprivileged: function(unprivileged
) {
22 var vm
= me
.getViewModel();
23 me
.unprivileged
= unprivileged
;
24 vm
.set('unpriv', unprivileged
);
27 onGetValues: function(values
) {
30 var confid
= me
.confid
|| values
.mpsel
;
31 values
.file
= me
.down('field[name=file]').getValue();
34 confid
= values
.mpsel
;
35 } else if (me
.isCreate
) {
36 values
.file
= values
.hdstorage
+ ':' + values
.disksize
;
39 // delete unnecessary fields
41 delete values
.hdstorage
;
42 delete values
.disksize
;
43 delete values
.diskformat
;
46 res
[confid
] = PVE
.Parser
.printLxcMountPoint(values
);
51 setMountPoint: function(mp
) {
53 var vm
= this.getViewModel();
54 vm
.set('mptype', mp
.type
);
58 setVMConfig: function(vmconfig
) {
60 var vm
= me
.getViewModel();
61 me
.vmconfig
= vmconfig
;
62 vm
.set('unpriv', vmconfig
.unprivileged
);
65 PVE
.Utils
.forEachMP(function(bus
, i
) {
66 var name
= "mp" + i
.toString();
67 if (!Ext
.isDefined(vmconfig
[name
])) {
68 me
.down('field[name=mpsel]').setValue(name
);
74 setNodename: function(nodename
) {
76 var vm
= me
.getViewModel();
77 vm
.set('node', nodename
);
79 me
.down('#diskstorage').setNodename(nodename
);
83 xclass
: 'Ext.app.ViewController',
86 'field[name=mpsel]': {
87 change: function(field
, value
) {
92 change: function(field
, newValue
) {
98 var rec
= field
.store
.getById(newValue
);
103 var vm
= me
.getViewModel();
104 vm
.set('type', rec
.data
.type
);
110 init: function(view
) {
112 var vm
= this.getViewModel();
113 vm
.set('confid', view
.confid
);
114 vm
.set('unused', view
.unused
);
115 vm
.set('node', view
.nodename
);
116 vm
.set('unpriv', view
.unprivileged
);
117 vm
.set('hideStorSelector', view
.unused
|| !view
.isCreate
);
126 showStorageSelector
: false,
134 quota: function(get) {
135 return !(get('type') === 'zfs' ||
136 get('type') === 'zfspool' ||
140 hasMP: function(get) {
141 return !!get('confid') && !get('unused');
143 isRoot: function(get) {
144 return get('confid') === 'rootfs';
146 isBind: function(get) {
147 return get('mptype') === 'bind';
149 isBindOrRoot: function(get) {
150 return get('isBind') || get('isRoot');
157 xtype
: 'proxmoxKVComboBox',
159 fieldLabel
: gettext('Mount Point'),
160 matchFieldWidth
: false,
167 comboItems
: (function(){
169 PVE
.Utils
.forEachMP(function(bus
,i
) {
170 var name
= 'mp' + i
.toString();
171 mps
.push([name
,name
]);
175 validator: function(value
) {
176 var me
= this.up('inputpanel');
180 if (Ext
.isDefined(me
.vmconfig
[value
])) {
181 return "Mount point is already in use.";
183 /*jslint confusion: true*/
184 /* returns a string above */
189 xtype
: 'pveDiskStorageSelector',
190 itemId
: 'diskstorage',
191 storageContent
: 'rootdir',
197 hidden
: '{hideStorSelector}',
198 disabled
: '{hideStorSelector}',
206 fieldLabel
: gettext('Disk image'),
209 hidden
: '{!hideStorSelector}'
219 emptyText
: gettext('/some/path'),
221 fieldLabel
: gettext('Path'),
228 xtype
: 'proxmoxcheckbox',
230 fieldLabel
: gettext('Backup'),
233 disabled
: '{isBindOrRoot}'
240 xtype
: 'proxmoxcheckbox',
246 fieldLabel
: gettext('Enable quota'),
248 disable: function() {
254 xtype
: 'proxmoxcheckbox',
261 fieldLabel
: gettext('Read-only')
267 xtype
: 'proxmoxKVComboBox',
272 ['__default__', Proxmox
.Utils
.defaultText
],
273 ['1', Proxmox
.Utils
.enabledText
],
274 ['0', Proxmox
.Utils
.disabledText
]
276 value
: '__default__',
283 xtype
: 'proxmoxcheckbox',
284 inputValue
: '0', // reverses the logic
286 fieldLabel
: gettext('Skip replication')
291 Ext
.define('PVE.lxc.MountPointEdit', {
292 extend
: 'Proxmox.window.Edit',
296 initComponent : function() {
299 var nodename
= me
.pveSelNode
.data
.node
;
301 throw "no node name specified";
304 var unused
= me
.confid
&& me
.confid
.match(/^unused\d+$/);
306 me
.isCreate
= me
.confid
? unused
: true;
308 var ipanel
= Ext
.create('PVE.lxc.MountPointInputPanel', {
312 unprivileged
: me
.unprivileged
,
313 isCreate
: me
.isCreate
318 subject
= gettext('Unused Disk');
319 } else if (me
.isCreate
) {
320 subject
= gettext('Mount Point');
322 subject
= gettext('Mount Point') + ' (' + me
.confid
+ ')';
333 success: function(response
, options
) {
334 ipanel
.setVMConfig(response
.result
.data
);
336 /*jslint confusion: true*/
337 /*data is defined as array above*/
338 var value
= response
.result
.data
[me
.confid
];
339 /*jslint confusion: false*/
340 var mp
= PVE
.Parser
.parseLxcMountPoint(value
);
343 Ext
.Msg
.alert(gettext('Error'), 'Unable to parse mount point options');
348 ipanel
.setMountPoint(mp
);
349 me
.isValid(); // trigger validation