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)
committerMike Rylander <mrylander@gmail.com>
Thu, 13 Aug 2020 17:05:19 +0000 (13:05 -0400)
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>
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;