3
0

Fix evaluated filters overwriting configuration

This commit is contained in:
Jože Fortun 2024-12-11 14:23:22 +01:00
parent b6b8f1b8b7
commit 03ec8d3930
3 changed files with 40 additions and 43 deletions

View File

@ -328,10 +328,7 @@ export default {
case compose.PageBlockCalendar.feedResources.record:
return this.findModuleByID({ namespace: this.namespace, moduleID: feed.options.moduleID })
.then(module => {
const ff = {
...feed,
options: { ...feed.options },
}
const ff = compose.PageBlockCalendar.makeFeed(feed) // Clone feed, so we don't modify the original
// Interpolate prefilter variables
if (ff.options.prefilter) {

View File

@ -190,51 +190,50 @@ export default {
}
Promise.all(this.options.feeds.filter(f => f.isValid()).map((feed, idx) => {
return this.findModuleByID({ namespace: this.namespace, moduleID: feed.options.moduleID })
.then(module => {
const f = { ...feed } // Clone feed, so we dont modify the original
return this.findModuleByID({ namespace: this.namespace, moduleID: feed.options.moduleID }).then(module => {
const f = compose.PageBlockGeometry.makeFeed(feed) // Clone feed, so we don't modify the original
// Interpolate prefilter variables
if (f.options.prefilter) {
f.options.prefilter = evaluatePrefilter(f.options.prefilter, {
record: this.record,
user: this.$auth.user || {},
recordID: (this.record || {}).recordID || NoID,
ownerID: (this.record || {}).ownedBy || NoID,
userID: (this.$auth.user || {}).userID || NoID,
})
}
// Interpolate prefilter variables
if (f.options.prefilter) {
f.options.prefilter = evaluatePrefilter(f.options.prefilter, {
record: this.record,
user: this.$auth.user || {},
recordID: (this.record || {}).recordID || NoID,
ownerID: (this.record || {}).ownedBy || NoID,
userID: (this.$auth.user || {}).userID || NoID,
})
}
return compose.PageBlockGeometry.RecordFeed(this.$ComposeAPI, module, this.namespace, f, { cancelToken: this.cancelTokenSource.token })
.then(records => {
const mapModuleField = module.fields.find(field => field.name === f.geometryField)
return compose.PageBlockGeometry.RecordFeed(this.$ComposeAPI, module, this.namespace, f, { cancelToken: this.cancelTokenSource.token })
.then(records => {
const mapModuleField = module.fields.find(field => field.name === f.geometryField)
if (!mapModuleField) return
if (!mapModuleField) return
this.geometries[idx] = records.map(record => {
let geometry = record.values[f.geometryField]
let markers = []
this.geometries[idx] = records.map(record => {
let geometry = record.values[f.geometryField]
let markers = []
if (mapModuleField.isMulti) {
geometry = geometry.map(value => this.parseGeometryField(value))
markers = geometry
} else {
geometry = this.parseGeometryField(geometry)
markers = [geometry]
}
if (mapModuleField.isMulti) {
geometry = geometry.map(value => this.parseGeometryField(value))
markers = geometry
} else {
geometry = this.parseGeometryField(geometry)
markers = [geometry]
}
return {
title: record.values[f.titleField],
geometry: f.displayPolygon ? geometry : [],
markers,
color: f.options.color,
displayMarker: f.displayMarker,
recordID: record.recordID,
moduleID: record.moduleID,
}
}).filter(g => g && g.markers.length)
})
})
return {
title: record.values[f.titleField],
geometry: f.displayPolygon ? geometry : [],
markers,
color: f.options.color,
displayMarker: f.displayMarker,
recordID: record.recordID,
moduleID: record.moduleID,
}
}).filter(g => g && g.markers.length)
})
})
})).finally(() => {
setTimeout(() => {
this.processing = false

View File

@ -166,6 +166,7 @@ export default {
if (m.moduleID) {
// prepare a fresh metric with an evaluated prefilter
const auxM = { ...m }
if (auxM.filter) {
auxM.filter = evaluatePrefilter(auxM.filter, {
record: this.record,