notification: matcher: move match-severity fields to panel
Also introduce a local viewModel that is linked to a parent viewModel, allowing us to move the formulas to the panel. This should make the code more cohesive and easier to follow. No functional changes. Signed-off-by: Lukas Wagner <l.wagner@proxmox.com> Tested-by: Maximiliano Sandoval <m.sandoval@proxmox.com> Reviewed-by: Max Carrara <m.carrara@proxmox.com>
This commit is contained in:
parent
fa315d842b
commit
f420a35cb7
@ -380,34 +380,7 @@ Ext.define('Proxmox.panel.NotificationRulesEditPanel', {
|
||||
}
|
||||
return !record.isRoot();
|
||||
},
|
||||
typeIsMatchSeverity: {
|
||||
bind: {
|
||||
bindTo: '{selectedRecord}',
|
||||
deep: true,
|
||||
},
|
||||
get: function(record) {
|
||||
return record?.get('type') === 'match-severity';
|
||||
},
|
||||
},
|
||||
matchSeverityValue: {
|
||||
bind: {
|
||||
bindTo: '{selectedRecord}',
|
||||
deep: true,
|
||||
},
|
||||
set: function(value) {
|
||||
let record = this.get('selectedRecord');
|
||||
let currentData = record.get('data');
|
||||
record.set({
|
||||
data: {
|
||||
...currentData,
|
||||
value: value,
|
||||
},
|
||||
});
|
||||
},
|
||||
get: function(record) {
|
||||
return record?.get('data')?.value;
|
||||
},
|
||||
},
|
||||
|
||||
rootMode: {
|
||||
bind: {
|
||||
bindTo: '{selectedRecord}',
|
||||
@ -944,27 +917,7 @@ Ext.define('Proxmox.panel.NotificationMatchRuleSettings', {
|
||||
},
|
||||
},
|
||||
{
|
||||
xtype: 'proxmoxKVComboBox',
|
||||
fieldLabel: gettext('Severities to match'),
|
||||
isFormField: false,
|
||||
allowBlank: true,
|
||||
multiSelect: true,
|
||||
field: 'value',
|
||||
// Hide initially to avoid glitches when opening the window
|
||||
hidden: true,
|
||||
bind: {
|
||||
value: '{matchSeverityValue}',
|
||||
hidden: '{!typeIsMatchSeverity}',
|
||||
disabled: '{!typeIsMatchSeverity}',
|
||||
},
|
||||
|
||||
comboItems: [
|
||||
['info', gettext('Info')],
|
||||
['notice', gettext('Notice')],
|
||||
['warning', gettext('Warning')],
|
||||
['error', gettext('Error')],
|
||||
['unknown', gettext('Unknown')],
|
||||
],
|
||||
xtype: 'pmxNotificationMatchSeveritySettings',
|
||||
},
|
||||
{
|
||||
xtype: 'pmxNotificationMatchCalendarSettings',
|
||||
@ -1047,6 +1000,84 @@ Ext.define('Proxmox.panel.MatchCalendarSettings', {
|
||||
},
|
||||
});
|
||||
|
||||
Ext.define('Proxmox.panel.MatchSeveritySettings', {
|
||||
extend: 'Ext.panel.Panel',
|
||||
xtype: 'pmxNotificationMatchSeveritySettings',
|
||||
border: false,
|
||||
layout: 'anchor',
|
||||
// Hide initially to avoid glitches when opening the window
|
||||
hidden: true,
|
||||
bind: {
|
||||
hidden: '{!typeIsMatchSeverity}',
|
||||
},
|
||||
viewModel: {
|
||||
// parent is set in `initComponents`
|
||||
formulas: {
|
||||
typeIsMatchSeverity: {
|
||||
bind: {
|
||||
bindTo: '{selectedRecord}',
|
||||
deep: true,
|
||||
},
|
||||
get: function(record) {
|
||||
return record?.get('type') === 'match-severity';
|
||||
},
|
||||
},
|
||||
matchSeverityValue: {
|
||||
bind: {
|
||||
bindTo: '{selectedRecord}',
|
||||
deep: true,
|
||||
},
|
||||
set: function(value) {
|
||||
let record = this.get('selectedRecord');
|
||||
let currentData = record.get('data');
|
||||
record.set({
|
||||
data: {
|
||||
...currentData,
|
||||
value: value,
|
||||
},
|
||||
});
|
||||
},
|
||||
get: function(record) {
|
||||
return record?.get('data')?.value;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
items: [
|
||||
{
|
||||
xtype: 'proxmoxKVComboBox',
|
||||
fieldLabel: gettext('Severities to match'),
|
||||
isFormField: false,
|
||||
allowBlank: true,
|
||||
multiSelect: true,
|
||||
field: 'value',
|
||||
// Hide initially to avoid glitches when opening the window
|
||||
hidden: true,
|
||||
bind: {
|
||||
value: '{matchSeverityValue}',
|
||||
hidden: '{!typeIsMatchSeverity}',
|
||||
disabled: '{!typeIsMatchSeverity}',
|
||||
},
|
||||
|
||||
comboItems: [
|
||||
['info', gettext('Info')],
|
||||
['notice', gettext('Notice')],
|
||||
['warning', gettext('Warning')],
|
||||
['error', gettext('Error')],
|
||||
['unknown', gettext('Unknown')],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
initComponent: function() {
|
||||
let me = this;
|
||||
Ext.apply(me.viewModel, {
|
||||
parent: me.up('pmxNotificationMatchRulesEditPanel').getViewModel(),
|
||||
});
|
||||
me.callParent();
|
||||
},
|
||||
});
|
||||
|
||||
Ext.define('Proxmox.panel.MatchFieldSettings', {
|
||||
extend: 'Ext.panel.Panel',
|
||||
xtype: 'pmxNotificationMatchFieldSettings',
|
||||
|
Loading…
Reference in New Issue
Block a user