[pve-devel] [PATCH widget-toolkit 1/2] data/DiffStore: add autoDestroyRstore flag

Dominik Csapak d.csapak at proxmox.com
Thu May 7 10:27:05 CEST 2020


when this flag is set, the diffstore will automatically try to destroy
the rstore when it is destroyed itself

for this we have to move the rstore into the object (instead of using a closure)

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 data/DiffStore.js | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/data/DiffStore.js b/data/DiffStore.js
index d43f111..6f335f0 100644
--- a/data/DiffStore.js
+++ b/data/DiffStore.js
@@ -24,6 +24,20 @@ Ext.define('Proxmox.data.DiffStore', {
 
     sortAfterUpdate: false,
 
+    // if set to true, destroy rstore on destruction
+    autoDestroyRstore: false,
+
+    onDestroy: function() {
+	let me = this;
+	if (me.autoDestroyRstore) {
+	    if (Ext.isFunction(me.rstore.destroy)) {
+		me.rstore.destroy();
+	    }
+	    delete me.rstore;
+	}
+	me.callParent();
+    },
+
     constructor: function(config) {
 	var me = this;
 
@@ -46,6 +60,8 @@ Ext.define('Proxmox.data.DiffStore', {
 
 	me.callParent([config]);
 
+	me.rstore = rstore;
+
 	var first_load = true;
 
 	var cond_add_item = function(data, id) {
@@ -80,13 +96,13 @@ Ext.define('Proxmox.data.DiffStore', {
 
 	    // remove vanished items
 	    allItems.each(function(olditem) {
-		var item = rstore.getById(olditem.getId());
+		var item = me.rstore.getById(olditem.getId());
 		if (!item) {
 		    me.remove(olditem);
 		}
 	    });
 
-	    rstore.each(function(item) {
+	    me.rstore.each(function(item) {
 		cond_add_item(item.data, item.getId());
 	    });
 
@@ -103,12 +119,12 @@ Ext.define('Proxmox.data.DiffStore', {
 	    me.fireEvent('datachanged', me);
 	};
 
-	if (rstore.isLoaded()) {
+	if (me.rstore.isLoaded()) {
 	    // if store is already loaded,
 	    // insert items instantly
-	    loadFn(rstore, [], true);
+	    loadFn(me.rstore, [], true);
 	}
 
-	me.mon(rstore, 'load', loadFn);
+	me.mon(me.rstore, 'load', loadFn);
     }
 });
-- 
2.20.1





More information about the pve-devel mailing list