public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference
@ 2021-07-05 14:33 Dominik Csapak
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 2/4] node/Tasks: deselect entries when filter changes Dominik Csapak
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Dominik Csapak @ 2021-07-05 14:33 UTC (permalink / raw)
  To: pve-devel

this does nothing here, since the 'datastore' would be an
'extraFilter' defined in pbs itself

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/node/Tasks.js | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/node/Tasks.js b/src/node/Tasks.js
index 1fa6a83..0c5b79a 100644
--- a/src/node/Tasks.js
+++ b/src/node/Tasks.js
@@ -85,7 +85,6 @@ Ext.define('Proxmox.node.Tasks', {
 	data: {
 	    typefilter: '',
 	    statusfilter: '',
-	    datastore: '',
 	    showFilter: false,
 	    extraFilter: {},
 	    since: null,
@@ -103,9 +102,6 @@ Ext.define('Proxmox.node.Tasks', {
 		if (get('statusfilter')) {
 		    params.statusfilter = get('statusfilter');
 		}
-		if (get('datastore')) {
-		    params.store = get('datastore');
-		}
 
 		if (get('extraFilter')) {
 		    let extraFilter = get('extraFilter');
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH widget-toolkit 2/4] node/Tasks: deselect entries when filter changes
  2021-07-05 14:33 [pve-devel] [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Dominik Csapak
@ 2021-07-05 14:34 ` Dominik Csapak
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 3/4] node/Task: show errors on store load Dominik Csapak
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Dominik Csapak @ 2021-07-05 14:34 UTC (permalink / raw)
  To: pve-devel

since we use a remotefilter on a bufferedstore, the only event where
we can check if the selected element is still there is the 'refresh'
event. Simply deselect if the seleceted element is not in the store

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/node/Tasks.js | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/node/Tasks.js b/src/node/Tasks.js
index 0c5b79a..d93111b 100644
--- a/src/node/Tasks.js
+++ b/src/node/Tasks.js
@@ -44,6 +44,20 @@ Ext.define('Proxmox.node.Tasks', {
 	    me.getView().updateLayout();
 	},
 
+	refresh: function() {
+	    let me = this;
+	    let view = me.getView();
+
+	    let selection = view.getSelection();
+	    let store = me.getViewModel().get('bufferedstore');
+	    if (selection && selection.length > 0) {
+		// deselect if selection is not there anymore
+		if (!store.contains(selection[0])) {
+		    view.setSelection(undefined);
+		}
+	    }
+	},
+
 	sinceChange: function(field, newval) {
 	    let me = this;
 	    let vm = me.getViewModel();
@@ -144,6 +158,7 @@ Ext.define('Proxmox.node.Tasks', {
 		},
 		listeners: {
 		    prefetch: 'updateLayout',
+		    refresh: 'refresh',
 		},
 	    },
 	},
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH widget-toolkit 3/4] node/Task: show errors on store load
  2021-07-05 14:33 [pve-devel] [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Dominik Csapak
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 2/4] node/Tasks: deselect entries when filter changes Dominik Csapak
@ 2021-07-05 14:34 ` Dominik Csapak
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 4/4] node/Tasks: add 'clear filter' button Dominik Csapak
  2021-07-05 14:45 ` [pve-devel] applied: [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Thomas Lamprecht
  3 siblings, 0 replies; 5+ messages in thread
From: Dominik Csapak @ 2021-07-05 14:34 UTC (permalink / raw)
  To: pve-devel

since we use a buffered store on a grid, we cannot use our
normal monStoreErrors from Utils (The store on the grid is a memorystore
without our 'proxmox' proxy, and the store in the viewmodel is not
initialized yet in the init)

simply set the mask in the already existing 'updateLayout' function
which is exactly the right place for the buffered store load

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
i did not find suitable way to reuse the monStoreErrors function,
since it seems that the store from the viewmodel gets instantiated
late in the component creation, and using something like 'afterrender'
will probably also be wrongs, since the loadmask may already be there...

 src/node/Tasks.js | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/node/Tasks.js b/src/node/Tasks.js
index d93111b..dfe93dc 100644
--- a/src/node/Tasks.js
+++ b/src/node/Tasks.js
@@ -36,12 +36,18 @@ Ext.define('Proxmox.node.Tasks', {
 	    }).show();
 	},
 
-	updateLayout: function() {
+	updateLayout: function(store, records, success, operation) {
 	    let me = this;
+	    let view = me.getView().getView(); // the table view, not the whole grid
+	    Proxmox.Utils.setErrorMask(view, false);
 	    // update the scrollbar on every store load since the total count might be different.
 	    // the buffered grid plugin does this only on (user) scrolling itself and even reduces
 	    // the scrollheight again when scrolling up
 	    me.getView().updateLayout();
+
+	    if (!success) {
+		Proxmox.Utils.setErrorMask(view, Proxmox.Utils.getResponseErrorMessage(operation.getError()));
+	    }
 	},
 
 	refresh: function() {
@@ -83,14 +89,8 @@ Ext.define('Proxmox.node.Tasks', {
 	    let vm = me.getViewModel();
 	    vm.set('showFilter', pressed);
 	},
-
-	init: function(view) {
-	    let me = this;
-	    Proxmox.Utils.monStoreErrors(view, view.getStore(), true);
-	},
     },
 
-
     listeners: {
 	itemdblclick: 'showTaskLog',
     },
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH widget-toolkit 4/4] node/Tasks: add 'clear filter' button
  2021-07-05 14:33 [pve-devel] [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Dominik Csapak
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 2/4] node/Tasks: deselect entries when filter changes Dominik Csapak
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 3/4] node/Task: show errors on store load Dominik Csapak
@ 2021-07-05 14:34 ` Dominik Csapak
  2021-07-05 14:45 ` [pve-devel] applied: [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Thomas Lamprecht
  3 siblings, 0 replies; 5+ messages in thread
From: Dominik Csapak @ 2021-07-05 14:34 UTC (permalink / raw)
  To: pve-devel

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 | 55 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/src/node/Tasks.js b/src/node/Tasks.js
index dfe93dc..aa074b4 100644
--- a/src/node/Tasks.js
+++ b/src/node/Tasks.js
@@ -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,
-- 
2.30.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] applied: [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference
  2021-07-05 14:33 [pve-devel] [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Dominik Csapak
                   ` (2 preceding siblings ...)
  2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 4/4] node/Tasks: add 'clear filter' button Dominik Csapak
@ 2021-07-05 14:45 ` Thomas Lamprecht
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Lamprecht @ 2021-07-05 14:45 UTC (permalink / raw)
  To: Proxmox VE development discussion, Dominik Csapak

On 05.07.21 16:33, Dominik Csapak wrote:
> this does nothing here, since the 'datastore' would be an
> 'extraFilter' defined in pbs itself
> 
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
>  src/node/Tasks.js | 4 ----
>  1 file changed, 4 deletions(-)
> 
>

applied series, thanks!




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-07-05 14:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-05 14:33 [pve-devel] [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Dominik Csapak
2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 2/4] node/Tasks: deselect entries when filter changes Dominik Csapak
2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 3/4] node/Task: show errors on store load Dominik Csapak
2021-07-05 14:34 ` [pve-devel] [PATCH widget-toolkit 4/4] node/Tasks: add 'clear filter' button Dominik Csapak
2021-07-05 14:45 ` [pve-devel] applied: [PATCH widget-toolkit 1/4] node/Task: remove leftover 'datastore' reference Thomas Lamprecht

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