]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/LvmThinEdit.js
update shipped appliance info index
[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: {
04389e49 12 emptyText: PVE.Utils.renderNotFound('Thin-Pool'),
d420b29a
DC
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',
fa84bd59 127 mixins: ['Proxmox.Mixin.CBind'],
cbebb721 128
96988dfa
DC
129 onlineHelp: 'storage_lvmthin',
130
fa84bd59
DC
131 column1: [
132 {
133 xtype: 'pmxDisplayEditField',
134 cbind: {
135 editable: '{isCreate}',
136 },
cbebb721 137
cbebb721 138 name: 'vgname',
cbebb721 139 fieldLabel: gettext('Volume group'),
cbebb721 140
fa84bd59
DC
141 editConfig: {
142 xtype: 'pveBaseVGSelector',
cbebb721 143 listeners: {
d420b29a 144 nodechanged: function(value) {
fa84bd59
DC
145 let panel = this.up('inputpanel');
146 panel.lookup('thinPoolSelector').setNodeName(value);
147 panel.lookup('storageNodeRestriction').setValue(value);
d420b29a 148 },
cbebb721 149 change: function(f, value) {
fa84bd59 150 let vgField = this.up('inputpanel').lookup('thinPoolSelector');
2d9be158 151 if (vgField && !f.isDisabled()) {
fa84bd59 152 vgField.setDisabled(!value);
cbebb721
DM
153 vgField.setVG(value);
154 vgField.setValue('');
155 }
f6710aac
TL
156 },
157 },
fa84bd59
DC
158 },
159 },
160 {
161 xtype: 'pmxDisplayEditField',
162 cbind: {
163 editable: '{isCreate}',
164 },
cbebb721 165
fa84bd59
DC
166 name: 'thinpool',
167 fieldLabel: gettext('Thin Pool'),
168 allowBlank: false,
cbebb721 169
fa84bd59
DC
170 editConfig: {
171 xtype: 'pveTPSelector',
172 reference: 'thinPoolSelector',
173 disabled: true,
174 },
175 },
176 {
cbebb721
DM
177 xtype: 'pveContentTypeSelector',
178 cts: ['images', 'rootdir'],
179 fieldLabel: gettext('Content'),
180 name: 'content',
181 value: ['images', 'rootdir'],
182 multiSelect: true,
f6710aac 183 allowBlank: false,
fa84bd59
DC
184 },
185 ],
cbebb721 186});