]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/qemu/OSTypeEdit.js
api: add proxmox-firewall to versions pkg list
[pve-manager.git] / www / manager6 / qemu / OSTypeEdit.js
index bc70fc4f587f227ebdbec106134eea58bc71f3d8..d42cb2836fb8eb83172baa81f1997adc5427a7c3 100644 (file)
@@ -14,9 +14,21 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
                afterrender: 'onOSTypeChange',
                change: 'onOSTypeChange',
            },
+           'checkbox[reference=enableSecondCD]': {
+               change: 'onSecondCDChange',
+           },
        },
        onOSBaseChange: function(field, value) {
-           this.lookup('ostype').getStore().setData(PVE.Utils.kvm_ostypes[value]);
+           let me = this;
+           me.lookup('ostype').getStore().setData(PVE.Utils.kvm_ostypes[value]);
+           if (me.getView().insideWizard) {
+               let isWindows = value === 'Microsoft Windows';
+               let enableSecondCD = me.lookup('enableSecondCD');
+               enableSecondCD.setVisible(isWindows);
+               if (!isWindows) {
+                   enableSecondCD.setValue(false);
+               }
+           }
        },
        onOSTypeChange: function(field) {
            var me = this, ostype = field.getValue();
@@ -27,8 +39,10 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
 
            me.setWidget('pveBusSelector', targetValues.busType);
            me.setWidget('pveNetworkCardSelector', targetValues.networkCard);
+           me.setWidget('CPUModelSelector', targetValues.cputype);
            var scsihw = targetValues.scsihw || '__default__';
            this.getViewModel().set('current.scsihw', scsihw);
+           this.getViewModel().set('current.ostype', ostype);
        },
        setWidget: function(widget, newValue) {
            // changing a widget is safe only if ComponentQuery.query returns us
@@ -37,12 +51,54 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
            if (widgets.length === 1) {
                widgets[0].setValue(newValue);
            } else {
-               throw 'non unique widget :' + widget + ' in Wizard';
+               // ignore multiple disks, we only want to set the type if there is a single disk
+           }
+       },
+       onSecondCDChange: function(widget, value, lastValue) {
+           let me = this;
+           let vm = me.getViewModel();
+           let updateVMConfig = function() {
+               let widgets = Ext.ComponentQuery.query('pveMultiHDPanel');
+               if (widgets.length === 1) {
+                   widgets[0].getController().updateVMConfig();
+               }
+           };
+           if (value) {
+               // only for windows
+               vm.set('current.ide0', "some");
+               vm.notify();
+               updateVMConfig();
+               me.setWidget('pveBusSelector', 'scsi');
+               me.setWidget('pveNetworkCardSelector', 'virtio');
+           } else {
+               vm.set('current.ide0', "");
+               vm.notify();
+               updateVMConfig();
+               me.setWidget('pveBusSelector', 'scsi');
+               let ostype = me.lookup('ostype').getValue();
+               var targetValues = PVE.qemu.OSDefaults.getDefaults(ostype);
+               me.setWidget('pveBusSelector', targetValues.busType);
            }
        },
     },
 
-    initComponent : function() {
+    setNodename: function(nodename) {
+       var me = this;
+       me.lookup('isoSelector').setNodename(nodename);
+    },
+
+    onGetValues: function(values) {
+       if (values.ide0) {
+           let drive = {
+               media: 'cdrom',
+               file: values.ide0,
+           };
+           values.ide0 = PVE.Parser.printQemuDrive(drive);
+       }
+       return values;
+    },
+
+    initComponent: function() {
        var me = this;
 
        me.items = [
@@ -67,7 +123,7 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
                reference: 'ostype',
                fieldLabel: gettext('Version'),
                value: 'l26',
-               allowBlank : false,
+               allowBlank: false,
                editable: false,
                queryMode: 'local',
                valueField: 'val',
@@ -76,10 +132,10 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
                    fields: ['desc', 'val'],
                    data: PVE.Utils.kvm_ostypes.Linux,
                    listeners: {
-                       datachanged: function (store) {
+                       datachanged: function(store) {
                            var ostype = me.lookup('ostype');
                            var old_val = ostype.getValue();
-                           if (!me.insideWizard && old_val && store.find('val', old_val) != -1) {
+                           if (!me.insideWizard && old_val && store.find('val', old_val) !== -1) {
                                ostype.setValue(old_val);
                            } else {
                                ostype.setValue(store.getAt(0));
@@ -90,6 +146,34 @@ Ext.define('PVE.qemu.OSTypeInputPanel', {
            },
        ];
 
+       if (me.insideWizard) {
+           me.items.push(
+               {
+                   xtype: 'proxmoxcheckbox',
+                   reference: 'enableSecondCD',
+                   isFormField: false,
+                   hidden: true,
+                   checked: false,
+                   boxLabel: gettext('Add additional drive for VirtIO drivers'),
+                   listeners: {
+                       change: function(cb, value) {
+                           me.lookup('isoSelector').setDisabled(!value);
+                           me.lookup('isoSelector').setHidden(!value);
+                       },
+                   },
+               },
+               {
+                   xtype: 'pveIsoSelector',
+                   reference: 'isoSelector',
+                   name: 'ide0',
+                   nodename: me.nodename,
+                   insideWizard: true,
+                   hidden: true,
+                   disabled: true,
+               },
+           );
+       }
+
        me.callParent();
     },
 });
@@ -101,7 +185,7 @@ Ext.define('PVE.qemu.OSTypeEdit', {
 
     items: [{ xtype: 'pveQemuOSTypePanel' }],
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        me.callParent();