From: Leo Nunner <l.nunner@proxmox.com>
To: pmg-devel@lists.proxmox.com
Subject: [pmg-devel] [PATCH pmg-gui 1/2] feature: negate objects inside rules
Date: Fri, 7 Apr 2023 15:42:55 +0200 [thread overview]
Message-ID: <20230407134258.199691-10-l.nunner@proxmox.com> (raw)
In-Reply-To: <20230407134258.199691-1-l.nunner@proxmox.com>
This patch exposes the new 'negate' parameter through the GUI. All
objects (except for actions) now have a small icon next to them in the
rule overview, and clicking it will toggle the respective negation
setting. Negated objects are marked by a small 'NOT' before the object
name.
Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
---
js/RuleInfo.js | 45 +++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 43 insertions(+), 2 deletions(-)
diff --git a/js/RuleInfo.js b/js/RuleInfo.js
index b7802fa..d14e229 100644
--- a/js/RuleInfo.js
+++ b/js/RuleInfo.js
@@ -58,6 +58,22 @@ Ext.define('PMG.RuleInfo', {
);
},
+ updateNegateObjectGroup: function(rec) {
+ var me = this;
+ Proxmox.Utils.API2Request({
+ url: me.getViewModel().get('baseurl') + '/' + rec.data.oclass + '/'+ rec.data.typeid,
+ method: 'PUT',
+ params: { negate: rec.data.negate ? 0 : 1 },
+ waitMsgTarget: me.getView(),
+ callback: function() {
+ me.reload();
+ },
+ failure: function(response, opts) {
+ Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+ },
+ });
+ },
+
addObjectGroup: function(type, record) {
var me = this;
var baseurl = me.getViewModel().get('baseurl');
@@ -113,7 +129,7 @@ Ext.define('PMG.RuleInfo', {
});
store.load();
Ext.Array.each(ruledata[oc], function(og) {
- data.push({ oclass: oc, name: og.name, typeid: og.id });
+ data.push({ oclass: oc, name: og.name, typeid: og.id, negate: og.negate });
});
});
@@ -126,6 +142,11 @@ Ext.define('PMG.RuleInfo', {
me.removeObjectGroup(record);
},
+ negateIconClick: function(gridView, rowindex, colindex, button, event, record) {
+ var me = this;
+ me.updateNegateObjectGroup(record);
+ },
+
removeDrop: function(gridView, data, overModel) {
var me = this;
var record = data.records[0]; // only one
@@ -163,7 +184,7 @@ Ext.define('PMG.RuleInfo', {
stores: {
objects: {
- fields: ['oclass', 'name', 'typeid'],
+ fields: ['oclass', 'name', 'typeid', 'negate'],
groupField: 'oclass',
sorters: 'name',
},
@@ -294,8 +315,28 @@ Ext.define('PMG.RuleInfo', {
{
header: gettext('Name'),
dataIndex: 'name',
+ renderer: function(value, data, record) {
+ return record.data.negate ? '<span style="color:gray">' + gettext("NOT") + ' </span>' + value : value;
+ },
flex: 1,
},
+ {
+ text: '',
+ xtype: 'actioncolumn',
+ align: 'center',
+ width: 40,
+ items: [
+ {
+ getClass: function(v, m, { data }) {
+ if (data.oclass === 'action') return '';
+ return 'fa fa-fw fa-refresh';
+ },
+ isActionDisabled: (v, r, c, i, { data }) => data.oclass === 'action',
+ tooltip: gettext('Negate'),
+ handler: 'negateIconClick',
+ },
+ ],
+ },
{
text: '',
xtype: 'actioncolumn',
--
2.30.2
next prev parent reply other threads:[~2023-04-07 13:43 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-07 13:42 [pmg-devel] [PATCH pmg-api/gui/docs, proxmox-widget-toolkit] Extend rule system Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 1/8] feature: negation: add field to database Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 2/8] feature: negation: parse negation value into objects Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 3/8] feature: negation: expand/implement API endpoints Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 4/8] feature: negation: implement matching logic Leo Nunner
2023-04-11 7:35 ` Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 5/8] feature: match groups: add field to database Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 6/8] feature: match groups: parse field into objects Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 7/8] feature: match groups: update API endpoints Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-api 8/8] feature: match groups: implement matching logic Leo Nunner
2023-04-07 13:42 ` Leo Nunner [this message]
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-gui 2/2] feature: introduce logical 'and' for rules Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH pmg-docs] docs: document negation and match groups Leo Nunner
2023-04-07 13:42 ` [pmg-devel] [PATCH widget-toolkit] dark-mode: fix colour of default tree icons Leo Nunner
2023-04-11 9:52 ` [pmg-devel] [PATCH pmg-api/gui/docs, proxmox-widget-toolkit] Extend rule system Thomas Lamprecht
2023-04-11 11:04 ` Leo Nunner
2023-04-11 11:19 ` Thomas Lamprecht
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=20230407134258.199691-10-l.nunner@proxmox.com \
--to=l.nunner@proxmox.com \
--cc=pmg-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