]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/MachineEdit.js
partially fix #2745: vzdump: use default for remove parameter
[pve-manager.git] / www / manager6 / qemu / MachineEdit.js
CommitLineData
9dbddec7
SR
1Ext.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
99Ext.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});