Signed-off-by: Lukas Wagner <l.wag...@proxmox.com> --- src/Makefile | 1 + src/form/NotificationFilterSelector.js | 58 +++++++++++++++++++++++++ src/panel/GotifyEditPanel.js | 9 ++++ src/panel/NotificationConfigView.js | 4 ++ src/panel/NotificationGroupEditPanel.js | 9 ++++ src/panel/SendmailEditPanel.js | 9 ++++ src/window/EndpointEditBase.js | 1 + 7 files changed, 91 insertions(+) create mode 100644 src/form/NotificationFilterSelector.js
diff --git a/src/Makefile b/src/Makefile index 829081d..f661bb6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -44,6 +44,7 @@ JSSRC= \ form/RoleSelector.js \ form/DiskSelector.js \ form/MultiDiskSelector.js \ + form/NotificationFilterSelector.js \ form/TaskTypeSelector.js \ form/ACME.js \ form/UserSelector.js \ diff --git a/src/form/NotificationFilterSelector.js b/src/form/NotificationFilterSelector.js new file mode 100644 index 0000000..d2ab8be --- /dev/null +++ b/src/form/NotificationFilterSelector.js @@ -0,0 +1,58 @@ +Ext.define('Proxmox.form.NotificationFilterSelector', { + extend: 'Proxmox.form.ComboGrid', + alias: ['widget.pmxNotificationFilterSelector'], + + // set default value to empty array, else it inits it with + // null and after the store load it is an empty array, + // triggering dirtychange + value: [], + valueField: 'name', + displayField: 'name', + deleteEmpty: true, + skipEmptyText: true, + allowBlank: true, + editable: false, + autoSelect: false, + + listConfig: { + columns: [ + { + header: gettext('Filter'), + dataIndex: 'name', + sortable: true, + hideable: false, + flex: 1, + }, + { + header: gettext('Comment'), + dataIndex: 'comment', + sortable: true, + hideable: false, + flex: 2, + }, + ], + }, + + initComponent: function() { + let me = this; + + Ext.apply(me, { + store: { + fields: ['name', 'comment'], + proxy: { + type: 'proxmox', + url: `/api2/json/${me.baseUrl}/filters`, + }, + sorters: [ + { + property: 'name', + direction: 'ASC', + }, + ], + autoLoad: true, + }, + }); + + me.callParent(); + }, +}); diff --git a/src/panel/GotifyEditPanel.js b/src/panel/GotifyEditPanel.js index a661c1a..29cea1e 100644 --- a/src/panel/GotifyEditPanel.js +++ b/src/panel/GotifyEditPanel.js @@ -32,6 +32,15 @@ Ext.define('Proxmox.panel.GotifyEditPanel', { allowBlank: '{!isCreate}', }, }, + { + xtype: 'pmxNotificationFilterSelector', + name: 'filter', + fieldLabel: gettext('Filter'), + cbind: { + deleteEmpty: '{!isCreate}', + baseUrl: '{baseUrl}', + }, + }, ], column1: [], diff --git a/src/panel/NotificationConfigView.js b/src/panel/NotificationConfigView.js index f6e6a8b..2aa04da 100644 --- a/src/panel/NotificationConfigView.js +++ b/src/panel/NotificationConfigView.js @@ -141,6 +141,10 @@ Ext.define('Proxmox.panel.NotificationEndpointView', { initComponent: function() { let me = this; + if (!me.baseUrl) { + throw "baseUrl is not set!"; + } + let menuItems = []; for (const [endpointType, config] of Object.entries( Proxmox.Schema.notificationEndpointTypes).sort()) { diff --git a/src/panel/NotificationGroupEditPanel.js b/src/panel/NotificationGroupEditPanel.js index 0a7a469..39fdbc4 100644 --- a/src/panel/NotificationGroupEditPanel.js +++ b/src/panel/NotificationGroupEditPanel.js @@ -28,6 +28,15 @@ Ext.define('Proxmox.panel.NotificationGroupEditPanel', { column2: [], columnB: [ + { + xtype: 'pmxNotificationFilterSelector', + name: 'filter', + fieldLabel: gettext('Filter'), + cbind: { + deleteEmpty: '{!isCreate}', + baseUrl: '{baseUrl}', + }, + }, { xtype: 'proxmoxtextfield', name: 'comment', diff --git a/src/panel/SendmailEditPanel.js b/src/panel/SendmailEditPanel.js index 9444a8c..c151b92 100644 --- a/src/panel/SendmailEditPanel.js +++ b/src/panel/SendmailEditPanel.js @@ -91,6 +91,15 @@ Ext.define('Proxmox.panel.SendmailEditPanel', { return true; }, }, + { + xtype: 'pmxNotificationFilterSelector', + name: 'filter', + fieldLabel: gettext('Filter'), + cbind: { + deleteEmpty: '{!isCreate}', + baseUrl: '{baseUrl}', + }, + }, ], column1: [], diff --git a/src/window/EndpointEditBase.js b/src/window/EndpointEditBase.js index bcf6879..f94a8e4 100644 --- a/src/window/EndpointEditBase.js +++ b/src/window/EndpointEditBase.js @@ -41,6 +41,7 @@ Ext.define('Proxmox.window.EndpointEditBase', { name: me.name, xtype: endpointConfig.ipanel, isCreate: me.isCreate, + baseUrl: me.baseUrl, type: me.type, }], }); -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel