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
next prev 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