forked from MapComplete/MapComplete
Themes(preset_type_select): fix 'auto-icon' display
This commit is contained in:
parent
152d93bf4b
commit
81f98e62ce
3 changed files with 24 additions and 3 deletions
|
|
@ -120,7 +120,7 @@ export default class SubstitutingTag extends TagsFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
isNegative(): boolean {
|
isNegative(): boolean {
|
||||||
return false
|
return this._value === ""
|
||||||
}
|
}
|
||||||
|
|
||||||
visit(f: (tagsFilter: TagsFilter) => void) {
|
visit(f: (tagsFilter: TagsFilter) => void) {
|
||||||
|
|
|
||||||
|
|
@ -994,11 +994,31 @@ export class TagUtils {
|
||||||
].join("\n")
|
].join("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromProperties(tags: Record<string, string>): TagConfigJson | boolean {
|
public static fromProperties(tags: Record<string, string>): TagConfigJson | boolean {
|
||||||
const opt = new And(Object.keys(tags).map((k) => new Tag(k, tags[k]))).optimize()
|
const opt = new And(Object.keys(tags).map((k) => new Tag(k, tags[k]))).optimize()
|
||||||
if (opt === true || opt === false) {
|
if (opt === true || opt === false) {
|
||||||
return opt
|
return opt
|
||||||
}
|
}
|
||||||
return opt.asJson()
|
return opt.asJson()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a similarly structured tag, but all tags with an empty value are removed.
|
||||||
|
* Those are assumed to be all met (and thus true)
|
||||||
|
*
|
||||||
|
* new And([new Tag("a", "b"), new Tag("c", "")] // => new Tag("a","b")
|
||||||
|
* new And([new Tag("c", "")] // => true
|
||||||
|
*/
|
||||||
|
public static removeEmptyParts(tag: UploadableTag): UploadableTag | true {
|
||||||
|
if (tag["and"]) {
|
||||||
|
const tags = <UploadableTag[]>tag["and"]
|
||||||
|
const cleaned = tags.map(t => TagUtils.removeEmptyParts(t))
|
||||||
|
const filtered = <UploadableTag[]>cleaned.filter(t => t !== true)
|
||||||
|
return new And(filtered)
|
||||||
|
}
|
||||||
|
if (tag.isNegative()) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return tag
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,8 +44,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAutoIcon(mapping: { readonly if?: TagsFilter }): Readonly<Record<string, string>> {
|
function getAutoIcon(mapping: { readonly if?: TagsFilter }): Readonly<Record<string, string>> {
|
||||||
|
const ifTags = TagUtils.removeEmptyParts(mapping.if)
|
||||||
for (const preset of layer.presets) {
|
for (const preset of layer.presets) {
|
||||||
if (!new And(preset.tags).shadows(mapping.if)) {
|
if (!new And(preset.tags).shadows(ifTags)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue