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