forked from MapComplete/MapComplete
Fix: search fields in a filter are now wrapped into parentheses, allowing for OR as regex
This commit is contained in:
parent
de699b6ea3
commit
fb250fb928
2 changed files with 14 additions and 7 deletions
|
@ -131,6 +131,13 @@ export default class FilteredLayer {
|
||||||
return values
|
return values
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* import Translations from "../UI/i18n/Translations"
|
||||||
|
* import { RegexTag } from "../Logic/Tags/RegexTag"
|
||||||
|
*
|
||||||
|
* const option: FilterConfigOption = {question: Translations.T("question"), osmTags: undefined, originalTagsSpec: "key~.*{search}.*", fields: [{name: "search", type: "string"}] }
|
||||||
|
* FilteredLayer.fieldsToTags(option, {search: "value_regex"}) // => new RegexTag("key", /^(.*(value_regex).*)$/)
|
||||||
|
*/
|
||||||
private static fieldsToTags(
|
private static fieldsToTags(
|
||||||
option: FilterConfigOption,
|
option: FilterConfigOption,
|
||||||
fieldstate: string | Record<string, string>
|
fieldstate: string | Record<string, string>
|
||||||
|
@ -153,7 +160,7 @@ export default class FilteredLayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const key in properties) {
|
for (const key in properties) {
|
||||||
v = (<string>v).replace("{" + key + "}", properties[key])
|
v = (<string>v).replace("{" + key + "}", "(" + properties[key] + ")")
|
||||||
}
|
}
|
||||||
|
|
||||||
return v
|
return v
|
||||||
|
|
|
@ -70,12 +70,12 @@ export default class FilterConfig {
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
name: f.name,
|
name: f.name,
|
||||||
type,
|
type
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
for (const field of fields) {
|
for (const field of fields) {
|
||||||
for (let ln in question.translations) {
|
for (const ln in question.translations) {
|
||||||
const txt = question.translations[ln]
|
const txt = question.translations[ln]
|
||||||
if (ln.startsWith("_")) {
|
if (ln.startsWith("_")) {
|
||||||
continue
|
continue
|
||||||
|
@ -111,7 +111,7 @@ export default class FilterConfig {
|
||||||
question: question,
|
question: question,
|
||||||
osmTags: osmTags,
|
osmTags: osmTags,
|
||||||
fields,
|
fields,
|
||||||
originalTagsSpec: option.osmTags,
|
originalTagsSpec: option.osmTags
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ export default class FilterConfig {
|
||||||
opt.osmTags?.asHumanString() ?? "",
|
opt.osmTags?.asHumanString() ?? "",
|
||||||
opt.fields?.length > 0
|
opt.fields?.length > 0
|
||||||
? opt.fields.map((f) => f.name + " (" + f.type + ")").join(" ")
|
? opt.fields.map((f) => f.name + " (" + f.type + ")").join(" ")
|
||||||
: undefined,
|
: undefined
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue