]>
Commit | Line | Data |
---|---|---|
9dbddec7 SR |
1 | Ext.define('PVE.qemu.MachineInputPanel', { |
2 | extend: 'Proxmox.panel.InputPanel', | |
3 | xtype: 'pveMachineInputPanel', | |
4 | ||
a51b2c33 SR |
5 | controller: { |
6 | xclass: 'Ext.app.ViewController', | |
7 | control: { | |
8 | 'combobox[name=machine]': { | |
9 | change: 'onMachineChange', | |
10 | }, | |
11 | }, | |
12 | onMachineChange: function(field, value) { | |
13 | let me = this; | |
14 | let version = me.lookup('version'); | |
15 | let store = version.getStore(); | |
16 | let type = value === 'q35' ? 'q35' : 'i440fx'; | |
17 | store.clearFilter(); | |
1b344da2 | 18 | store.addFilter(val => (val.data.id === 'latest' || val.data.type === type)); |
a51b2c33 SR |
19 | version.setValue('latest'); |
20 | }, | |
21 | }, | |
22 | ||
23 | onGetValues: function(values) { | |
24 | if (values.version && values.version !== 'latest') { | |
25 | values.machine = values.version; | |
26 | delete values.delete; | |
27 | } | |
28 | delete values.version; | |
29 | return values; | |
30 | }, | |
31 | ||
32 | setValues: function(values) { | |
33 | let me = this; | |
34 | ||
35 | if (values.machine !== '__default__' && values.machine !== 'q35') { | |
36 | values.version = values.machine; | |
37 | values.machine = values.version.match(/q35/) ? 'q35' : '__default__'; | |
38 | ||
39 | // avoid hiding a pinned version | |
40 | Ext.ComponentQuery.query("#advancedcb")[0].setValue(true); | |
41 | } | |
42 | ||
43 | this.callParent(arguments); | |
44 | }, | |
45 | ||
9dbddec7 SR |
46 | items: [{ |
47 | name: 'machine', | |
a51b2c33 | 48 | reference: 'machine', |
9dbddec7 SR |
49 | xtype: 'proxmoxKVComboBox', |
50 | fieldLabel: gettext('Machine'), | |
51 | comboItems: [ | |
52 | ['__default__', PVE.Utils.render_qemu_machine('')], | |
53 | ['q35', 'q35'], | |
54 | ], | |
55 | }], | |
a51b2c33 SR |
56 | |
57 | advancedItems: [{ | |
58 | name: 'version', | |
59 | reference: 'version', | |
60 | xtype: 'combobox', | |
61 | fieldLabel: gettext('Version'), | |
62 | value: 'latest', | |
63 | allowBlank: false, | |
64 | editable: false, | |
1b344da2 TL |
65 | valueField: 'id', |
66 | displayField: 'version', | |
a51b2c33 SR |
67 | queryParam: false, |
68 | store: { | |
69 | autoLoad: true, | |
1b344da2 | 70 | fields: ['id', 'type', 'version'], |
a51b2c33 SR |
71 | proxy: { |
72 | type: 'proxmox', | |
1b344da2 | 73 | url: "/api2/json/nodes/localhost/capabilities/qemu/machines", |
a51b2c33 SR |
74 | }, |
75 | listeners: { | |
76 | load: function(records) { | |
1b344da2 | 77 | this.insert(0, { id: 'latest', type: 'any', version: 'latest' }); |
a51b2c33 SR |
78 | }, |
79 | }, | |
80 | }, | |
81 | }], | |
9dbddec7 SR |
82 | }); |
83 | ||
84 | Ext.define('PVE.qemu.MachineEdit', { | |
85 | extend: 'Proxmox.window.Edit', | |
86 | ||
87 | subject: gettext('Machine'), | |
88 | ||
89 | items: [{ | |
90 | xtype: 'pveMachineInputPanel', | |
91 | }], | |
92 | ||
93 | initComponent: function() { | |
94 | let me = this; | |
95 | ||
96 | me.callParent(); | |
97 | ||
98 | me.load({ | |
99 | success: function(response) { | |
100 | let vmconfig = response.result.data; | |
101 | let machine = vmconfig.machine || '__default__'; | |
102 | me.setValues({ machine: machine }); | |
103 | }, | |
104 | }); | |
105 | }, | |
106 | }); |