]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/CDEdit.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / qemu / CDEdit.js
CommitLineData
16041408 1Ext.define('PVE.qemu.CDInputPanel', {
ef4ef788 2 extend: 'Proxmox.panel.InputPanel',
85806e47 3 alias: 'widget.pveQemuCDInputPanel',
16041408
DM
4
5 insideWizard: false,
6
7 onGetValues: function(values) {
8 var me = this;
9
53e3ea84 10 var confid = me.confid || values.controller + values.deviceid;
2a4971d8 11
16041408
DM
12 me.drive.media = 'cdrom';
13 if (values.mediaType === 'iso') {
14 me.drive.file = values.cdimage;
15 } else if (values.mediaType === 'cdrom') {
16 me.drive.file = 'cdrom';
17 } else {
18 me.drive.file = 'none';
19 }
20
21 var params = {};
2a4971d8 22
16041408 23 params[confid] = PVE.Parser.printQemuDrive(me.drive);
2a4971d8
TL
24
25 return params;
16041408
DM
26 },
27
28 setVMConfig: function(vmconfig) {
29 var me = this;
30
31 if (me.bussel) {
32 me.bussel.setVMConfig(vmconfig, 'cdrom');
33 }
34 },
35
36 setDrive: function(drive) {
37 var me = this;
38
39 var values = {};
40 if (drive.file === 'cdrom') {
41 values.mediaType = 'cdrom';
42 } else if (drive.file === 'none') {
43 values.mediaType = 'none';
44 } else {
45 values.mediaType = 'iso';
fc7b556d 46 values.cdimage = drive.file;
16041408
DM
47 }
48
49 me.drive = drive;
50
51 me.setValues(values);
52 },
53
54 setNodename: function(nodename) {
55 var me = this;
56
fc7b556d 57 me.isosel.setNodename(nodename);
16041408
DM
58 },
59
8058410f 60 initComponent: function() {
16041408
DM
61 var me = this;
62
63 me.drive = {};
64
65 var items = [];
66
67 if (!me.confid) {
42902182 68 me.bussel = Ext.create('PVE.form.ControllerSelector', {
48eb9401 69 withVirtIO: false,
16041408
DM
70 });
71 items.push(me.bussel);
72 }
73
74 items.push({
75 xtype: 'radiofield',
76 name: 'mediaType',
77 inputValue: 'iso',
78 boxLabel: gettext('Use CD/DVD disc image file (iso)'),
79 checked: true,
80 listeners: {
81 change: function(f, value) {
82 if (!me.rendered) {
83 return;
84 }
fc7b556d 85 var cdImageField = me.down('pveIsoSelector');
9d7d6ed7 86 cdImageField.setDisabled(!value);
8058410f 87 if (value) {
9d7d6ed7
TM
88 cdImageField.validate();
89 } else {
90 cdImageField.reset();
91 }
f6710aac
TL
92 },
93 },
16041408
DM
94 });
95
2a4971d8 96
fc7b556d 97 me.isosel = Ext.create('PVE.form.IsoSelector', {
16041408 98 nodename: me.nodename,
fc7b556d
DC
99 insideWizard: me.insideWizard,
100 name: 'cdimage',
16041408
DM
101 });
102
fc7b556d 103 items.push(me.isosel);
16041408
DM
104
105 items.push({
106 xtype: 'radiofield',
107 name: 'mediaType',
108 inputValue: 'cdrom',
f6710aac 109 boxLabel: gettext('Use physical CD/DVD Drive'),
16041408
DM
110 });
111
112 items.push({
113 xtype: 'radiofield',
114 name: 'mediaType',
115 inputValue: 'none',
f6710aac 116 boxLabel: gettext('Do not use any media'),
16041408
DM
117 });
118
5f38c3fc 119 me.items = items;
16041408
DM
120
121 me.callParent();
f6710aac 122 },
16041408
DM
123});
124
125Ext.define('PVE.qemu.CDEdit', {
9fccc702 126 extend: 'Proxmox.window.Edit',
16041408 127
97f7773b
TL
128 width: 400,
129
8058410f 130 initComponent: function() {
16041408
DM
131 var me = this;
132
133 var nodename = me.pveSelNode.data.node;
97f7773b
TL
134 if (!nodename) {
135 throw "no node name specified";
16041408
DM
136 }
137
ef725143 138 me.isCreate = !me.confid;
16041408
DM
139
140 var ipanel = Ext.create('PVE.qemu.CDInputPanel', {
141 confid: me.confid,
f6710aac 142 nodename: nodename,
16041408
DM
143 });
144
145 Ext.applyIf(me, {
146 subject: 'CD/DVD Drive',
8058410f 147 items: [ipanel],
16041408
DM
148 });
149
150 me.callParent();
2a4971d8 151
16041408 152 me.load({
8058410f 153 success: function(response, options) {
16041408
DM
154 ipanel.setVMConfig(response.result.data);
155 if (me.confid) {
156 var value = response.result.data[me.confid];
157 var drive = PVE.Parser.parseQemuDrive(me.confid, value);
158 if (!drive) {
159 Ext.Msg.alert('Error', 'Unable to parse drive options');
160 me.close();
161 return;
162 }
163 ipanel.setDrive(drive);
164 }
f6710aac 165 },
16041408 166 });
f6710aac 167 },
16041408 168});