add command IN and NOT_IN for a filter to the dashboard
This commit is contained in:
parent
45c5703f2f
commit
58f4c7420d
@ -38,6 +38,8 @@ public class StringFilterPredicate implements SimpleKeyFilterPredicate<String> {
|
||||
STARTS_WITH,
|
||||
ENDS_WITH,
|
||||
CONTAINS,
|
||||
NOT_CONTAINS
|
||||
NOT_CONTAINS,
|
||||
IN,
|
||||
NOT_IN
|
||||
}
|
||||
}
|
||||
|
||||
@ -537,6 +537,7 @@ public class EntityKeyMapping {
|
||||
value = value.toLowerCase();
|
||||
operationField = String.format("lower(%s)", operationField);
|
||||
}
|
||||
List<String> values = new ArrayList<>();
|
||||
switch (stringFilterPredicate.getOperation()) {
|
||||
case EQUAL:
|
||||
stringOperationQuery = String.format("%s = :%s)", operationField, paramName);
|
||||
@ -560,8 +561,29 @@ public class EntityKeyMapping {
|
||||
value = "%" + value + "%";
|
||||
stringOperationQuery = String.format("%s not like :%s or %s is null)", operationField, paramName, operationField);
|
||||
break;
|
||||
case IN:
|
||||
value = value.replaceAll("'","").replaceAll("\"", "");
|
||||
values = List.of(value.trim().split("\\s*,\\s*"));
|
||||
System.out.println(value);
|
||||
stringOperationQuery = String.format("%s in (:%s))", operationField, paramName);
|
||||
break;
|
||||
case NOT_IN:
|
||||
value = value.replaceAll("'","").replaceAll("\"", "");
|
||||
values = List.of(value.trim().split("\\s*,\\s*"));
|
||||
System.out.println(value);
|
||||
stringOperationQuery = String.format("%s not in (:%s))", operationField, paramName);
|
||||
}
|
||||
switch (stringFilterPredicate.getOperation()) {
|
||||
case IN:
|
||||
case NOT_IN:
|
||||
for (String str : values) {
|
||||
System.out.println(str);
|
||||
}
|
||||
ctx.addStringListParameter(paramName, values);
|
||||
break;
|
||||
default:
|
||||
ctx.addStringParameter(paramName, value);
|
||||
}
|
||||
return String.format("((%s is not null and %s)", field, stringOperationQuery);
|
||||
}
|
||||
|
||||
|
||||
@ -226,7 +226,9 @@ export enum StringOperation {
|
||||
STARTS_WITH = 'STARTS_WITH',
|
||||
ENDS_WITH = 'ENDS_WITH',
|
||||
CONTAINS = 'CONTAINS',
|
||||
NOT_CONTAINS = 'NOT_CONTAINS'
|
||||
NOT_CONTAINS = 'NOT_CONTAINS',
|
||||
IN = 'CONTAINS',
|
||||
NOT_IN = 'NOT_CONTAINS'
|
||||
}
|
||||
|
||||
export const stringOperationTranslationMap = new Map<StringOperation, string>(
|
||||
@ -236,7 +238,9 @@ export const stringOperationTranslationMap = new Map<StringOperation, string>(
|
||||
[StringOperation.STARTS_WITH, 'filter.operation.starts-with'],
|
||||
[StringOperation.ENDS_WITH, 'filter.operation.ends-with'],
|
||||
[StringOperation.CONTAINS, 'filter.operation.contains'],
|
||||
[StringOperation.NOT_CONTAINS, 'filter.operation.not-contains']
|
||||
[StringOperation.NOT_CONTAINS, 'filter.operation.not-contains'],
|
||||
[StringOperation.IN, 'filter.operation.in'],
|
||||
[StringOperation.NOT_IN, 'filter.operation.not-in']
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
@ -2003,7 +2003,9 @@
|
||||
"greater-or-equal": "greater or equal",
|
||||
"less-or-equal": "less or equal",
|
||||
"and": "and",
|
||||
"or": "or"
|
||||
"or": "or",
|
||||
"in": "in",
|
||||
"not-in": "not in"
|
||||
},
|
||||
"ignore-case": "ignore case",
|
||||
"value": "Value",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user