]>
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)); |
c0cb5eee TL |
19 | if (!me.getView().isWindows) { |
20 | version.setValue('latest'); | |
21 | } else { | |
22 | store.isWindows = true; | |
23 | } | |
a51b2c33 SR |
24 | }, |
25 | }, | |
26 | ||
27 | onGetValues: function(values) { | |
28 | if (values.version && values.version !== 'latest') { | |
29 | values.machine = values.version; | |
30 | delete values.delete; | |
31 | } | |
32 | delete values.version; | |
33 | return values; | |
34 | }, | |
35 | ||
36 | setValues: function(values) { | |
37 | let me = this; | |
38 | ||
c0cb5eee TL |
39 | me.isWindows = values.isWindows; |
40 | ||
a51b2c33 SR |
41 | if (values.machine !== '__default__' && values.machine !== 'q35') { |
42 | values.version = values.machine; | |
43 | values.machine = values.version.match(/q35/) ? 'q35' : '__default__'; | |
44 | ||
45 | // avoid hiding a pinned version | |
aeb61a52 | 46 | me.setAdvancedVisible(true); |
a51b2c33 SR |
47 | } |
48 | ||
49 | this.callParent(arguments); | |
50 | }, | |
51 | ||
60cc233a TL |
52 | items: { |
53 | xtype: 'proxmoxKVComboBox', | |
9dbddec7 | 54 | name: 'machine', |
a51b2c33 | 55 | reference: 'machine', |
9dbddec7 SR |
56 | fieldLabel: gettext('Machine'), |
57 | comboItems: [ | |
58 | ['__default__', PVE.Utils.render_qemu_machine('')], | |
59 | ['q35', 'q35'], | |
60 | ], | |
60cc233a | 61 | }, |
a51b2c33 | 62 | |
432639a8 TL |
63 | advancedItems: [ |
64 | { | |
65 | xtype: 'combobox', | |
66 | name: 'version', | |
67 | reference: 'version', | |
68 | fieldLabel: gettext('Version'), | |
69 | emptyText: gettext('Latest'), | |
70 | value: 'latest', | |
71 | editable: false, | |
72 | valueField: 'id', | |
73 | displayField: 'version', | |
74 | queryParam: false, | |
75 | store: { | |
76 | autoLoad: true, | |
77 | fields: ['id', 'type', 'version'], | |
78 | proxy: { | |
79 | type: 'proxmox', | |
80 | url: "/api2/json/nodes/localhost/capabilities/qemu/machines", | |
81 | }, | |
82 | listeners: { | |
83 | load: function(records) { | |
84 | if (!this.isWindows) { | |
85 | this.insert(0, { id: 'latest', type: 'any', version: gettext('Latest') }); | |
86 | } | |
87 | }, | |
a51b2c33 SR |
88 | }, |
89 | }, | |
90 | }, | |
432639a8 TL |
91 | { |
92 | xtype: 'displayfield', | |
93 | fieldLabel: gettext('Note'), | |
94 | value: gettext('Machine version change may affect hardware layout and settings in the guest OS.'), | |
95 | }, | |
96 | ], | |
9dbddec7 SR |
97 | }); |
98 | ||
99 | Ext.define('PVE.qemu.MachineEdit', { | |
100 | extend: 'Proxmox.window.Edit', | |
101 | ||
102 | subject: gettext('Machine'), | |
103 | ||
60cc233a | 104 | items: { |
9dbddec7 | 105 | xtype: 'pveMachineInputPanel', |
60cc233a | 106 | }, |
9dbddec7 | 107 | |
432639a8 TL |
108 | width: 400, |
109 | ||
9dbddec7 SR |
110 | initComponent: function() { |
111 | let me = this; | |
112 | ||
113 | me.callParent(); | |
114 | ||
115 | me.load({ | |
116 | success: function(response) { | |
c0cb5eee TL |
117 | let conf = response.result.data; |
118 | let values = { | |
119 | machine: conf.machine || '__default__', | |
120 | }; | |
121 | if (conf.ostype && conf.ostype.match(/^(win|wvista|wxp|w2k)/i)) { | |
122 | values.isWindows = true; | |
123 | } | |
124 | me.setValues(values); | |
9dbddec7 SR |
125 | }, |
126 | }); | |
127 | }, | |
128 | }); |