]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/form/DiskStorageSelector.js
gui: qemu/HardwareView: prepare Hardwareview for font-awesome icons
[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
34c235be
DC
79 setNodename: function(nodename) {
80 var me = this;
81 var hdstorage = me.getComponent('hdstorage');
82 var hdfilesel = me.getComponent('hdimage');
83
84 hdstorage.setNodename(nodename);
85 hdfilesel.setNodename(nodename);
86 },
87
acd0d10a
DC
88 initComponent: function() {
89 var me = this;
90
91 me.items = [
92 {
93 xtype: 'pveStorageSelector',
94 itemId: 'hdstorage',
95 name: 'hdstorage',
96 reference: 'hdstorage',
97 fieldLabel: me.storageLabel,
98 nodename: me.nodename,
99 storageContent: me.storageContent,
100 autoSelect: me.autoSelect,
101 allowBlank: me.allowBlank,
102 emptyText: me.emptyText,
103 listeners: {
104 change: {
105 fn: me.changeStorage,
106 scope: me
107 }
108 }
109 },
110 {
111 xtype: 'pveFileSelector',
112 name: 'hdimage',
113 reference: 'hdimage',
114 itemId: 'hdimage',
115 fieldLabel: gettext('Disk image'),
116 nodename: me.nodename,
117 disabled: true,
118 hidden: true
119 },
120 {
121 xtype: 'numberfield',
122 itemId: 'disksize',
123 reference: 'disksize',
124 name: 'disksize',
07de0118 125 fieldLabel: gettext('Disk size') + ' (GiB)',
acd0d10a
DC
126 hidden: me.hideSize,
127 disabled: me.hideSize,
128 minValue: 0.001,
129 maxValue: 128*1024,
130 decimalPrecision: 3,
c6c8e2fc 131 value: me.defaultSize,
acd0d10a
DC
132 allowBlank: false
133 },
134 {
135 xtype: 'pveDiskFormatSelector',
136 itemId: 'diskformat',
137 reference: 'diskformat',
138 name: 'diskformat',
139 fieldLabel: gettext('Format'),
140 nodename: me.nodename,
141 disabled: true,
142 hidden: me.storageContent === 'rootdir',
143 value: 'qcow2',
144 allowBlank: false
145 }
146 ];
147
148 me.callParent();
149 }
150});