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