]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/GlusterFsEdit.js
copy storage/GlusterFsEdit.js from manager to manager6
[pve-manager.git] / www / manager6 / storage / GlusterFsEdit.js
CommitLineData
5313526e
DM
1Ext.define('PVE.storage.GlusterFsScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveGlusterFsScan',
4
5 queryParam: 'server',
6
7 doRawQuery: function() {
8 },
9
10 onTriggerClick: function() {
11 var me = this;
12
13 if (!me.queryCaching || me.lastQuery !== me.glusterServer) {
14 me.store.removeAll();
15 }
16
17 me.allQuery = me.glusterServer;
18
19 me.callParent();
20 },
21
22 setServer: function(server) {
23 var me = this;
24
25 me.glusterServer = server;
26 },
27
28 initComponent : function() {
29 var me = this;
30
31 if (!me.nodename) {
32 me.nodename = 'localhost';
33 }
34
35 var store = Ext.create('Ext.data.Store', {
36 fields: [ 'volname' ],
37 proxy: {
38 type: 'pve',
39 url: '/api2/json/nodes/' + me.nodename + '/scan/glusterfs'
40 }
41 });
42
43 Ext.apply(me, {
44 store: store,
45 valueField: 'volname',
46 displayField: 'volname',
47 matchFieldWidth: false,
48 listConfig: {
49 loadingText: 'Scanning...',
50 listeners: {
51 // hack: call setHeight to show scroll bars correctly
52 refresh: function(list) {
53 var lh = PVE.Utils.gridLineHeigh();
54 var count = store.getCount();
55 list.setHeight(lh * ((count > 10) ? 10 : count));
56 }
57 },
58 width: 350
59 }
60 });
61
62 me.callParent();
63 }
64});
65
66Ext.define('PVE.storage.GlusterFsInputPanel', {
67 extend: 'PVE.panel.InputPanel',
68
69 onGetValues: function(values) {
70 var me = this;
71
72 if (me.create) {
73 values.type = 'glusterfs';
74 } else {
75 delete values.storage;
76 }
77
78 values.disable = values.enable ? 0 : 1;
79 delete values.enable;
80
81 return values;
82 },
83
84 initComponent : function() {
85 var me = this;
86
87
88 me.column1 = [
89 {
90 xtype: me.create ? 'textfield' : 'displayfield',
91 name: 'storage',
92 height: 22, // hack: set same height as text fields
93 value: me.storageId || '',
94 fieldLabel: 'ID',
95 vtype: 'StorageId',
96 allowBlank: false
97 },
98 {
99 xtype: me.create ? 'textfield' : 'displayfield',
100 height: 22, // hack: set same height as text fields
101 name: 'server',
102 value: '',
103 fieldLabel: gettext('Server'),
104 allowBlank: false,
105 listeners: {
106 change: function(f, value) {
107 if (me.create) {
108 var volumeField = me.down('field[name=volume]');
109 volumeField.setServer(value);
110 volumeField.setValue('');
111 }
112 }
113 }
114 },
115 {
116 xtype: me.create ? 'pvetextfield' : 'displayfield',
117 height: 22, // hack: set same height as text fields
118 name: 'server2',
119 value: '',
120 fieldLabel: gettext('Second Server'),
121 allowBlank: true,
122 },
123 {
124 xtype: me.create ? 'pveGlusterFsScan' : 'displayfield',
125 height: 22, // hack: set same height as text fields
126 name: 'volume',
127 value: '',
128 fieldLabel: 'Volume name',
129 allowBlank: false
130 },
131 {
132 xtype: 'pveContentTypeSelector',
133 cts: ['images', 'iso', 'backup', 'vztmpl'],
134 name: 'content',
135 value: 'images',
136 multiSelect: true,
137 fieldLabel: gettext('Content'),
138 allowBlank: false
139 }
140 ];
141
142 me.column2 = [
143 {
144 xtype: 'PVE.form.NodeSelector',
145 name: 'nodes',
146 fieldLabel: gettext('Nodes'),
147 emptyText: gettext('All') + ' (' +
148 gettext('No restrictions') +')',
149 multiSelect: true,
150 autoSelect: false
151 },
152 {
153 xtype: 'pvecheckbox',
154 name: 'enable',
155 checked: true,
156 uncheckedValue: 0,
157 fieldLabel: gettext('Enable')
158 },
159 {
160 xtype: 'numberfield',
161 fieldLabel: gettext('Max Backups'),
162 name: 'maxfiles',
163 minValue: 0,
164 maxValue: 365,
165 value: me.create ? '1' : undefined,
166 allowBlank: false
167 }
168 ];
169
170 me.callParent();
171 }
172});
173
174Ext.define('PVE.storage.GlusterFsEdit', {
175 extend: 'PVE.window.Edit',
176
177 initComponent : function() {
178 var me = this;
179
180 me.create = !me.storageId;
181
182 if (me.create) {
183 me.url = '/api2/extjs/storage';
184 me.method = 'POST';
185 } else {
186 me.url = '/api2/extjs/storage/' + me.storageId;
187 me.method = 'PUT';
188 }
189
190 var ipanel = Ext.create('PVE.storage.GlusterFsInputPanel', {
191 create: me.create,
192 storageId: me.storageId
193 });
194
195 Ext.apply(me, {
196 subject: PVE.Utils.format_storage_type('glusterfs'),
197 isAdd: true,
198 items: [ ipanel ]
199 });
200
201 me.callParent();
202
203 if (!me.create) {
204 me.load({
205 success: function(response, options) {
206 var values = response.result.data;
207 var ctypes = values.content || '';
208
209 values.content = ctypes.split(',');
210
211 if (values.nodes) {
212 values.nodes = values.nodes.split(',');
213 }
214 values.enable = values.disable ? 0 : 1;
215 ipanel.setValues(values);
216 }
217 });
218 }
219 }
220});