From 48e4b5d54f6858620d5ce28f1e37de8638a67f52 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Mon, 3 May 2021 16:29:22 +0200 Subject: [PATCH 1/3] :wrench: countDistinct must be evaluated on sliceQuery too, otherwise total may differ from actual lines --- .../net/optionfactory/pussyfoot/hibernate/HibernatePsf.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/optionfactory/pussyfoot/hibernate/HibernatePsf.java b/src/main/java/net/optionfactory/pussyfoot/hibernate/HibernatePsf.java index c4d0c3e..9674db4 100644 --- a/src/main/java/net/optionfactory/pussyfoot/hibernate/HibernatePsf.java +++ b/src/main/java/net/optionfactory/pussyfoot/hibernate/HibernatePsf.java @@ -114,6 +114,10 @@ public PageResponse queryForPage(PageRequest request) { rootEnhancer.ifPresent(re -> re.accept(cb, sliceRoot)); final List> selectors = new ArrayList<>(); selectors.add(sliceRoot); + if (this.useCountDistinct) { + selectors.add(cb.countDistinct(countRoot)); + scq.groupBy(countRoot); + } final List orderers = new ArrayList<>(); orderers.addAll(Stream.of(request.sorters) .filter(s -> availableSorters.containsKey(s.name)) From 2897c0f87ce17d4f0fe2aaf54ea3fb88524dd663 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 6 May 2021 09:19:31 +0200 Subject: [PATCH 2/3] :gear: override for modern 6.5.3 (no gridfilters plugin) --- .../pussyfoot-extjs-overrides-modern.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js diff --git a/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js b/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js new file mode 100644 index 0000000..91a4531 --- /dev/null +++ b/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js @@ -0,0 +1,26 @@ +Ext.data.proxy.Server.prototype.config.pageParam = ''; +Ext.data.proxy.Server.prototype.config.filterParam = 'filters'; +Ext.data.proxy.Server.prototype.config.sortParam = 'sorters'; + +Ext.util.Sorter.prototype.serialize = function () { + return { + name: this.getProperty(), /*!*/ + direction: this.getDirection() + }; +} + +/* + * Filters are serialized as {"name": "name", "value": "something"} + */ +Ext.util.Filter.prototype.serialize = function () { + var result = this.getState(); + var serializer = this.getSerializer(); + delete result.id; + delete result.serializer; + if (serializer) { + serializer.call(this, result); + } + result.name = result.property; /*!*/ + delete result.property; + return result; +}; From c77b138055d4a5d42090ddfdedbcf2c68cf7d9c2 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Fri, 14 May 2021 18:10:59 +0200 Subject: [PATCH 3/3] :wrench: encode filter to use remoteFilter in combobox. --- .../pussyfoot-extjs-overrides-modern.js | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js b/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js index 91a4531..bb8d405 100644 --- a/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js +++ b/src/main/resources/META-INF/resources/webjars/pussyfoot-extjs-overrides-modern.js @@ -1,3 +1,5 @@ +/* global Ext */ + Ext.data.proxy.Server.prototype.config.pageParam = ''; Ext.data.proxy.Server.prototype.config.filterParam = 'filters'; Ext.data.proxy.Server.prototype.config.sortParam = 'sorters'; @@ -8,19 +10,25 @@ Ext.util.Sorter.prototype.serialize = function () { direction: this.getDirection() }; } - -/* - * Filters are serialized as {"name": "name", "value": "something"} +/* + * QueryParam Filters for combobox are serialized as {"operator":"like","value":"something","name":"property"} */ -Ext.util.Filter.prototype.serialize = function () { - var result = this.getState(); - var serializer = this.getSerializer(); +serializePrimaryFilter = function (filter) +{ + var result = filter.getState(); + var serializer = filter.getSerializer(); delete result.id; delete result.serializer; + delete result.disabled; + delete result.anyMatch; + delete result.caseSensitive; if (serializer) { - serializer.call(this, result); + serializer.call(filter, result); } - result.name = result.property; /*!*/ + result.operator = 'like'; + result.name = Ext.Object.isEmpty(result.value) ? '' : result.property; /*!*/ delete result.property; return result; }; + +Ext.field.ComboBox.prototype.serializePrimaryFilter = serializePrimaryFilter; \ No newline at end of file