]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/ZFSPoolEdit.js
ui: storage: ZFS panel: modernize & cleanup code
[pve-manager.git] / www / manager6 / storage / ZFSPoolEdit.js
1 Ext.define('PVE.storage.ZFSPoolSelector', {
2 extend: 'PVE.form.ComboBoxSetStoreNode',
3 alias: 'widget.pveZFSPoolSelector',
4 valueField: 'pool',
5 displayField: 'pool',
6 queryMode: 'local',
7 editable: false,
8 allowBlank: false,
9
10 listConfig: {
11 columns: [
12 {
13 dataIndex: 'pool',
14 flex: 1,
15 },
16 ],
17 emptyText: gettext('No ZFS Pools found'),
18 },
19
20 config: {
21 apiSuffix: '/scan/zfs',
22 },
23
24 showNodeSelector: true,
25
26 setNodeName: function(value) {
27 let me = this;
28 me.callParent([value]);
29 me.getStore().load();
30 },
31
32 initComponent: function() {
33 let me = this;
34
35 if (!me.nodename) {
36 me.nodename = 'localhost';
37 }
38
39 let store = Ext.create('Ext.data.Store', {
40 autoLoad: {}, // true,
41 fields: ['pool', 'size', 'free'],
42 proxy: {
43 type: 'proxmox',
44 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
45 },
46 });
47 store.sort('pool', 'ASC');
48
49 Ext.apply(me, {
50 store: store,
51 });
52
53 me.callParent();
54 },
55 });
56
57 Ext.define('PVE.storage.ZFSPoolInputPanel', {
58 extend: 'PVE.panel.StorageBase',
59 mixins: ['Proxmox.Mixin.CBind'],
60
61 onlineHelp: 'storage_zfspool',
62
63 column1: [
64 {
65 xtype: 'pmxDisplayEditField',
66 cbind: {
67 editable: '{isCreate}',
68 },
69
70 name: 'pool',
71 fieldLabel: gettext('ZFS Pool'),
72 allowBlank: false,
73
74 editConfig: {
75 xtype: 'pveZFSPoolSelector',
76 reference: 'zfsPoolSelector',
77 listeners: {
78 nodechanged: function(value) {
79 this.up('inputpanel').lookup('storageNodeRestriction').setValue(value);
80 },
81 },
82 },
83 },
84 {
85 xtype: 'pveContentTypeSelector',
86 cts: ['images', 'rootdir'],
87 fieldLabel: gettext('Content'),
88 name: 'content',
89 value: ['images', 'rootdir'],
90 multiSelect: true,
91 allowBlank: false,
92 },
93 ],
94
95 column2: [
96 {
97 xtype: 'proxmoxcheckbox',
98 name: 'sparse',
99 checked: false,
100 uncheckedValue: 0,
101 fieldLabel: gettext('Thin provision'),
102 },
103 {
104 xtype: 'textfield',
105 name: 'blocksize',
106 emptyText: '8k',
107 fieldLabel: gettext('Block Size'),
108 allowBlank: true,
109 },
110 ],
111 });