]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/MachineEdit.js
1 Ext
.define('PVE.qemu.MachineInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
3 xtype
: 'pveMachineInputPanel',
6 xclass
: 'Ext.app.ViewController',
8 'combobox[name=machine]': {
9 change
: 'onMachineChange',
12 onMachineChange: function(field
, value
) {
14 let version
= me
.lookup('version');
15 let store
= version
.getStore();
16 let oldRec
= store
.findRecord('id', version
.getValue(), 0, false, false, true);
17 let type
= value
=== 'q35' ? 'q35' : 'i440fx';
19 store
.addFilter(val
=> val
.data
.id
=== 'latest' || val
.data
.type
=== type
);
20 if (!me
.getView().isWindows
) {
21 version
.setValue('latest');
23 store
.isWindows
= true;
27 let oldVers
= oldRec
.data
.version
;
28 // we already filtered by correct type, so just check version property
29 let rec
= store
.findRecord('version', oldVers
, 0, false, false, true);
37 onGetValues: function(values
) {
38 if (values
.version
&& values
.version
!== 'latest') {
39 values
.machine
= values
.version
;
42 delete values
.version
;
46 setValues: function(values
) {
49 me
.isWindows
= values
.isWindows
;
50 if (values
.machine
=== 'pc') {
51 values
.machine
= '__default__';
55 if (values
.machine
=== '__default__') {
56 values
.version
= 'pc-i440fx-5.1';
57 } else if (values
.machine
=== 'q35') {
58 values
.version
= 'pc-q35-5.1';
61 if (values
.machine
!== '__default__' && values
.machine
!== 'q35') {
62 values
.version
= values
.machine
;
63 values
.machine
= values
.version
.match(/q35/) ? 'q35' : '__default__';
65 // avoid hiding a pinned version
66 me
.setAdvancedVisible(true);
69 this.callParent(arguments
);
73 xtype
: 'proxmoxKVComboBox',
76 fieldLabel
: gettext('Machine'),
78 ['__default__', PVE
.Utils
.render_qemu_machine('')],
88 fieldLabel
: gettext('Version'),
89 emptyText
: gettext('Latest'),
93 displayField
: 'version',
97 fields
: ['id', 'type', 'version'],
100 url
: "/api2/json/nodes/localhost/capabilities/qemu/machines",
103 load: function(records
) {
104 if (!this.isWindows
) {
105 this.insert(0, { id
: 'latest', type
: 'any', version
: gettext('Latest') });
112 xtype
: 'displayfield',
113 fieldLabel
: gettext('Note'),
114 value
: gettext('Machine version change may affect hardware layout and settings in the guest OS.'),
119 Ext
.define('PVE.qemu.MachineEdit', {
120 extend
: 'Proxmox.window.Edit',
122 subject
: gettext('Machine'),
125 xtype
: 'pveMachineInputPanel',
130 initComponent: function() {
136 success: function(response
) {
137 let conf
= response
.result
.data
;
139 machine
: conf
.machine
|| '__default__',
141 values
.isWindows
= PVE
.Utils
.is_windows(conf
.ostype
);
142 me
.setValues(values
);