]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/IsoSelector.js
632ee7f0a08a6a7d79cc160324cf8345861a0d27
[pve-manager.git] / www / manager6 / form / IsoSelector.js
1 Ext.define('PVE.form.IsoSelector', {
2 extend: 'Ext.container.Container',
3 alias: 'widget.pveIsoSelector',
4 mixins: [
5 'Ext.form.field.Field',
6 'Proxmox.Mixin.CBind',
7 ],
8
9 nodename: undefined,
10 insideWizard: false,
11
12 cbindData: function() {
13 let me = this;
14 return {
15 nodename: me.nodename,
16 insideWizard: me.insideWizard,
17 };
18 },
19
20 getValue: function() {
21 return this.lookup('file').getValue();
22 },
23
24 setValue: function(value) {
25 let me = this;
26 if (!value) {
27 me.lookup('file').reset();
28 return;
29 }
30 var match = value.match(/^([^:]+):/);
31 if (match) {
32 me.lookup('storage').setValue(match[1]);
33 me.lookup('file').setValue(value);
34 }
35 },
36
37 getErrors: function() {
38 let me = this;
39 me.lookup('storage').validate();
40 let file = me.lookup('file');
41 file.validate();
42 let value = file.getValue();
43 if (!value || !value.length) {
44 return [""]; // for validation
45 }
46 return [];
47 },
48
49 setNodename: function(nodename) {
50 let me = this;
51 me.lookup('storage').setNodename(nodename);
52 me.lookup('file').setStorage(undefined, nodename);
53 },
54
55 setDisabled: function(disabled) {
56 let me = this;
57 me.lookup('storage').setDisabled(disabled);
58 me.lookup('file').setDisabled(disabled);
59 me.callParent();
60 },
61
62 referenceHolder: true,
63
64 items: [
65 {
66 xtype: 'pveStorageSelector',
67 reference: 'storage',
68 isFormField: false,
69 fieldLabel: gettext('Storage'),
70 labelAlign: 'right',
71 storageContent: 'iso',
72 allowBlank: false,
73 cbind: {
74 nodename: '{nodename}',
75 autoSelect: '{insideWizard}',
76 insideWizard: '{insideWizard}',
77 disabled: '{disabled}',
78 },
79 listeners: {
80 change: function(f, value) {
81 let me = this;
82 let selector = me.up('pveIsoSelector');
83 selector.lookup('file').setStorage(value);
84 selector.checkChange();
85 },
86 },
87 },
88 {
89 xtype: 'pveFileSelector',
90 reference: 'file',
91 isFormField: false,
92 storageContent: 'iso',
93 fieldLabel: gettext('ISO image'),
94 labelAlign: 'right',
95 cbind: {
96 nodename: '{nodename}',
97 disabled: '{disabled}',
98 },
99 allowBlank: false,
100 listeners: {
101 change: function() {
102 this.up('pveIsoSelector').checkChange();
103 },
104 },
105 },
106 ],
107 });