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 {
 | 
			
		||||
        return false
 | 
			
		||||
        return this._value === ""
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    visit(f: (tagsFilter: TagsFilter) => void) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -994,11 +994,31 @@ export class TagUtils {
 | 
			
		|||
        ].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()
 | 
			
		||||
        if (opt === true || opt === false) {
 | 
			
		||||
            return opt
 | 
			
		||||
        }
 | 
			
		||||
        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>> {
 | 
			
		||||
    const ifTags = TagUtils.removeEmptyParts(mapping.if)
 | 
			
		||||
    for (const preset of layer.presets) {
 | 
			
		||||
      if (!new And(preset.tags).shadows(mapping.if)) {
 | 
			
		||||
      if (!new And(preset.tags).shadows(ifTags)) {
 | 
			
		||||
        continue
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue