mirror of
https://git.proxmox.com/git/proxmox-backup
synced 2025-06-07 05:32:22 +00:00

simple CRUD interface to show/add/edit/delete metric servers it's a bit different from PVE's so it's harder to reuse that than to copy it. If we need it again, we can still refactor and combine them. introduce 'PBS.Schema' class to hold the server type/xtype mappings Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
129 lines
2.4 KiB
JavaScript
129 lines
2.4 KiB
JavaScript
Ext.define('PBS.config.MetricServerView', {
|
|
extend: 'Ext.grid.Panel',
|
|
alias: ['widget.pbsMetricServerView'],
|
|
|
|
stateful: true,
|
|
stateId: 'grid-metricserver',
|
|
|
|
controller: {
|
|
xclass: 'Ext.app.ViewController',
|
|
|
|
editWindow: function(xtype, id) {
|
|
let me = this;
|
|
Ext.create(`PBS.window.${xtype}Edit`, {
|
|
serverid: id,
|
|
autoShow: true,
|
|
autoLoad: !!id,
|
|
listeners: {
|
|
destroy: () => me.reload(),
|
|
},
|
|
});
|
|
},
|
|
|
|
addServer: function(button) {
|
|
this.editWindow(PBS.Schema.metricServer[button.type]?.xtype);
|
|
},
|
|
|
|
editServer: function() {
|
|
let me = this;
|
|
let view = me.getView();
|
|
let selection = view.getSelection();
|
|
if (!selection || selection.length < 1) {
|
|
return;
|
|
}
|
|
|
|
let cfg = selection[0].data;
|
|
|
|
me.editWindow(PBS.Schema.metricServer[cfg.type]?.xtype, cfg.name);
|
|
},
|
|
|
|
reload: function() {
|
|
this.getView().getStore().load();
|
|
},
|
|
},
|
|
|
|
store: {
|
|
autoLoad: true,
|
|
id: 'metricservers',
|
|
proxy: {
|
|
type: 'proxmox',
|
|
url: '/api2/json/admin/metrics',
|
|
},
|
|
},
|
|
|
|
columns: [
|
|
{
|
|
text: gettext('Name'),
|
|
flex: 2,
|
|
dataIndex: 'name',
|
|
},
|
|
{
|
|
text: gettext('Type'),
|
|
width: 150,
|
|
dataIndex: 'type',
|
|
renderer: (v) => PBS.Schema.metricServer[v]?.type ?? v,
|
|
},
|
|
{
|
|
text: gettext('Enabled'),
|
|
dataIndex: 'disable',
|
|
width: 100,
|
|
renderer: Proxmox.Utils.format_neg_boolean,
|
|
},
|
|
{
|
|
text: gettext('Target Server'),
|
|
width: 200,
|
|
dataIndex: 'server',
|
|
},
|
|
{
|
|
text: gettext('Comment'),
|
|
flex: 3,
|
|
dataIndex: 'comment',
|
|
renderer: Ext.htmlEncode,
|
|
},
|
|
],
|
|
|
|
tbar: [
|
|
{
|
|
text: gettext('Add'),
|
|
menu: [
|
|
{
|
|
text: 'InfluxDB (HTTP)',
|
|
type: 'influxdb-http',
|
|
iconCls: 'fa fa-fw fa-bar-chart',
|
|
handler: 'addServer',
|
|
},
|
|
{
|
|
text: 'InfluxDB (UDP)',
|
|
type: 'influxdb-udp',
|
|
iconCls: 'fa fa-fw fa-bar-chart',
|
|
handler: 'addServer',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
text: gettext('Edit'),
|
|
xtype: 'proxmoxButton',
|
|
handler: 'editServer',
|
|
disabled: true,
|
|
},
|
|
{
|
|
xtype: 'proxmoxStdRemoveButton',
|
|
getUrl: (rec) => `/api2/extjs/config/metrics/${rec.data.type}/${rec.data.name}`,
|
|
getRecordName: (rec) => rec.data.name,
|
|
callback: 'reload',
|
|
},
|
|
],
|
|
|
|
listeners: {
|
|
itemdblclick: 'editServer',
|
|
},
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
me.callParent();
|
|
|
|
Proxmox.Utils.monStoreErrors(me, me.getStore());
|
|
},
|
|
});
|