]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/LvmThinEdit.js
api: add proxmox-firewall to versions pkg list
[pve-manager.git] / www / manager6 / storage / LvmThinEdit.js
1 Ext.define('PVE.storage.TPoolSelector', {
2 extend: 'PVE.form.ComboBoxSetStoreNode',
3 alias: 'widget.pveTPSelector',
4
5 queryParam: 'vg',
6 valueField: 'lv',
7 displayField: 'lv',
8 editable: false,
9 allowBlank: false,
10
11 listConfig: {
12 emptyText: PVE.Utils.renderNotFound('Thin-Pool'),
13 columns: [
14 {
15 dataIndex: 'lv',
16 flex: 1,
17 },
18 ],
19 },
20
21 config: {
22 apiSuffix: '/scan/lvmthin',
23 },
24
25 reload: function() {
26 let me = this;
27 if (!me.isDisabled()) {
28 me.getStore().load();
29 }
30 },
31
32 setVG: function(myvg) {
33 let me = this;
34 me.vg = myvg;
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();
43 },
44
45 initComponent: function() {
46 let me = this;
47
48 if (!me.nodename) {
49 me.nodename = 'localhost';
50 }
51
52 let store = Ext.create('Ext.data.Store', {
53 fields: ['lv'],
54 proxy: {
55 type: 'proxmox',
56 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
57 },
58 });
59
60 store.sort('lv', 'ASC');
61
62 Ext.apply(me, {
63 store: store,
64 });
65
66 me.callParent();
67 },
68 });
69
70 Ext.define('PVE.storage.BaseVGSelector', {
71 extend: 'PVE.form.ComboBoxSetStoreNode',
72 alias: 'widget.pveBaseVGSelector',
73
74 valueField: 'vg',
75 displayField: 'vg',
76 queryMode: 'local',
77 editable: false,
78 allowBlank: false,
79
80 listConfig: {
81 columns: [
82 {
83 dataIndex: 'vg',
84 flex: 1,
85 },
86 ],
87 },
88
89 showNodeSelector: true,
90
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
101 initComponent: function() {
102 let me = this;
103
104 if (!me.nodename) {
105 me.nodename = 'localhost';
106 }
107
108 let store = Ext.create('Ext.data.Store', {
109 autoLoad: {},
110 fields: ['vg', 'size', 'free'],
111 proxy: {
112 type: 'proxmox',
113 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
114 },
115 });
116
117 Ext.apply(me, {
118 store: store,
119 });
120
121 me.callParent();
122 },
123 });
124
125 Ext.define('PVE.storage.LvmThinInputPanel', {
126 extend: 'PVE.panel.StorageBase',
127 mixins: ['Proxmox.Mixin.CBind'],
128
129 onlineHelp: 'storage_lvmthin',
130
131 column1: [
132 {
133 xtype: 'pmxDisplayEditField',
134 cbind: {
135 editable: '{isCreate}',
136 },
137
138 name: 'vgname',
139 fieldLabel: gettext('Volume group'),
140
141 editConfig: {
142 xtype: 'pveBaseVGSelector',
143 listeners: {
144 nodechanged: function(value) {
145 let panel = this.up('inputpanel');
146 panel.lookup('thinPoolSelector').setNodeName(value);
147 panel.lookup('storageNodeRestriction').setValue(value);
148 },
149 change: function(f, value) {
150 let vgField = this.up('inputpanel').lookup('thinPoolSelector');
151 if (vgField && !f.isDisabled()) {
152 vgField.setDisabled(!value);
153 vgField.setVG(value);
154 vgField.setValue('');
155 }
156 },
157 },
158 },
159 },
160 {
161 xtype: 'pmxDisplayEditField',
162 cbind: {
163 editable: '{isCreate}',
164 },
165
166 name: 'thinpool',
167 fieldLabel: gettext('Thin Pool'),
168 allowBlank: false,
169
170 editConfig: {
171 xtype: 'pveTPSelector',
172 reference: 'thinPoolSelector',
173 disabled: true,
174 },
175 },
176 {
177 xtype: 'pveContentTypeSelector',
178 cts: ['images', 'rootdir'],
179 fieldLabel: gettext('Content'),
180 name: 'content',
181 value: ['images', 'rootdir'],
182 multiSelect: true,
183 allowBlank: false,
184 },
185 ],
186 });