]>
Commit | Line | Data |
---|---|---|
cbebb721 | 1 | Ext.define('PVE.storage.TPoolSelector', { |
14d9ecc4 | 2 | extend: 'PVE.form.ComboBoxSetStoreNode', |
cbebb721 DM |
3 | alias: 'widget.pveTPSelector', |
4 | ||
5 | queryParam: 'vg', | |
c2317525 DC |
6 | valueField: 'lv', |
7 | displayField: 'lv', | |
8 | editable: false, | |
cbebb721 | 9 | |
14d9ecc4 SH |
10 | config: { |
11 | apiSuffix: '/scan/lvmthin', | |
12 | }, | |
13 | ||
cbebb721 | 14 | doRawQuery: function() { |
5eb9b7b1 | 15 | // nothing |
cbebb721 DM |
16 | }, |
17 | ||
18 | onTriggerClick: function() { | |
b9e706fb | 19 | let me = this; |
cbebb721 DM |
20 | |
21 | if (!me.queryCaching || me.lastQuery !== me.vg) { | |
22 | me.store.removeAll(); | |
23 | } | |
24 | ||
25 | me.allQuery = me.vg; | |
26 | ||
27 | me.callParent(); | |
28 | }, | |
29 | ||
30 | setVG: function(myvg) { | |
b9e706fb | 31 | let me = this; |
cbebb721 DM |
32 | |
33 | me.vg = myvg; | |
34 | }, | |
35 | ||
8058410f | 36 | initComponent: function() { |
b9e706fb | 37 | let me = this; |
cbebb721 DM |
38 | |
39 | if (!me.nodename) { | |
40 | me.nodename = 'localhost'; | |
41 | } | |
42 | ||
b9e706fb | 43 | let store = Ext.create('Ext.data.Store', { |
8058410f | 44 | fields: ['lv'], |
cbebb721 | 45 | proxy: { |
56a353b9 | 46 | type: 'proxmox', |
14d9ecc4 | 47 | url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`, |
f6710aac | 48 | }, |
cbebb721 DM |
49 | }); |
50 | ||
9e9ab96f WL |
51 | store.sort('lv', 'ASC'); |
52 | ||
cbebb721 DM |
53 | Ext.apply(me, { |
54 | store: store, | |
cbebb721 | 55 | listConfig: { |
f6710aac TL |
56 | loadingText: gettext('Scanning...'), |
57 | }, | |
cbebb721 DM |
58 | }); |
59 | ||
60 | me.callParent(); | |
f6710aac | 61 | }, |
cbebb721 DM |
62 | }); |
63 | ||
64 | Ext.define('PVE.storage.BaseVGSelector', { | |
14d9ecc4 | 65 | extend: 'PVE.form.ComboBoxSetStoreNode', |
cbebb721 DM |
66 | alias: 'widget.pveBaseVGSelector', |
67 | ||
c2317525 DC |
68 | valueField: 'vg', |
69 | displayField: 'vg', | |
70 | queryMode: 'local', | |
71 | editable: false, | |
14d9ecc4 SH |
72 | config: { |
73 | apiSuffix: '/scan/lvm', | |
74 | }, | |
75 | ||
76 | setNodeName: function(value) { | |
77 | let me = this; | |
78 | me.callParent([value]); | |
79 | me.getStore().load(); | |
80 | }, | |
81 | ||
8058410f | 82 | initComponent: function() { |
b9e706fb | 83 | let me = this; |
cbebb721 DM |
84 | |
85 | if (!me.nodename) { | |
86 | me.nodename = 'localhost'; | |
87 | } | |
88 | ||
b9e706fb | 89 | let store = Ext.create('Ext.data.Store', { |
cbebb721 | 90 | autoLoad: {}, |
8058410f | 91 | fields: ['vg', 'size', 'free'], |
cbebb721 | 92 | proxy: { |
56a353b9 | 93 | type: 'proxmox', |
14d9ecc4 | 94 | url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`, |
f6710aac | 95 | }, |
cbebb721 DM |
96 | }); |
97 | ||
98 | Ext.apply(me, { | |
99 | store: store, | |
cbebb721 | 100 | listConfig: { |
f6710aac TL |
101 | loadingText: gettext('Scanning...'), |
102 | }, | |
cbebb721 DM |
103 | }); |
104 | ||
105 | me.callParent(); | |
f6710aac | 106 | }, |
cbebb721 DM |
107 | }); |
108 | ||
109 | Ext.define('PVE.storage.LvmThinInputPanel', { | |
f28ec3e4 | 110 | extend: 'PVE.panel.StorageBase', |
cbebb721 | 111 | |
96988dfa DC |
112 | onlineHelp: 'storage_lvmthin', |
113 | ||
8058410f | 114 | initComponent: function() { |
b9e706fb | 115 | let me = this; |
cbebb721 | 116 | |
f28ec3e4 | 117 | me.column1 = []; |
cbebb721 | 118 | |
b9e706fb | 119 | let vgnameField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', { |
cbebb721 | 120 | name: 'vgname', |
d5e771ce EK |
121 | hidden: !!me.isCreate, |
122 | disabled: !!me.isCreate, | |
cbebb721 DM |
123 | value: '', |
124 | fieldLabel: gettext('Volume group'), | |
f6710aac | 125 | allowBlank: false, |
cbebb721 DM |
126 | }); |
127 | ||
b9e706fb | 128 | let thinpoolField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', { |
cbebb721 | 129 | name: 'thinpool', |
d5e771ce EK |
130 | hidden: !!me.isCreate, |
131 | disabled: !!me.isCreate, | |
cbebb721 DM |
132 | value: '', |
133 | fieldLabel: gettext('Thin Pool'), | |
f6710aac | 134 | allowBlank: false, |
cbebb721 DM |
135 | }); |
136 | ||
d5e771ce | 137 | if (me.isCreate) { |
14d9ecc4 SH |
138 | me.column1.push({ |
139 | xtype: 'pveStorageScanNodeSelector', | |
140 | listeners: { | |
141 | change: { | |
142 | fn: function(field, value) { | |
143 | me.lookup('thinPoolSelector').setNodeName(value); | |
144 | me.lookup('volumeGroupSelector').setNodeName(value); | |
145 | me.lookup('storageNodeRestriction').setValue(value); | |
146 | }, | |
147 | }, | |
148 | }, | |
cbebb721 DM |
149 | }); |
150 | ||
14d9ecc4 | 151 | me.column1.push(Ext.create('PVE.storage.BaseVGSelector', { |
cbebb721 | 152 | name: 'vgname', |
16152937 | 153 | fieldLabel: gettext('Volume group'), |
14d9ecc4 | 154 | reference: 'volumeGroupSelector', |
cbebb721 DM |
155 | listeners: { |
156 | change: function(f, value) { | |
d5e771ce | 157 | if (me.isCreate) { |
14d9ecc4 | 158 | let vgField = me.lookup('thinPoolSelector'); |
cbebb721 DM |
159 | vgField.setVG(value); |
160 | vgField.setValue(''); | |
161 | } | |
f6710aac TL |
162 | }, |
163 | }, | |
14d9ecc4 | 164 | })); |
cbebb721 | 165 | |
14d9ecc4 SH |
166 | me.column1.push(Ext.create('PVE.storage.TPoolSelector', { |
167 | name: 'thinpool', | |
168 | fieldLabel: gettext('Thin Pool'), | |
169 | reference: 'thinPoolSelector', | |
170 | allowBlank: false, | |
171 | })); | |
cbebb721 DM |
172 | } |
173 | ||
174 | me.column1.push(vgnameField); | |
175 | ||
176 | me.column1.push(thinpoolField); | |
177 | ||
ec0bd652 DC |
178 | // here value is an array, |
179 | // while before it was a string | |
cbebb721 DM |
180 | me.column1.push({ |
181 | xtype: 'pveContentTypeSelector', | |
182 | cts: ['images', 'rootdir'], | |
183 | fieldLabel: gettext('Content'), | |
184 | name: 'content', | |
185 | value: ['images', 'rootdir'], | |
186 | multiSelect: true, | |
f6710aac | 187 | allowBlank: false, |
cbebb721 DM |
188 | }); |
189 | ||
f28ec3e4 | 190 | me.column2 = []; |
cbebb721 DM |
191 | |
192 | me.callParent(); | |
f6710aac | 193 | }, |
cbebb721 | 194 | }); |