diff --git a/client/web/reporter/src/components/Common/Prefilter.vue b/client/web/reporter/src/components/Common/Prefilter.vue
index 3e355b55f..ad1c15369 100644
--- a/client/web/reporter/src/components/Common/Prefilter.vue
+++ b/client/web/reporter/src/components/Common/Prefilter.vue
@@ -70,33 +70,65 @@
-
-
-
- {{ $t('general:label.none') }}
-
-
-
+
+ setType(groupIndex, argIndex, symbol, group.args[0].args[argIndex].args[0].args[0].value['@value'])"
+ >
+
+
+ {{ $t('general:label.none') }}
+
+
+
-
+
-
+
+
+
+
+ setType(groupIndex, argIndex, symbol, group.args[0].args[argIndex].args[0].args[1].value['@value'])"
+ >
+
+
+ {{ $t('general:label.none') }}
+
+
+
+
+
+
+
+
@@ -223,27 +255,43 @@ export default {
operators: [
{
value: 'eq',
- text: '=',
+ text: this.$t('builder:filter.operators.equal'),
+ isMulti: false,
},
{
value: 'ne',
- text: '!=',
+ text: this.$t('builder:filter.operators.notEqual'),
+ isMulti: false,
},
{
value: 'lt',
- text: '<',
+ text: this.$t('builder:filter.operators.lessThan'),
+ isMulti: false,
},
{
value: 'le',
- text: '<=',
+ text: this.$t('builder:filter.operators.lessThanEqualTo'),
+ isMulti: false,
},
{
value: 'gt',
- text: '>',
+ text: this.$t('builder:filter.operators.greaterThan'),
+ isMulti: false,
},
{
value: 'ge',
- text: '>=',
+ text: this.$t('builder:filter.operators.greaterThanEqualTo'),
+ isMulti: false,
+ },
+ {
+ value: 'in',
+ text: this.$t('builder:filter.operators.contains'),
+ isMulti: true,
+ },
+ {
+ value: 'nin',
+ text: this.$t('builder:filter.operators.notContains'),
+ isMulti: true,
},
],
}
@@ -345,18 +393,27 @@ export default {
}
},
- setType (groupIndex, argIndex) {
- // Get arg
- if (this.filter.args[groupIndex].args[0].args[argIndex]) {
- const { symbol } = this.filter.args[groupIndex].args[0].args[argIndex].args[0].args[0]
+ setType (groupIndex, argIndex, symbol, value) {
+ if (symbol) {
+ // Get arg
+ if (this.filter.args[groupIndex].args[0].args[argIndex]) {
+ // Get type
+ const { kind, multivalue } = this.columns.find(({ name }) => name === symbol)
- // Get type
- const { kind } = this.columns.find(({ name }) => name === symbol)
-
- // Set type
- if (kind) {
- this.filter.args[groupIndex].args[0].args[argIndex].args[0].args[1].value['@type'] = kind
+ // Set type
+ if (kind) {
+ if (multivalue) {
+ this.filter.args[groupIndex].args[0].args[argIndex].args[0].args[0] = { value: { '@type': kind, '@value': value } }
+ this.filter.args[groupIndex].args[0].args[argIndex].args[0].args[1] = { symbol }
+ this.filter.args[groupIndex].args[0].args[argIndex].args[0].ref = 'in'
+ } else {
+ this.filter.args[groupIndex].args[0].args[argIndex].args[0].args[0] = { symbol }
+ this.filter.args[groupIndex].args[0].args[argIndex].args[0].args[1] = { value: { '@type': kind, '@value': value } }
+ this.filter.args[groupIndex].args[0].args[argIndex].args[0].ref = 'eq'
+ }
+ }
}
+ this.reRender()
}
},
@@ -366,6 +423,14 @@ export default {
this.render = true
})
},
+
+ getColumnData (group) {
+ return this.columns.find(({ name }) => name === group.symbol)
+ },
+
+ getOperators (column) {
+ return column ? this.operators.filter(value => value.isMulti === column.multivalue) : this.operators
+ },
},
}
diff --git a/locale/en/corteza-webapp-reporter/builder.yaml b/locale/en/corteza-webapp-reporter/builder.yaml
index c89b021b7..3128d2ebf 100644
--- a/locale/en/corteza-webapp-reporter/builder.yaml
+++ b/locale/en/corteza-webapp-reporter/builder.yaml
@@ -69,3 +69,15 @@ select-all: Select all
unselect-all: Unselect all
value: Value
name: Name
+filter:
+ operators:
+ like: Like
+ notLike: Not Like
+ contains: Contains
+ notContains: Not contains
+ equal: Equal
+ greaterThan: Greater than
+ greaterThanEqualTo: Greater than or equal to
+ lessThanEqualTo: Less than or equal to
+ lessThan: Less than
+ notEqual: Not equal