]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/qemu/HDEfi.js
add new efidisk edit window
[pve-manager.git] / www / manager6 / qemu / HDEfi.js
1 Ext.define('PVE.qemu.EFIDiskInputPanel', {
2 extend: 'PVE.panel.InputPanel',
3 alias: 'widget.pveEFIDiskInputPanel',
4
5 insideWizard: false,
6
7 unused: false, // ADD usused disk imaged
8
9 vmconfig: {}, // used to select usused disks
10
11 controller: {
12
13 xclass: 'Ext.app.ViewController',
14
15 control: {
16 'field[name=hdstorage]': {
17 change: function(f, value) {
18 if (!value) { // initial store loading fires an unwanted 'change'
19 return;
20 }
21 var me = this.getView();
22 var rec = f.store.getById(value);
23
24 var rawArray = ['iscsi', 'lvm', 'lvmthin', 'drbd', 'rbd', 'sheepdog', 'zfs', 'zfspool'];
25
26 me.hdfilesel.setDisabled(true);
27 me.hdfilesel.setVisible(false);
28 me.formatsel.setValue('qcow2');
29 me.formatsel.setDisabled(false);
30
31 // if rec.data.type exists in the array
32 if (rawArray.indexOf(rec.data.type) !== -1) {
33 me.formatsel.setValue('raw');
34 me.formatsel.setDisabled(true);
35 }
36
37 if (rec.data.type === 'iscsi') {
38 me.hdfilesel.setStorage(value);
39 me.hdfilesel.setDisabled(false);
40 me.hdfilesel.setVisible(true);
41 }
42 }
43 }
44 }
45 },
46
47 onGetValues: function(values) {
48 var me = this;
49
50 var confid = 'efidisk0';
51
52 if (values.hdimage) {
53 me.drive.file = values.hdimage;
54 } else {
55 // we use 1 here, because for efi the size gets overridden from the backend
56 me.drive.file = values.hdstorage + ":1";
57 }
58
59 me.drive.format = values.diskformat;
60 var params = {};
61 params[confid] = PVE.Parser.printQemuDrive(me.drive);
62 return params;
63 },
64
65 setNodename: function(nodename) {
66 var me = this;
67 me.hdstoragesel.setNodename(nodename);
68 me.hdfilesel.setStorage(undefined, nodename);
69 },
70
71 initComponent : function() {
72 var me = this;
73
74 me.drive = {};
75
76 me.items= [];
77
78 me.formatsel = Ext.create('PVE.form.DiskFormatSelector', {
79 name: 'diskformat',
80 fieldLabel: gettext('Format'),
81 value: 'qcow2',
82 allowBlank: false
83 });
84
85 me.hdfilesel = Ext.create('PVE.form.FileSelector', {
86 name: 'hdimage',
87 nodename: me.nodename,
88 storageContent: 'images',
89 fieldLabel: gettext('Disk image'),
90 disabled: true,
91 hidden: true,
92 allowBlank: false
93 });
94
95 me.hdstoragesel = Ext.create('PVE.form.StorageSelector', {
96 name: 'hdstorage',
97 nodename: me.nodename,
98 fieldLabel: gettext('Storage'),
99 storageContent: 'images',
100 autoSelect: me.insideWizard,
101 allowBlank: false
102 });
103 me.items.push(me.hdstoragesel);
104 me.items.push(me.hdfilesel);
105 me.items.push(me.formatsel);
106
107 me.callParent();
108 }
109 });
110
111 Ext.define('PVE.qemu.EFIDiskEdit', {
112 extend: 'PVE.window.Edit',
113
114 isAdd: true,
115 subject: gettext('EFI Disk'),
116
117 initComponent : function() {
118 var me = this;
119
120 var nodename = me.pveSelNode.data.node;
121 if (!nodename) {
122 throw "no node name specified";
123 }
124
125 /*jslint confusion: true */
126 /* because create is a method above..., really jslint? */
127 me.items = [{
128 xtype: 'pveEFIDiskInputPanel',
129 confid: me.confid,
130 nodename: nodename,
131 create: true
132 }];
133 /* jslint confusion: false */
134
135 me.callParent();
136 }
137 });