]>
Commit | Line | Data |
---|---|---|
1 | Ext.define('PVE.qemu.SystemInputPanel', { | |
2 | extend: 'Proxmox.panel.InputPanel', | |
3 | xtype: 'pveQemuSystemPanel', | |
4 | ||
5 | onlineHelp: 'qm_system_settings', | |
6 | ||
7 | viewModel: { | |
8 | data: { | |
9 | efi: false, | |
10 | addefi: true, | |
11 | }, | |
12 | ||
13 | formulas: { | |
14 | efidisk: function(get) { | |
15 | return get('efi') && get('addefi'); | |
16 | }, | |
17 | }, | |
18 | }, | |
19 | ||
20 | onGetValues: function(values) { | |
21 | if (values.vga && values.vga.substr(0, 6) === 'serial') { | |
22 | values['serial' + values.vga.substr(6, 1)] = 'socket'; | |
23 | } | |
24 | ||
25 | delete values.hdimage; | |
26 | delete values.hdstorage; | |
27 | delete values.diskformat; | |
28 | ||
29 | delete values.preEnrolledKeys; // efidisk | |
30 | delete values.version; // tpmstate | |
31 | ||
32 | return values; | |
33 | }, | |
34 | ||
35 | controller: { | |
36 | xclass: 'Ext.app.ViewController', | |
37 | ||
38 | scsihwChange: function(field, value) { | |
39 | var me = this; | |
40 | if (me.getView().insideWizard) { | |
41 | me.getViewModel().set('current.scsihw', value); | |
42 | } | |
43 | }, | |
44 | ||
45 | biosChange: function(field, value) { | |
46 | var me = this; | |
47 | if (me.getView().insideWizard) { | |
48 | me.getViewModel().set('efi', value === 'ovmf'); | |
49 | } | |
50 | }, | |
51 | ||
52 | control: { | |
53 | 'pveScsiHwSelector': { | |
54 | change: 'scsihwChange', | |
55 | }, | |
56 | 'pveQemuBiosSelector': { | |
57 | change: 'biosChange', | |
58 | }, | |
59 | '#': { | |
60 | afterrender: 'setMachine', | |
61 | }, | |
62 | }, | |
63 | ||
64 | setMachine: function() { | |
65 | let me = this; | |
66 | let vm = this.getViewModel(); | |
67 | let ostype = vm.get('current.ostype'); | |
68 | if (ostype === 'win11') { | |
69 | me.lookup('machine').setValue('q35'); | |
70 | me.lookup('bios').setValue('ovmf'); | |
71 | me.lookup('addtpmbox').setValue(true); | |
72 | } | |
73 | }, | |
74 | }, | |
75 | ||
76 | column1: [ | |
77 | { | |
78 | xtype: 'proxmoxKVComboBox', | |
79 | value: '__default__', | |
80 | deleteEmpty: false, | |
81 | fieldLabel: gettext('Graphic card'), | |
82 | name: 'vga', | |
83 | comboItems: Object.entries(PVE.Utils.kvm_vga_drivers), | |
84 | }, | |
85 | { | |
86 | xtype: 'proxmoxKVComboBox', | |
87 | name: 'machine', | |
88 | reference: 'machine', | |
89 | value: '__default__', | |
90 | fieldLabel: gettext('Machine'), | |
91 | comboItems: [ | |
92 | ['__default__', PVE.Utils.render_qemu_machine('')], | |
93 | ['q35', 'q35'], | |
94 | ], | |
95 | }, | |
96 | { | |
97 | xtype: 'displayfield', | |
98 | value: gettext('Firmware'), | |
99 | }, | |
100 | { | |
101 | xtype: 'pveQemuBiosSelector', | |
102 | name: 'bios', | |
103 | reference: 'bios', | |
104 | value: '__default__', | |
105 | fieldLabel: 'BIOS', | |
106 | }, | |
107 | { | |
108 | xtype: 'proxmoxcheckbox', | |
109 | bind: { | |
110 | value: '{addefi}', | |
111 | hidden: '{!efi}', | |
112 | disabled: '{!efi}', | |
113 | }, | |
114 | hidden: true, | |
115 | submitValue: false, | |
116 | disabled: true, | |
117 | fieldLabel: gettext('Add EFI Disk'), | |
118 | }, | |
119 | { | |
120 | xtype: 'pveEFIDiskInputPanel', | |
121 | name: 'efidisk0', | |
122 | storageContent: 'images', | |
123 | bind: { | |
124 | nodename: '{nodename}', | |
125 | hidden: '{!efi}', | |
126 | disabled: '{!efidisk}', | |
127 | }, | |
128 | autoSelect: false, | |
129 | disabled: true, | |
130 | hidden: true, | |
131 | hideSize: true, | |
132 | usesEFI: true, | |
133 | }, | |
134 | ], | |
135 | ||
136 | column2: [ | |
137 | { | |
138 | xtype: 'pveScsiHwSelector', | |
139 | name: 'scsihw', | |
140 | value: '__default__', | |
141 | bind: { | |
142 | value: '{current.scsihw}', | |
143 | }, | |
144 | fieldLabel: gettext('SCSI Controller'), | |
145 | }, | |
146 | { | |
147 | xtype: 'proxmoxcheckbox', | |
148 | name: 'agent', | |
149 | uncheckedValue: 0, | |
150 | defaultValue: 0, | |
151 | deleteDefaultValue: true, | |
152 | fieldLabel: gettext('Qemu Agent'), | |
153 | }, | |
154 | { | |
155 | // fake for spacing | |
156 | xtype: 'displayfield', | |
157 | value: ' ', | |
158 | }, | |
159 | { | |
160 | xtype: 'proxmoxcheckbox', | |
161 | reference: 'addtpmbox', | |
162 | bind: { | |
163 | value: '{addtpm}', | |
164 | }, | |
165 | submitValue: false, | |
166 | fieldLabel: gettext('Add TPM'), | |
167 | }, | |
168 | { | |
169 | xtype: 'pveTPMDiskInputPanel', | |
170 | name: 'tpmstate0', | |
171 | storageContent: 'images', | |
172 | bind: { | |
173 | nodename: '{nodename}', | |
174 | hidden: '{!addtpm}', | |
175 | disabled: '{!addtpm}', | |
176 | }, | |
177 | disabled: true, | |
178 | hidden: true, | |
179 | }, | |
180 | ], | |
181 | ||
182 | }); |