public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 3/3] ui: form/GroupFilter: copy records for the pbsGroupSelectors
Date: Wed,  1 Dec 2021 11:57:08 +0100	[thread overview]
Message-ID: <20211201105708.3150068-3-d.csapak@proxmox.com> (raw)
In-Reply-To: <20211201105708.3150068-1-d.csapak@proxmox.com>

store.getData() returns an 'Ext.util.Collection' which is a special
class that does more than being an array of records. Namely, it can
have 'observers' which can react on the change of the collection

Here, the 'onWidgetAttach' callback will be called twice on the first
row add and the widgets (and thus stores) are cached by extjs. When
doing a 'setData' of a Collection, it tries to add the store as an
observer, but due to the above caching and multiple calling this fails
since the store is already an observer.

For this reason, we want to actually copy the records (which neither
the store, nor the Collection has a method for...)

This gives us an additional benefit: The different pbsGroupSelectors can
sort independently now, before it was all linked to the original store's
collection.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/form/GroupFilter.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/www/form/GroupFilter.js b/www/form/GroupFilter.js
index 11aa24c4..7398d331 100644
--- a/www/form/GroupFilter.js
+++ b/www/form/GroupFilter.js
@@ -134,7 +134,11 @@ Ext.define('PBS.form.GroupFilter', {
 	    let regex = widget.down('textfield[type=regex]');
 	    let group = widget.down('pbsGroupSelector');
 
-	    group.getStore().setData(view.dsStore.getData());
+	    let recs = [];
+	    view.dsStore.each((record) => {
+		recs.push(record.data);
+	    });
+	    group.getStore().setData(recs);
 
 	    // add a widget reference to the record so we can acces them
 	    // from the other column
-- 
2.30.2





  parent reply	other threads:[~2021-12-01 10:57 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-01 10:57 [pbs-devel] [PATCH proxmox-backup 1/3] ui: form/GroupFilter: correctly resolve the reference cycle Dominik Csapak
2021-12-01 10:57 ` [pbs-devel] [PATCH proxmox-backup 2/3] ui: form/GroupFilter: improve group load callback handling Dominik Csapak
2021-12-01 10:57 ` Dominik Csapak [this message]
2021-12-01 13:33 ` [pbs-devel] applied-series: [PATCH proxmox-backup 1/3] ui: form/GroupFilter: correctly resolve the reference cycle 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=20211201105708.3150068-3-d.csapak@proxmox.com \
    --to=d.csapak@proxmox.com \
    --cc=pbs-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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal