]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/GlusterFsEdit.js
Rename 'create' to 'isCreate' in pveWindowEdit and subclasses
[pve-manager.git] / www / manager6 / storage / GlusterFsEdit.js
1 Ext.define('PVE.storage.GlusterFsScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveGlusterFsScan',
4
5 queryParam: 'server',
6
7 valueField: 'volname',
8 displayField: 'volname',
9 matchFieldWidth: false,
10 listConfig: {
11 loadingText: '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.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
50 store.sort('volname', 'ASC');
51
52 Ext.apply(me, {
53 store: store
54 });
55
56 me.callParent();
57 }
58 });
59
60 Ext.define('PVE.storage.GlusterFsInputPanel', {
61 extend: 'PVE.panel.InputPanel',
62
63 onGetValues: function(values) {
64 var me = this;
65
66 if (me.isCreate) {
67 values.type = 'glusterfs';
68 } else {
69 delete values.storage;
70 }
71
72 values.disable = values.enable ? 0 : 1;
73 delete values.enable;
74
75 return values;
76 },
77
78 initComponent : function() {
79 var me = this;
80
81
82 me.column1 = [
83 {
84 xtype: me.isCreate ? 'textfield' : 'displayfield',
85 name: 'storage',
86 value: me.storageId || '',
87 fieldLabel: 'ID',
88 vtype: 'StorageId',
89 allowBlank: false
90 },
91 {
92 xtype: me.isCreate ? 'textfield' : 'displayfield',
93 name: 'server',
94 value: '',
95 fieldLabel: gettext('Server'),
96 allowBlank: false,
97 listeners: {
98 change: function(f, value) {
99 if (me.isCreate) {
100 var volumeField = me.down('field[name=volume]');
101 volumeField.setServer(value);
102 volumeField.setValue('');
103 }
104 }
105 }
106 },
107 {
108 xtype: me.isCreate ? 'pvetextfield' : 'displayfield',
109 name: 'server2',
110 value: '',
111 fieldLabel: gettext('Second Server'),
112 allowBlank: true
113 },
114 {
115 xtype: me.isCreate ? 'pveGlusterFsScan' : 'displayfield',
116 name: 'volume',
117 value: '',
118 fieldLabel: 'Volume name',
119 allowBlank: false
120 },
121 {
122 xtype: 'pveContentTypeSelector',
123 cts: ['images', 'iso', 'backup', 'vztmpl'],
124 name: 'content',
125 value: 'images',
126 multiSelect: true,
127 fieldLabel: gettext('Content'),
128 allowBlank: false
129 }
130 ];
131
132 me.column2 = [
133 {
134 xtype: 'pveNodeSelector',
135 name: 'nodes',
136 fieldLabel: gettext('Nodes'),
137 emptyText: gettext('All') + ' (' +
138 gettext('No restrictions') +')',
139 multiSelect: true,
140 autoSelect: false
141 },
142 {
143 xtype: 'pvecheckbox',
144 name: 'enable',
145 checked: true,
146 uncheckedValue: 0,
147 fieldLabel: gettext('Enable')
148 },
149 {
150 xtype: 'pveIntegerField',
151 fieldLabel: gettext('Max Backups'),
152 name: 'maxfiles',
153 minValue: 0,
154 maxValue: 365,
155 value: me.isCreate ? '1' : undefined,
156 allowBlank: false
157 }
158 ];
159
160 me.callParent();
161 }
162 });
163
164 Ext.define('PVE.storage.GlusterFsEdit', {
165 extend: 'PVE.window.Edit',
166
167 initComponent : function() {
168 var me = this;
169
170 me.isCreate = !me.storageId;
171
172 if (me.isCreate) {
173 me.url = '/api2/extjs/storage';
174 me.method = 'POST';
175 } else {
176 me.url = '/api2/extjs/storage/' + me.storageId;
177 me.method = 'PUT';
178 }
179
180 var ipanel = Ext.create('PVE.storage.GlusterFsInputPanel', {
181 isCreate: me.isCreate,
182 storageId: me.storageId
183 });
184
185 Ext.apply(me, {
186 subject: PVE.Utils.format_storage_type('glusterfs'),
187 isAdd: true,
188 items: [ ipanel ]
189 });
190
191 me.callParent();
192
193 if (!me.isCreate) {
194 me.load({
195 success: function(response, options) {
196 var values = response.result.data;
197 var ctypes = values.content || '';
198
199 values.content = ctypes.split(',');
200
201 if (values.nodes) {
202 values.nodes = values.nodes.split(',');
203 }
204 values.enable = values.disable ? 0 : 1;
205 ipanel.setValues(values);
206 }
207 });
208 }
209 }
210 });