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