]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/NFSEdit.js
use RestProxy from widget toolkit
[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: 'proxmox',
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 controller: 'storageEdit',
63
64 onGetValues: function(values) {
65 var me = this;
66
67 if (me.isCreate) {
68 values.type = 'nfs';
69 // hack: for now we always create nvf v3
70 // fixme: make this configurable
71 values.options = 'vers=3';
72 } else {
73 delete values.storage;
74 }
75
76 values.disable = values.enable ? 0 : 1;
77 delete values.enable;
78
79 return values;
80 },
81
82 initComponent : function() {
83 var me = this;
84
85
86 me.column1 = [
87 {
88 xtype: me.isCreate ? 'textfield' : 'displayfield',
89 name: 'storage',
90 value: me.storageId || '',
91 fieldLabel: 'ID',
92 vtype: 'StorageId',
93 allowBlank: false
94 },
95 {
96 xtype: me.isCreate ? 'textfield' : 'displayfield',
97 name: 'server',
98 value: '',
99 fieldLabel: gettext('Server'),
100 allowBlank: false,
101 listeners: {
102 change: function(f, value) {
103 if (me.isCreate) {
104 var exportField = me.down('field[name=export]');
105 exportField.setServer(value);
106 exportField.setValue('');
107 }
108 }
109 }
110 },
111 {
112 xtype: me.isCreate ? 'pveNFSScan' : 'displayfield',
113 name: 'export',
114 value: '',
115 fieldLabel: 'Export',
116 allowBlank: false
117 },
118 {
119 xtype: 'pveContentTypeSelector',
120 name: 'content',
121 value: 'images',
122 multiSelect: true,
123 fieldLabel: gettext('Content'),
124 allowBlank: false
125 }
126 ];
127
128 me.column2 = [
129 {
130 xtype: 'pveNodeSelector',
131 name: 'nodes',
132 fieldLabel: gettext('Nodes'),
133 emptyText: gettext('All') + ' (' +
134 gettext('No restrictions') +')',
135 multiSelect: true,
136 autoSelect: false
137 },
138 {
139 xtype: 'proxmoxcheckbox',
140 name: 'enable',
141 checked: true,
142 uncheckedValue: 0,
143 fieldLabel: gettext('Enable')
144 },
145 {
146 xtype: 'proxmoxintegerfield',
147 fieldLabel: gettext('Max Backups'),
148 disabled: true,
149 name: 'maxfiles',
150 reference: 'maxfiles',
151 minValue: 0,
152 maxValue: 365,
153 value: me.isCreate ? '1' : undefined,
154 allowBlank: false
155 }
156 ];
157
158 me.callParent();
159 }
160 });
161
162 Ext.define('PVE.storage.NFSEdit', {
163 extend: 'Proxmox.window.Edit',
164
165 initComponent : function() {
166 var me = this;
167
168 me.isCreate = !me.storageId;
169
170 if (me.isCreate) {
171 me.url = '/api2/extjs/storage';
172 me.method = 'POST';
173 } else {
174 me.url = '/api2/extjs/storage/' + me.storageId;
175 me.method = 'PUT';
176 }
177
178 var ipanel = Ext.create('PVE.storage.NFSInputPanel', {
179 isCreate: me.isCreate,
180 storageId: me.storageId
181 });
182
183 Ext.apply(me, {
184 subject: 'NFS',
185 isAdd: true,
186 items: [ ipanel ]
187 });
188
189 me.callParent();
190
191 if (!me.isCreate) {
192 me.load({
193 success: function(response, options) {
194 var values = response.result.data;
195 var ctypes = values.content || '';
196
197 values.content = ctypes.split(',');
198
199 if (values.nodes) {
200 values.nodes = values.nodes.split(',');
201 }
202 values.enable = values.disable ? 0 : 1;
203 ipanel.setValues(values);
204 }
205 });
206 }
207 }
208 });