It was necessary to make the component not stateful, because of an ExtJS bug
where groupFn is not being preserved when the state is restored, see:
https://forum.sencha.com/forum/showthread.php?469145-Uncaught-TypeError-me-_groupFn-is-not-a-function

Signed-off-by: Fabian Ebner <[email protected]>
---

new in v2

Couldn't find a way to make this work with stateful: true...
Not using Ext.create and only passing along the Object with the properties
for the grouper doesn't seem to help either.

 www/manager6/storage/BackupView.js  | 24 ++++++++++++++++++++++--
 www/manager6/storage/ContentView.js |  1 +
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/www/manager6/storage/BackupView.js 
b/www/manager6/storage/BackupView.js
index 2669d2ca..ad377de6 100644
--- a/www/manager6/storage/BackupView.js
+++ b/www/manager6/storage/BackupView.js
@@ -3,8 +3,12 @@ Ext.define('PVE.storage.BackupView', {
 
     alias: 'widget.pveStorageBackupView',
 
-    stateful: true,
-    stateId: 'grid-storage-content-backup',
+    features: [
+       {
+           ftype: 'grouping',
+           groupHeaderTpl: '{name} ({rows.length} Backup{[values.rows.length > 
1 ? "s" : ""]})',
+       },
+    ],
 
     initComponent: function() {
        var me = this;
@@ -69,6 +73,22 @@ Ext.define('PVE.storage.BackupView', {
            },
        ];
 
+       me.grouper = Ext.create('Ext.util.Grouper', {
+           groupFn: function(val) {
+               let name = val.data.text;
+               let vmid = val.data.vmid;
+               if (!vmid) {
+                   return 'other';
+               }
+               if (name.startsWith('vzdump-lxc-')) {
+                   return 'CT/' + vmid;
+               } else if (name.startsWith('vzdump-qemu-')) {
+                   return 'VM/' + vmid;
+               }
+               return 'other';
+           },
+       });
+
        me.callParent();
     },
 });
diff --git a/www/manager6/storage/ContentView.js 
b/www/manager6/storage/ContentView.js
index 0f1bbc0c..e563d3a3 100644
--- a/www/manager6/storage/ContentView.js
+++ b/www/manager6/storage/ContentView.js
@@ -232,6 +232,7 @@ Ext.define('PVE.storage.ContentView', {
        var baseurl = "/nodes/" + nodename + "/storage/" + storage + "/content";
        var store = me.store = Ext.create('Ext.data.Store', {
            model: 'pve-storage-content',
+           grouper: me.grouper,
            proxy: {
                 type: 'proxmox',
                url: '/api2/json' + baseurl,
-- 
2.20.1



_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to