forked from MapComplete/MapComplete
		
	Merge master
This commit is contained in:
		
						commit
						edc366149b
					
				
					 25 changed files with 302 additions and 182 deletions
				
			
		|  | @ -366,29 +366,34 @@ export default class TagRenderingConfig { | |||
| 
 | ||||
|         // A flag to check that the freeform key isn't matched multiple times 
 | ||||
|         // If it is undefined, it is "used" already, or at least we don't have to check for it anymore
 | ||||
|         let freeformKeyUsed = this.freeform?.key === undefined; | ||||
|         let freeformKeyDefined = this.freeform?.key !== undefined; | ||||
|         let usedFreeformValues = new Set<string>() | ||||
|         // We run over all the mappings first, to check if the mapping matches
 | ||||
|         const applicableMappings: { then: Translation, img?: string }[] = Utils.NoNull((this.mappings ?? [])?.map(mapping => { | ||||
|             if (mapping.if === undefined) { | ||||
|                 return mapping; | ||||
|             } | ||||
|             if (TagUtils.MatchesMultiAnswer(mapping.if, tags)) { | ||||
|                 if (!freeformKeyUsed) { | ||||
|                     if (mapping.if.usedKeys().indexOf(this.freeform.key) >= 0) { | ||||
|                         // This mapping matches the freeform key - we mark the freeform key to be ignored!
 | ||||
|                         freeformKeyUsed = true; | ||||
|                     } | ||||
|                 if (freeformKeyDefined && mapping.if.isUsableAsAnswer()) { | ||||
|                     // THe freeform key is defined: what value does it use though?
 | ||||
|                     // We mark the value to see if we have any leftovers
 | ||||
|                     const value = mapping.if.asChange({}).find(kv => kv.k === this.freeform.key).v | ||||
|                     usedFreeformValues.add(value) | ||||
|                 } | ||||
|                 return mapping; | ||||
|             } | ||||
|             return undefined; | ||||
|         })) | ||||
| 
 | ||||
| 
 | ||||
|         if (!freeformKeyUsed | ||||
|             && tags[this.freeform.key] !== undefined) { | ||||
|             applicableMappings.push({then: this.render}) | ||||
|         if(freeformKeyDefined && tags[this.freeform.key] !== undefined){ | ||||
|             const freeformValues = tags[this.freeform.key].split(";") | ||||
|             const leftovers = freeformValues.filter(v => !usedFreeformValues.has(v)) | ||||
|             for (const leftover of leftovers) { | ||||
|                 applicableMappings.push({then: this.render.OnEveryLanguage(str =>  | ||||
|                         str.replace(new RegExp("{"+this.freeform.key+"}", "g"), leftover))}) | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         return applicableMappings | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue