]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/DiskStorageSelector.js
1 Ext
.define('PVE.form.DiskStorageSelector', {
2 extend
: 'Ext.container.Container',
3 alias
: 'widget.pveDiskStorageSelector',
10 // the fieldLabel for the storageselector
11 storageLabel
: gettext('Storage'),
13 // the content to show (e.g., images or rootdir)
14 storageContent
: undefined,
16 // if true, selects the first available storage
22 // hides the selection field
23 // this is always hidden on creation,
24 // and only shown when the storage needs a selection and
25 // hideSelection is not true
26 hideSelection
: undefined,
28 // hides the size field (e.g, for the efi disk dialog)
31 // sets the initial size value
32 // string because else we get a type confusion
35 changeStorage: function(f
, value
) {
37 var formatsel
= me
.getComponent('diskformat');
38 var hdfilesel
= me
.getComponent('hdimage');
39 var hdsizesel
= me
.getComponent('disksize');
41 // initial store load, and reset/deletion of the storage
43 hdfilesel
.setDisabled(true);
44 hdfilesel
.setVisible(false);
46 formatsel
.setDisabled(true);
50 var rec
= f
.store
.getById(value
);
51 // if the storage is not defined, or valid,
52 // we cannot know what to enable/disable
57 var selectformat
= false;
58 if (rec
.data
.format
) {
59 var format
= rec
.data
.format
[0]; // 0 is the formats, 1 the default in the backend
60 delete format
.subvol
; // we never need subvol in the gui
61 selectformat
= (Ext
.Object
.getSize(format
) > 1);
64 var select
= !!rec
.data
.select_existing
&& !me
.hideSelection
;
66 formatsel
.setDisabled(!selectformat
);
67 formatsel
.setValue(selectformat
? 'qcow2' : 'raw');
69 hdfilesel
.setDisabled(!select
);
70 hdfilesel
.setVisible(select
);
72 hdfilesel
.setStorage(value
);
75 hdsizesel
.setDisabled(select
|| me
.hideSize
);
76 hdsizesel
.setVisible(!select
&& !me
.hideSize
);
79 setNodename: function(nodename
) {
81 var hdstorage
= me
.getComponent('hdstorage');
82 var hdfilesel
= me
.getComponent('hdimage');
84 hdstorage
.setNodename(nodename
);
85 hdfilesel
.setNodename(nodename
);
88 setDisabled: function(value
) {
90 var hdstorage
= me
.getComponent('hdstorage');
96 hdstorage
.setDisabled(value
);
98 // disabling does not always fire this event and we do not need
99 // the value of the validity
100 hdstorage
.fireEvent('validitychange');
103 initComponent: function() {
108 xtype
: 'pveStorageSelector',
111 reference
: 'hdstorage',
112 fieldLabel
: me
.storageLabel
,
113 nodename
: me
.nodename
,
114 storageContent
: me
.storageContent
,
115 disabled
: me
.disabled
,
116 autoSelect
: me
.autoSelect
,
117 allowBlank
: me
.allowBlank
,
118 emptyText
: me
.emptyText
,
121 fn
: me
.changeStorage
,
127 xtype
: 'pveFileSelector',
129 reference
: 'hdimage',
131 fieldLabel
: gettext('Disk image'),
132 nodename
: me
.nodename
,
137 xtype
: 'numberfield',
139 reference
: 'disksize',
141 fieldLabel
: gettext('Disk size') + ' (GiB)',
143 disabled
: me
.hideSize
,
147 value
: me
.defaultSize
,
151 xtype
: 'pveDiskFormatSelector',
152 itemId
: 'diskformat',
153 reference
: 'diskformat',
155 fieldLabel
: gettext('Format'),
156 nodename
: me
.nodename
,
158 hidden
: me
.storageContent
=== 'rootdir',
164 // use it to disable the children but not ourself