]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
node/Tasks: add 'clear filter' button
authorDominik Csapak <d.csapak@proxmox.com>
Mon, 5 Jul 2021 14:34:02 +0000 (16:34 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 5 Jul 2021 14:44:37 +0000 (16:44 +0200)
that does two things,

show the user that some filters are active (even if filters are collapsed),
and let the user to reset the filters all at once

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/node/Tasks.js

index dfe93dc3687ec4eb00f21761032c5af41672d1e4..aa074b4eb3bfffa1712a3a27f774c63e012ec9b6 100644 (file)
@@ -89,6 +89,13 @@ Ext.define('Proxmox.node.Tasks', {
            let vm = me.getViewModel();
            vm.set('showFilter', pressed);
        },
+
+       clearFilter: function() {
+           let me = this;
+           me.lookup('filtertoolbar').query('field').forEach((field) => {
+               field.setValue(undefined);
+           });
+       },
     },
 
     listeners: {
@@ -140,6 +147,44 @@ Ext.define('Proxmox.node.Tasks', {
 
                return params;
            },
+           filterCount: function(get) {
+               let count = 0;
+               if (get('typefilter')) {
+                   count++;
+               }
+               let status = get('statusfilter');
+               if ((Ext.isArray(status) && status.length > 0) ||
+                   (!Ext.isArray(status) && status)) {
+                   count++;
+               }
+               if (get('since')) {
+                   count++;
+               }
+               if (get('until')) {
+                   count++;
+               }
+
+               if (get('extraFilter')) {
+                   let extraFilter = get('extraFilter');
+                   for (const value of Object.values(extraFilter)) {
+                       if (value !== undefined && value !== null && value !== "") {
+                           count++;
+                       }
+                   }
+               }
+
+               return count;
+           },
+           clearFilterText: function(get) {
+               let count = get('filterCount');
+               let fieldMsg = '';
+               if (count > 1) {
+                   fieldMsg = ` (${count} ${gettext('Fields')})`;
+               } else if (count > 0) {
+                   fieldMsg = ` (1 ${gettext('Field')})`;
+               }
+               return gettext('Clear Filter') + fieldMsg;
+           },
        },
 
        stores: {
@@ -186,6 +231,16 @@ Ext.define('Proxmox.node.Tasks', {
                    handler: 'reload',
                },
                '->',
+               {
+                   xtype: 'button',
+                   bind: {
+                       text: '{clearFilterText}',
+                       disabled: '{!filterCount}',
+                   },
+                   text: gettext('Clear Filter'),
+                   enabled: false,
+                   handler: 'clearFilter',
+               },
                {
                    xtype: 'button',
                    enableToggle: true,