]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/CDEdit.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / qemu / CDEdit.js
1 Ext.define('PVE.qemu.CDInputPanel', {
2 extend: 'Proxmox.panel.InputPanel',
3 alias: 'widget.pveQemuCDInputPanel',
4
5 insideWizard: false,
6
7 onGetValues: function(values) {
8 var me = this;
9
10 var confid = me.confid || values.controller + values.deviceid;
11
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 = {};
22
23 params[confid] = PVE.Parser.printQemuDrive(me.drive);
24
25 return params;
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';
46 values.cdimage = drive.file;
47 }
48
49 me.drive = drive;
50
51 me.setValues(values);
52 },
53
54 setNodename: function(nodename) {
55 var me = this;
56
57 me.isosel.setNodename(nodename);
58 },
59
60 initComponent: function() {
61 var me = this;
62
63 me.drive = {};
64
65 var items = [];
66
67 if (!me.confid) {
68 me.bussel = Ext.create('PVE.form.ControllerSelector', {
69 withVirtIO: false,
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 }
85 var cdImageField = me.down('pveIsoSelector');
86 cdImageField.setDisabled(!value);
87 if (value) {
88 cdImageField.validate();
89 } else {
90 cdImageField.reset();
91 }
92 },
93 },
94 });
95
96
97 me.isosel = Ext.create('PVE.form.IsoSelector', {
98 nodename: me.nodename,
99 insideWizard: me.insideWizard,
100 name: 'cdimage',
101 });
102
103 items.push(me.isosel);
104
105 items.push({
106 xtype: 'radiofield',
107 name: 'mediaType',
108 inputValue: 'cdrom',
109 boxLabel: gettext('Use physical CD/DVD Drive'),
110 });
111
112 items.push({
113 xtype: 'radiofield',
114 name: 'mediaType',
115 inputValue: 'none',
116 boxLabel: gettext('Do not use any media'),
117 });
118
119 me.items = items;
120
121 me.callParent();
122 },
123 });
124
125 Ext.define('PVE.qemu.CDEdit', {
126 extend: 'Proxmox.window.Edit',
127
128 width: 400,
129
130 initComponent: function() {
131 var me = this;
132
133 var nodename = me.pveSelNode.data.node;
134 if (!nodename) {
135 throw "no node name specified";
136 }
137
138 me.isCreate = !me.confid;
139
140 var ipanel = Ext.create('PVE.qemu.CDInputPanel', {
141 confid: me.confid,
142 nodename: nodename,
143 });
144
145 Ext.applyIf(me, {
146 subject: 'CD/DVD Drive',
147 items: [ipanel],
148 });
149
150 me.callParent();
151
152 me.load({
153 success: function(response, options) {
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 }
165 },
166 });
167 },
168 });