]> git.proxmox.com Git - proxmox-backup.git/commitdiff
ui: prune/gc view: improve sizing & scrolling behaviour
authorDominik Csapak <d.csapak@proxmox.com>
Mon, 22 Apr 2024 11:05:04 +0000 (13:05 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Mon, 22 Apr 2024 11:58:08 +0000 (13:58 +0200)
before, this was only used where the top list was a fixed size and only
for one datastore (which limits the number of prune jobs a bit)

since now we show gc jobs for all datastores here too and all their
prune jobs, this panel can get much bigger.

To improve it's scrolling sizing behavior, make the prune jobs panel
`flex: 1`, so it fills out the rest of the view, and add a splitter
between them so one can resize them on the fly. To prevent making one of
the panels too small, set an appropriate minHeight for both and make the
surrounding panel scrollable.

To not save the height into it's state, we have to filter that out for
the GCView.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
www/config/GCView.js
www/config/PruneAndGC.js

index de43bc25182e28a5a7609d43658625160dee136c..76fb262edfec4ea462374f330a46005238adb7b7 100644 (file)
@@ -107,6 +107,10 @@ Ext.define('PBS.config.GCJobView', {
        stopStore: function() { this.getView().getStore().rstore.stopUpdate(); },
        reload: function() { this.getView().getStore().rstore.load(); },
 
+
+       filterState: function(view, state) {
+           delete state.height;
+       },
     },
 
     listeners: {
@@ -114,6 +118,7 @@ Ext.define('PBS.config.GCJobView', {
        beforedestroy: 'stopStore',
        deactivate: 'stopStore',
        itemdblclick: 'editGCJob',
+       beforestatesave: 'filterState',
     },
 
     store: {
index a11634026c1aa7c9401afe61f92c300c32301379..b85c296104a22130725064c8e45b8ae3bd1bb1f6 100644 (file)
@@ -14,6 +14,7 @@ Ext.define('PBS.config.PruneAndGC', {
        collapsible: false,
        margin: '7 10 3 10',
     },
+    scrollable: true,
     items: [
        {
            xtype: 'pbsGCJobView',
@@ -22,6 +23,11 @@ Ext.define('PBS.config.PruneAndGC', {
            cbind: {
                datastore: '{datastore}',
            },
+           minHeight: 125, // shows at least one line of content
+       },
+       {
+           xtype: 'splitter',
+           performCollapse: false,
        },
        {
            xtype: 'pbsPruneJobView',
@@ -30,12 +36,14 @@ Ext.define('PBS.config.PruneAndGC', {
            cbind: {
                datastore: '{datastore}',
            },
+           flex: 1,
+           minHeight: 160, // shows at least one line of content
        },
     ],
     initComponent: function() {
        let me = this;
 
-       let subPanelIds = me.items.map(el => el.itemId);
+       let subPanelIds = me.items.map(el => el.itemId).filter(id => !!id);
 
        me.callParent();