3
0

Fix record list filter to discard active prefilter tag when value changes

This commit is contained in:
Kelani Tolulope
2023-04-11 10:02:23 +01:00
parent a23c43890e
commit 4b204dffdf
2 changed files with 16 additions and 5 deletions

View File

@@ -556,7 +556,7 @@ export default {
// Create record and fill its values property if value exists
this.componentFilter = this.recordListFilter
.filter(({ filter = [] }) => filter.some(f => f.name))
.map(({ groupCondition, filter = [] }) => {
.map(({ groupCondition, filter = [], name }) => {
filter = filter.map(({ value, ...f }) => {
f.record = new compose.Record(this.mock.module, {})
@@ -583,7 +583,7 @@ export default {
return f
})
return { groupCondition, filter }
return { groupCondition, filter, name }
})
// If no filterGroups, add default
@@ -598,7 +598,7 @@ export default {
}
// Emit only value and not whole record with every filter
this.$emit('filter', this.componentFilter.map(({ groupCondition, filter = [] }) => {
this.$emit('filter', this.componentFilter.map(({ groupCondition, filter = [], name }) => {
filter = filter.map(({ record, ...f }) => {
if (record) {
f.value = record[f.name] || record.values[f.name]
@@ -614,7 +614,7 @@ export default {
return f
})
return { groupCondition, filter }
return { groupCondition, filter, name }
}))
},

View File

@@ -727,7 +727,7 @@
</wrap>
</template>
<script>
import { debounce } from 'lodash'
import { debounce, isEqual } from 'lodash'
import { mapGetters, mapActions } from 'vuex'
import base from './base'
import FieldViewer from 'corteza-webapp-compose/src/components/ModuleFields/Viewer'
@@ -1072,6 +1072,17 @@ export default {
},
onFilter (filter = []) {
filter.forEach(f => {
if (this.activeFilters.includes(f.name)) {
this.filterPresets.find(p => p.name === f.name).filter.forEach((filterPreset) => {
if (!isEqual(f.filter, filterPreset.filter)) {
const filterIndex = this.activeFilters.indexOf(f.name)
this.activeFilters.splice(filterIndex, 1)
}
})
}
})
this.recordListFilter = filter
this.setStorageRecordListFilter()
this.refresh(true)