]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/OSTypeEdit.js
1 Ext
.define('PVE.qemu.OSTypeInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
3 alias
: 'widget.pveQemuOSTypePanel',
4 onlineHelp
: 'qm_os_settings',
8 xclass
: 'Ext.app.ViewController',
10 'combobox[name=osbase]': {
11 change
: 'onOSBaseChange',
13 'combobox[name=ostype]': {
14 afterrender
: 'onOSTypeChange',
15 change
: 'onOSTypeChange',
17 'checkbox[reference=enableSecondCD]': {
18 change
: 'onSecondCDChange',
21 onOSBaseChange: function(field
, value
) {
23 me
.lookup('ostype').getStore().setData(PVE
.Utils
.kvm_ostypes
[value
]);
24 if (me
.getView().insideWizard
) {
25 let isWindows
= value
=== 'Microsoft Windows';
26 let enableSecondCD
= me
.lookup('enableSecondCD');
27 enableSecondCD
.setVisible(isWindows
);
29 enableSecondCD
.setValue(false);
33 onOSTypeChange: function(field
) {
34 var me
= this, ostype
= field
.getValue();
35 if (!me
.getView().insideWizard
) {
38 var targetValues
= PVE
.qemu
.OSDefaults
.getDefaults(ostype
);
40 me
.setWidget('pveBusSelector', targetValues
.busType
);
41 me
.setWidget('pveNetworkCardSelector', targetValues
.networkCard
);
42 me
.setWidget('CPUModelSelector', targetValues
.cputype
);
43 var scsihw
= targetValues
.scsihw
|| '__default__';
44 this.getViewModel().set('current.scsihw', scsihw
);
45 this.getViewModel().set('current.ostype', ostype
);
47 setWidget: function(widget
, newValue
) {
48 // changing a widget is safe only if ComponentQuery.query returns us
49 // a single value array
50 var widgets
= Ext
.ComponentQuery
.query('pveQemuCreateWizard ' + widget
);
51 if (widgets
.length
=== 1) {
52 widgets
[0].setValue(newValue
);
54 // ignore multiple disks, we only want to set the type if there is a single disk
57 onSecondCDChange: function(widget
, value
, lastValue
) {
59 let vm
= me
.getViewModel();
60 let updateVMConfig = function() {
61 let widgets
= Ext
.ComponentQuery
.query('pveMultiHDPanel');
62 if (widgets
.length
=== 1) {
63 widgets
[0].getController().updateVMConfig();
68 vm
.set('current.ide0', "some");
71 me
.setWidget('pveBusSelector', 'scsi');
72 me
.setWidget('pveNetworkCardSelector', 'virtio');
74 vm
.set('current.ide0', "");
77 me
.setWidget('pveBusSelector', 'scsi');
78 let ostype
= me
.lookup('ostype').getValue();
79 var targetValues
= PVE
.qemu
.OSDefaults
.getDefaults(ostype
);
80 me
.setWidget('pveBusSelector', targetValues
.busType
);
85 setNodename: function(nodename
) {
87 me
.lookup('isoSelector').setNodename(nodename
);
90 onGetValues: function(values
) {
96 values
.ide0
= PVE
.Parser
.printQemuDrive(drive
);
101 initComponent: function() {
106 xtype
: 'displayfield',
107 value
: gettext('Guest OS') + ':',
108 hidden
: !me
.insideWizard
,
114 fieldLabel
: gettext('Type'),
118 store
: Object
.keys(PVE
.Utils
.kvm_ostypes
),
124 fieldLabel
: gettext('Version'),
130 displayField
: 'desc',
132 fields
: ['desc', 'val'],
133 data
: PVE
.Utils
.kvm_ostypes
.Linux
,
135 datachanged: function(store
) {
136 var ostype
= me
.lookup('ostype');
137 var old_val
= ostype
.getValue();
138 if (!me
.insideWizard
&& old_val
&& store
.find('val', old_val
) !== -1) {
139 ostype
.setValue(old_val
);
141 ostype
.setValue(store
.getAt(0));
149 if (me
.insideWizard
) {
152 xtype
: 'proxmoxcheckbox',
153 reference
: 'enableSecondCD',
157 boxLabel
: gettext('Add additional drive for VirtIO drivers'),
159 change: function(cb
, value
) {
160 me
.lookup('isoSelector').setDisabled(!value
);
161 me
.lookup('isoSelector').setHidden(!value
);
166 xtype
: 'pveIsoSelector',
167 reference
: 'isoSelector',
169 nodename
: me
.nodename
,
181 Ext
.define('PVE.qemu.OSTypeEdit', {
182 extend
: 'Proxmox.window.Edit',
186 items
: [{ xtype
: 'pveQemuOSTypePanel' }],
188 initComponent: function() {
194 success: function(response
, options
) {
195 var value
= response
.result
.data
.ostype
|| 'other';
196 var osinfo
= PVE
.Utils
.get_kvm_osinfo(value
);
197 me
.setValues({ ostype
: value
, osbase
: osinfo
.base
});