* [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