2 bugs: clone the filter, and ignore empty-string in condition

This commit is contained in:
2023-03-15 17:00:51 -05:00
parent 4d7c7f48be
commit fb6cef66ef

View File

@ -27,6 +27,8 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter;
import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput;
import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
import com.kingsrook.qqq.backend.core.utils.StringUtils;
import com.kingsrook.qqq.backend.core.utils.ValueUtils;
import com.kingsrook.qqq.backend.core.utils.collections.MutableList; import com.kingsrook.qqq.backend.core.utils.collections.MutableList;
@ -67,7 +69,7 @@ public class IfInputVariableExistsFilter extends AbstractConditionalFilter
@Override @Override
public boolean testCondition(RenderWidgetInput renderWidgetInput) public boolean testCondition(RenderWidgetInput renderWidgetInput)
{ {
return (renderWidgetInput.getQueryParams().get(inputVariableName) != null); return (StringUtils.hasContent(ValueUtils.getValueAsString(renderWidgetInput.getQueryParams().get(inputVariableName))));
} }
@ -78,7 +80,8 @@ public class IfInputVariableExistsFilter extends AbstractConditionalFilter
@Override @Override
public QQueryFilter getFilter(RenderWidgetInput renderWidgetInput) public QQueryFilter getFilter(RenderWidgetInput renderWidgetInput)
{ {
for(QFilterCriteria criterion : CollectionUtils.nonNullList(filter.getCriteria())) QQueryFilter returnFilter = filter.clone();
for(QFilterCriteria criterion : CollectionUtils.nonNullList(returnFilter.getCriteria()))
{ {
if(criterion.getValues() != null) if(criterion.getValues() != null)
{ {
@ -94,6 +97,6 @@ public class IfInputVariableExistsFilter extends AbstractConditionalFilter
} }
} }
return (filter); return (returnFilter);
} }
} }