From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id EDE9491CCD for ; Fri, 16 Feb 2024 10:16:29 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E57951E590 for ; Fri, 16 Feb 2024 10:16:27 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 16 Feb 2024 10:16:23 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 8E23348559 for ; Fri, 16 Feb 2024 10:16:23 +0100 (CET) From: Lukas Wagner To: pve-devel@lists.proxmox.com Date: Fri, 16 Feb 2024 10:16:03 +0100 Message-Id: <20240216091608.60317-15-l.wagner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240216091608.60317-1-l.wagner@proxmox.com> References: <20240216091608.60317-1-l.wagner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.003 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH widget-toolkit v3 14/19] notification: matcher: move match-field formulas to local viewModel X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Feb 2024 09:16:30 -0000 This should make the code more cohesive and easier to follow. No functional changes. Signed-off-by: Lukas Wagner Tested-by: Maximiliano Sandoval --- src/window/NotificationMatcherEdit.js | 186 +++++++++++++------------- 1 file changed, 92 insertions(+), 94 deletions(-) diff --git a/src/window/NotificationMatcherEdit.js b/src/window/NotificationMatcherEdit.js index fa42e1e..9d0a6bd 100644 --- a/src/window/NotificationMatcherEdit.js +++ b/src/window/NotificationMatcherEdit.js @@ -380,15 +380,6 @@ Ext.define('Proxmox.panel.NotificationRulesEditPanel', { } return !record.isRoot(); }, - typeIsMatchField: { - bind: { - bindTo: '{selectedRecord}', - deep: true, - }, - get: function(record) { - return record?.get('type') === 'match-field'; - }, - }, typeIsMatchSeverity: { bind: { bindTo: '{selectedRecord}', @@ -407,89 +398,13 @@ Ext.define('Proxmox.panel.NotificationRulesEditPanel', { return record?.get('type') === 'match-calendar'; }, }, - matchFieldType: { - bind: { - bindTo: '{selectedRecord}', - deep: true, - }, - set: function(value) { - let me = this; - let record = me.get('selectedRecord'); - let currentData = record.get('data'); - - let newValue = []; - - // Build equivalent regular expression if switching - // to 'regex' mode - if (value === 'regex') { - let regexVal = "^("; - regexVal += currentData.value.join('|') + ")$"; - newValue.push(regexVal); - } - - record.set({ - data: { - ...currentData, - type: value, - value: newValue, - }, - }); - }, - get: function(record) { - return record?.get('data')?.type; - }, - }, - matchFieldField: { - bind: { - bindTo: '{selectedRecord}', - deep: true, - }, - set: function(value) { - let me = this; - let record = me.get('selectedRecord'); - let currentData = record.get('data'); - - record.set({ - data: { - ...currentData, - field: value, - // Reset value if field changes - value: [], - }, - }); - }, - get: function(record) { - return record?.get('data')?.field; - }, - }, - matchFieldValue: { - bind: { - bindTo: '{selectedRecord}', - deep: true, - }, - set: function(value) { - let me = this; - let record = me.get('selectedRecord'); - let currentData = record.get('data'); - record.set({ - data: { - ...currentData, - value: value, - }, - }); - }, - get: function(record) { - return record?.get('data')?.value; - }, - }, matchSeverityValue: { bind: { bindTo: '{selectedRecord}', deep: true, }, set: function(value) { - let me = this; - let record = me.get('selectedRecord'); + let record = this.get('selectedRecord'); let currentData = record.get('data'); record.set({ data: { @@ -1137,7 +1052,95 @@ Ext.define('Proxmox.panel.MatchFieldSettings', { }, }, }, + viewModel: { + // parent is set in `initComponents` + formulas: { + typeIsMatchField: { + bind: { + bindTo: '{selectedRecord}', + deep: true, + }, + get: function(record) { + return record?.get('type') === 'match-field'; + }, + }, + isRegex: function(get) { + return get('matchFieldType') === 'regex'; + }, + matchFieldType: { + bind: { + bindTo: '{selectedRecord}', + deep: true, + }, + set: function(value) { + let record = this.get('selectedRecord'); + let currentData = record.get('data'); + let newValue = []; + + // Build equivalent regular expression if switching + // to 'regex' mode + if (value === 'regex') { + let regexVal = "^("; + regexVal += currentData.value.join('|') + ")$"; + newValue.push(regexVal); + } + + record.set({ + data: { + ...currentData, + type: value, + value: newValue, + }, + }); + }, + get: function(record) { + return record?.get('data')?.type; + }, + }, + matchFieldField: { + bind: { + bindTo: '{selectedRecord}', + deep: true, + }, + set: function(value) { + let record = this.get('selectedRecord'); + let currentData = record.get('data'); + + record.set({ + data: { + ...currentData, + field: value, + // Reset value if field changes + value: [], + }, + }); + }, + get: function(record) { + return record?.get('data')?.field; + }, + }, + matchFieldValue: { + 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; + }, + }, + }, + }, initComponent: function() { let me = this; @@ -1198,15 +1201,10 @@ Ext.define('Proxmox.panel.MatchFieldSettings', { }, }); + Ext.apply(me.viewModel, { + parent: me.up('pmxNotificationMatchRulesEditPanel').getViewModel(), + }); Ext.apply(me, { - viewModel: Ext.create('Ext.app.ViewModel', { - parent: me.up('pmxNotificationMatchRulesEditPanel').getViewModel(), - formulas: { - isRegex: function(get) { - return get('matchFieldType') === 'regex'; - }, - }, - }), items: [ { fieldLabel: 'Match Type', -- 2.39.2