]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/ZFSPoolEdit.js
65e152beb07e5792cf3ad0fe15bc87d673c0ad03
[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 listConfig: {
9 loadingText: gettext('Scanning...'),
10 },
11 config: {
12 apiSuffix: '/scan/zfs',
13 },
14
15 setNodeName: function(value) {
16 let me = this;
17 me.callParent([value]);
18 me.getStore().load();
19 },
20
21 initComponent: function() {
22 let me = this;
23
24 if (!me.nodename) {
25 me.nodename = 'localhost';
26 }
27
28 let store = Ext.create('Ext.data.Store', {
29 autoLoad: {}, // true,
30 fields: ['pool', 'size', 'free'],
31 proxy: {
32 type: 'proxmox',
33 url: `${me.apiBaseUrl}${me.nodename}${me.apiSuffix}`,
34 },
35 });
36 store.sort('pool', 'ASC');
37
38 Ext.apply(me, {
39 store: store,
40 });
41
42 me.callParent();
43 },
44 });
45
46 Ext.define('PVE.storage.ZFSPoolInputPanel', {
47 extend: 'PVE.panel.StorageBase',
48
49 onlineHelp: 'storage_zfspool',
50
51 initComponent: function() {
52 let me = this;
53
54 me.column1 = [];
55
56 if (me.isCreate) {
57 me.column1.push({
58 xtype: 'pveStorageScanNodeSelector',
59 listeners: {
60 change: {
61 fn: function(field, value) {
62 me.lookup('zfsPoolSelector').setNodeName(value);
63 me.lookup('storageNodeRestriction').setValue(value);
64 },
65 },
66 },
67 });
68 me.column1.push(Ext.create('PVE.storage.ZFSPoolSelector', {
69 name: 'pool',
70 fieldLabel: gettext('ZFS Pool'),
71 reference: 'zfsPoolSelector',
72 allowBlank: false,
73 }));
74 } else {
75 me.column1.push(Ext.createWidget('displayfield', {
76 name: 'pool',
77 value: '',
78 fieldLabel: gettext('ZFS Pool'),
79 allowBlank: false,
80 }));
81 }
82
83 // value is an array,
84 // while before it was a string
85 me.column1.push({
86 xtype: 'pveContentTypeSelector',
87 cts: ['images', 'rootdir'],
88 fieldLabel: gettext('Content'),
89 name: 'content',
90 value: ['images', 'rootdir'],
91 multiSelect: true,
92 allowBlank: false,
93 });
94 me.column2 = [
95 {
96 xtype: 'proxmoxcheckbox',
97 name: 'sparse',
98 checked: false,
99 uncheckedValue: 0,
100 fieldLabel: gettext('Thin provision'),
101 },
102 {
103 xtype: 'textfield',
104 name: 'blocksize',
105 emptyText: '8k',
106 fieldLabel: gettext('Block Size'),
107 allowBlank: true,
108 },
109 ];
110
111 me.callParent();
112 },
113 });