]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/form/DiskStorageSelector.js
fix #1635: correctly change maxIds in ControllerSelector in wizard
[pve-manager.git] / www / manager6 / form / DiskStorageSelector.js
CommitLineData
acd0d10a
DC
1Ext.define('PVE.form.DiskStorageSelector', {
2 extend: 'Ext.container.Container',
3 alias: 'widget.pveDiskStorageSelector',
4
5 layout: 'fit',
6 defaults: {
7 margin: '0 0 5 0'
8 },
9
10 // the fieldLabel for the storageselector
11 storageLabel: gettext('Storage'),
12
13 // the content to show (e.g., images or rootdir)
14 storageContent: undefined,
15
16 // if true, selects the first available storage
17 autoSelect: false,
18
19 allowBlank: false,
20 emptyText: '',
21
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,
27
28 // hides the size field (e.g, for the efi disk dialog)
29 hideSize: false,
30
c6c8e2fc
DC
31 // sets the intial size value
32 // string because else we get a type confusion
33 defaultSize: '32',
34
acd0d10a
DC
35 changeStorage: function(f, value) {
36 var me = this;
37 var formatsel = me.getComponent('diskformat');
38 var hdfilesel = me.getComponent('hdimage');
39 var hdsizesel = me.getComponent('disksize');
40
41 // initial store load, and reset/deletion of the storage
42 if (!value) {
43 hdfilesel.setDisabled(true);
44 hdfilesel.setVisible(false);
45
46 formatsel.setDisabled(true);
47 return;
48 }
49
50 var rec = f.store.getById(value);
51 // if the storage is not defined, or valid,
52 // we cannot know what to enable/disable
53 if (!rec) {
54 return;
55 }
56
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);
62 }
63
64 var select = !!rec.data.select_existing && !me.hideSelection;
65
66 formatsel.setDisabled(!selectformat);
67 formatsel.setValue(selectformat ? 'qcow2' : 'raw');
68
69 hdfilesel.setDisabled(!select);
70 hdfilesel.setVisible(select);
71 if (select) {
72 hdfilesel.setStorage(value);
73 }
74
75 hdsizesel.setDisabled(select || me.hideSize);
76 hdsizesel.setVisible(!select && !me.hideSize);
77 },
78
79 initComponent: function() {
80 var me = this;
81
82 me.items = [
83 {
84 xtype: 'pveStorageSelector',
85 itemId: 'hdstorage',
86 name: 'hdstorage',
87 reference: 'hdstorage',
88 fieldLabel: me.storageLabel,
89 nodename: me.nodename,
90 storageContent: me.storageContent,
91 autoSelect: me.autoSelect,
92 allowBlank: me.allowBlank,
93 emptyText: me.emptyText,
94 listeners: {
95 change: {
96 fn: me.changeStorage,
97 scope: me
98 }
99 }
100 },
101 {
102 xtype: 'pveFileSelector',
103 name: 'hdimage',
104 reference: 'hdimage',
105 itemId: 'hdimage',
106 fieldLabel: gettext('Disk image'),
107 nodename: me.nodename,
108 disabled: true,
109 hidden: true
110 },
111 {
112 xtype: 'numberfield',
113 itemId: 'disksize',
114 reference: 'disksize',
115 name: 'disksize',
116 fieldLabel: gettext('Disk size') + ' (GB)',
117 hidden: me.hideSize,
118 disabled: me.hideSize,
119 minValue: 0.001,
120 maxValue: 128*1024,
121 decimalPrecision: 3,
c6c8e2fc 122 value: me.defaultSize,
acd0d10a
DC
123 allowBlank: false
124 },
125 {
126 xtype: 'pveDiskFormatSelector',
127 itemId: 'diskformat',
128 reference: 'diskformat',
129 name: 'diskformat',
130 fieldLabel: gettext('Format'),
131 nodename: me.nodename,
132 disabled: true,
133 hidden: me.storageContent === 'rootdir',
134 value: 'qcow2',
135 allowBlank: false
136 }
137 ];
138
139 me.callParent();
140 }
141});