]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/MetricServerView.js
fix typo in user tag access text field
[pve-manager.git] / www / manager6 / dc / MetricServerView.js
CommitLineData
f257dcec
DC
1Ext.define('PVE.dc.MetricServerView', {
2 extend: 'Ext.grid.Panel',
3 alias: ['widget.pveMetricServerView'],
4
5 stateful: true,
6 stateId: 'grid-metricserver',
7
8 controller: {
9 xclass: 'Ext.app.ViewController',
10
11 render_type: function(value) {
12 switch (value) {
13 case 'influxdb': return "InfluxDB";
14 case 'graphite': return "Graphite";
15 default: return Proxmox.Utils.unknownText;
16 }
17 },
18
d57f8d94 19 editWindow: function(xtype, id) {
f257dcec 20 let me = this;
d57f8d94
TL
21 Ext.create(`PVE.dc.${xtype}Edit`, {
22 serverid: id,
f257dcec
DC
23 autoShow: true,
24 listeners: {
25 destroy: () => me.reload(),
26 },
27 });
28 },
29
d57f8d94
TL
30 addServer: function(button) {
31 this.editWindow(button.text);
f257dcec
DC
32 },
33
34 editServer: function() {
35 let me = this;
36 let view = me.getView();
37 let selection = view.getSelection();
38 if (!selection || selection.length < 1) {
39 return;
40 }
41
d57f8d94 42 let cfg = selection[0].data;
f257dcec 43
d57f8d94
TL
44 let xtype = me.render_type(cfg.type);
45 me.editWindow(xtype, cfg.id);
f257dcec
DC
46 },
47
48 reload: function() {
49 this.getView().getStore().load();
50 },
51 },
52
53 store: {
54 autoLoad: true,
55 id: 'metricservers',
56 proxy: {
57 type: 'proxmox',
d57f8d94 58 url: '/api2/json/cluster/metrics/server',
f257dcec
DC
59 },
60 },
61
62 columns: [
63 {
64 text: gettext('Name'),
65 flex: 2,
66 dataIndex: 'id',
67 },
68 {
69 text: gettext('Type'),
70 flex: 1,
71 dataIndex: 'type',
72 renderer: 'render_type',
73 },
74 {
75 text: gettext('Enabled'),
76 dataIndex: 'disable',
77 width: 100,
78 renderer: Proxmox.Utils.format_neg_boolean,
79 },
80 {
81 text: gettext('Server'),
82 width: 200,
83 dataIndex: 'server',
84 },
85 {
86 text: gettext('Port'),
87 width: 100,
88 dataIndex: 'port',
89 },
90 ],
91
92 tbar: [
93 {
94 text: gettext('Add'),
95 menu: [
96 {
97 text: 'Graphite',
7ba63836 98 iconCls: 'fa fa-fw fa-bar-chart',
d57f8d94 99 handler: 'addServer',
f257dcec
DC
100 },
101 {
102 text: 'InfluxDB',
7ba63836 103 iconCls: 'fa fa-fw fa-bar-chart',
d57f8d94 104 handler: 'addServer',
f257dcec
DC
105 },
106 ],
107 },
108 {
109 text: gettext('Edit'),
110 xtype: 'proxmoxButton',
111 handler: 'editServer',
112 disabled: true,
113 },
114 {
115 xtype: 'proxmoxStdRemoveButton',
d57f8d94 116 baseurl: `/api2/extjs/cluster/metrics/server`,
f257dcec
DC
117 callback: 'reload',
118 },
119 ],
120
121 listeners: {
122 itemdblclick: 'editServer',
123 },
124
125 initComponent: function() {
126 var me = this;
127
128 me.callParent();
129
130 Proxmox.Utils.monStoreErrors(me, me.getStore());
131 },
132});
133
71f5bf0a 134Ext.define('PVE.dc.MetricServerBaseEdit', {
f257dcec
DC
135 extend: 'Proxmox.window.Edit',
136 mixins: ['Proxmox.Mixin.CBind'],
137
f257dcec
DC
138 cbindData: function() {
139 let me = this;
140 me.isCreate = !me.serverid;
141 me.serverid = me.serverid || "";
d57f8d94 142 me.url = `/api2/extjs/cluster/metrics/server/${me.serverid}`;
f257dcec
DC
143 me.method = me.isCreate ? 'POST' : 'PUT';
144 if (!me.isCreate) {
71f5bf0a 145 me.subject = `${me.subject}: ${me.serverid}`;
f257dcec
DC
146 }
147 return {};
148 },
149
d57f8d94
TL
150 submitUrl: function(url, values) {
151 return this.isCreate ? `${url}/${values.id}` : url;
152 },
153
71f5bf0a
TL
154 initComponent: function() {
155 let me = this;
156
157 me.callParent();
158
159 if (me.serverid) {
160 me.load({
161 success: function(response, options) {
162 let values = response.result.data;
163 values.enable = !values.disable;
164 me.down('inputpanel').setValues(values);
165 },
166 });
167 }
168 },
169});
170
171Ext.define('PVE.dc.InfluxDBEdit', {
172 extend: 'PVE.dc.MetricServerBaseEdit',
173 mixins: ['Proxmox.Mixin.CBind'],
174
641105c2
DC
175 onlineHelp: 'metric_server_influxdb',
176
71f5bf0a
TL
177 subject: 'InfluxDB',
178
3ebcbbc5
DC
179 cbindData: function() {
180 let me = this;
181 me.callParent();
182 me.tokenEmptyText = me.isCreate ? '' : gettext('unchanged');
183 return {};
184 },
185
f257dcec
DC
186 items: [
187 {
188 xtype: 'inputpanel',
189
190 onGetValues: function(values) {
191 values.disable = values.enable ? 0 : 1;
192 delete values.enable;
193 return values;
194 },
195
196 column1: [
197 {
198 xtype: 'hidden',
199 name: 'type',
200 value: 'influxdb',
201 cbind: {
202 submitValue: '{isCreate}',
203 },
204 },
205 {
f257dcec
DC
206 xtype: 'pmxDisplayEditField',
207 name: 'id',
eb594f5c 208 fieldLabel: gettext('Name'),
f257dcec
DC
209 allowBlank: false,
210 cbind: {
211 editable: '{isCreate}',
212 value: '{serverid}',
213 },
214 },
1eb6d2bf
TL
215 {
216 xtype: 'proxmoxtextfield',
217 name: 'server',
218 fieldLabel: gettext('Server'),
219 allowBlank: false,
220 },
3ebcbbc5
DC
221 {
222 xtype: 'proxmoxintegerfield',
223 name: 'port',
224 fieldLabel: gettext('Port'),
225 value: 8089,
226 minValue: 1,
227 maximum: 65536,
228 allowBlank: false,
229 },
230 {
231 xtype: 'proxmoxKVComboBox',
232 name: 'influxdbproto',
233 fieldLabel: gettext('Protocol'),
234 value: '__default__',
235 cbind: {
236 deleteEmpty: '{!isCreate}',
237 },
238 comboItems: [
239 ['__default__', 'UDP'],
240 ['http', 'HTTP'],
241 ['https', 'HTTPS'],
242 ],
243 listeners: {
244 change: function(field, value) {
245 let me = this;
246 let isUdp = value !== 'http' && value !== 'https';
247 me.up('inputpanel').down('field[name=organization]').setDisabled(isUdp);
248 me.up('inputpanel').down('field[name=bucket]').setDisabled(isUdp);
249 me.up('inputpanel').down('field[name=token]').setDisabled(isUdp);
c69faba3 250 me.up('inputpanel').down('field[name=api-path-prefix]').setDisabled(isUdp);
3ebcbbc5
DC
251 me.up('inputpanel').down('field[name=mtu]').setDisabled(!isUdp);
252 me.up('inputpanel').down('field[name=timeout]').setDisabled(isUdp);
253 me.up('inputpanel').down('field[name=max-body-size]').setDisabled(isUdp);
254 },
255 },
256 },
1eb6d2bf
TL
257 ],
258
259 column2: [
f257dcec 260 {
f257dcec 261 xtype: 'checkbox',
eb594f5c
TL
262 name: 'enable',
263 fieldLabel: gettext('Enabled'),
f257dcec
DC
264 inputValue: 1,
265 uncheckedValue: 0,
266 checked: true,
f257dcec 267 },
3ebcbbc5
DC
268 {
269 xtype: 'proxmoxtextfield',
270 name: 'organization',
271 fieldLabel: gettext('Organization'),
272 emptyText: 'proxmox',
273 disabled: true,
274 cbind: {
275 deleteEmpty: '{!isCreate}',
276 },
277 },
278 {
279 xtype: 'proxmoxtextfield',
280 name: 'bucket',
281 fieldLabel: gettext('Bucket'),
282 emptyText: 'proxmox',
283 disabled: true,
284 cbind: {
285 deleteEmpty: '{!isCreate}',
286 },
287 },
288 {
289 xtype: 'proxmoxtextfield',
290 name: 'token',
291 fieldLabel: gettext('Token'),
292 disabled: true,
293 allowBlank: true,
294 deleteEmpty: false,
295 submitEmpty: false,
296 cbind: {
297 disabled: '{!isCreate}',
298 emptyText: '{tokenEmptyText}',
299 },
300 },
301 ],
302
303 advancedColumn1: [
c69faba3
TL
304 {
305 xtype: 'proxmoxtextfield',
306 name: 'api-path-prefix',
307 fieldLabel: gettext('API Path Prefix'),
308 allowBlank: true,
309 disabled: true,
310 cbind: {
311 deleteEmpty: '{!isCreate}',
312 },
313 },
f257dcec 314 {
f257dcec 315 xtype: 'proxmoxintegerfield',
3ebcbbc5
DC
316 name: 'timeout',
317 fieldLabel: gettext('Timeout (s)'),
318 disabled: true,
319 cbind: {
320 deleteEmpty: '{!isCreate}',
321 },
f257dcec 322 minValue: 1,
3ebcbbc5 323 emptyText: 1,
f257dcec
DC
324 },
325 ],
326
f257dcec 327 advancedColumn2: [
3ebcbbc5
DC
328 {
329 xtype: 'proxmoxintegerfield',
330 name: 'max-body-size',
331 fieldLabel: gettext('Batch Size (b)'),
332 minValue: 1,
333 emptyText: '25000000',
334 submitEmpty: false,
335 cbind: {
336 deleteEmpty: '{!isCreate}',
337 },
338 },
f257dcec 339 {
f257dcec
DC
340 xtype: 'proxmoxintegerfield',
341 name: 'mtu',
eb594f5c 342 fieldLabel: 'MTU',
f257dcec
DC
343 minValue: 1,
344 emptyText: '1500',
345 submitEmpty: false,
346 cbind: {
347 deleteEmpty: '{!isCreate}',
348 },
349 },
350 ],
351 },
352 ],
f257dcec
DC
353});
354
355Ext.define('PVE.dc.GraphiteEdit', {
71f5bf0a 356 extend: 'PVE.dc.MetricServerBaseEdit',
f257dcec
DC
357 mixins: ['Proxmox.Mixin.CBind'],
358
641105c2
DC
359 onlineHelp: 'metric_server_graphite',
360
f257dcec
DC
361 subject: 'Graphite',
362
f257dcec
DC
363 items: [
364 {
365 xtype: 'inputpanel',
366
367 onGetValues: function(values) {
368 values.disable = values.enable ? 0 : 1;
369 delete values.enable;
370 return values;
371 },
372
373 column1: [
374 {
375 xtype: 'hidden',
376 name: 'type',
377 value: 'graphite',
378 cbind: {
379 submitValue: '{isCreate}',
380 },
381 },
382 {
f257dcec
DC
383 xtype: 'pmxDisplayEditField',
384 name: 'id',
eb594f5c 385 fieldLabel: gettext('Name'),
f257dcec
DC
386 allowBlank: false,
387 cbind: {
388 editable: '{isCreate}',
389 value: '{serverid}',
390 },
391 },
1eb6d2bf
TL
392 {
393 xtype: 'proxmoxtextfield',
394 name: 'server',
395 fieldLabel: gettext('Server'),
396 allowBlank: false,
397 },
398 ],
399
400 column2: [
f257dcec 401 {
f257dcec 402 xtype: 'checkbox',
eb594f5c
TL
403 name: 'enable',
404 fieldLabel: gettext('Enabled'),
f257dcec
DC
405 inputValue: 1,
406 uncheckedValue: 0,
407 checked: true,
f257dcec 408 },
f257dcec 409 {
f257dcec 410 xtype: 'proxmoxintegerfield',
eb594f5c
TL
411 name: 'port',
412 fieldLabel: gettext('Port'),
9f4e985d 413 value: 2003,
f257dcec
DC
414 minimum: 1,
415 maximum: 65536,
f257dcec
DC
416 allowBlank: false,
417 },
418 {
419 fieldLabel: gettext('Path'),
420 xtype: 'proxmoxtextfield',
421 emptyText: 'proxmox',
422 name: 'path',
423 cbind: {
424 deleteEmpty: '{!isCreate}',
425 },
426 },
427 ],
428
429 advancedColumn1: [
430 {
f257dcec
DC
431 xtype: 'proxmoxKVComboBox',
432 name: 'proto',
eb594f5c 433 fieldLabel: gettext('Protocol'),
f257dcec
DC
434 value: '__default__',
435 cbind: {
436 deleteEmpty: '{!isCreate}',
437 },
438 comboItems: [
439 ['__default__', 'UDP'],
440 ['tcp', 'TCP'],
441 ],
442 listeners: {
443 change: function(field, value) {
444 let me = this;
445 me.up('inputpanel').down('field[name=timeout]').setDisabled(value !== 'tcp');
446 me.up('inputpanel').down('field[name=mtu]').setDisabled(value === 'tcp');
447 },
448 },
449 },
450 ],
451
452 advancedColumn2: [
453 {
f257dcec
DC
454 xtype: 'proxmoxintegerfield',
455 name: 'mtu',
eb594f5c 456 fieldLabel: 'MTU',
f257dcec
DC
457 minimum: 1,
458 emptyText: '1500',
459 submitEmpty: false,
460 cbind: {
461 deleteEmpty: '{!isCreate}',
462 },
463 },
464 {
f257dcec
DC
465 xtype: 'proxmoxintegerfield',
466 name: 'timeout',
eb594f5c 467 fieldLabel: gettext('TCP Timeout'),
f257dcec
DC
468 disabled: true,
469 cbind: {
470 deleteEmpty: '{!isCreate}',
471 },
472 minValue: 1,
473 emptyText: 1,
474 },
475 ],
476 },
477 ],
f257dcec 478});