]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/NFSEdit.js
add pveIntegerField and use it
[pve-manager.git] / www / manager6 / storage / NFSEdit.js
1 Ext.define('PVE.storage.NFSScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveNFSScan',
4
5 queryParam: 'server',
6
7 valueField: 'path',
8 displayField: 'path',
9 matchFieldWidth: false,
10 listConfig: {
11 loadingText: gettext('Scanning...'),
12 width: 350
13 },
14 doRawQuery: function() {
15 },
16
17 onTriggerClick: function() {
18 var me = this;
19
20 if (!me.queryCaching || me.lastQuery !== me.nfsServer) {
21 me.store.removeAll();
22 }
23
24 me.allQuery = me.nfsServer;
25
26 me.callParent();
27 },
28
29 setServer: function(server) {
30 var me = this;
31
32 me.nfsServer = server;
33 },
34
35 initComponent : function() {
36 var me = this;
37
38 if (!me.nodename) {
39 me.nodename = 'localhost';
40 }
41
42 var store = Ext.create('Ext.data.Store', {
43 fields: [ 'path', 'options' ],
44 proxy: {
45 type: 'pve',
46 url: '/api2/json/nodes/' + me.nodename + '/scan/nfs'
47 }
48 });
49
50 store.sort('path', 'ASC');
51
52 Ext.apply(me, {
53 store: store
54 });
55
56 me.callParent();
57 }
58 });
59
60 Ext.define('PVE.storage.NFSInputPanel', {
61 extend: 'PVE.panel.InputPanel',
62
63 onGetValues: function(values) {
64 var me = this;
65
66 if (me.create) {
67 values.type = 'nfs';
68 // hack: for now we always create nvf v3
69 // fixme: make this configurable
70 values.options = 'vers=3';
71 } else {
72 delete values.storage;
73 }
74
75 values.disable = values.enable ? 0 : 1;
76 delete values.enable;
77
78 return values;
79 },
80
81 initComponent : function() {
82 var me = this;
83
84
85 me.column1 = [
86 {
87 xtype: me.create ? 'textfield' : 'displayfield',
88 name: 'storage',
89 value: me.storageId || '',
90 fieldLabel: 'ID',
91 vtype: 'StorageId',
92 allowBlank: false
93 },
94 {
95 xtype: me.create ? 'textfield' : 'displayfield',
96 name: 'server',
97 value: '',
98 fieldLabel: gettext('Server'),
99 allowBlank: false,
100 listeners: {
101 change: function(f, value) {
102 if (me.create) {
103 var exportField = me.down('field[name=export]');
104 exportField.setServer(value);
105 exportField.setValue('');
106 }
107 }
108 }
109 },
110 {
111 xtype: me.create ? 'pveNFSScan' : 'displayfield',
112 name: 'export',
113 value: '',
114 fieldLabel: 'Export',
115 allowBlank: false
116 },
117 {
118 xtype: 'pveContentTypeSelector',
119 name: 'content',
120 value: 'images',
121 multiSelect: true,
122 fieldLabel: gettext('Content'),
123 allowBlank: false
124 }
125 ];
126
127 me.column2 = [
128 {
129 xtype: 'pveNodeSelector',
130 name: 'nodes',
131 fieldLabel: gettext('Nodes'),
132 emptyText: gettext('All') + ' (' +
133 gettext('No restrictions') +')',
134 multiSelect: true,
135 autoSelect: false
136 },
137 {
138 xtype: 'pvecheckbox',
139 name: 'enable',
140 checked: true,
141 uncheckedValue: 0,
142 fieldLabel: gettext('Enable')
143 },
144 {
145 xtype: 'pveIntegerField',
146 fieldLabel: gettext('Max Backups'),
147 name: 'maxfiles',
148 minValue: 0,
149 maxValue: 365,
150 value: me.create ? '1' : undefined,
151 allowBlank: false
152 }
153 ];
154
155 me.callParent();
156 }
157 });
158
159 Ext.define('PVE.storage.NFSEdit', {
160 extend: 'PVE.window.Edit',
161
162 initComponent : function() {
163 var me = this;
164
165 me.create = !me.storageId;
166
167 if (me.create) {
168 me.url = '/api2/extjs/storage';
169 me.method = 'POST';
170 } else {
171 me.url = '/api2/extjs/storage/' + me.storageId;
172 me.method = 'PUT';
173 }
174
175 var ipanel = Ext.create('PVE.storage.NFSInputPanel', {
176 create: me.create,
177 storageId: me.storageId
178 });
179
180 Ext.apply(me, {
181 subject: 'NFS',
182 isAdd: true,
183 items: [ ipanel ]
184 });
185
186 me.callParent();
187
188 if (!me.create) {
189 me.load({
190 success: function(response, options) {
191 var values = response.result.data;
192 var ctypes = values.content || '';
193
194 values.content = ctypes.split(',');
195
196 if (values.nodes) {
197 values.nodes = values.nodes.split(',');
198 }
199 values.enable = values.disable ? 0 : 1;
200 ipanel.setValues(values);
201 }
202 });
203 }
204 }
205 });