From 65595e169fdb232761f520fda72095b65c66dbb4 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 6 Nov 2020 17:49:22 +0100 Subject: [PATCH] ui: add NotifyOptions edit window Signed-off-by: Thomas Lamprecht --- www/Makefile | 1 + www/OnlineHelpInfo.js | 4 ++ www/window/NotifyOptions.js | 101 ++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 www/window/NotifyOptions.js diff --git a/www/Makefile b/www/Makefile index f8516a23..126f150a 100644 --- a/www/Makefile +++ b/www/Makefile @@ -28,6 +28,7 @@ JSSRC= \ window/FileBrowser.js \ window/NotesEdit.js \ window/RemoteEdit.js \ + window/NotifyOptions.js \ window/SyncJobEdit.js \ window/UserEdit.js \ window/UserPassword.js \ diff --git a/www/OnlineHelpInfo.js b/www/OnlineHelpInfo.js index 5b960b76..bc884ad2 100644 --- a/www/OnlineHelpInfo.js +++ b/www/OnlineHelpInfo.js @@ -11,6 +11,10 @@ const proxmoxOnlineHelpInfo = { "link": "/docs/sysadmin.html#chapter-zfs", "title": "ZFS on Linux" }, + "maintenance-notification": { + "link": "/docs/maintenance.html#maintenance-notification", + "title": "Notifications" + }, "backup-remote": { "link": "/docs/managing-remotes.html#backup-remote", "title": ":term:`Remote`" diff --git a/www/window/NotifyOptions.js b/www/window/NotifyOptions.js new file mode 100644 index 00000000..5250e0e8 --- /dev/null +++ b/www/window/NotifyOptions.js @@ -0,0 +1,101 @@ +Ext.define('PBS.form.NotifyType', { + extend: 'Proxmox.form.KVComboBox', + alias: 'widget.pbsNotifyType', + + comboItems: [ + ['__default__', gettext('Default (Always)')], + ['always', gettext('Always')], + ['error', gettext('Errors')], + ['never', gettext('Never')], + ], +}); + +Ext.define('PBS.window.NotifyOptions', { + extend: 'Proxmox.window.Edit', + xtype: 'pbsNotifyOptionEdit', + mixins: ['Proxmox.Mixin.CBind'], + + onlineHelp: 'maintenance_notification', + + user: undefined, + tokenname: undefined, + + isAdd: false, + isCreate: false, + + subject: gettext('Datastore Options'), + // hack to avoid that the trigger of the combogrid fields open on window show + defaultFocus: 'proxmoxHelpButton', + + width: 450, + fieldDefaults: { + labelWidth: 120, + }, + + items: { + xtype: 'inputpanel', + onGetValues: function(values) { + let notify = {}; + for (const k of ['verify', 'sync', 'gc']) { + notify[k] = values[k]; + delete values[k]; + } + values.notify = PBS.Utils.printPropertyString(notify); + + PBS.Utils.delete_if_default(values, 'notify', ''); + PBS.Utils.delete_if_default(values, 'notify-user', ''); + + return values; + }, + items: [ + { + xtype: 'pbsUserSelector', + name: 'notify-user', + fieldLabel: gettext('Notify User'), + emptyText: gettext('root@pam'), + value: null, + allowBlank: true, + renderer: Ext.String.htmlEncode, + deleteEmpty: true, + }, + { + xtype: 'pbsNotifyType', + name: 'verify', + fieldLabel: gettext('Verification Jobs'), + value: '__default__', + deleteEmpty: false, + }, + { + xtype: 'pbsNotifyType', + name: 'sync', + fieldLabel: gettext('Sync Jobs'), + value: '__default__', + deleteEmpty: false, + }, + { + xtype: 'pbsNotifyType', + name: 'gc', + fieldLabel: gettext('Garbage Collection'), + value: '__default__', + deleteEmpty: false, + }, + ], + }, + setValues: function(values) { + let me = this; + + // we only handle a reduced set of options here + let options = { + 'notify-user': values['notify-user'], + 'verify-new': values['verify-new'], + }; + + let notify = {}; + if (values.notify) { + notify = PBS.Utils.parsePropertyString(values.notify); + } + Object.assign(options, notify); + + me.callParent([options]); + }, +});