forked from MapComplete/MapComplete
		
	Docs: add source where URL-parameters are defined
This commit is contained in:
		
							parent
							
								
									bbccecae4b
								
							
						
					
					
						commit
						9dc3a239f6
					
				
					 4 changed files with 953 additions and 55 deletions
				
			
		|  | @ -1,16 +1,759 @@ | ||||||
| [//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) | [//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) | ||||||
| 
 | 
 | ||||||
|  Builtin questions  |  questions  | ||||||
| =================== | =========== | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Special library layer which does not need a '.questions'-prefix before being imported | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| The following items can be easily reused in your layers |  | ||||||
| 
 | 
 | ||||||
| ## Table of contents | ## Table of contents | ||||||
| 
 | 
 | ||||||
| 1. [Builtin questions](#builtin-questions) | 1. [questions](#questions) | ||||||
|  |   - [Basic tags for this layer](#basic-tags-for-this-layer) | ||||||
|  |   - [Supported attributes](#supported-attributes) | ||||||
|  |     + [questions](#questions) | ||||||
|  |     + [images](#images) | ||||||
|  |     + [mapillary](#mapillary) | ||||||
|  |     + [export_as_gpx](#export_as_gpx) | ||||||
|  |     + [export_as_geojson](#export_as_geojson) | ||||||
|  |     + [wikipedia](#wikipedia) | ||||||
|  |     + [reviews](#reviews) | ||||||
|  |     + [minimap](#minimap) | ||||||
|  |     + [phone](#phone) | ||||||
|  |     + [osmlink](#osmlink) | ||||||
|  |     + [email](#email) | ||||||
|  |     + [website](#website) | ||||||
|  |     + [wheelchair-access](#wheelchair-access) | ||||||
|  |     + [dog-access](#dog-access) | ||||||
|  |     + [description](#description) | ||||||
|  |     + [opening_hours](#opening_hours) | ||||||
|  |     + [opening_hours_24_7](#opening_hours_24_7) | ||||||
|  |     + [opening_hours_by_appointment](#opening_hours_by_appointment) | ||||||
|  |     + [service:electricity](#serviceelectricity) | ||||||
|  |     + [payment-options](#payment-options) | ||||||
|  |     + [payment-options-split](#payment-options-split) | ||||||
|  |     + [payment-options-advanced](#payment-options-advanced) | ||||||
|  |     + [denominations-coins](#denominations-coins) | ||||||
|  |     + [denominations-notes](#denominations-notes) | ||||||
|  |     + [last_edit](#last_edit) | ||||||
|  |     + [all_tags](#all_tags) | ||||||
|  |     + [just_created](#just_created) | ||||||
|  |     + [multilevels](#multilevels) | ||||||
|  |     + [level](#level) | ||||||
|  |     + [smoking](#smoking) | ||||||
|  |     + [induction-loop](#induction-loop) | ||||||
|  |     + [internet](#internet) | ||||||
|  |     + [internet-fee](#internet-fee) | ||||||
|  |     + [internet-ssid](#internet-ssid) | ||||||
|  |     + [luminous_or_lit](#luminous_or_lit) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| This document is autogenerated from [src/Customizations/SharedTagRenderings.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/Customizations/SharedTagRenderings.ts), [assets/layers/questions/questions.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/questions/questions.json) | 
 | ||||||
|  | 
 | ||||||
|  |   - This layer is shown at zoomlevel **0** and higher | ||||||
|  |   - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. | ||||||
|  |   - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` | ||||||
|  |   - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  Basic tags for this layer  | ||||||
|  | --------------------------- | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Elements must have the all of following tags to be shown on this layer: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  Supported attributes  | ||||||
|  | ---------------------- | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Warning:  | ||||||
|  | 
 | ||||||
|  | this quick overview is incomplete | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | attribute | type | values which are supported by this layer | ||||||
|  | ----------- | ------ | ------------------------------------------ | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/id#values) [id](https://wiki.openstreetmap.org/wiki/Key:id) | Multiple choice |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/dog#values) [dog](https://wiki.openstreetmap.org/wiki/Key:dog) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dno) [leashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dleashed) [unleashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dunleashed) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | ["by appointment"](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D"by appointment") | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/service:electricity#values) [service:electricity](https://wiki.openstreetmap.org/wiki/Key:service:electricity) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dlimited) [ask](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dask) [no](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dno) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/payment:coins:denominations#values) [payment:coins:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:coins:denominations) | Multiple choice | [0.01 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.01 EUR) [0.02 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.02 EUR) [0.05 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.05 EUR) [0.10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.10 EUR) [0.20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.20 EUR) [0.50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.50 EUR) [1 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D1 EUR) [2 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D2 EUR) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/payment:notes:denominations#values) [payment:notes:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:notes:denominations) | Multiple choice | [5 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D5 EUR) [10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D10 EUR) [20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D20 EUR) [50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D50 EUR) [100 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D100 EUR) [200 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D200 EUR) [500 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D500 EUR) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/id#values) [id](https://wiki.openstreetmap.org/wiki/Key:id) | Multiple choice |  | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [string](../SpecialInputElements.md#string) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/smoking#values) [smoking](https://wiki.openstreetmap.org/wiki/Key:smoking) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dno) [outside](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Doutside) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/hearing_loop#values) [hearing_loop](https://wiki.openstreetmap.org/wiki/Key:hearing_loop) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dno) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/internet_access#values) [internet_access](https://wiki.openstreetmap.org/wiki/Key:internet_access) | Multiple choice | [wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwlan) [no](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dno) [terminal](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal) [wired](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwired) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/internet_access:fee#values) [internet_access:fee](https://wiki.openstreetmap.org/wiki/Key:internet_access:fee) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dno) [customers](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dcustomers) | ||||||
|  | [<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/internet_access:ssid#values) [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) | [string](../SpecialInputElements.md#string) | [Telekom](https://wiki.openstreetmap.org/wiki/Tag:internet_access:ssid%3DTelekom) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### questions  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Show the questions block at this location | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### images  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### mapillary  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows a button to open Mapillary on this location | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### export_as_gpx  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows a button to export this feature as GPX. Especially useful for route relations | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### export_as_geojson  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows a button to export this feature as geojson. Especially useful for debugging or using this in other programs | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### wikipedia  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows a wikipedia box with the corresponding wikipedia article; the wikidata-item link can be changed by a contributor | ||||||
|  | 
 | ||||||
|  | The question is  *What is the corresponding Wikidata entity?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `{wikipedia():max-height:25rem}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *{wikipedia():max-height:25rem}*  corresponds with  `wikipedia~.+` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - *No Wikipedia page has been linked yet*  corresponds with  `` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### reviews  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows the reviews module (including the possibility to leave a review) | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### minimap  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows a small map with the feature. Added by default to every popup | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### phone  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What is the phone number of {title()}?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [phone](https://wiki.openstreetmap.org/wiki/Key:phone)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `<a href='tel:{phone}'>{phone}</a>` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *<a href='tel:{contact:phone}'>{contact:phone}</a>*  corresponds with  `contact:phone~.+` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering has labels  `contact` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### osmlink  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *<span class='alert'>Uploading...</alert>*  corresponds with  `id~^(=-)$` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### email  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What is the email address of {title()}?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [email](https://wiki.openstreetmap.org/wiki/Key:email)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `<a href='mailto:{email}' target='_blank'>{email}</a>` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>*  corresponds with  `contact:email~.+` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering has labels  `contact` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### website  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What is the website of {title()}?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [website](https://wiki.openstreetmap.org/wiki/Key:website)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `<a href='{website}' rel='nofollow noopener noreferrer' target='_blank'>{website}</a>` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *<a href='{contact:website}' rel='nofollow noopener noreferrer' target='_blank'>{contact:website}</a>*  corresponds with  `contact:website~.+` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering has labels  `contact` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### wheelchair-access  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Is this place accessible with a wheelchair?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *This place is specially adapted for wheelchair users*  corresponds with  `wheelchair=designated` | ||||||
|  |   - *This place is easily reachable with a wheelchair*  corresponds with  `wheelchair=yes` | ||||||
|  |   - *It is possible to reach this place in a wheelchair, but it is not easy*  corresponds with  `wheelchair=limited` | ||||||
|  |   - *This place is not reachable with a wheelchair*  corresponds with  `wheelchair=no` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### dog-access  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Are dogs allowed in this business?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Dogs are allowed*  corresponds with  `dog=yes` | ||||||
|  |   - *Dogs are <b>not</b> allowed*  corresponds with  `dog=no` | ||||||
|  |   - *Dogs are allowed, but they have to be leashed*  corresponds with  `dog=leashed` | ||||||
|  |   - *Dogs are allowed and can run around freely*  corresponds with  `dog=unleashed` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### description  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Is there still some relevant info that the previous questions did not cover? Feel free to add it here.* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [description](https://wiki.openstreetmap.org/wiki/Key:description)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `{description}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### opening_hours  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What are the opening hours of {title()}?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `<h3>Opening hours</h3>{opening_hours_table(opening_hours)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### opening_hours_24_7  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What are the opening hours of {title()}?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `<h3>Opening hours</h3>{opening_hours_table(opening_hours)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *24/7 opened (including holidays)*  corresponds with  `opening_hours=24/7` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### opening_hours_by_appointment  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What are the opening hours of {title()}?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `<h3>Opening hours</h3>{opening_hours_table(opening_hours)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Only by appointment*  corresponds with  `opening_hours="by appointment"` | ||||||
|  |   - *Only by appointment*  corresponds with  `opening_hours~^("by appointment"|by appointment)$` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### service:electricity  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Does this amenity have electrical outlets, available to customers when they are inside?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics*  corresponds with  `service:electricity=yes` | ||||||
|  |   - *There are a few domestic sockets available to customers seated indoors, where they can charge their electronics*  corresponds with  `service:electricity=limited` | ||||||
|  |   - *There are no sockets available indoors to customers, but charging might be possible if the staff is asked*  corresponds with  `service:electricity=ask` | ||||||
|  |   - *There are a no domestic sockets available to customers seated indoors*  corresponds with  `service:electricity=no` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### payment-options  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Which methods of payment are accepted here?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Cash is accepted here*  corresponds with  `payment:cash=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:cash' target='_blank'>payment:cash</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:cash%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Payment cards are accepted here*  corresponds with  `payment:cards=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:cards' target='_blank'>payment:cards</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:cards%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Payment by QR-code is possible here*  corresponds with  `payment:qr_code=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:qr_code' target='_blank'>payment:qr_code</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:qr_code%3Dno' target='_blank'>no</a> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### payment-options-split  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Which methods of payment are accepted here?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Cash is accepted here*  corresponds with  `payment:cash=yes` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - Unselecting this answer will add  | ||||||
|  |   - *Payment cards are accepted here*  corresponds with  `payment:cards=yes` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - Unselecting this answer will add  | ||||||
|  |   - *Payment by QR-code is possible here*  corresponds with  `payment:qr_code=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:qr_code' target='_blank'>payment:qr_code</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:qr_code%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Coins are accepted here*  corresponds with  `payment:coins=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:coins' target='_blank'>payment:coins</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:coins%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Bank notes are accepted here*  corresponds with  `payment:notes=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:notes' target='_blank'>payment:notes</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:notes%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Debit cards are accepted here*  corresponds with  `payment:debit_cards=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:debit_cards' target='_blank'>payment:debit_cards</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:debit_cards%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Credit cards are accepted here*  corresponds with  `payment:credit_cards=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:credit_cards' target='_blank'>payment:credit_cards</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:credit_cards%3Dno' target='_blank'>no</a> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### payment-options-advanced  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Which methods of payment are accepted here?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Cash is accepted here*  corresponds with  `payment:cash=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:cash' target='_blank'>payment:cash</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:cash%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Payment cards are accepted here*  corresponds with  `payment:cards=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:cards' target='_blank'>payment:cards</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:cards%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Payment by QR-code is possible here*  corresponds with  `payment:qr_code=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:qr_code' target='_blank'>payment:qr_code</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:qr_code%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Payment is done using a dedicated app*  corresponds with  `payment:app=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:app' target='_blank'>payment:app</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:app%3Dno' target='_blank'>no</a> | ||||||
|  |   - *Payment is done using a membership card*  corresponds with  `payment:membership_card=yes` | ||||||
|  |   - Unselecting this answer will add <a href='https://wiki.openstreetmap.org/wiki/Key:payment:membership_card' target='_blank'>payment:membership_card</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:payment:membership_card%3Dno' target='_blank'>no</a> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### denominations-coins  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What coins can you use to pay here?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *1 cent coins are accepted*  corresponds with  `payment:coins:denominations=0.01 EUR` | ||||||
|  |   - *2 cent coins are accepted*  corresponds with  `payment:coins:denominations=0.02 EUR` | ||||||
|  |   - *5 cent coins are accepted*  corresponds with  `payment:coins:denominations=0.05 EUR` | ||||||
|  |   - *10 cent coins are accepted*  corresponds with  `payment:coins:denominations=0.10 EUR` | ||||||
|  |   - *20 cent coins are accepted*  corresponds with  `payment:coins:denominations=0.20 EUR` | ||||||
|  |   - *50 cent coins are accepted*  corresponds with  `payment:coins:denominations=0.50 EUR` | ||||||
|  |   - *1 euro coins are accepted*  corresponds with  `payment:coins:denominations=1 EUR` | ||||||
|  |   - *2 euro coins are accepted*  corresponds with  `payment:coins:denominations=2 EUR` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering is only visible in the popup if the following condition is met: `payment:coins=yes|payment:cash=yes&_currency=EUR` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### denominations-notes  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *what notes can you use to pay here?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *5 euro notes are accepted*  corresponds with  `payment:notes:denominations=5 EUR` | ||||||
|  |   - *10 euro notes are accepted*  corresponds with  `payment:notes:denominations=10 EUR` | ||||||
|  |   - *20 euro notes are accepted*  corresponds with  `payment:notes:denominations=20 EUR` | ||||||
|  |   - *50 euro notes are accepted*  corresponds with  `payment:notes:denominations=50 EUR` | ||||||
|  |   - *100 euro notes are accepted*  corresponds with  `payment:notes:denominations=100 EUR` | ||||||
|  |   - *200 euro notes are accepted*  corresponds with  `payment:notes:denominations=200 EUR` | ||||||
|  |   - *500 euro notes are accepted*  corresponds with  `payment:notes:denominations=500 EUR` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering is only visible in the popup if the following condition is met: `payment:notes=yes|payment:cash=yes&_currency=EUR` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### last_edit  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Gives some metainfo about the last edit and who did edit it - rendering only | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering is only visible in the popup if the following condition is met: `_last_edit:contributor~.+&_last_edit:changeset~.+` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### all_tags  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Shows a table with all the tags of the feature | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### just_created  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This element shows a 'thank you' that the contributor has recently created this element | ||||||
|  | 
 | ||||||
|  | This tagrendering has no question and is thus read-only | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *You just created this element! Thanks for sharing this info with the world and helping people worldwide.*  corresponds with  `id~.+` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering is only visible in the popup if the following condition is met: `_backend~.+&_last_edit:passed_time<300&|_version_number=1` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### multilevels  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What levels does this elevator go to?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [level](https://wiki.openstreetmap.org/wiki/Key:level)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `This elevator goes to floors {level}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Located underground*  corresponds with  `location=underground` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - *Located on the ground floor*  corresponds with  `level=0` | ||||||
|  |   - *Located on the ground floor*  corresponds with  `` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - *Located on the first floor*  corresponds with  `level=1` | ||||||
|  |   - *Located on the first basement level*  corresponds with  `level=-1` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### level  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *On what level is this feature located?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [level](https://wiki.openstreetmap.org/wiki/Key:level)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `Located on the {level}th floor` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Located underground*  corresponds with  `location=underground` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - *Located on the ground floor*  corresponds with  `level=0` | ||||||
|  |   - *Located on the ground floor*  corresponds with  `` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - *Located on the first floor*  corresponds with  `level=1` | ||||||
|  |   - *Located on the first basement level*  corresponds with  `level=-1` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### smoking  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Is smoking allowed at {title()}?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Smoking is <b>allowed</b>*  corresponds with  `smoking=yes` | ||||||
|  |   - *Smoking is <b>not allowed</b>*  corresponds with  `smoking=no` | ||||||
|  |   - *Smoking is <b>allowed outside</b>.*  corresponds with  `smoking=outside` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### induction-loop  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | An accessibility feature: induction loops are for hard-hearing persons which have an FM-receiver. | ||||||
|  | 
 | ||||||
|  | The question is  *Does this place have an audio induction loop for people with reduced hearing?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *This place has an audio induction loop*  corresponds with  `hearing_loop=yes` | ||||||
|  |   - *This place <b>does not</b> have an audio induction loop*  corresponds with  `hearing_loop=no` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### internet  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Does this place offer internet access?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *This place offers wireless internet access*  corresponds with  `internet_access=wlan` | ||||||
|  |   - *This place <b>does not</b> offer internet access*  corresponds with  `internet_access=no` | ||||||
|  |   - *This place offers internet access*  corresponds with  `internet_access=yes` | ||||||
|  |   - This option cannot be chosen as answer | ||||||
|  |   - *This place offers internet access via a terminal or computer*  corresponds with  `internet_access=terminal` | ||||||
|  |   - *This place offers wired internet access*  corresponds with  `internet_access=wired` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### internet-fee  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Is there a fee for internet access?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *There is a fee for the internet access at this place*  corresponds with  `internet_access:fee=yes` | ||||||
|  |   - *Internet access is free at this place*  corresponds with  `internet_access:fee=no` | ||||||
|  |   - *Internet access is free at this place, for customers only*  corresponds with  `internet_access:fee=customers` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering is only visible in the popup if the following condition is met: `internet_access!=no&internet_access~.+` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### internet-ssid  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *What is the network name for the wireless internet access?* | ||||||
|  | 
 | ||||||
|  | This rendering asks information about the property  [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid)  | ||||||
|  | 
 | ||||||
|  | This is rendered with  `The network name is <b>{internet_access:ssid}</b>` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *Telekom*  corresponds with  `internet_access:ssid=Telekom` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | This tagrendering is only visible in the popup if the following condition is met: `internet_access=wlan` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### luminous_or_lit  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | The question is  *Is this object lit or does it emit light?* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   - *This object both emits light and is lighted by an external light source*  corresponds with  `lit=yes&luminous=yes` | ||||||
|  |   - *This object emits light*  corresponds with  `luminous=yes` | ||||||
|  |   - *This object is lit externally, e.g. by a spotlight or other lights*  corresponds with  `lit=yes` | ||||||
|  |   - *This object does not emit light and is not lighted by externally*  corresponds with  `lit=no&luminous=no` | ||||||
|  |   | ||||||
|  | 
 | ||||||
|  | This document is autogenerated from [assets/layers/questions/questions.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/questions/questions.json) | ||||||
|  |  | ||||||
|  | @ -77,174 +77,274 @@ The user display language is determined in the following order: | ||||||
| Note that this URL-parameter is not added to the URL-bar by default. | Note that this URL-parameter is not added to the URL-bar by default. | ||||||
| Note that the _loading_ screen will always use the navigator language. | Note that the _loading_ screen will always use the navigator language. | ||||||
| 
 | 
 | ||||||
| Translations are never complete. If a translation in a certain language is missing, English is used as fallback. No default value set | Translations are never complete. If a translation in a certain language is missing, English is used as fallback. | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [Locale.ts](/UI/i18n/Locale.ts#L35) | ||||||
|  | 
 | ||||||
|  |  No default value set | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-translation-mode  |  fs-translation-mode  | ||||||
| --------------------- | --------------------- | ||||||
| 
 | 
 | ||||||
|  If set, will show a translation button next to every string. The default value is _false_ |  If set, will show a translation button next to every string. | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) | ||||||
|  | 
 | ||||||
|  |  The default value is _false_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  backend  |  backend  | ||||||
| --------- | --------- | ||||||
| 
 | 
 | ||||||
|  The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default value is _osm_ |  The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L29) | ||||||
|  | 
 | ||||||
|  |  The default value is _osm_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fake-user  |  fake-user  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_ |  If true, 'dryrun' mode is activated and a fake user account is loaded | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) | ||||||
|  | 
 | ||||||
|  |  The default value is _false_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-userbadge  |  fs-userbadge  | ||||||
| -------------- | -------------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_ |  Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-search  |  fs-search  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the search bar The default value is _true_ |  Disables/Enables the search bar | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-background  |  fs-background  | ||||||
| --------------- | --------------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the background layer control The default value is _true_ |  Disables/Enables the background layer control | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-filter  |  fs-filter  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the filter view The default value is _true_ |  Disables/Enables the filter view | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-add-new  |  fs-add-new  | ||||||
| ------------ | ------------ | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default value is _true_ |  Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-welcome-message  |  fs-welcome-message  | ||||||
| -------------------- | -------------------- | ||||||
| 
 | 
 | ||||||
|  Disables/enables the help menu or welcome message The default value is _true_ |  Disables/enables the help menu or welcome message | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-community-index  |  fs-community-index  | ||||||
| -------------------- | -------------------- | ||||||
| 
 | 
 | ||||||
|  Disables/enables the button to get in touch with the community The default value is _true_ |  Disables/enables the button to get in touch with the community | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-iframe-popout  |  fs-iframe-popout  | ||||||
| ------------------ | ------------------ | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled) The default value is _true_ |  Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled) | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-more-quests  |  fs-more-quests  | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_ |  Disables/Enables the 'More Quests'-tab in the welcome message | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-share-screen  |  fs-share-screen  | ||||||
| ----------------- | ----------------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_ |  Disables/Enables the 'Share-screen'-tab in the welcome message | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-geolocation  |  fs-geolocation  | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the geolocation button The default value is _true_ |  Disables/Enables the geolocation button | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-all-questions  |  fs-all-questions  | ||||||
| ------------------ | ------------------ | ||||||
| 
 | 
 | ||||||
|  Always show all questions The default value is _false_ |  Always show all questions | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _false_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  fs-export  |  fs-export  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  Enable the export as GeoJSON and CSV button The default value is _true_ |  Enable the export as GeoJSON and CSV button | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  test  |  test  | ||||||
| ------ | ------ | ||||||
| 
 | 
 | ||||||
|  If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org The default value is _false_ |  If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) | ||||||
|  | 
 | ||||||
|  |  The default value is _false_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  debug  |  debug  | ||||||
| ------- | ------- | ||||||
| 
 | 
 | ||||||
|  If true, shows some extra debugging help such as all the available tags on every object The default value is _false_ |  If true, shows some extra debugging help such as all the available tags on every object | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) | ||||||
|  | 
 | ||||||
|  |  The default value is _false_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  overpassUrl  |  overpassUrl  | ||||||
| ------------- | ------------- | ||||||
| 
 | 
 | ||||||
|  Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter The default value is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_ |  Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L165) | ||||||
|  | 
 | ||||||
|  |  The default value is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  overpassTimeout  |  overpassTimeout  | ||||||
| ----------------- | ----------------- | ||||||
| 
 | 
 | ||||||
|  Set a different timeout (in seconds) for queries in overpass The default value is _30_ |  Set a different timeout (in seconds) for queries in overpass | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L176) | ||||||
|  | 
 | ||||||
|  |  The default value is _30_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  overpassMaxZoom  |  overpassMaxZoom  | ||||||
| ----------------- | ----------------- | ||||||
| 
 | 
 | ||||||
|   point to switch between OSM-api and overpass The default value is _16_ |   point to switch between OSM-api and overpass | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L184) | ||||||
|  | 
 | ||||||
|  |  The default value is _16_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  osmApiTileSize  |  osmApiTileSize  | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
|  Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _17_ |  Tilesize when the OSM-API is used to fetch data within a BBOX | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L192) | ||||||
|  | 
 | ||||||
|  |  The default value is _17_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  background  |  background  | ||||||
| ------------ | ------------ | ||||||
| 
 | 
 | ||||||
|  The id of the background layer to start with The default value is _osm_ |  The id of the background layer to start with | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L205) | ||||||
|  | 
 | ||||||
|  |  The default value is _osm_ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  layer-<layer-id>  |  layer-<layer-id>  | ||||||
| ------------------------ | ------------------------ | ||||||
| 
 | 
 | ||||||
|  Wether or not the layer with id <layer-id> is shown The default value is _true_  |  Wether or not the layer with id <layer-id> is shown | ||||||
|  | 
 | ||||||
|  | This documentation is defined in the source code at [QueryParameterDocumentation.ts](/UI/QueryParameterDocumentation.ts#L52) | ||||||
|  | 
 | ||||||
|  |  The default value is _true_  | ||||||
| 
 | 
 | ||||||
| This document is autogenerated from [src/Logic/Web/QueryParameters.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/Logic/Web/QueryParameters.ts), [src/UI/QueryParameterDocumentation.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/UI/QueryParameterDocumentation.ts) | This document is autogenerated from [src/Logic/Web/QueryParameters.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/Logic/Web/QueryParameters.ts), [src/UI/QueryParameterDocumentation.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/UI/QueryParameterDocumentation.ts) | ||||||
|  |  | ||||||
|  | @ -4,6 +4,7 @@ | ||||||
| import { UIEventSource } from "../UIEventSource" | import { UIEventSource } from "../UIEventSource" | ||||||
| import Hash from "./Hash" | import Hash from "./Hash" | ||||||
| import { Utils } from "../../Utils" | import { Utils } from "../../Utils" | ||||||
|  | import doc = Mocha.reporters.doc | ||||||
| 
 | 
 | ||||||
| export class QueryParameters { | export class QueryParameters { | ||||||
|     static defaults: Record<string, string> = {} |     static defaults: Record<string, string> = {} | ||||||
|  | @ -21,6 +22,19 @@ export class QueryParameters { | ||||||
|         if (!this.initialized) { |         if (!this.initialized) { | ||||||
|             this.init() |             this.init() | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         if (Utils.runningFromConsole) { | ||||||
|  |             const location = Utils.getLocationInCode(-1) | ||||||
|  | 
 | ||||||
|  |             documentation += | ||||||
|  |                 "\n\nThis documentation is defined in the source code at [" + | ||||||
|  |                 location.filename + | ||||||
|  |                 "](" + | ||||||
|  |                 location.markdownLocation + | ||||||
|  |                 ")" + | ||||||
|  |                 "\n\n" | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         QueryParameters.documentation.set(key, documentation) |         QueryParameters.documentation.set(key, documentation) | ||||||
|         if (deflt !== undefined) { |         if (deflt !== undefined) { | ||||||
|             QueryParameters.defaults[key] = deflt |             QueryParameters.defaults[key] = deflt | ||||||
|  | @ -131,5 +145,4 @@ export class QueryParameters { | ||||||
|         QueryParameters._wasInitialized.clear() |         QueryParameters._wasInitialized.clear() | ||||||
|         QueryParameters.order = [] |         QueryParameters.order = [] | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										84
									
								
								src/Utils.ts
									
										
									
									
									
								
							
							
						
						
									
										84
									
								
								src/Utils.ts
									
										
									
									
									
								
							|  | @ -1,5 +1,5 @@ | ||||||
| import colors from "./assets/colors.json" | import colors from "./assets/colors.json" | ||||||
| import {HTMLElement} from "node-html-parser" | import { HTMLElement } from "node-html-parser" | ||||||
| 
 | 
 | ||||||
| export class Utils { | export class Utils { | ||||||
|     /** |     /** | ||||||
|  | @ -459,7 +459,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
| 
 | 
 | ||||||
|         let match = txt.match(regex) |         let match = txt.match(regex) | ||||||
| 
 | 
 | ||||||
|         if(!match){ |         if (!match) { | ||||||
|             return txt |             return txt | ||||||
|         } |         } | ||||||
|         let result = "" |         let result = "" | ||||||
|  | @ -502,7 +502,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
| 
 | 
 | ||||||
|             result += normal + v |             result += normal + v | ||||||
|             match = leftover.match(regex) |             match = leftover.match(regex) | ||||||
|             if(!match){ |             if (!match) { | ||||||
|                 result += leftover |                 result += leftover | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | @ -699,10 +699,10 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|             if (Array.isArray(leaf)) { |             if (Array.isArray(leaf)) { | ||||||
|                 for (let i = 0; i < (<any[]>leaf).length; i++) { |                 for (let i = 0; i < (<any[]>leaf).length; i++) { | ||||||
|                     const l = (<any[]>leaf)[i] |                     const l = (<any[]>leaf)[i] | ||||||
|                     collectedList.push({leaf: l, path: [...travelledPath, "" + i]}) |                     collectedList.push({ leaf: l, path: [...travelledPath, "" + i] }) | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 collectedList.push({leaf, path: travelledPath}) |                 collectedList.push({ leaf, path: travelledPath }) | ||||||
|             } |             } | ||||||
|             return collectedList |             return collectedList | ||||||
|         } |         } | ||||||
|  | @ -780,7 +780,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|             }) |             }) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         const cp = {...json} |         const cp = { ...json } | ||||||
|         for (const key in json) { |         for (const key in json) { | ||||||
|             cp[key] = Utils.WalkJson(json[key], f, isLeaf, [...path, key]) |             cp[key] = Utils.WalkJson(json[key], f, isLeaf, [...path, key]) | ||||||
|         } |         } | ||||||
|  | @ -910,11 +910,11 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|             const xhr = new XMLHttpRequest() |             const xhr = new XMLHttpRequest() | ||||||
|             xhr.onload = () => { |             xhr.onload = () => { | ||||||
|                 if (xhr.status == 200) { |                 if (xhr.status == 200) { | ||||||
|                     resolve({content: xhr.response}) |                     resolve({ content: xhr.response }) | ||||||
|                 } else if (xhr.status === 302) { |                 } else if (xhr.status === 302) { | ||||||
|                     resolve({redirect: xhr.getResponseHeader("location")}) |                     resolve({ redirect: xhr.getResponseHeader("location") }) | ||||||
|                 } else if (xhr.status === 509 || xhr.status === 429) { |                 } else if (xhr.status === 509 || xhr.status === 429) { | ||||||
|                     resolve({error: "rate limited", url, statuscode: xhr.status}) |                     resolve({ error: "rate limited", url, statuscode: xhr.status }) | ||||||
|                 } else { |                 } else { | ||||||
|                     resolve({ |                     resolve({ | ||||||
|                         error: "other error: " + xhr.statusText, |                         error: "other error: " + xhr.statusText, | ||||||
|  | @ -987,7 +987,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|                 url, |                 url, | ||||||
|                 headers |                 headers | ||||||
|             ) |             ) | ||||||
|         Utils._download_cache.set(url, {promise, timestamp: new Date().getTime()}) |         Utils._download_cache.set(url, { promise, timestamp: new Date().getTime() }) | ||||||
|         return await promise |         return await promise | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -1006,11 +1006,11 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|         const injected = Utils.injectedDownloads[url] |         const injected = Utils.injectedDownloads[url] | ||||||
|         if (injected !== undefined) { |         if (injected !== undefined) { | ||||||
|             console.log("Using injected resource for test for URL", url) |             console.log("Using injected resource for test for URL", url) | ||||||
|             return new Promise((resolve, _) => resolve({content: injected})) |             return new Promise((resolve, _) => resolve({ content: injected })) | ||||||
|         } |         } | ||||||
|         const result = await Utils.downloadAdvanced( |         const result = await Utils.downloadAdvanced( | ||||||
|             url, |             url, | ||||||
|             Utils.Merge({accept: "application/json"}, headers ?? {}) |             Utils.Merge({ accept: "application/json" }, headers ?? {}) | ||||||
|         ) |         ) | ||||||
|         if (result["error"] !== undefined) { |         if (result["error"] !== undefined) { | ||||||
|             return <{ error: string; url: string; statuscode?: number }>result |             return <{ error: string; url: string; statuscode?: number }>result | ||||||
|  | @ -1018,12 +1018,12 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|         const data = result["content"] |         const data = result["content"] | ||||||
|         try { |         try { | ||||||
|             if (typeof data === "string") { |             if (typeof data === "string") { | ||||||
|                 return {content: JSON.parse(data)} |                 return { content: JSON.parse(data) } | ||||||
|             } |             } | ||||||
|             return {content: data} |             return { content: data } | ||||||
|         } catch (e) { |         } catch (e) { | ||||||
|             console.error("Could not parse ", data, "due to", e, "\n", e.stack) |             console.error("Could not parse ", data, "due to", e, "\n", e.stack) | ||||||
|             return {error: "malformed", url} |             return { error: "malformed", url } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -1047,7 +1047,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|         const element = document.createElement("a") |         const element = document.createElement("a") | ||||||
|         let file |         let file | ||||||
|         if (typeof contents === "string") { |         if (typeof contents === "string") { | ||||||
|             file = new Blob([contents], {type: options?.mimetype ?? "text/plain"}) |             file = new Blob([contents], { type: options?.mimetype ?? "text/plain" }) | ||||||
|         } else { |         } else { | ||||||
|             file = contents |             file = contents | ||||||
|         } |         } | ||||||
|  | @ -1318,7 +1318,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|             if (match == undefined) { |             if (match == undefined) { | ||||||
|                 return undefined |                 return undefined | ||||||
|             } |             } | ||||||
|             return {r: Number(match[1]), g: Number(match[2]), b: Number(match[3])} |             return { r: Number(match[1]), g: Number(match[2]), b: Number(match[3]) } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!hex.startsWith("#")) { |         if (!hex.startsWith("#")) { | ||||||
|  | @ -1378,7 +1378,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|         if (inView) { |         if (inView) { | ||||||
|             return |             return | ||||||
|         } |         } | ||||||
|         element.scrollIntoView({behavior: "smooth", block: "nearest"}) |         element.scrollIntoView({ behavior: "smooth", block: "nearest" }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static findParentWithScrolling(element: HTMLBaseElement): HTMLBaseElement { |     public static findParentWithScrolling(element: HTMLBaseElement): HTMLBaseElement { | ||||||
|  | @ -1470,18 +1470,60 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | ||||||
|             const postParts = prepart.split("}") |             const postParts = prepart.split("}") | ||||||
|             if (postParts.length === 1) { |             if (postParts.length === 1) { | ||||||
|                 // This was a normal part
 |                 // This was a normal part
 | ||||||
|                 spec.push({message: postParts[0]}) |                 spec.push({ message: postParts[0] }) | ||||||
|             } else { |             } else { | ||||||
|                 const [subs, message] = postParts |                 const [subs, message] = postParts | ||||||
|                 spec.push({subs}) |                 spec.push({ subs }) | ||||||
|                 if (message !== "") { |                 if (message !== "") { | ||||||
|                     spec.push({message}) |                     spec.push({ message }) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return spec |         return spec | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Returns the file and line number of the code calling this | ||||||
|  |      */ | ||||||
|  |     public static getLocationInCode(offset: number = 0): { | ||||||
|  |         path: string | ||||||
|  |         line: number | ||||||
|  |         column: number | ||||||
|  |         markdownLocation: string | ||||||
|  |         filename: string | ||||||
|  |         functionName: string | ||||||
|  |     } { | ||||||
|  |         const error = new Error("No error") | ||||||
|  |         const stack = error.stack.split("\n") | ||||||
|  |         stack.shift() // Remove "Error: No error"
 | ||||||
|  |         const regex = /at (.*) \(([a-zA-Z0-9/.]+):([0-9]+):([0-9]+)\)/ | ||||||
|  |         const stackItem = stack[Math.abs(offset) + 1] | ||||||
|  |         console.log("Matching", stackItem, "with", regex, "gave", stackItem.match(regex)) | ||||||
|  | 
 | ||||||
|  |         let functionName: string | ||||||
|  |         let path: string | ||||||
|  |         let line: string | ||||||
|  |         let column: string | ||||||
|  |         let _: string | ||||||
|  |         const matchWithFuncName = stackItem.match(regex) | ||||||
|  |         if (matchWithFuncName) { | ||||||
|  |             ;[_, functionName, path, line, column] = matchWithFuncName | ||||||
|  |         } else { | ||||||
|  |             let regexNoFuncName: RegExp = new RegExp("at ([a-zA-Z0-9/.]+):([0-9]+):([0-9]+)") | ||||||
|  |             ;[_, path, line, column] = stackItem.match(regexNoFuncName) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         const markdownLocation = path.substring(path.indexOf("MapComplete/src") + 15) + "#L" + line | ||||||
|  |         return { | ||||||
|  |             path, | ||||||
|  |             functionName, | ||||||
|  |             line: Number(line), | ||||||
|  |             column: Number(column), | ||||||
|  |             markdownLocation, | ||||||
|  |             filename: path.substring(path.lastIndexOf("/") + 1), | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     private static colorDiff( |     private static colorDiff( | ||||||
|         c0: { r: number; g: number; b: number }, |         c0: { r: number; g: number; b: number }, | ||||||
|         c1: { r: number; g: number; b: number } |         c1: { r: number; g: number; b: number } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue