public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Lukas Wagner <l.wagner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH pve-manager 13/27] ui: dc: remove unneeded notification events panel
Date: Tue,  7 Nov 2023 11:18:13 +0100	[thread overview]
Message-ID: <20231107101827.340100-14-l.wagner@proxmox.com> (raw)
In-Reply-To: <20231107101827.340100-1-l.wagner@proxmox.com>

The notification event settings are replaced by notification matchers,
which will combine the notification routing and filtering into a
single concept.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
 www/manager6/Makefile                 |   4 -
 www/manager6/dc/Config.js             |  17 +-
 www/manager6/dc/NotificationEvents.js | 276 --------------------------
 3 files changed, 2 insertions(+), 295 deletions(-)
 delete mode 100644 www/manager6/dc/NotificationEvents.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 57e1b48f..18baa024 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -159,7 +159,6 @@ JSSRC= 							\
 	dc/Health.js					\
 	dc/Log.js					\
 	dc/NodeView.js					\
-	dc/NotificationEvents.js			\
 	dc/OptionView.js				\
 	dc/PermissionView.js				\
 	dc/PoolEdit.js					\
@@ -346,6 +345,3 @@ install: pvemanagerlib.js
 .PHONY: clean
 clean:
 	rm -rf pvemanagerlib.js OnlineHelpInfo.js .lint-incremental
-
-
-
diff --git a/www/manager6/dc/Config.js b/www/manager6/dc/Config.js
index 7d01da5f..0dea1c67 100644
--- a/www/manager6/dc/Config.js
+++ b/www/manager6/dc/Config.js
@@ -319,18 +319,6 @@ Ext.define('PVE.dc.Config', {
 
 	// this is being reworked, but we need to release newer manager versions already..
 	let notification_enabled = false;
-	if (notification_enabled && caps.dc['Sys.Audit']) {
-	    me.items.push(
-		{
-		    xtype: 'pveNotificationEvents',
-		    title: gettext('Notifications'),
-		    onlineHelp: 'notification_events',
-		    iconCls: 'fa fa-bell-o',
-		    itemId: 'notifications',
-		},
-	    );
-	}
-
 	if (notification_enabled && (
 		caps.mapping['Mapping.Audit'] ||
 		caps.mapping['Mapping.Use'] ||
@@ -340,12 +328,11 @@ Ext.define('PVE.dc.Config', {
 	    me.items.push(
 		{
 		    xtype: 'pmxNotificationConfigView',
-		    title: gettext('Notification Targets'),
+		    title: gettext('Notifications'),
 		    onlineHelp: 'notification_targets',
 		    itemId: 'notification-targets',
-		    iconCls: 'fa fa-dot-circle-o',
+		    iconCls: 'fa fa-bell-o',
 		    baseUrl: '/cluster/notifications',
-		    groups: ['notifications'],
 		},
 	    );
 	}
diff --git a/www/manager6/dc/NotificationEvents.js b/www/manager6/dc/NotificationEvents.js
deleted file mode 100644
index 18816290..00000000
--- a/www/manager6/dc/NotificationEvents.js
+++ /dev/null
@@ -1,276 +0,0 @@
-Ext.define('PVE.dc.NotificationEventsPolicySelector', {
-    alias: ['widget.pveNotificationEventsPolicySelector'],
-    extend: 'Proxmox.form.KVComboBox',
-    deleteEmpty: false,
-    value: '__default__',
-
-    config: {
-	warningRef: null,
-	warnIfValIs: null,
-    },
-
-    listeners: {
-	change: function(field, newValue) {
-	    let me = this;
-	    if (!me.warningRef && !me.warnIfValIs) {
-		return;
-	    }
-
-	    let warningField = field.nextSibling(
-		`displayfield[reference=${me.warningRef}]`,
-	    );
-	    warningField.setVisible(newValue === me.warnIfValIs);
-	},
-    },
-});
-
-Ext.define('PVE.dc.NotificationEventDisabledWarning', {
-    alias: ['widget.pveNotificationEventDisabledWarning'],
-    extend: 'Ext.form.field.Display',
-    userCls: 'pmx-hint',
-    hidden: true,
-    value: gettext('Disabling notifications is not recommended for production systems!'),
-});
-
-Ext.define('PVE.dc.NotificationEventsTargetSelector', {
-    alias: ['widget.pveNotificationEventsTargetSelector'],
-    extend: 'PVE.form.NotificationTargetSelector',
-    fieldLabel: gettext('Notification Target'),
-    allowBlank: true,
-    editable: true,
-    autoSelect: false,
-    deleteEmpty: false,
-    emptyText: `${Proxmox.Utils.defaultText} (mail-to-root)`,
-});
-
-Ext.define('PVE.dc.NotificationEvents', {
-    extend: 'Proxmox.grid.ObjectGrid',
-    alias: ['widget.pveNotificationEvents'],
-
-    // Taken from OptionView.js, but adapted slightly.
-    // The modified version allows us to have multiple rows in the ObjectGrid
-    // for the same underlying property (notify).
-    // Every setting is eventually stored as a property string in the
-    // notify key of datacenter.cfg.
-    // When updating 'notify', all properties that were already set
-    // also have to be submitted, even if they were not modified.
-    // This means that we need to save the old value somewhere.
-    addInputPanelRow: function(name, propertyName, text, opts) {
-	let me = this;
-
-	opts = opts || {};
-	me.rows = me.rows || {};
-
-	me.rows[name] = {
-	    required: true,
-	    defaultValue: opts.defaultValue,
-	    header: text,
-	    renderer: opts.renderer,
-	    name: propertyName,
-	    editor: {
-		xtype: 'proxmoxWindowEdit',
-		width: opts.width || 400,
-		subject: text,
-		onlineHelp: opts.onlineHelp,
-		fieldDefaults: {
-		    labelWidth: opts.labelWidth || 150,
-		},
-		setValues: function(values) {
-		    let value = values[propertyName];
-
-		    if (opts.parseBeforeSet) {
-			value = PVE.Parser.parsePropertyString(value);
-		    }
-
-		    Ext.Array.each(this.query('inputpanel'), function(panel) {
-			panel.setValues(value);
-
-			// Save the original value
-			panel.originalValue = {
-			    ...value,
-			};
-		    });
-		},
-		url: opts.url,
-		items: [{
-		    xtype: 'inputpanel',
-		    onGetValues: function(values) {
-			let fields = this.config.items.map(field => field.name).filter(n => n);
-
-			// Restore old, unchanged values
-			for (const [key, value] of Object.entries(this.originalValue)) {
-			    if (!fields.includes(key)) {
-				values[key] = value;
-			    }
-			}
-
-			let value = {};
-			if (Object.keys(values).length > 0) {
-			    value[propertyName] = PVE.Parser.printPropertyString(values);
-			} else {
-			    Proxmox.Utils.assemble_field_data(value, { 'delete': propertyName });
-			}
-
-			return value;
-		    },
-		    items: opts.items,
-		}],
-	    },
-	};
-    },
-
-    initComponent: function() {
-	let me = this;
-
-	// Helper function for rendering the property
-	// Needed since the actual value is always stored in the 'notify' property
-	let render_value = (store, target_key, mode_key, default_val) => {
-	    let value = store.getById('notify')?.get('value') ?? {};
-	    let target = value[target_key] ?? 'mail-to-root';
-	    let template;
-
-	    switch (value[mode_key]) {
-		case 'always':
-		    template = gettext('Always, notify via target \'{0}\'');
-		    break;
-		case 'never':
-		    template = gettext('Never');
-		    break;
-		case 'auto':
-		    template = gettext('Automatically, notify via target \'{0}\'');
-		    break;
-		default:
-		    template = gettext('{1} ({2}), notify via target \'{0}\'');
-		    break;
-	    }
-
-	    return Ext.String.format(template, target, Proxmox.Utils.defaultText, default_val);
-	};
-
-	me.addInputPanelRow('fencing', 'notify', gettext('Node Fencing'), {
-	    renderer: (value, metaData, record, rowIndex, colIndex, store) =>
-		render_value(store, 'target-fencing', 'fencing', gettext('Always')),
-	    url: "/api2/extjs/cluster/options",
-	    items: [
-		{
-		    xtype: 'pveNotificationEventsPolicySelector',
-		    name: 'fencing',
-		    fieldLabel: gettext('Notify'),
-		    comboItems: [
-			['__default__', `${Proxmox.Utils.defaultText} (${gettext('Always')})`],
-			['always', gettext('Always')],
-			['never', gettext('Never')],
-		    ],
-		    warningRef: 'warning',
-		    warnIfValIs: 'never',
-		},
-		{
-		    xtype: 'pveNotificationEventsTargetSelector',
-		    name: 'target-fencing',
-		},
-		{
-		    xtype: 'pveNotificationEventDisabledWarning',
-		    reference: 'warning',
-		},
-	    ],
-	});
-
-	me.addInputPanelRow('replication', 'notify', gettext('Replication'), {
-	    renderer: (value, metaData, record, rowIndex, colIndex, store) =>
-		render_value(store, 'target-replication', 'replication', gettext('Always')),
-	    url: "/api2/extjs/cluster/options",
-	    items: [
-		{
-		    xtype: 'pveNotificationEventsPolicySelector',
-		    name: 'replication',
-		    fieldLabel: gettext('Notify'),
-		    comboItems: [
-			['__default__', `${Proxmox.Utils.defaultText} (${gettext('Always')})`],
-			['always', gettext('Always')],
-			['never', gettext('Never')],
-		    ],
-		    warningRef: 'warning',
-		    warnIfValIs: 'never',
-		},
-		{
-		    xtype: 'pveNotificationEventsTargetSelector',
-		    name: 'target-replication',
-		},
-		{
-		    xtype: 'pveNotificationEventDisabledWarning',
-		    reference: 'warning',
-		},
-	    ],
-	});
-
-	me.addInputPanelRow('updates', 'notify', gettext('Package Updates'), {
-	    renderer: (value, metaData, record, rowIndex, colIndex, store) =>
-		render_value(
-		    store,
-		    'target-package-updates',
-		    'package-updates',
-		    gettext('Automatically'),
-		),
-	    url: "/api2/extjs/cluster/options",
-	    items: [
-		{
-		    xtype: 'pveNotificationEventsPolicySelector',
-		    name: 'package-updates',
-		    fieldLabel: gettext('Notify'),
-		    comboItems: [
-			[
-			    '__default__',
-			    `${Proxmox.Utils.defaultText} (${gettext('Automatically')})`,
-			],
-			['auto', gettext('Automatically')],
-			['always', gettext('Always')],
-			['never', gettext('Never')],
-		    ],
-		    warningRef: 'warning',
-		    warnIfValIs: 'never',
-		},
-		{
-		    xtype: 'pveNotificationEventsTargetSelector',
-		    name: 'target-package-updates',
-		},
-		{
-		    xtype: 'pveNotificationEventDisabledWarning',
-		    reference: 'warning',
-		},
-	    ],
-	});
-
-	// Hack: Also load the notify property to make it accessible
-	// for our render functions.
-	me.rows.notify = {
-	    visible: false,
-	};
-
-	me.selModel = Ext.create('Ext.selection.RowModel', {});
-
-	Ext.apply(me, {
-	    tbar: [{
-		text: gettext('Edit'),
-		xtype: 'proxmoxButton',
-		disabled: true,
-		handler: () => me.run_editor(),
-		selModel: me.selModel,
-	    }],
-	    url: "/api2/json/cluster/options",
-	    editorConfig: {
-		url: "/api2/extjs/cluster/options",
-	    },
-	    interval: 5000,
-	    cwidth1: 200,
-	    listeners: {
-		itemdblclick: me.run_editor,
-	    },
-	});
-
-	me.callParent();
-
-	me.on('activate', me.rstore.startUpdate);
-	me.on('destroy', me.rstore.stopUpdate);
-	me.on('deactivate', me.rstore.stopUpdate);
-    },
-});
-- 
2.39.2





  parent reply	other threads:[~2023-11-07 10:24 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-07 10:18 [pve-devel] [PATCH many 00/27] overhaul notification system, use matchers instead of filters Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 01/27] notify: introduce Error::Generic Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 02/27] notify: factor out notification content into its own type Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 03/27] notify: replace filters and groups with matcher-based system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 04/27] notify: add calendar matcher Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 05/27] notify: matcher: introduce common trait for match directives Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 06/27] notify: let a matcher always match if it has no matching directives Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-perl-rs 07/27] notify: adapt to new matcher-based notification routing Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-cluster 08/27] notify: adapt to matcher based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-guest-common 09/27] vzdump: deprecate mailto/mailnotification/notification-{target, policy} Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-ha-manager 10/27] env: switch to matcher-based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 11/27] api: notification: remove notification groups Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 12/27] api: notification: add new matcher-based notification API Lukas Wagner
2023-11-07 10:18 ` Lukas Wagner [this message]
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 14/27] vzdump: adapt to new matcher based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 15/27] api: apt: adapt to matcher-based notifications Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 16/27] api: replication: adapt to matcher-based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 17/27] debian: postinst: create notifications.cfg if it does not exist Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 18/27] test: fix vzdump notification test Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 19/27] ui: vzdump: remove left-overs from target/policy based notifications Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 20/27] ui: dc: config: show notification panel again Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 21/27] notification ui: add target selector for matcher Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 22/27] notification ui: remove filter setting for targets Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 23/27] notification ui: remove notification groups Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 24/27] notification ui: rename filter to matcher Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 25/27] notification: matcher: add UI for matcher editing Lukas Wagner
2023-11-13 15:13   ` Dominik Csapak
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 26/27] notification ui: unprotected mailto-root target Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 27/27] noficiation: matcher edit: make 'field' an editable combobox Lukas Wagner
2023-11-13 14:34 ` [pve-devel] [PATCH many 00/27] overhaul notification system, use matchers instead of filters Dominik Csapak
2023-11-13 14:54   ` Thomas Lamprecht
2023-11-13 14:58   ` Lukas Wagner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231107101827.340100-14-l.wagner@proxmox.com \
    --to=l.wagner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal