LP#1858114: Present proper input widget for aggregate parameters
authorMike Rylander <mrylander@gmail.com>
Thu, 13 Aug 2020 17:05:19 +0000 (13:05 -0400)
committerJason Boyer <JBoyer@EquinoxInitiative.org>
Mon, 15 Feb 2021 21:55:19 +0000 (16:55 -0500)
There's currently logic to override the filter widget for all columns
that have a selector defined, such as the ID column of many tables. When
we transform the column with an aggregate transform, though, we don't want
to pick a particular selector-labeled value.

While I can imagine using a min or max aggregate to get a representative
value for a group, when other dependent filters would make the value
stable or where the value in particular doesn't matter but isn't needed
in a count (say), all the other aggregate transforms that are currently
supported are specifically numeric (sum, average, count, and
count_distinct). Because of that, and the most likely use case of
matching a count to "0" or "1", we should only present the "remote
object widget" for non-aggregates, and just use the baseline text string
input here.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Angela Kilsdonk <akilsdonk@equinoxinitiative.org>
Signed-off-by: Jason Boyer <JBoyer@EquinoxInitiative.org>

Open-ILS/web/reports/oils_rpt_param_editor.js

index e44a02d..003db23 100644 (file)
@@ -174,7 +174,8 @@ oilsRptParamEditor.prototype.buildWidget = function(param, node, fromTemplate) {
                        break;
        }
 
-       if( field.selector ) {
+       // aggregates like count (etc) on a pkey should not use the remote widget
+       if( !param.column.aggregate && field.selector ) {
                atomicWidget = oilsRptRemoteWidget;
                widgetArgs.class = cls;
                widgetArgs.field = field;