]>
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 // hides the format field (e.g. for TPM state)
34 // sets the initial size value
35 // string because else we get a type confusion
38 changeStorage: function(f
, value
) {
40 var formatsel
= me
.getComponent('diskformat');
41 var hdfilesel
= me
.getComponent('hdimage');
42 var hdsizesel
= me
.getComponent('disksize');
44 // initial store load, and reset/deletion of the storage
46 hdfilesel
.setDisabled(true);
47 hdfilesel
.setVisible(false);
49 formatsel
.setDisabled(true);
53 var rec
= f
.store
.getById(value
);
54 // if the storage is not defined, or valid,
55 // we cannot know what to enable/disable
60 let validFormats
= {};
61 let selectFormat
= 'raw';
62 if (rec
.data
.format
) {
63 validFormats
= rec
.data
.format
[0]; // 0 is the formats, 1 the default in the backend
64 delete validFormats
.subvol
; // we never need subvol in the gui
65 if (validFormats
.qcow2
) {
66 selectFormat
= 'qcow2';
67 } else if (validFormats
.raw
) {
70 selectFormat
= rec
.data
.format
[1];
74 var select
= !!rec
.data
.select_existing
&& !me
.hideSelection
;
76 formatsel
.setDisabled(me
.hideFormat
|| Ext
.Object
.getSize(validFormats
) <= 1);
77 formatsel
.setValue(selectFormat
);
79 hdfilesel
.setDisabled(!select
);
80 hdfilesel
.setVisible(select
);
82 hdfilesel
.setStorage(value
);
85 hdsizesel
.setDisabled(select
|| me
.hideSize
);
86 hdsizesel
.setVisible(!select
&& !me
.hideSize
);
89 setNodename: function(nodename
) {
91 var hdstorage
= me
.getComponent('hdstorage');
92 var hdfilesel
= me
.getComponent('hdimage');
94 hdstorage
.setNodename(nodename
);
95 hdfilesel
.setNodename(nodename
);
98 setDisabled: function(value
) {
100 var hdstorage
= me
.getComponent('hdstorage');
104 hdstorage
.setValue();
106 hdstorage
.setDisabled(value
);
108 // disabling does not always fire this event and we do not need
109 // the value of the validity
110 hdstorage
.fireEvent('validitychange');
113 initComponent: function() {
118 xtype
: 'pveStorageSelector',
121 fieldLabel
: me
.storageLabel
,
122 nodename
: me
.nodename
,
123 storageContent
: me
.storageContent
,
124 disabled
: me
.disabled
,
125 autoSelect
: me
.autoSelect
,
126 allowBlank
: me
.allowBlank
,
127 emptyText
: me
.emptyText
,
130 fn
: me
.changeStorage
,
136 xtype
: 'pveFileSelector',
139 fieldLabel
: gettext('Disk image'),
140 nodename
: me
.nodename
,
145 xtype
: 'numberfield',
148 fieldLabel
: `${gettext('Disk size')} (${gettext('GiB')})`,
150 disabled
: me
.hideSize
,
154 value
: me
.defaultSize
,
158 xtype
: 'pveDiskFormatSelector',
159 itemId
: 'diskformat',
161 fieldLabel
: gettext('Format'),
162 nodename
: me
.nodename
,
164 hidden
: me
.hideFormat
|| me
.storageContent
=== 'rootdir',
170 // use it to disable the children but not ourself