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 @@ - - - + + + @@ -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