]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/DiskStorageSelector.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[pve-manager.git] / www / manager6 / form / DiskStorageSelector.js
1 Ext.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
31 // sets the initial size value
32 // string because else we get a type confusion
33 defaultSize: '32',
34
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 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
88 setDisabled: function(value) {
89 var me = this;
90 var hdstorage = me.getComponent('hdstorage');
91
92 // reset on disable
93 if (value) {
94 hdstorage.setValue();
95 }
96 hdstorage.setDisabled(value);
97
98 // disabling does not always fire this event and we do not need
99 // the value of the validity
100 hdstorage.fireEvent('validitychange');
101 },
102
103 initComponent: function() {
104 var me = this;
105
106 me.items = [
107 {
108 xtype: 'pveStorageSelector',
109 itemId: 'hdstorage',
110 name: 'hdstorage',
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,
119 listeners: {
120 change: {
121 fn: me.changeStorage,
122 scope: me,
123 },
124 },
125 },
126 {
127 xtype: 'pveFileSelector',
128 name: 'hdimage',
129 reference: 'hdimage',
130 itemId: 'hdimage',
131 fieldLabel: gettext('Disk image'),
132 nodename: me.nodename,
133 disabled: true,
134 hidden: true,
135 },
136 {
137 xtype: 'numberfield',
138 itemId: 'disksize',
139 reference: 'disksize',
140 name: 'disksize',
141 fieldLabel: gettext('Disk size') + ' (GiB)',
142 hidden: me.hideSize,
143 disabled: me.hideSize,
144 minValue: 0.001,
145 maxValue: 128*1024,
146 decimalPrecision: 3,
147 value: me.defaultSize,
148 allowBlank: false,
149 },
150 {
151 xtype: 'pveDiskFormatSelector',
152 itemId: 'diskformat',
153 reference: 'diskformat',
154 name: 'diskformat',
155 fieldLabel: gettext('Format'),
156 nodename: me.nodename,
157 disabled: true,
158 hidden: me.storageContent === 'rootdir',
159 value: 'qcow2',
160 allowBlank: false,
161 },
162 ];
163
164 // use it to disable the children but not ourself
165 me.disabled = false;
166
167 me.callParent();
168 },
169 });