forked from MapComplete/MapComplete
		
	Expansion of taginfo objects
This commit is contained in:
		
							parent
							
								
									0d637131fb
								
							
						
					
					
						commit
						9bb757c17f
					
				
					 25 changed files with 3358 additions and 47 deletions
				
			
		|  | @ -13,20 +13,60 @@ import {readFileSync, writeFile, writeFileSync} from "fs"; | |||
| 
 | ||||
| const outputDirectory = "Docs/TagInfo" | ||||
| 
 | ||||
| function generateTagOverview(kv: { k: string, v: string }, description: string) { | ||||
|     const overview = { | ||||
|         // OSM tag key (required)
 | ||||
|         key: kv.k, | ||||
|         description: description | ||||
|     }; | ||||
|     if (kv.v !== undefined) { | ||||
|         // OSM tag value (optional, if not supplied it means "all values")
 | ||||
|         overview["value"] = kv.v | ||||
|     } | ||||
|     return overview | ||||
| } | ||||
| 
 | ||||
| function generateLayerUsage(layer: LayerConfig, layout: LayoutConfig): any [] { | ||||
|     const usedTags = layer.source.osmTags.asChange({}) | ||||
|     const result = [] | ||||
|     for (const kv of usedTags) { | ||||
|         const overview = { | ||||
|             // OSM tag key (required)
 | ||||
|             key: kv.k, | ||||
|             description: "The MapComplete theme " + layout.title.txt + " has a layer " + layer.name.txt + " showing features with this tag" | ||||
|         }; | ||||
|         if (kv.v !== undefined) { | ||||
|             // OSM tag value (optional, if not supplied it means "all values")
 | ||||
|             overview["value"] = kv.v | ||||
|         const description = "The MapComplete theme " + layout.title.txt + " has a layer " + layer.name.txt + " showing features with this tag" | ||||
|         result.push(generateTagOverview(kv, description)) | ||||
|     } | ||||
| 
 | ||||
|     for (const tr of layer.tagRenderings) { | ||||
|         const q = tr.question?.txt; | ||||
|         const key = tr.freeform?.key; | ||||
|         if (key != undefined) { | ||||
|             let descr = "Layer '" + layer.name.txt + "' (in the MapComplete.osm.be theme '" + layout.title.txt + "')"; | ||||
|             if (q == undefined) { | ||||
|                 descr += " shows values with"; | ||||
|             } else { | ||||
|                 descr += " shows and asks freeform values for" | ||||
|             } | ||||
|             descr += " key '" + key + "'" | ||||
|             result.push(generateTagOverview({k: key, v: undefined}, descr)) | ||||
|         } | ||||
| 
 | ||||
|         const mappings = tr.mappings ?? [] | ||||
|         for (const mapping of mappings) { | ||||
| 
 | ||||
|             let descr = "Layer '" + layer.name.txt + "' (in the MapComplete.osm.be theme '" + layout.title.txt + "')"; | ||||
|             descr += " shows " + mapping.if.asHumanString(false, false, {}) + " with a fixed text, namely '" + mapping.then.txt + "'"; | ||||
|             if (q != undefined | ||||
|                 && mapping.hideInAnswer != true // != true will also match if a 
 | ||||
|             ) { | ||||
|                 descr += " and allows to pick this as a default answer." | ||||
|             } | ||||
|             for (const kv of mapping.if.asChange({})) { | ||||
|                 let d = descr; | ||||
|                 if (q!=undefined && kv.v == "") { | ||||
|                     d = `${descr} Picking this answer will delete the key ${kv.k}.` | ||||
|                 } | ||||
|                 result.push(generateTagOverview(kv, d)) | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
|         result.push(overview) | ||||
|     } | ||||
|     return result; | ||||
| } | ||||
|  | @ -97,5 +137,6 @@ let projectList = readFileSync(tagInfoList, "UTF8") | |||
|     .sort() | ||||
|     .filter(entry => entry != "") | ||||
| 
 | ||||
| console.log("Writing taginfo project filelist") | ||||
| writeFileSync(tagInfoList, projectList.join("\n")+"\n") | ||||
| console.log("Writing taginfo project filelist"); | ||||
| writeFileSync(tagInfoList, projectList.join("\n") + "\n"); | ||||
|      | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue