ui: add NotifyOptions edit window

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2020-11-06 17:49:22 +01:00
parent 10db4717f1
commit 65595e169f
3 changed files with 106 additions and 0 deletions

View File

@ -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 \

View File

@ -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`"

101
www/window/NotifyOptions.js Normal file
View File

@ -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]);
},
});