]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/CDEdit.js
bump version to 5.3-11
[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
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 var match = drive.file.match(/^([^:]+):/);
47 if (match) {
48 values.cdstorage = match[1];
49 values.cdimage = drive.file;
50 }
51 }
52
53 me.drive = drive;
54
55 me.setValues(values);
56 },
57
58 setNodename: function(nodename) {
59 var me = this;
60
61 me.cdstoragesel.setNodename(nodename);
62 me.cdfilesel.setStorage(undefined, nodename);
63 },
64
65 initComponent : function() {
66 var me = this;
67
68 me.drive = {};
69
70 var items = [];
71
72 if (!me.confid) {
42902182 73 me.bussel = Ext.create('PVE.form.ControllerSelector', {
16041408
DM
74 noVirtIO: true
75 });
76 items.push(me.bussel);
77 }
78
79 items.push({
80 xtype: 'radiofield',
81 name: 'mediaType',
82 inputValue: 'iso',
83 boxLabel: gettext('Use CD/DVD disc image file (iso)'),
84 checked: true,
85 listeners: {
86 change: function(f, value) {
87 if (!me.rendered) {
88 return;
89 }
90 me.down('field[name=cdstorage]').setDisabled(!value);
91 me.down('field[name=cdimage]').setDisabled(!value);
92 me.down('field[name=cdimage]').validate();
93 }
94 }
95 });
96
97 me.cdfilesel = Ext.create('PVE.form.FileSelector', {
98 name: 'cdimage',
99 nodename: me.nodename,
100 storageContent: 'iso',
08090405 101 fieldLabel: gettext('ISO image'),
16041408
DM
102 labelAlign: 'right',
103 allowBlank: false
104 });
105
106 me.cdstoragesel = Ext.create('PVE.form.StorageSelector', {
107 name: 'cdstorage',
108 nodename: me.nodename,
109 fieldLabel: gettext('Storage'),
110 labelAlign: 'right',
111 storageContent: 'iso',
112 allowBlank: false,
113 autoSelect: me.insideWizard,
114 listeners: {
115 change: function(f, value) {
116 me.cdfilesel.setStorage(value);
117 }
118 }
119 });
120
121 items.push(me.cdstoragesel);
122 items.push(me.cdfilesel);
123
124 items.push({
125 xtype: 'radiofield',
126 name: 'mediaType',
127 inputValue: 'cdrom',
128 boxLabel: gettext('Use physical CD/DVD Drive')
129 });
130
131 items.push({
132 xtype: 'radiofield',
133 name: 'mediaType',
134 inputValue: 'none',
135 boxLabel: gettext('Do not use any media')
136 });
137
5f38c3fc 138 me.items = items;
16041408
DM
139
140 me.callParent();
141 }
142});
143
144Ext.define('PVE.qemu.CDEdit', {
9fccc702 145 extend: 'Proxmox.window.Edit',
16041408
DM
146
147 initComponent : function() {
148 var me = this;
149
150 var nodename = me.pveSelNode.data.node;
151 if (!nodename) {
152 throw "no node name specified";
153 }
154
d5e771ce 155 me.isCreate = me.confid ? false : true;
16041408
DM
156
157 var ipanel = Ext.create('PVE.qemu.CDInputPanel', {
158 confid: me.confid,
159 nodename: nodename
160 });
161
162 Ext.applyIf(me, {
163 subject: 'CD/DVD Drive',
164 items: [ ipanel ]
165 });
166
167 me.callParent();
168
169 me.load({
170 success: function(response, options) {
171 ipanel.setVMConfig(response.result.data);
172 if (me.confid) {
173 var value = response.result.data[me.confid];
174 var drive = PVE.Parser.parseQemuDrive(me.confid, value);
175 if (!drive) {
176 Ext.Msg.alert('Error', 'Unable to parse drive options');
177 me.close();
178 return;
179 }
180 ipanel.setDrive(drive);
181 }
182 }
183 });
184 }
185});