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