]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/NFSEdit.js
use windowEdit from widget toolkit
[pve-manager.git] / www / manager6 / storage / NFSEdit.js
CommitLineData
13246edc
DM
1Ext.define('PVE.storage.NFSScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveNFSScan',
4
5 queryParam: 'server',
6
c2317525
DC
7 valueField: 'path',
8 displayField: 'path',
9 matchFieldWidth: false,
10 listConfig: {
11 loadingText: gettext('Scanning...'),
12 width: 350
13 },
13246edc
DM
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
9e9ab96f
WL
50 store.sort('path', 'ASC');
51
13246edc 52 Ext.apply(me, {
22f2f9d6 53 store: store
13246edc
DM
54 });
55
56 me.callParent();
57 }
58});
59
60Ext.define('PVE.storage.NFSInputPanel', {
61 extend: 'PVE.panel.InputPanel',
c2d4185b 62 controller: 'storageEdit',
13246edc
DM
63
64 onGetValues: function(values) {
65 var me = this;
66
d5e771ce 67 if (me.isCreate) {
13246edc
DM
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
177de3de 76 values.disable = values.enable ? 0 : 1;
13246edc 77 delete values.enable;
177de3de 78
13246edc
DM
79 return values;
80 },
81
82 initComponent : function() {
83 var me = this;
84
85
86 me.column1 = [
87 {
d5e771ce 88 xtype: me.isCreate ? 'textfield' : 'displayfield',
13246edc 89 name: 'storage',
13246edc
DM
90 value: me.storageId || '',
91 fieldLabel: 'ID',
92 vtype: 'StorageId',
93 allowBlank: false
94 },
95 {
d5e771ce 96 xtype: me.isCreate ? 'textfield' : 'displayfield',
13246edc
DM
97 name: 'server',
98 value: '',
99 fieldLabel: gettext('Server'),
100 allowBlank: false,
101 listeners: {
102 change: function(f, value) {
d5e771ce 103 if (me.isCreate) {
13246edc
DM
104 var exportField = me.down('field[name=export]');
105 exportField.setServer(value);
106 exportField.setValue('');
107 }
108 }
109 }
110 },
111 {
d5e771ce 112 xtype: me.isCreate ? 'pveNFSScan' : 'displayfield',
13246edc
DM
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 {
5198365d 130 xtype: 'pveNodeSelector',
13246edc
DM
131 name: 'nodes',
132 fieldLabel: gettext('Nodes'),
177de3de 133 emptyText: gettext('All') + ' (' +
13246edc
DM
134 gettext('No restrictions') +')',
135 multiSelect: true,
136 autoSelect: false
137 },
138 {
896c0d50 139 xtype: 'proxmoxcheckbox',
13246edc
DM
140 name: 'enable',
141 checked: true,
142 uncheckedValue: 0,
143 fieldLabel: gettext('Enable')
144 },
145 {
bf96f60d 146 xtype: 'proxmoxintegerfield',
13246edc 147 fieldLabel: gettext('Max Backups'),
c2d4185b 148 disabled: true,
13246edc 149 name: 'maxfiles',
c2d4185b 150 reference: 'maxfiles',
13246edc
DM
151 minValue: 0,
152 maxValue: 365,
d5e771ce 153 value: me.isCreate ? '1' : undefined,
13246edc
DM
154 allowBlank: false
155 }
156 ];
157
158 me.callParent();
159 }
160});
161
162Ext.define('PVE.storage.NFSEdit', {
9fccc702 163 extend: 'Proxmox.window.Edit',
13246edc
DM
164
165 initComponent : function() {
166 var me = this;
177de3de 167
d5e771ce 168 me.isCreate = !me.storageId;
13246edc 169
d5e771ce 170 if (me.isCreate) {
13246edc
DM
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', {
d5e771ce 179 isCreate: me.isCreate,
13246edc
DM
180 storageId: me.storageId
181 });
177de3de 182
13246edc
DM
183 Ext.apply(me, {
184 subject: 'NFS',
185 isAdd: true,
186 items: [ ipanel ]
187 });
188
189 me.callParent();
190
d5e771ce 191 if (!me.isCreate) {
13246edc
DM
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});