forked from MapComplete/MapComplete
		
	Add small overview document for every layer
This commit is contained in:
		
							parent
							
								
									eba52836b2
								
							
						
					
					
						commit
						77e9151095
					
				
					 41 changed files with 1325 additions and 2040 deletions
				
			
		|  | @ -7,6 +7,7 @@ import Combine from "../UI/Base/Combine"; | ||||||
| import Title from "../UI/Base/Title"; | import Title from "../UI/Base/Title"; | ||||||
| import List from "../UI/Base/List"; | import List from "../UI/Base/List"; | ||||||
| import DependencyCalculator from "../Models/ThemeConfig/DependencyCalculator"; | import DependencyCalculator from "../Models/ThemeConfig/DependencyCalculator"; | ||||||
|  | import Link from "../UI/Base/Link"; | ||||||
| 
 | 
 | ||||||
| export class AllKnownLayouts { | export class AllKnownLayouts { | ||||||
| 
 | 
 | ||||||
|  | @ -33,14 +34,9 @@ export class AllKnownLayouts { | ||||||
|         } |         } | ||||||
|         return allLayers |         return allLayers | ||||||
|     } |     } | ||||||
| 
 |      | ||||||
|     public static GenLayerOverviewText(): BaseUIElement { |      | ||||||
|         for (const id of AllKnownLayers.priviliged_layers) { |     public static GenOverviewsForSingleLayer(callback: (layer: LayerConfig, element: BaseUIElement) => void): void { | ||||||
|             if (!AllKnownLayers.sharedLayers.has(id)) { |  | ||||||
|                 throw "Priviliged layer definition not found: " + id |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         const allLayers: LayerConfig[] = Array.from(AllKnownLayers.sharedLayers.values()) |         const allLayers: LayerConfig[] = Array.from(AllKnownLayers.sharedLayers.values()) | ||||||
|             .filter(layer => AllKnownLayers.priviliged_layers.indexOf(layer.id) < 0) |             .filter(layer => AllKnownLayers.priviliged_layers.indexOf(layer.id) < 0) | ||||||
| 
 | 
 | ||||||
|  | @ -65,10 +61,54 @@ export class AllKnownLayouts { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         let popularLayerCutoff = 2; |         // Determine the cross-dependencies
 | ||||||
|         const popuparLayers = allLayers.filter(layer => themesPerLayer.get(layer.id)?.length >= 2) |         const layerIsNeededBy : Map<string, string[]> = new Map<string, string[]>() | ||||||
|  | 
 | ||||||
|  |         for (const layer of allLayers) { | ||||||
|  |             for (const dep of DependencyCalculator.getLayerDependencies(layer)) { | ||||||
|  |                 const dependency = dep.neededLayer | ||||||
|  |                 if(!layerIsNeededBy.has(dependency)){ | ||||||
|  |                     layerIsNeededBy.set(dependency, []) | ||||||
|  |                 } | ||||||
|  |                 layerIsNeededBy.get(dependency).push(layer.id) | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         AllKnownLayers.sharedLayers.forEach((layer) => { | ||||||
|  |             const element = layer.GenerateDocumentation(themesPerLayer.get(layer.id),layerIsNeededBy,DependencyCalculator.getLayerDependencies(layer)) | ||||||
|  |             callback(layer, element) | ||||||
|  |         }) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static GenLayerOverviewText(): BaseUIElement { | ||||||
|  |         for (const id of AllKnownLayers.priviliged_layers) { | ||||||
|  |             if (!AllKnownLayers.sharedLayers.has(id)) { | ||||||
|  |                 throw "Priviliged layer definition not found: " + id | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         const allLayers: LayerConfig[] = Array.from(AllKnownLayers.sharedLayers.values()) | ||||||
|  |             .filter(layer => AllKnownLayers.priviliged_layers.indexOf(layer.id) < 0) | ||||||
|  | 
 | ||||||
|  |         const builtinLayerIds: Set<string> = new Set<string>() | ||||||
|  |         allLayers.forEach(l => builtinLayerIds.add(l.id)) | ||||||
|  | 
 | ||||||
|  |         const themesPerLayer = new Map<string, string[]>() | ||||||
|  | 
 | ||||||
|  |         for (const layout of Array.from(AllKnownLayouts.allKnownLayouts.values())) { | ||||||
|  |             for (const layer of layout.layers) { | ||||||
|  |                 if (!builtinLayerIds.has(layer.id)) { | ||||||
|  |                     continue | ||||||
|  |                 } | ||||||
|  |                 if (!themesPerLayer.has(layer.id)) { | ||||||
|  |                     themesPerLayer.set(layer.id, []) | ||||||
|  |                 } | ||||||
|  |                 themesPerLayer.get(layer.id).push(layout.id) | ||||||
|  |             } | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         const unpopularLayers = allLayers.filter(layer => themesPerLayer.get(layer.id)?.length < 2) |  | ||||||
| 
 | 
 | ||||||
|         // Determine the cross-dependencies
 |         // Determine the cross-dependencies
 | ||||||
|         const layerIsNeededBy : Map<string, string[]> = new Map<string, string[]>() |         const layerIsNeededBy : Map<string, string[]> = new Map<string, string[]>() | ||||||
|  | @ -85,6 +125,8 @@ export class AllKnownLayouts { | ||||||
|              |              | ||||||
|         } |         } | ||||||
|          |          | ||||||
|  |          | ||||||
|  |          | ||||||
|         return new Combine([ |         return new Combine([ | ||||||
|             new Title("Special and other useful layers", 1), |             new Title("Special and other useful layers", 1), | ||||||
|             "MapComplete has a few data layers available in the theme which have special properties through builtin-hooks. Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they get a mention here.", |             "MapComplete has a few data layers available in the theme which have special properties through builtin-hooks. Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they get a mention here.", | ||||||
|  | @ -94,14 +136,8 @@ export class AllKnownLayouts { | ||||||
|                 .map(id => AllKnownLayers.sharedLayers.get(id)) |                 .map(id => AllKnownLayers.sharedLayers.get(id)) | ||||||
|                 .map((l) => l.GenerateDocumentation(themesPerLayer.get(l.id), layerIsNeededBy, DependencyCalculator.getLayerDependencies(l),AllKnownLayers.added_by_default.indexOf(l.id) >= 0, AllKnownLayers.no_include.indexOf(l.id) < 0)), |                 .map((l) => l.GenerateDocumentation(themesPerLayer.get(l.id), layerIsNeededBy, DependencyCalculator.getLayerDependencies(l),AllKnownLayers.added_by_default.indexOf(l.id) >= 0, AllKnownLayers.no_include.indexOf(l.id) < 0)), | ||||||
|             new Title("Normal layers", 1), |             new Title("Normal layers", 1), | ||||||
|             "The following layers are included in MapComplete", |             "The following layers are included in MapComplete:", | ||||||
|             new Title("Frequently reused layers", 2), |             new List(Array.from(AllKnownLayers.sharedLayers.keys()).map(id => new Link(id, "./Layers/"+id+".md"))) | ||||||
|             "The following layers are used by at least " + popularLayerCutoff + " mapcomplete themes and might be interesting for your custom theme too", |  | ||||||
|             new List(popuparLayers.map(layer => "[" + layer.id + "](#" + layer.id + ")")), |  | ||||||
|             ...popuparLayers.map((layer) => layer.GenerateDocumentation(themesPerLayer.get(layer.id),layerIsNeededBy,DependencyCalculator.getLayerDependencies(layer))), |  | ||||||
|             new List(unpopularLayers.map(layer => "[" + layer.id + "](#" + layer.id + ")")), |  | ||||||
|             ...unpopularLayers.map(layer => layer.GenerateDocumentation(themesPerLayer.get(layer.id),layerIsNeededBy,DependencyCalculator.getLayerDependencies(layer)) |  | ||||||
|             ) |  | ||||||
|         ]) |         ]) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -3,7 +3,9 @@ | ||||||
|  Metatags  |  Metatags  | ||||||
| ========== | ========== | ||||||
| 
 | 
 | ||||||
|  ## Table of contents | 
 | ||||||
|  | 
 | ||||||
|  | ## Table of contents | ||||||
| 
 | 
 | ||||||
| 1. [Metatags](#metatags) | 1. [Metatags](#metatags) | ||||||
|   - [Metatags calculated by MapComplete](#metatags-calculated-by-mapcomplete) |   - [Metatags calculated by MapComplete](#metatags-calculated-by-mapcomplete) | ||||||
|  | @ -13,7 +15,7 @@ | ||||||
|     + [_length, _length:km](#_length,-_lengthkm) |     + [_length, _length:km](#_length,-_lengthkm) | ||||||
|     + [Theme-defined keys](#theme-defined-keys) |     + [Theme-defined keys](#theme-defined-keys) | ||||||
|     + [_country](#_country) |     + [_country](#_country) | ||||||
|     + [_isOpen, _isOpen:description](#_isopen,-_isopendescription) |     + [_isOpen](#_isopen) | ||||||
|     + [_direction:numerical, _direction:leftright](#_directionnumerical,-_direction:leftright) |     + [_direction:numerical, _direction:leftright](#_directionnumerical,-_direction:leftright) | ||||||
|     + [_now:date, _now:datetime, _loaded:date, _loaded:_datetime](#_nowdate,-_now:datetime,-_loaded:date,-_loaded:_datetime) |     + [_now:date, _now:datetime, _loaded:date, _loaded:_datetime](#_nowdate,-_now:datetime,-_loaded:date,-_loaded:_datetime) | ||||||
|     + [_last_edit:contributor, _last_edit:contributor:uid, _last_edit:changeset, _last_edit:timestamp, _version_number, _backend](#_last_editcontributor,-_last_edit:contributor:uid,-_last_edit:changeset,-_last_edit:timestamp,-_version_number,-_backend) |     + [_last_edit:contributor, _last_edit:contributor:uid, _last_edit:changeset, _last_edit:timestamp, _version_number, _backend](#_last_editcontributor,-_last_edit:contributor:uid,-_last_edit:changeset,-_last_edit:timestamp,-_version_number,-_backend) | ||||||
|  | @ -27,7 +29,9 @@ | ||||||
|     + [memberships](#memberships) |     + [memberships](#memberships) | ||||||
|     + [get](#get) |     + [get](#get) | ||||||
| 
 | 
 | ||||||
|  Metatags are extra tags available, in order to display more data or to give better questions. | 
 | ||||||
|  | 
 | ||||||
|  | Metatags are extra tags available, in order to display more data or to give better questions. | ||||||
| 
 | 
 | ||||||
| The are calculated automatically on every feature when the data arrives in the webbrowser. This document gives an overview of the available metatags. | The are calculated automatically on every feature when the data arrives in the webbrowser. This document gives an overview of the available metatags. | ||||||
| 
 | 
 | ||||||
|  | @ -104,7 +108,7 @@ The country code of the property (with latlon2country) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ### _isOpen, _isOpen:description  | ### _isOpen  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -160,7 +164,9 @@ Rewrites tags from 'generic_key:both:property' as 'generic_key:left:property' an | ||||||
| 
 | 
 | ||||||
| Adds the geometry type as property. This is identical to the GoeJson geometry type and is one of `Point`,`LineString`, `Polygon` and exceptionally `MultiPolygon` or `MultiLineString` | Adds the geometry type as property. This is identical to the GoeJson geometry type and is one of `Point`,`LineString`, `Polygon` and exceptionally `MultiPolygon` or `MultiLineString` | ||||||
| 
 | 
 | ||||||
|   | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  Calculating tags with Javascript  |  Calculating tags with Javascript  | ||||||
| ---------------------------------- | ---------------------------------- | ||||||
|  |  | ||||||
|  | @ -3,7 +3,9 @@ | ||||||
|  Available types for text fields  |  Available types for text fields  | ||||||
| ================================= | ================================= | ||||||
| 
 | 
 | ||||||
|  ## Table of contents | 
 | ||||||
|  | 
 | ||||||
|  | ## Table of contents | ||||||
| 
 | 
 | ||||||
| 1. [Available types for text fields](#available-types-for-text-fields) | 1. [Available types for text fields](#available-types-for-text-fields) | ||||||
|     + [string](#string) |     + [string](#string) | ||||||
|  | @ -23,37 +25,51 @@ | ||||||
|     + [opening_hours](#opening_hours) |     + [opening_hours](#opening_hours) | ||||||
|     + [color](#color) |     + [color](#color) | ||||||
| 
 | 
 | ||||||
|  The listed types here trigger a special input element. Use them in `tagrendering.freeform.type` of your tagrendering to activate them  | 
 | ||||||
|  | 
 | ||||||
|  | The listed types here trigger a special input element. Use them in `tagrendering.freeform.type` of your tagrendering to activate them | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### string  | ### string  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A basic string  | A basic string | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### text  | ### text  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A string, but allows input of longer strings more comfortably and supports newlines (a text area)  | A string, but allows input of longer strings more comfortably and supports newlines (a text area) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### date  | ### date  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A date  | A date | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### direction  | ### direction  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)  | A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### length  | ### length  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A geographical length in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"]  | A geographical length in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### wikidata  | ### wikidata  | ||||||
| 
 | 
 | ||||||
|  | @ -98,55 +114,73 @@ removePostfixes | remove these snippets of text from the end of the passed strin | ||||||
|         } |         } | ||||||
|     ] |     ] | ||||||
| } | } | ||||||
| ```  | ``` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### int  | ### int  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A number  | A number | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### nat  | ### nat  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A positive number or zero  | A positive number or zero | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### pnat  | ### pnat  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A strict positive number  | A strict positive number | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### float  | ### float  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A decimal  | A decimal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### pfloat  | ### pfloat  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A positive decimal (incl zero)  | A positive decimal (incl zero) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### email  | ### email  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| An email adress  | An email adress | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### url  | ### url  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A url  | A url | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### phone  | ### phone  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| A phone number  | A phone number | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### opening_hours  | ### opening_hours  | ||||||
| 
 | 
 | ||||||
|  | @ -187,7 +221,9 @@ postfix | Piece of text that will always be added to the end of the generated op | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| *Don't forget to pass the prefix and postfix in the rendering as well*: `{opening_hours_table(opening_hours,yes @ &LPARENS, &RPARENS )`  | *Don't forget to pass the prefix and postfix in the rendering as well*: `{opening_hours_table(opening_hours,yes @ &LPARENS, &RPARENS )` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### color  | ### color  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,9 @@ | ||||||
|  Special tag renderings  |  Special tag renderings  | ||||||
| ======================== | ======================== | ||||||
| 
 | 
 | ||||||
|  ## Table of contents | 
 | ||||||
|  | 
 | ||||||
|  | ## Table of contents | ||||||
| 
 | 
 | ||||||
| 1. [Special tag renderings](#special-tag-renderings) | 1. [Special tag renderings](#special-tag-renderings) | ||||||
|     + [all_tags](#all_tags) |     + [all_tags](#all_tags) | ||||||
|  | @ -51,7 +53,13 @@ | ||||||
|     + [auto_apply](#auto_apply) |     + [auto_apply](#auto_apply) | ||||||
|       * [Example usage of auto_apply](#example-usage-of-auto_apply) |       * [Example usage of auto_apply](#example-usage-of-auto_apply) | ||||||
| 
 | 
 | ||||||
|  In a tagrendering, some special values are substituted by an advanced UI-element. This allows advanced features and visualizations to be reused by custom themes or even to query third-party API's. General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_name(args):cssStyle}`. Note that you _do not_ need to use quotes around your arguments, the comma is enough to separate them. This also implies you cannot use a comma in your args  | 
 | ||||||
|  | 
 | ||||||
|  | In a tagrendering, some special values are substituted by an advanced UI-element. This allows advanced features and visualizations to be reused by custom themes or even to query third-party API's. | ||||||
|  | 
 | ||||||
|  | General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_name(args):cssStyle}`. Note that you _do not_ need to use quotes around your arguments, the comma is enough to separate them. This also implies you cannot use a comma in your args | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### all_tags  | ### all_tags  | ||||||
| 
 | 
 | ||||||
|  | @ -59,7 +67,9 @@ | ||||||
| 
 | 
 | ||||||
| #### Example usage of all_tags  | #### Example usage of all_tags  | ||||||
| 
 | 
 | ||||||
|  `{all_tags()}`  |  `{all_tags()}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### image_carousel  | ### image_carousel  | ||||||
| 
 | 
 | ||||||
|  | @ -72,7 +82,9 @@ image key/prefix (multiple values allowed if comma-seperated) | image,mapillary, | ||||||
| 
 | 
 | ||||||
| #### Example usage of image_carousel  | #### Example usage of image_carousel  | ||||||
| 
 | 
 | ||||||
|  `{image_carousel(image,mapillary,image,wikidata,wikimedia_commons,image,image)}`  |  `{image_carousel(image,mapillary,image,wikidata,wikimedia_commons,image,image)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### image_upload  | ### image_upload  | ||||||
| 
 | 
 | ||||||
|  | @ -86,7 +98,9 @@ label | Add image | The text to show on the button | ||||||
| 
 | 
 | ||||||
| #### Example usage of image_upload  | #### Example usage of image_upload  | ||||||
| 
 | 
 | ||||||
|  `{image_upload(image,Add image)}`  |  `{image_upload(image,Add image)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### wikipedia  | ### wikipedia  | ||||||
| 
 | 
 | ||||||
|  | @ -99,7 +113,9 @@ keyToShowWikipediaFor | wikidata | Use the wikidata entry from this key to show | ||||||
| 
 | 
 | ||||||
| #### Example usage of wikipedia  | #### Example usage of wikipedia  | ||||||
| 
 | 
 | ||||||
|  `{wikipedia()}` is a basic example, `{wikipedia(name:etymology:wikidata)}` to show the wikipedia page of whom the feature was named after. Also remember that these can be styled, e.g. `{wikipedia():max-height: 10rem}` to limit the height  |  `{wikipedia()}` is a basic example, `{wikipedia(name:etymology:wikidata)}` to show the wikipedia page of whom the feature was named after. Also remember that these can be styled, e.g. `{wikipedia():max-height: 10rem}` to limit the height | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### minimap  | ### minimap  | ||||||
| 
 | 
 | ||||||
|  | @ -113,7 +129,9 @@ idKey | id | (Matches all resting arguments) This argument should be the key of | ||||||
| 
 | 
 | ||||||
| #### Example usage of minimap  | #### Example usage of minimap  | ||||||
| 
 | 
 | ||||||
|  `{minimap()}`, `{minimap(17, id, _list_of_embedded_feature_ids_calculated_by_calculated_tag):height:10rem; border: 2px solid black}`  |  `{minimap()}`, `{minimap(17, id, _list_of_embedded_feature_ids_calculated_by_calculated_tag):height:10rem; border: 2px solid black}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### sided_minimap  | ### sided_minimap  | ||||||
| 
 | 
 | ||||||
|  | @ -126,7 +144,9 @@ side | _undefined_ | The side to show, either `left` or `right` | ||||||
| 
 | 
 | ||||||
| #### Example usage of sided_minimap  | #### Example usage of sided_minimap  | ||||||
| 
 | 
 | ||||||
|  `{sided_minimap(left)}`  |  `{sided_minimap(left)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### reviews  | ### reviews  | ||||||
| 
 | 
 | ||||||
|  | @ -140,7 +160,9 @@ fallback | _undefined_ | The identifier to use, if <i>tags[subjectKey]</i> as sp | ||||||
| 
 | 
 | ||||||
| #### Example usage of reviews  | #### Example usage of reviews  | ||||||
| 
 | 
 | ||||||
|  `{reviews()}` for a vanilla review, `{reviews(name, play_forest)}` to review a play forest. If a name is known, the name will be used as identifier, otherwise 'play_forest' is used  |  `{reviews()}` for a vanilla review, `{reviews(name, play_forest)}` to review a play forest. If a name is known, the name will be used as identifier, otherwise 'play_forest' is used | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### opening_hours_table  | ### opening_hours_table  | ||||||
| 
 | 
 | ||||||
|  | @ -155,7 +177,9 @@ postfix | _empty string_ | Remove this string from the end of the value before p | ||||||
| 
 | 
 | ||||||
| #### Example usage of opening_hours_table  | #### Example usage of opening_hours_table  | ||||||
| 
 | 
 | ||||||
|  A normal opening hours table can be invoked with `{opening_hours_table()}`. A table for e.g. conditional access with opening hours can be `{opening_hours_table(access:conditional, no @ &LPARENS, &RPARENS)}`  |  A normal opening hours table can be invoked with `{opening_hours_table()}`. A table for e.g. conditional access with opening hours can be `{opening_hours_table(access:conditional, no @ &LPARENS, &RPARENS)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### live  | ### live  | ||||||
| 
 | 
 | ||||||
|  | @ -170,7 +194,9 @@ path | _undefined_ | The path (or shorthand) that should be returned | ||||||
| 
 | 
 | ||||||
| #### Example usage of live  | #### Example usage of live  | ||||||
| 
 | 
 | ||||||
|  {live({url},{url:format},hour)} {live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)}  |  {live({url},{url:format},hour)} {live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### histogram  | ### histogram  | ||||||
| 
 | 
 | ||||||
|  | @ -186,7 +212,9 @@ colors* | _undefined_ | (Matches all resting arguments - optional) Matches a reg | ||||||
| 
 | 
 | ||||||
| #### Example usage of histogram  | #### Example usage of histogram  | ||||||
| 
 | 
 | ||||||
|  `{histogram('some_key')}` with properties being `{some_key: ['a','b','a','c']} to create a histogram  |  `{histogram('some_key')}` with properties being `{some_key: ['a','b','a','c']} to create a histogram | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### share_link  | ### share_link  | ||||||
| 
 | 
 | ||||||
|  | @ -199,7 +227,9 @@ url | _undefined_ | The url to share (default: current URL) | ||||||
| 
 | 
 | ||||||
| #### Example usage of share_link  | #### Example usage of share_link  | ||||||
| 
 | 
 | ||||||
|  {share_link()} to share the current page, {share_link(<some_url>)} to share the given url  |  {share_link()} to share the current page, {share_link(<some_url>)} to share the given url | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### canonical  | ### canonical  | ||||||
| 
 | 
 | ||||||
|  | @ -212,7 +242,9 @@ key | _undefined_ | The key of the tag to give the canonical text for | ||||||
| 
 | 
 | ||||||
| #### Example usage of canonical  | #### Example usage of canonical  | ||||||
| 
 | 
 | ||||||
|  {canonical(length)} will give 42 metre (in french)  |  {canonical(length)} will give 42 metre (in french) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### import_button  | ### import_button  | ||||||
| 
 | 
 | ||||||
|  | @ -273,7 +305,9 @@ max_snap_distance | 5 | The maximum distance that the imported point will be mov | ||||||
| 
 | 
 | ||||||
| #### Example usage of import_button  | #### Example usage of import_button  | ||||||
| 
 | 
 | ||||||
|  `{import_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5)}`  |  `{import_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### import_way_button  | ### import_way_button  | ||||||
| 
 | 
 | ||||||
|  | @ -338,7 +372,9 @@ snap_to_layer_max_distance | 0.1 | Distance to distort the geometry to snap to t | ||||||
| 
 | 
 | ||||||
| #### Example usage of import_way_button  | #### Example usage of import_way_button  | ||||||
| 
 | 
 | ||||||
|  `{import_way_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5,,1,,0.1)}`  |  `{import_way_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,,5,,1,,0.1)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### conflate_button  | ### conflate_button  | ||||||
| 
 | 
 | ||||||
|  | @ -398,7 +434,9 @@ way_to_conflate | _undefined_ | The key, of which the corresponding value is the | ||||||
| 
 | 
 | ||||||
| #### Example usage of conflate_button  | #### Example usage of conflate_button  | ||||||
| 
 | 
 | ||||||
|  `{conflate_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,)}`  |  `{conflate_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,)}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### multi_apply  | ### multi_apply  | ||||||
| 
 | 
 | ||||||
|  | @ -415,7 +453,9 @@ overwrite | _undefined_ | If set to 'true', the tags on the other objects will a | ||||||
| 
 | 
 | ||||||
| #### Example usage of multi_apply  | #### Example usage of multi_apply  | ||||||
| 
 | 
 | ||||||
|  {multi_apply(_features_with_the_same_name_within_100m, name:etymology:wikidata;name:etymology, Apply etymology information on all nearby objects with the same name)}  |  {multi_apply(_features_with_the_same_name_within_100m, name:etymology:wikidata;name:etymology, Apply etymology information on all nearby objects with the same name)} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### tag_apply  | ### tag_apply  | ||||||
| 
 | 
 | ||||||
|  | @ -444,7 +484,9 @@ id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tag | ||||||
| 
 | 
 | ||||||
| #### Example usage of tag_apply  | #### Example usage of tag_apply  | ||||||
| 
 | 
 | ||||||
|  `{tag_apply(survey_date=$_now:date, Surveyed today!)}`, `{tag_apply(addr:street=$addr:street, Apply the address, apply_icon.svg, _closest_osm_id)  |  `{tag_apply(survey_date=$_now:date, Surveyed today!)}`, `{tag_apply(addr:street=$addr:street, Apply the address, apply_icon.svg, _closest_osm_id) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### export_as_gpx  | ### export_as_gpx  | ||||||
| 
 | 
 | ||||||
|  | @ -452,7 +494,9 @@ id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tag | ||||||
| 
 | 
 | ||||||
| #### Example usage of export_as_gpx  | #### Example usage of export_as_gpx  | ||||||
| 
 | 
 | ||||||
|  `{export_as_gpx()}`  |  `{export_as_gpx()}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### export_as_geojson  | ### export_as_geojson  | ||||||
| 
 | 
 | ||||||
|  | @ -460,7 +504,9 @@ id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tag | ||||||
| 
 | 
 | ||||||
| #### Example usage of export_as_geojson  | #### Example usage of export_as_geojson  | ||||||
| 
 | 
 | ||||||
|  `{export_as_geojson()}`  |  `{export_as_geojson()}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### open_in_iD  | ### open_in_iD  | ||||||
| 
 | 
 | ||||||
|  | @ -468,7 +514,9 @@ id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tag | ||||||
| 
 | 
 | ||||||
| #### Example usage of open_in_iD  | #### Example usage of open_in_iD  | ||||||
| 
 | 
 | ||||||
|  `{open_in_iD()}`  |  `{open_in_iD()}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### clear_location_history  | ### clear_location_history  | ||||||
| 
 | 
 | ||||||
|  | @ -476,7 +524,9 @@ id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tag | ||||||
| 
 | 
 | ||||||
| #### Example usage of clear_location_history  | #### Example usage of clear_location_history  | ||||||
| 
 | 
 | ||||||
|  `{clear_location_history()}`  |  `{clear_location_history()}` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### auto_apply  | ### auto_apply  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -72,7 +72,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "defibrillator", |       "key": "defibrillator", | ||||||
|       "description": "Layer 'Defibrillators' shows <span class='line-through'>defibrillator</span> with a fixed text, namely 'There is no info about the type of device' (in the MapComplete.osm.be theme 'Open AED Map') Picking this answer will delete the key defibrillator.", |       "description": "Layer 'Defibrillators' shows  with a fixed text, namely 'There is no info about the type of device' (in the MapComplete.osm.be theme 'Open AED Map') Picking this answer will delete the key defibrillator.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -39,14 +39,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Bicycle libraries')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Bicycle library' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Bicycle libraries')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Bicycle library' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Bicycle libraries')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Bicycle library' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Bicycle libraries')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Bicycle libraries')" | ||||||
|  | @ -57,12 +69,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Bicycle library' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle libraries')", |       "description": "Layer 'Bicycle library' shows fee=no with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle libraries')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Bicycle library' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle libraries') Picking this answer will delete the key charge.", |       "description": "Layer 'Bicycle library' shows fee=no with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle libraries') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -37,12 +37,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Binoculars' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Free to use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Binoculars')", |       "description": "Layer 'Binoculars' shows fee=no with a fixed text, namely 'Free to use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Binoculars')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Binoculars' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Free to use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Binoculars') Picking this answer will delete the key charge.", |       "description": "Layer 'Binoculars' shows fee=no with a fixed text, namely 'Free to use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Binoculars') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
|   "data_format": 1, |   "data_format": 1, | ||||||
|   "project": { |   "project": { | ||||||
|     "name": "MapComplete Open Bookcase Map", |     "name": "MapComplete Open Bookcase Map", | ||||||
|     "description": "A public bookcase is a small streetside cabinet, box, old phone boot or some other objects where books are stored", |     "description": "A public bookcase is a small streetside cabinet, box, old phone booth or some other objects where books are stored", | ||||||
|     "project_url": "https://mapcomplete.osm.be/bookcases", |     "project_url": "https://mapcomplete.osm.be/bookcases", | ||||||
|     "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", |     "doc_url": "https://github.com/pietervdvn/MapComplete/tree/master/assets/themes/", | ||||||
|     "icon_url": "https://mapcomplete.osm.be/assets/themes/bookcases/bookcase.svg", |     "icon_url": "https://mapcomplete.osm.be/assets/themes/bookcases/bookcase.svg", | ||||||
|  | @ -37,12 +37,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "noname", |       "key": "noname", | ||||||
|       "description": "Layer 'Bookcases' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'This bookcase doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", |       "description": "Layer 'Bookcases' shows noname=yes with a fixed text, namely 'This bookcase doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "name", |       "key": "name", | ||||||
|       "description": "Layer 'Bookcases' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'This bookcase doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key name.", |       "description": "Layer 'Bookcases' shows noname=yes with a fixed text, namely 'This bookcase doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key name.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -76,7 +76,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Bookcases' shows <span class='line-through'>indoor</span> with a fixed text, namely 'This bookcase is located outdoors' (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key indoor.", |       "description": "Layer 'Bookcases' shows  with a fixed text, namely 'This bookcase is located outdoors' (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -99,22 +99,22 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "brand", |       "key": "brand", | ||||||
|       "description": "Layer 'Bookcases' shows brand=Little Free Library&<span class='line-through'>nobrand</span> with a fixed text, namely 'Part of the network 'Little Free Library'' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", |       "description": "Layer 'Bookcases' shows brand=Little Free Library with a fixed text, namely 'Part of the network 'Little Free Library'' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", | ||||||
|       "value": "Little Free Library" |       "value": "Little Free Library" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "nobrand", |       "key": "nobrand", | ||||||
|       "description": "Layer 'Bookcases' shows brand=Little Free Library&<span class='line-through'>nobrand</span> with a fixed text, namely 'Part of the network 'Little Free Library'' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key nobrand.", |       "description": "Layer 'Bookcases' shows brand=Little Free Library with a fixed text, namely 'Part of the network 'Little Free Library'' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key nobrand.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "nobrand", |       "key": "nobrand", | ||||||
|       "description": "Layer 'Bookcases' shows nobrand=yes&<span class='line-through'>brand</span> with a fixed text, namely 'This public bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", |       "description": "Layer 'Bookcases' shows nobrand=yes with a fixed text, namely 'This public bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "brand", |       "key": "brand", | ||||||
|       "description": "Layer 'Bookcases' shows nobrand=yes&<span class='line-through'>brand</span> with a fixed text, namely 'This public bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key brand.", |       "description": "Layer 'Bookcases' shows nobrand=yes with a fixed text, namely 'This public bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key brand.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -123,17 +123,17 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "nobrand", |       "key": "nobrand", | ||||||
|       "description": "Layer 'Bookcases' shows nobrand=yes&<span class='line-through'>brand</span>&<span class='line-through'>ref</span> with a fixed text, namely 'This bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", |       "description": "Layer 'Bookcases' shows nobrand=yes with a fixed text, namely 'This bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "brand", |       "key": "brand", | ||||||
|       "description": "Layer 'Bookcases' shows nobrand=yes&<span class='line-through'>brand</span>&<span class='line-through'>ref</span> with a fixed text, namely 'This bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key brand.", |       "description": "Layer 'Bookcases' shows nobrand=yes with a fixed text, namely 'This bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key brand.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "ref", |       "key": "ref", | ||||||
|       "description": "Layer 'Bookcases' shows nobrand=yes&<span class='line-through'>brand</span>&<span class='line-through'>ref</span> with a fixed text, namely 'This bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key ref.", |       "description": "Layer 'Bookcases' shows nobrand=yes with a fixed text, namely 'This bookcase is not part of a bigger network' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Bookcase Map') Picking this answer will delete the key ref.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -83,14 +83,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cafés and pubs')" |       "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cafés and pubs')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Cafés and pubs' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Cafés and pubs')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cafés and pubs')" |       "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cafés and pubs')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Cafés and pubs' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Cafés and pubs')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cafés and pubs')" |       "description": "Layer 'Cafés and pubs' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cafés and pubs')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Cafés and pubs' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Cafés and pubs')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "payment:cash", |       "key": "payment:cash", | ||||||
|       "description": "Layer 'Cafés and pubs' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cafés and pubs')", |       "description": "Layer 'Cafés and pubs' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cafés and pubs')", | ||||||
|  |  | ||||||
|  | @ -42,12 +42,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Camper sites' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Can be used for free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Campersites')", |       "description": "Layer 'Camper sites' shows fee=no with a fixed text, namely 'Can be used for free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Campersites')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Camper sites' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Can be used for free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Campersites') Picking this answer will delete the key charge.", |       "description": "Layer 'Camper sites' shows fee=no with a fixed text, namely 'Can be used for free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Campersites') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -895,42 +895,42 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee:conditional", |       "key": "fee:conditional", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key fee:conditional.", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key fee:conditional.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key charge.", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "authentication:none", |       "key": "authentication:none", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=yes with a fixed text, namely 'Free to use (without authenticating)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee:conditional", |       "key": "fee:conditional", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key fee:conditional.", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key fee:conditional.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key charge.", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "authentication:none", |       "key": "authentication:none", | ||||||
|       "description": "Layer 'Charging stations' shows fee=no&<span class='line-through'>fee:conditional</span>&<span class='line-through'>charge</span>&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows fee=no&authentication:none=no with a fixed text, namely 'Free to use, but one has to authenticate' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -945,12 +945,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Charging stations' shows fee=yes&<span class='line-through'>fee:conditional</span> with a fixed text, namely 'Paid use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows fee=yes with a fixed text, namely 'Paid use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee:conditional", |       "key": "fee:conditional", | ||||||
|       "description": "Layer 'Charging stations' shows fee=yes&<span class='line-through'>fee:conditional</span> with a fixed text, namely 'Paid use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key fee:conditional.", |       "description": "Layer 'Charging stations' shows fee=yes with a fixed text, namely 'Paid use' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key fee:conditional.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -1111,7 +1111,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "level", |       "key": "level", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>level</span> with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key level.", |       "description": "Layer 'Charging stations' shows  with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key level.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -1125,127 +1125,127 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "planned:amenity", |       "key": "planned:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", |       "description": "Layer 'Charging stations' shows amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "construction:amenity", |       "key": "construction:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", |       "description": "Layer 'Charging stations' shows amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "disused:amenity", |       "key": "disused:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", |       "description": "Layer 'Charging stations' shows amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Charging stations' shows amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "amenity", |       "key": "amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "charging_station" |       "value": "charging_station" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "planned:amenity", |       "key": "planned:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", |       "description": "Layer 'Charging stations' shows operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "construction:amenity", |       "key": "construction:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", |       "description": "Layer 'Charging stations' shows operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "disused:amenity", |       "key": "disused:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", |       "description": "Layer 'Charging stations' shows operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "broken" |       "value": "broken" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "amenity", |       "key": "amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "charging_station" |       "value": "charging_station" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "planned:amenity", |       "key": "planned:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows planned:amenity=charging_station&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows planned:amenity=charging_station with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "charging_station" |       "value": "charging_station" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "construction:amenity", |       "key": "construction:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows planned:amenity=charging_station&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", |       "description": "Layer 'Charging stations' shows planned:amenity=charging_station with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "disused:amenity", |       "key": "disused:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows planned:amenity=charging_station&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", |       "description": "Layer 'Charging stations' shows planned:amenity=charging_station with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Charging stations' shows planned:amenity=charging_station&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Charging stations' shows planned:amenity=charging_station with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "amenity", |       "key": "amenity", | ||||||
|       "description": "Layer 'Charging stations' shows planned:amenity=charging_station&<span class='line-through'>construction:amenity</span>&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", |       "description": "Layer 'Charging stations' shows planned:amenity=charging_station with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "planned:amenity", |       "key": "planned:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&construction:amenity=charging_station&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", |       "description": "Layer 'Charging stations' shows construction:amenity=charging_station with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "construction:amenity", |       "key": "construction:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&construction:amenity=charging_station&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows construction:amenity=charging_station with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "charging_station" |       "value": "charging_station" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "disused:amenity", |       "key": "disused:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&construction:amenity=charging_station&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", |       "description": "Layer 'Charging stations' shows construction:amenity=charging_station with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&construction:amenity=charging_station&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Charging stations' shows construction:amenity=charging_station with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "amenity", |       "key": "amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&construction:amenity=charging_station&<span class='line-through'>disused:amenity</span>&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", |       "description": "Layer 'Charging stations' shows construction:amenity=charging_station with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "planned:amenity", |       "key": "planned:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&disused:amenity=charging_station&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", |       "description": "Layer 'Charging stations' shows disused:amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "construction:amenity", |       "key": "construction:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&disused:amenity=charging_station&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", |       "description": "Layer 'Charging stations' shows disused:amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "disused:amenity", |       "key": "disused:amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&disused:amenity=charging_station&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", |       "description": "Layer 'Charging stations' shows disused:amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", | ||||||
|       "value": "charging_station" |       "value": "charging_station" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&disused:amenity=charging_station&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Charging stations' shows disused:amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "amenity", |       "key": "amenity", | ||||||
|       "description": "Layer 'Charging stations' shows <span class='line-through'>planned:amenity</span>&<span class='line-through'>construction:amenity</span>&disused:amenity=charging_station&<span class='line-through'>operational_status</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", |       "description": "Layer 'Charging stations' shows disused:amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -36,14 +36,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Climbing club' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing club' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Climbing club' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Climbing club' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing club' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Climbing club' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Climbing club' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing club' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Climbing club' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Climbing club' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing club' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  | @ -202,14 +214,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Climbing gyms' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Climbing gyms' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Climbing gyms' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Climbing Map')" |       "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Climbing Map')" | ||||||
|  | @ -361,12 +385,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "noname", |       "key": "noname", | ||||||
|       "description": "Layer 'Climbing routes' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'This climbing route doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", |       "description": "Layer 'Climbing routes' shows noname=yes with a fixed text, namely 'This climbing route doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "name", |       "key": "name", | ||||||
|       "description": "Layer 'Climbing routes' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'This climbing route doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key name.", |       "description": "Layer 'Climbing routes' shows noname=yes with a fixed text, namely 'This climbing route doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key name.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -542,12 +566,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "noname", |       "key": "noname", | ||||||
|       "description": "Layer 'Climbing opportunities' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'This climbing opportunity doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", |       "description": "Layer 'Climbing opportunities' shows noname=yes with a fixed text, namely 'This climbing opportunity doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "name", |       "key": "name", | ||||||
|       "description": "Layer 'Climbing opportunities' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'This climbing opportunity doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key name.", |       "description": "Layer 'Climbing opportunities' shows noname=yes with a fixed text, namely 'This climbing opportunity doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key name.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -132,7 +132,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Cycleways and roads' shows <span class='line-through'>cyclestreet</span> with a fixed text, namely 'This is not a cyclestreet.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'Cycleways and roads' shows  with a fixed text, namely 'This is not a cyclestreet.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -568,6 +568,16 @@ | ||||||
|       "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", |       "description": "Layer 'Barriers' shows bicycle=no with a fixed text, namely 'A cyclist can not go past this.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "barrier", | ||||||
|  |       "description": "Layer 'Barriers' shows barrier=bollard with a fixed text, namely 'This is a single bollard in the road' (in the MapComplete.osm.be theme 'Bicycle infrastructure')", | ||||||
|  |       "value": "bollard" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "key": "barrier", | ||||||
|  |       "description": "Layer 'Barriers' shows barrier=cycle_barrier with a fixed text, namely 'This is a cycle barrier slowing down cyclists' (in the MapComplete.osm.be theme 'Bicycle infrastructure')", | ||||||
|  |       "value": "cycle_barrier" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "bollard", |       "key": "bollard", | ||||||
|       "description": "Layer 'Barriers' shows bollard=removable with a fixed text, namely 'Removable bollard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", |       "description": "Layer 'Barriers' shows bollard=removable with a fixed text, namely 'Removable bollard' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", | ||||||
|  | @ -661,7 +671,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "crossing_ref", |       "key": "crossing_ref", | ||||||
|       "description": "Layer 'Crossings' shows <span class='line-through'>crossing_ref</span> with a fixed text, namely 'This is not a zebra crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key crossing_ref.", |       "description": "Layer 'Crossings' shows  with a fixed text, namely 'This is not a zebra crossing' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure') Picking this answer will delete the key crossing_ref.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -33,57 +33,57 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "maxspeed", |       "key": "maxspeed", | ||||||
|       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "30" |       "value": "30" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "overtaking:motor_vehicle", |       "key": "overtaking:motor_vehicle", | ||||||
|       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Cyclestreets' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows cyclestreet=yes&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'Cyclestreets' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows <span class='line-through'>cyclestreet</span>&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'Cyclestreets' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows <span class='line-through'>cyclestreet</span>&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Cyclestreets' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'Cyclestreets' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Cyclestreets' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'Cyclestreets' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "overtaking:motor_vehicle", |       "key": "overtaking:motor_vehicle", | ||||||
|       "description": "Layer 'Cyclestreets' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.", |       "description": "Layer 'Cyclestreets' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -113,57 +113,57 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "maxspeed", |       "key": "maxspeed", | ||||||
|       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "30" |       "value": "30" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "overtaking:motor_vehicle", |       "key": "overtaking:motor_vehicle", | ||||||
|       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'Future cyclestreet' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows <span class='line-through'>cyclestreet</span>&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'Future cyclestreet' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows <span class='line-through'>cyclestreet</span>&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'Future cyclestreet' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'Future cyclestreet' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'Future cyclestreet' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'Future cyclestreet' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "overtaking:motor_vehicle", |       "key": "overtaking:motor_vehicle", | ||||||
|       "description": "Layer 'Future cyclestreet' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.", |       "description": "Layer 'Future cyclestreet' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -203,57 +203,57 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "maxspeed", |       "key": "maxspeed", | ||||||
|       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "30" |       "value": "30" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "overtaking:motor_vehicle", |       "key": "overtaking:motor_vehicle", | ||||||
|       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'All streets' shows cyclestreet=yes&maxspeed=30&overtaking:motor_vehicle=no with a fixed text, namely 'This street is a cyclestreet (and has a speed limit of 30 km/h)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows cyclestreet=yes&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'All streets' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows cyclestreet=yes&<span class='line-through'>proposed:cyclestreet</span> with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'All streets' shows cyclestreet=yes with a fixed text, namely 'This street is a cyclestreet' (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows <span class='line-through'>cyclestreet</span>&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'All streets' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows <span class='line-through'>cyclestreet</span>&proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", |       "description": "Layer 'All streets' shows proposed:cyclestreet=yes with a fixed text, namely 'This street will become a cyclstreet soon' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "cyclestreet", |       "key": "cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", |       "description": "Layer 'All streets' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "proposed:cyclestreet", |       "key": "proposed:cyclestreet", | ||||||
|       "description": "Layer 'All streets' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", |       "description": "Layer 'All streets' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key proposed:cyclestreet.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "overtaking:motor_vehicle", |       "key": "overtaking:motor_vehicle", | ||||||
|       "description": "Layer 'All streets' shows <span class='line-through'>cyclestreet</span>&<span class='line-through'>proposed:cyclestreet</span>&<span class='line-through'>overtaking:motor_vehicle</span> with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.", |       "description": "Layer 'All streets' shows  with a fixed text, namely 'This street is not a cyclestreet' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclestreets') Picking this answer will delete the key overtaking:motor_vehicle.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -343,14 +343,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Bicycle library' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Bicycle library' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Bicycle library' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bicycle library' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  | @ -361,12 +373,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Bicycle library' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')", |       "description": "Layer 'Bicycle library' shows fee=no with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Bicycle library' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key charge.", |       "description": "Layer 'Bicycle library' shows fee=no with a fixed text, namely 'Lending a bicycle is free' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -477,7 +489,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Bike stations (repair, pump or both)' shows <span class='line-through'>opening_hours</span> with a fixed text, namely 'Always open' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key opening_hours.", |       "description": "Layer 'Bike stations (repair, pump or both)' shows  with a fixed text, namely 'Always open' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key opening_hours.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -507,7 +519,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "service:bicycle:pump:operational_status", |       "key": "service:bicycle:pump:operational_status", | ||||||
|       "description": "Layer 'Bike stations (repair, pump or both)' shows <span class='line-through'>service:bicycle:pump:operational_status</span> with a fixed text, namely 'The bike pump is operational' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key service:bicycle:pump:operational_status.", |       "description": "Layer 'Bike stations (repair, pump or both)' shows  with a fixed text, namely 'The bike pump is operational' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key service:bicycle:pump:operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -570,7 +582,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "level", |       "key": "level", | ||||||
|       "description": "Layer 'Bike stations (repair, pump or both)' shows <span class='line-through'>level</span> with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key level.", |       "description": "Layer 'Bike stations (repair, pump or both)' shows  with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key level.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -609,7 +621,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Bicycle tube vending machine' shows <span class='line-through'>operational_status</span> with a fixed text, namely 'This vending machine works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Bicycle tube vending machine' shows  with a fixed text, namely 'This vending machine works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -721,7 +733,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Drinking water' shows <span class='line-through'>operational_status</span> with a fixed text, namely 'This drinking water works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Drinking water' shows  with a fixed text, namely 'This drinking water works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -813,14 +825,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Bike related object' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bike related object' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Bike related object' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Bike related object' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bike related object' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Bike related object' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Bike related object' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bike related object' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Bike related object' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Bike related object' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" |       "description": "Layer 'Bike related object' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')" | ||||||
|  | @ -976,7 +1000,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "location", |       "key": "location", | ||||||
|       "description": "Layer 'Bike parking' shows <span class='line-through'>location</span> with a fixed text, namely 'Surface level parking' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key location.", |       "description": "Layer 'Bike parking' shows  with a fixed text, namely 'Surface level parking' (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists') Picking this answer will delete the key location.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Drinking water' shows <span class='line-through'>operational_status</span> with a fixed text, namely 'This drinking water works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Drinking Water') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Drinking water' shows  with a fixed text, namely 'This drinking water works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Drinking Water') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -62,82 +62,82 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>entrance</span>&indoor=door with a fixed text, namely 'This is an indoor door, separating a room or a corridor within a single building' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key entrance.", |       "description": "Layer 'Entrance' shows indoor=door with a fixed text, namely 'This is an indoor door, separating a room or a corridor within a single building' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key entrance.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>entrance</span>&indoor=door with a fixed text, namely 'This is an indoor door, separating a room or a corridor within a single building' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows indoor=door with a fixed text, namely 'This is an indoor door, separating a room or a corridor within a single building' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "door" |       "value": "door" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=main with a fixed text, namely 'This is the main entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=main with a fixed text, namely 'This is the main entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=main with a fixed text, namely 'This is the main entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=main with a fixed text, namely 'This is the main entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "main" |       "value": "main" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=secondary with a fixed text, namely 'This is a secondary entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=secondary with a fixed text, namely 'This is a secondary entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=secondary with a fixed text, namely 'This is a secondary entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=secondary with a fixed text, namely 'This is a secondary entrance' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "secondary" |       "value": "secondary" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=service with a fixed text, namely 'This is a service entrance - normally only used for employees, delivery, ...' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=service with a fixed text, namely 'This is a service entrance - normally only used for employees, delivery, ...' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=service with a fixed text, namely 'This is a service entrance - normally only used for employees, delivery, ...' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=service with a fixed text, namely 'This is a service entrance - normally only used for employees, delivery, ...' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "service" |       "value": "service" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=exit with a fixed text, namely 'This is an exit where one can not enter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=exit with a fixed text, namely 'This is an exit where one can not enter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=exit with a fixed text, namely 'This is an exit where one can not enter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=exit with a fixed text, namely 'This is an exit where one can not enter' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "exit" |       "value": "exit" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=entrance with a fixed text, namely 'This is an entrance where one can only enter (but not exit)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=entrance with a fixed text, namely 'This is an entrance where one can only enter (but not exit)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=entrance with a fixed text, namely 'This is an entrance where one can only enter (but not exit)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=entrance with a fixed text, namely 'This is an entrance where one can only enter (but not exit)' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "entrance" |       "value": "entrance" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=emergency with a fixed text, namely 'This is emergency exit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=emergency with a fixed text, namely 'This is emergency exit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=emergency with a fixed text, namely 'This is emergency exit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=emergency with a fixed text, namely 'This is emergency exit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "emergency" |       "value": "emergency" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=home with a fixed text, namely 'This is the entrance to a private home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", |       "description": "Layer 'Entrance' shows entrance=home with a fixed text, namely 'This is the entrance to a private home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "entrance", |       "key": "entrance", | ||||||
|       "description": "Layer 'Entrance' shows <span class='line-through'>indoor</span>&entrance=home with a fixed text, namely 'This is the entrance to a private home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", |       "description": "Layer 'Entrance' shows entrance=home with a fixed text, namely 'This is the entrance to a private home' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Entrances')", | ||||||
|       "value": "home" |       "value": "home" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -58,14 +58,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Restaurants and fast food')" |       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Restaurants and fast food')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Restaurants and fast food' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Restaurants and fast food')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Restaurants and fast food')" |       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Restaurants and fast food')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Restaurants and fast food' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Restaurants and fast food')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Restaurants and fast food')" |       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Restaurants and fast food')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Restaurants and fast food' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Restaurants and fast food')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "payment:cash", |       "key": "payment:cash", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", |       "description": "Layer 'Restaurants and fast food' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", | ||||||
|  |  | ||||||
|  | @ -63,14 +63,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Fries shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Friturenkaart')" |       "description": "Layer 'Fries shop' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Fries shop' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Fries shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Friturenkaart')" |       "description": "Layer 'Fries shop' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Fries shop' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Fries shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Friturenkaart')" |       "description": "Layer 'Fries shop' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Fries shop' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "payment:cash", |       "key": "payment:cash", | ||||||
|       "description": "Layer 'Fries shop' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", |       "description": "Layer 'Fries shop' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", | ||||||
|  | @ -398,14 +410,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Friturenkaart')" |       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Restaurants and fast food' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Friturenkaart')" |       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Restaurants and fast food' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Friturenkaart')" |       "description": "Layer 'Restaurants and fast food' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Restaurants and fast food' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Friturenkaart')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "payment:cash", |       "key": "payment:cash", | ||||||
|       "description": "Layer 'Restaurants and fast food' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", |       "description": "Layer 'Restaurants and fast food' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "hackerspace", |       "key": "hackerspace", | ||||||
|       "description": "Layer 'Hackerspace' shows <span class='line-through'>hackerspace</span> with a fixed text, namely 'This is a traditional (software oriented) hackerspace' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hackerspaces') Picking this answer will delete the key hackerspace.", |       "description": "Layer 'Hackerspace' shows  with a fixed text, namely 'This is a traditional (software oriented) hackerspace' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hackerspaces') Picking this answer will delete the key hackerspace.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -33,14 +33,26 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Hackerspaces')" |       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Hackerspace' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "email", |       "key": "email", | ||||||
|       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Hackerspaces')" |       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'email' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:email", | ||||||
|  |       "description": "Layer 'Hackerspace' shows contact:email~^..*$ with a fixed text, namely '<a href='mailto:{contact:email}' target='_blank'>{contact:email}</a>' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "phone", |       "key": "phone", | ||||||
|       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Hackerspaces')" |       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'phone' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:phone", | ||||||
|  |       "description": "Layer 'Hackerspace' shows contact:phone~^..*$ with a fixed text, namely '<a href='tel:{contact:phone}'>{contact:phone}</a>' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Hackerspaces')" |       "description": "Layer 'Hackerspace' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Hackerspaces')" | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "colour", |       "key": "colour", | ||||||
|       "description": "Layer 'Map of hydrants' shows <span class='line-through'>colour</span> with a fixed text, namely 'The hydrant color is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key colour.", |       "description": "Layer 'Map of hydrants' shows  with a fixed text, namely 'The hydrant color is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key colour.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -40,7 +40,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fire_hydrant:type", |       "key": "fire_hydrant:type", | ||||||
|       "description": "Layer 'Map of hydrants' shows <span class='line-through'>fire_hydrant:type</span> with a fixed text, namely 'The hydrant type is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key fire_hydrant:type.", |       "description": "Layer 'Map of hydrants' shows  with a fixed text, namely 'The hydrant type is unknown.' (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key fire_hydrant:type.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -70,22 +70,22 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "disused:emergency", |       "key": "disused:emergency", | ||||||
|       "description": "Layer 'Map of hydrants' shows disused:emergency=fire_hydrant&<span class='line-through'>emergency</span> with a fixed text, namely 'The hydrant is unavailable' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.')", |       "description": "Layer 'Map of hydrants' shows disused:emergency=fire_hydrant with a fixed text, namely 'The hydrant is unavailable' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.')", | ||||||
|       "value": "fire_hydrant" |       "value": "fire_hydrant" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "emergency", |       "key": "emergency", | ||||||
|       "description": "Layer 'Map of hydrants' shows disused:emergency=fire_hydrant&<span class='line-through'>emergency</span> with a fixed text, namely 'The hydrant is unavailable' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key emergency.", |       "description": "Layer 'Map of hydrants' shows disused:emergency=fire_hydrant with a fixed text, namely 'The hydrant is unavailable' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key emergency.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "removed:emergency", |       "key": "removed:emergency", | ||||||
|       "description": "Layer 'Map of hydrants' shows removed:emergency=fire_hydrant&<span class='line-through'>emergency</span> with a fixed text, namely 'The hydrant has been removed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.')", |       "description": "Layer 'Map of hydrants' shows removed:emergency=fire_hydrant with a fixed text, namely 'The hydrant has been removed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.')", | ||||||
|       "value": "fire_hydrant" |       "value": "fire_hydrant" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "emergency", |       "key": "emergency", | ||||||
|       "description": "Layer 'Map of hydrants' shows removed:emergency=fire_hydrant&<span class='line-through'>emergency</span> with a fixed text, namely 'The hydrant has been removed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key emergency.", |       "description": "Layer 'Map of hydrants' shows removed:emergency=fire_hydrant with a fixed text, namely 'The hydrant has been removed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Hydrants, Extinguishers, Fire stations, and Ambulance stations.') Picking this answer will delete the key emergency.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -42,12 +42,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "map_source", |       "key": "map_source", | ||||||
|       "description": "Layer 'Maps' shows map_source=OpenStreetMap&<span class='line-through'>not:map_source</span> with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'A map of maps')", |       "description": "Layer 'Maps' shows map_source=OpenStreetMap with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'A map of maps')", | ||||||
|       "value": "OpenStreetMap" |       "value": "OpenStreetMap" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "not:map_source", |       "key": "not:map_source", | ||||||
|       "description": "Layer 'Maps' shows map_source=OpenStreetMap&<span class='line-through'>not:map_source</span> with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'A map of maps') Picking this answer will delete the key not:map_source.", |       "description": "Layer 'Maps' shows map_source=OpenStreetMap with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'A map of maps') Picking this answer will delete the key not:map_source.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operational_status", |       "key": "operational_status", | ||||||
|       "description": "Layer 'Drinking water' shows <span class='line-through'>operational_status</span> with a fixed text, namely 'This drinking water works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key operational_status.", |       "description": "Layer 'Drinking water' shows  with a fixed text, namely 'This drinking water works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key operational_status.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -83,17 +83,17 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "shelter", |       "key": "shelter", | ||||||
|       "description": "Layer 'Vogelkijkhutten' shows shelter=no&<span class='line-through'>building</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'Vogelkijkwand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Vogelkijkhutten' shows shelter=no with a fixed text, namely 'Vogelkijkwand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "building", |       "key": "building", | ||||||
|       "description": "Layer 'Vogelkijkhutten' shows shelter=no&<span class='line-through'>building</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'Vogelkijkwand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key building.", |       "description": "Layer 'Vogelkijkhutten' shows shelter=no with a fixed text, namely 'Vogelkijkwand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key building.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "amenity", |       "key": "amenity", | ||||||
|       "description": "Layer 'Vogelkijkhutten' shows shelter=no&<span class='line-through'>building</span>&<span class='line-through'>amenity</span> with a fixed text, namely 'Vogelkijkwand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key amenity.", |       "description": "Layer 'Vogelkijkhutten' shows shelter=no with a fixed text, namely 'Vogelkijkwand' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key amenity.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -202,12 +202,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "map_source", |       "key": "map_source", | ||||||
|       "description": "Layer 'Maps' shows map_source=OpenStreetMap&<span class='line-through'>not:map_source</span> with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Maps' shows map_source=OpenStreetMap with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "OpenStreetMap" |       "value": "OpenStreetMap" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "not:map_source", |       "key": "not:map_source", | ||||||
|       "description": "Layer 'Maps' shows map_source=OpenStreetMap&<span class='line-through'>not:map_source</span> with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key not:map_source.", |       "description": "Layer 'Maps' shows map_source=OpenStreetMap with a fixed text, namely 'This map is based on OpenStreetMap' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key not:map_source.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -288,52 +288,52 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "access", |       "key": "access", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=yes&<span class='line-through'>fee</span> with a fixed text, namely 'Vrij toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Natuurgebied' shows access=yes with a fixed text, namely 'Vrij toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=yes&<span class='line-through'>fee</span> with a fixed text, namely 'Vrij toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", |       "description": "Layer 'Natuurgebied' shows access=yes with a fixed text, namely 'Vrij toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "access", |       "key": "access", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=no&<span class='line-through'>fee</span> with a fixed text, namely 'Niet toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Natuurgebied' shows access=no with a fixed text, namely 'Niet toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=no&<span class='line-through'>fee</span> with a fixed text, namely 'Niet toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", |       "description": "Layer 'Natuurgebied' shows access=no with a fixed text, namely 'Niet toegankelijk' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "access", |       "key": "access", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=private&<span class='line-through'>fee</span> with a fixed text, namely 'Niet toegankelijk, want privégebied' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Natuurgebied' shows access=private with a fixed text, namely 'Niet toegankelijk, want privégebied' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "private" |       "value": "private" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=private&<span class='line-through'>fee</span> with a fixed text, namely 'Niet toegankelijk, want privégebied' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", |       "description": "Layer 'Natuurgebied' shows access=private with a fixed text, namely 'Niet toegankelijk, want privégebied' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "access", |       "key": "access", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=permissive&<span class='line-through'>fee</span> with a fixed text, namely 'Toegankelijk, ondanks dat het privegebied is' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Natuurgebied' shows access=permissive with a fixed text, namely 'Toegankelijk, ondanks dat het privegebied is' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "permissive" |       "value": "permissive" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=permissive&<span class='line-through'>fee</span> with a fixed text, namely 'Toegankelijk, ondanks dat het privegebied is' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", |       "description": "Layer 'Natuurgebied' shows access=permissive with a fixed text, namely 'Toegankelijk, ondanks dat het privegebied is' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "access", |       "key": "access", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=guided&<span class='line-through'>fee</span> with a fixed text, namely 'Enkel toegankelijk met een gids of tijdens een activiteit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Natuurgebied' shows access=guided with a fixed text, namely 'Enkel toegankelijk met een gids of tijdens een activiteit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "guided" |       "value": "guided" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Natuurgebied' shows access=guided&<span class='line-through'>fee</span> with a fixed text, namely 'Enkel toegankelijk met een gids of tijdens een activiteit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", |       "description": "Layer 'Natuurgebied' shows access=guided with a fixed text, namely 'Enkel toegankelijk met een gids of tijdens een activiteit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key fee.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -374,12 +374,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "noname", |       "key": "noname", | ||||||
|       "description": "Layer 'Natuurgebied' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'Dit gebied heeft geen naam' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", |       "description": "Layer 'Natuurgebied' shows noname=yes with a fixed text, namely 'Dit gebied heeft geen naam' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "name", |       "key": "name", | ||||||
|       "description": "Layer 'Natuurgebied' shows noname=yes&<span class='line-through'>name</span> with a fixed text, namely 'Dit gebied heeft geen naam' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key name.", |       "description": "Layer 'Natuurgebied' shows noname=yes with a fixed text, namely 'Dit gebied heeft geen naam' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key name.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -427,7 +427,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "wikidata", |       "key": "wikidata", | ||||||
|       "description": "Layer 'Natuurgebied' shows <span class='line-through'>wikidata</span> with a fixed text, namely 'No Wikipedia page has been linked yet' (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key wikidata.", |       "description": "Layer 'Natuurgebied' shows  with a fixed text, namely 'No Wikipedia page has been linked yet' (in the MapComplete.osm.be theme 'De Natuur in') Picking this answer will delete the key wikidata.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -52,18 +52,22 @@ | ||||||
|       "key": "website", |       "key": "website", | ||||||
|       "description": "Layer 'Observation towers' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Observation towers')" |       "description": "Layer 'Observation towers' shows and asks freeform values for key 'website' (in the MapComplete.osm.be theme 'Observation towers')" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "key": "contact:website", | ||||||
|  |       "description": "Layer 'Observation towers' shows contact:website~^..*$ with a fixed text, namely '<a href='{contact:website}' target='_blank'>{contact:website}</a>' (in the MapComplete.osm.be theme 'Observation towers')" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Observation towers' shows and asks freeform values for key 'charge' (in the MapComplete.osm.be theme 'Observation towers')" |       "description": "Layer 'Observation towers' shows and asks freeform values for key 'charge' (in the MapComplete.osm.be theme 'Observation towers')" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "fee", |       "key": "fee", | ||||||
|       "description": "Layer 'Observation towers' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Free to visit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')", |       "description": "Layer 'Observation towers' shows fee=no with a fixed text, namely 'Free to visit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "charge", |       "key": "charge", | ||||||
|       "description": "Layer 'Observation towers' shows fee=no&<span class='line-through'>charge</span> with a fixed text, namely 'Free to visit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers') Picking this answer will delete the key charge.", |       "description": "Layer 'Observation towers' shows fee=no with a fixed text, namely 'Free to visit' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers') Picking this answer will delete the key charge.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -102,7 +106,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "wikidata", |       "key": "wikidata", | ||||||
|       "description": "Layer 'Observation towers' shows <span class='line-through'>wikidata</span> with a fixed text, namely 'No Wikipedia page has been linked yet' (in the MapComplete.osm.be theme 'Observation towers') Picking this answer will delete the key wikidata.", |       "description": "Layer 'Observation towers' shows  with a fixed text, namely 'No Wikipedia page has been linked yet' (in the MapComplete.osm.be theme 'Observation towers') Picking this answer will delete the key wikidata.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -99,7 +99,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "access", |       "key": "access", | ||||||
|       "description": "Layer 'Playgrounds' shows <span class='line-through'>access</span> with a fixed text, namely 'Accessible to the general public' (in the MapComplete.osm.be theme 'Playgrounds') Picking this answer will delete the key access.", |       "description": "Layer 'Playgrounds' shows  with a fixed text, namely 'Accessible to the general public' (in the MapComplete.osm.be theme 'Playgrounds') Picking this answer will delete the key access.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -161,7 +161,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Playgrounds' shows <span class='line-through'>opening_hours</span> with a fixed text, namely 'Always accessible' (in the MapComplete.osm.be theme 'Playgrounds') Picking this answer will delete the key opening_hours.", |       "description": "Layer 'Playgrounds' shows  with a fixed text, namely 'Always accessible' (in the MapComplete.osm.be theme 'Playgrounds') Picking this answer will delete the key opening_hours.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -148,7 +148,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "opening_hours", |       "key": "opening_hours", | ||||||
|       "description": "Layer 'Sport pitches' shows <span class='line-through'>opening_hours</span> with a fixed text, namely '24/7 toegankelijk' (in the MapComplete.osm.be theme 'Sport pitches') Picking this answer will delete the key opening_hours.", |       "description": "Layer 'Sport pitches' shows  with a fixed text, namely '24/7 toegankelijk' (in the MapComplete.osm.be theme 'Sport pitches') Picking this answer will delete the key opening_hours.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -75,12 +75,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "camera:direction", |       "key": "camera:direction", | ||||||
|       "description": "Layer 'Surveillance camera's' shows <span class='line-through'>camera:direction</span>&direction~^..*$ with a fixed text, namely 'Films to a compass heading of {direction}' (in the MapComplete.osm.be theme 'Surveillance under Surveillance') Picking this answer will delete the key camera:direction.", |       "description": "Layer 'Surveillance camera's' shows direction~^..*$ with a fixed text, namely 'Films to a compass heading of {direction}' (in the MapComplete.osm.be theme 'Surveillance under Surveillance') Picking this answer will delete the key camera:direction.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "direction", |       "key": "direction", | ||||||
|       "description": "Layer 'Surveillance camera's' shows <span class='line-through'>camera:direction</span>&direction~^..*$ with a fixed text, namely 'Films to a compass heading of {direction}' (in the MapComplete.osm.be theme 'Surveillance under Surveillance')" |       "description": "Layer 'Surveillance camera's' shows direction~^..*$ with a fixed text, namely 'Films to a compass heading of {direction}' (in the MapComplete.osm.be theme 'Surveillance under Surveillance')" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "operator", |       "key": "operator", | ||||||
|  | @ -113,7 +113,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "indoor", |       "key": "indoor", | ||||||
|       "description": "Layer 'Surveillance camera's' shows <span class='line-through'>indoor</span> with a fixed text, namely 'This camera is probably located outdoors' (in the MapComplete.osm.be theme 'Surveillance under Surveillance') Picking this answer will delete the key indoor.", |       "description": "Layer 'Surveillance camera's' shows  with a fixed text, namely 'This camera is probably located outdoors' (in the MapComplete.osm.be theme 'Surveillance under Surveillance') Picking this answer will delete the key indoor.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -193,7 +193,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "level", |       "key": "level", | ||||||
|       "description": "Layer 'Toilets' shows <span class='line-through'>level</span> with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Open Toilet Map') Picking this answer will delete the key level.", |       "description": "Layer 'Toilets' shows  with a fixed text, namely 'Located on the ground floor' (in the MapComplete.osm.be theme 'Open Toilet Map') Picking this answer will delete the key level.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -106,12 +106,12 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "name", |       "key": "name", | ||||||
|       "description": "Layer 'Tree' shows <span class='line-through'>name</span>&noname=yes with a fixed text, namely 'The tree does not have a name.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees') Picking this answer will delete the key name.", |       "description": "Layer 'Tree' shows noname=yes with a fixed text, namely 'The tree does not have a name.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees') Picking this answer will delete the key name.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "noname", |       "key": "noname", | ||||||
|       "description": "Layer 'Tree' shows <span class='line-through'>name</span>&noname=yes with a fixed text, namely 'The tree does not have a name.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees')", |       "description": "Layer 'Tree' shows noname=yes with a fixed text, namely 'The tree does not have a name.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -136,22 +136,22 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "heritage", |       "key": "heritage", | ||||||
|       "description": "Layer 'Tree' shows heritage=yes&<span class='line-through'>heritage:operator</span> with a fixed text, namely 'Registered as heritage by a different organisation' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees')", |       "description": "Layer 'Tree' shows heritage=yes with a fixed text, namely 'Registered as heritage by a different organisation' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees')", | ||||||
|       "value": "yes" |       "value": "yes" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "heritage:operator", |       "key": "heritage:operator", | ||||||
|       "description": "Layer 'Tree' shows heritage=yes&<span class='line-through'>heritage:operator</span> with a fixed text, namely 'Registered as heritage by a different organisation' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees') Picking this answer will delete the key heritage:operator.", |       "description": "Layer 'Tree' shows heritage=yes with a fixed text, namely 'Registered as heritage by a different organisation' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees') Picking this answer will delete the key heritage:operator.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "heritage", |       "key": "heritage", | ||||||
|       "description": "Layer 'Tree' shows heritage=no&<span class='line-through'>heritage:operator</span> with a fixed text, namely 'Not registered as heritage' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees')", |       "description": "Layer 'Tree' shows heritage=no with a fixed text, namely 'Not registered as heritage' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees')", | ||||||
|       "value": "no" |       "value": "no" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "heritage:operator", |       "key": "heritage:operator", | ||||||
|       "description": "Layer 'Tree' shows heritage=no&<span class='line-through'>heritage:operator</span> with a fixed text, namely 'Not registered as heritage' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees') Picking this answer will delete the key heritage:operator.", |       "description": "Layer 'Tree' shows heritage=no with a fixed text, namely 'Not registered as heritage' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Trees') Picking this answer will delete the key heritage:operator.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "waste", |       "key": "waste", | ||||||
|       "description": "Layer 'Waste Basket' shows <span class='line-through'>waste</span> with a fixed text, namely 'A waste basket for general waste' (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key waste.", |       "description": "Layer 'Waste Basket' shows  with a fixed text, namely 'A waste basket for general waste' (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key waste.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  | @ -47,27 +47,27 @@ | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "vending", |       "key": "vending", | ||||||
|       "description": "Layer 'Waste Basket' shows vending=dog_excrement_bag&<span class='line-through'>not:vending</span> with a fixed text, namely 'This waste basket has a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket')", |       "description": "Layer 'Waste Basket' shows vending=dog_excrement_bag with a fixed text, namely 'This waste basket has a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket')", | ||||||
|       "value": "dog_excrement_bag" |       "value": "dog_excrement_bag" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "not:vending", |       "key": "not:vending", | ||||||
|       "description": "Layer 'Waste Basket' shows vending=dog_excrement_bag&<span class='line-through'>not:vending</span> with a fixed text, namely 'This waste basket has a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key not:vending.", |       "description": "Layer 'Waste Basket' shows vending=dog_excrement_bag with a fixed text, namely 'This waste basket has a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key not:vending.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "not:vending", |       "key": "not:vending", | ||||||
|       "description": "Layer 'Waste Basket' shows not:vending=dog_excrement_bag&<span class='line-through'>vending</span> with a fixed text, namely 'This waste basket <b>does not</b> have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket')", |       "description": "Layer 'Waste Basket' shows not:vending=dog_excrement_bag with a fixed text, namely 'This waste basket <b>does not</b> have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket')", | ||||||
|       "value": "dog_excrement_bag" |       "value": "dog_excrement_bag" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "vending", |       "key": "vending", | ||||||
|       "description": "Layer 'Waste Basket' shows not:vending=dog_excrement_bag&<span class='line-through'>vending</span> with a fixed text, namely 'This waste basket <b>does not</b> have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key vending.", |       "description": "Layer 'Waste Basket' shows not:vending=dog_excrement_bag with a fixed text, namely 'This waste basket <b>does not</b> have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key vending.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "key": "vending", |       "key": "vending", | ||||||
|       "description": "Layer 'Waste Basket' shows <span class='line-through'>vending</span> with a fixed text, namely 'This waste basket <b>does not</b> have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key vending.", |       "description": "Layer 'Waste Basket' shows  with a fixed text, namely 'This waste basket <b>does not</b> have a dispenser for (dog) excrement bags' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Waste Basket') Picking this answer will delete the key vending.", | ||||||
|       "value": "" |       "value": "" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -3,7 +3,9 @@ | ||||||
|  URL-parameters and URL-hash  |  URL-parameters and URL-hash  | ||||||
| ============================= | ============================= | ||||||
| 
 | 
 | ||||||
|  ## Table of contents | 
 | ||||||
|  | 
 | ||||||
|  | ## Table of contents | ||||||
| 
 | 
 | ||||||
| 1. [URL-parameters and URL-hash](#url-parameters-and-url-hash) | 1. [URL-parameters and URL-hash](#url-parameters-and-url-hash) | ||||||
|   - [What is a URL parameter?](#what-is-a-url-parameter) |   - [What is a URL parameter?](#what-is-a-url-parameter) | ||||||
|  | @ -31,128 +33,186 @@ | ||||||
|   - [background](#background) |   - [background](#background) | ||||||
|   - [layer-<layer-id>](#layer-<layer-id>) |   - [layer-<layer-id>](#layer-<layer-id>) | ||||||
| 
 | 
 | ||||||
|  This document gives an overview of which URL-parameters can be used to influence MapComplete.  | 
 | ||||||
|  | 
 | ||||||
|  | This document gives an overview of which URL-parameters can be used to influence MapComplete. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  What is a URL parameter?  |  What is a URL parameter?  | ||||||
| -------------------------- | -------------------------- | ||||||
| 
 | 
 | ||||||
|  "URL-parameters are extra parts of the URL used to set the state. For example, if the url is `https://mapcomplete.osm.be/cyclofix?lat=51.0&lon=4.3&z=5&test=true#node/1234`, the URL-parameters are stated in the part between the `?` and the `#`. There are multiple, all separated by `&`, namely:   | 
 | ||||||
|  | 
 | ||||||
|  | "URL-parameters are extra parts of the URL used to set the state. | ||||||
|  | 
 | ||||||
|  | For example, if the url is `https://mapcomplete.osm.be/cyclofix?lat=51.0&lon=4.3&z=5&test=true#node/1234`, the URL-parameters are stated in the part between the `?` and the `#`. There are multiple, all separated by `&`, namely:  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|   - The url-parameter `lat` is `51.0` in this instance |   - The url-parameter `lat` is `51.0` in this instance | ||||||
|   - The url-parameter `lon` is `4.3` in this instance |   - The url-parameter `lon` is `4.3` in this instance | ||||||
|   - The url-parameter `z` is `5` in this instance |   - The url-parameter `z` is `5` in this instance | ||||||
|   - The url-parameter `test` is `true` in this instance |   - The url-parameter `test` is `true` in this instance | ||||||
|  Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case.  | 
 | ||||||
|  | 
 | ||||||
|  | Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  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. The default value is _true_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-search  |  fs-search  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the search bar The default value is _true_  |  Disables/Enables the search bar 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 The default value is _true_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-filter  |  fs-filter  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the filter The default value is _true_  |  Disables/Enables the filter 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) 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 The default value is _true_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-iframe-popout  |  fs-iframe-popout  | ||||||
| ------------------ | ------------------ | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the iframe-popout button. 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) The default value is _true_  |  Disables/Enables the iframe-popout button. 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) 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 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 The default value is _true_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-geolocation  |  fs-geolocation  | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
|  Disables/Enables the geolocation button The default value is _true_  |  Disables/Enables the geolocation button The default value is _true_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-all-questions  |  fs-all-questions  | ||||||
| ------------------ | ------------------ | ||||||
| 
 | 
 | ||||||
|  Always show all questions The default value is _false_  |  Always show all questions The default value is _false_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-export  |  fs-export  | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  Enable the export as GeoJSON and CSV button The default value is _false_  |  Enable the export as GeoJSON and CSV button The default value is _false_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  fs-pdf  |  fs-pdf  | ||||||
| -------- | -------- | ||||||
| 
 | 
 | ||||||
|  Enable the PDF download button The default value is _false_  |  Enable the PDF download button 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' The default value is _osm_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  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 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 The default value is _false_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  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 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 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 The default value is _30_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  overpassMaxZoom  |  overpassMaxZoom  | ||||||
| ----------------- | ----------------- | ||||||
| 
 | 
 | ||||||
|   point to switch between OSM-api and overpass The default value is _17_  |   point to switch between OSM-api and overpass The default value is _17_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  osmApiTileSize  |  osmApiTileSize  | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
|  Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _18_  |  Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _18_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  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 The default value is _osm_ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|  layer-<layer-id>  |  layer-<layer-id>  | ||||||
| ------------------------ | ------------------------ | ||||||
|  |  | ||||||
|  | @ -45,7 +45,6 @@ class OverlapFunc implements ExtraFunction { | ||||||
|         return (...layerIds: string[]) => { |         return (...layerIds: string[]) => { | ||||||
|             const result: { feat: any, overlap: number }[] = [] |             const result: { feat: any, overlap: number }[] = [] | ||||||
| 
 | 
 | ||||||
|             console.log("Calculating overlap") |  | ||||||
|             const bbox = BBox.get(feat) |             const bbox = BBox.get(feat) | ||||||
| 
 | 
 | ||||||
|             for (const layerId of layerIds) { |             for (const layerId of layerIds) { | ||||||
|  |  | ||||||
|  | @ -23,6 +23,10 @@ import List from "../../UI/Base/List"; | ||||||
| import Link from "../../UI/Base/Link"; | import Link from "../../UI/Base/Link"; | ||||||
| import {Utils} from "../../Utils"; | import {Utils} from "../../Utils"; | ||||||
| import * as icons from "../../assets/tagRenderings/icons.json" | import * as icons from "../../assets/tagRenderings/icons.json" | ||||||
|  | import {TagsFilter} from "../../Logic/Tags/TagsFilter"; | ||||||
|  | import Table from "../../UI/Base/Table"; | ||||||
|  | import Svg from "../../Svg"; | ||||||
|  | import Img from "../../UI/Base/Img"; | ||||||
| 
 | 
 | ||||||
| export default class LayerConfig extends WithContextLoader { | export default class LayerConfig extends WithContextLoader { | ||||||
| 
 | 
 | ||||||
|  | @ -32,11 +36,11 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|     public readonly source: SourceConfig; |     public readonly source: SourceConfig; | ||||||
|     public readonly calculatedTags: [string, string, boolean][]; |     public readonly calculatedTags: [string, string, boolean][]; | ||||||
|     public readonly doNotDownload: boolean; |     public readonly doNotDownload: boolean; | ||||||
|     public readonly  passAllFeatures: boolean; |     public readonly passAllFeatures: boolean; | ||||||
|     public readonly isShown: TagRenderingConfig; |     public readonly isShown: TagRenderingConfig; | ||||||
|     public minzoom: number; |     public minzoom: number; | ||||||
|     public minzoomVisible: number; |     public minzoomVisible: number; | ||||||
|     public readonly  maxzoom: number; |     public readonly maxzoom: number; | ||||||
|     public readonly title?: TagRenderingConfig; |     public readonly title?: TagRenderingConfig; | ||||||
|     public readonly titleIcons: TagRenderingConfig[]; |     public readonly titleIcons: TagRenderingConfig[]; | ||||||
| 
 | 
 | ||||||
|  | @ -75,10 +79,10 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|             throw "Layer " + this.id + " does not define a osmTags in the source section - these should always be present, even for geojson layers (" + context + ")" |             throw "Layer " + this.id + " does not define a osmTags in the source section - these should always be present, even for geojson layers (" + context + ")" | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if(json.id.toLowerCase() !== json.id){ |         if (json.id.toLowerCase() !== json.id) { | ||||||
|             throw `${context}: The id of a layer should be lowercase: ${json.id}` |             throw `${context}: The id of a layer should be lowercase: ${json.id}` | ||||||
|         } |         } | ||||||
|         if(json.id.match(/[a-z0-9-_]/) == null){ |         if (json.id.match(/[a-z0-9-_]/) == null) { | ||||||
|             throw `${context}: The id of a layer should match [a-z0-9-_]*: ${json.id}` |             throw `${context}: The id of a layer should match [a-z0-9-_]*: ${json.id}` | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | @ -138,7 +142,7 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|                 const index = kv.indexOf("="); |                 const index = kv.indexOf("="); | ||||||
|                 let key = kv.substring(0, index); |                 let key = kv.substring(0, index); | ||||||
|                 const isStrict = key.endsWith(':') |                 const isStrict = key.endsWith(':') | ||||||
|                 if(isStrict){ |                 if (isStrict) { | ||||||
|                     key = key.substr(0, key.length - 1) |                     key = key.substr(0, key.length - 1) | ||||||
|                 } |                 } | ||||||
|                 const code = kv.substring(index + 1); |                 const code = kv.substring(index + 1); | ||||||
|  | @ -174,7 +178,7 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|                         preferredBackground: undefined |                         preferredBackground: undefined | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                  | 
 | ||||||
|                 let snapToLayers: string[]; |                 let snapToLayers: string[]; | ||||||
|                 if (typeof pr.preciseInput.snapToLayer === "string") { |                 if (typeof pr.preciseInput.snapToLayer === "string") { | ||||||
|                     snapToLayers = [pr.preciseInput.snapToLayer] |                     snapToLayers = [pr.preciseInput.snapToLayer] | ||||||
|  | @ -395,7 +399,7 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|             const textToReplace = rewriteGroup.rewrite.sourceString |             const textToReplace = rewriteGroup.rewrite.sourceString | ||||||
|             const targets = rewriteGroup.rewrite.into |             const targets = rewriteGroup.rewrite.into | ||||||
|             for (const target of targets) { |             for (const target of targets) { | ||||||
|                 const parsedRenderings = this.ParseTagRenderings(tagRenderings,  { |                 const parsedRenderings = this.ParseTagRenderings(tagRenderings, { | ||||||
|                     prepConfig: tr => prepConfig(textToReplace, target, tr) |                     prepConfig: tr => prepConfig(textToReplace, target, tr) | ||||||
|                 }) |                 }) | ||||||
| 
 | 
 | ||||||
|  | @ -434,13 +438,13 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|             if (addedByDefault) { |             if (addedByDefault) { | ||||||
|                 extraProps.push("**This layer is included automatically in every theme. This layer might contain no points**") |                 extraProps.push("**This layer is included automatically in every theme. This layer might contain no points**") | ||||||
|             } |             } | ||||||
|             if(this.shownByDefault === false){ |             if (this.shownByDefault === false) { | ||||||
|                 extraProps.push('This layer is not visible by default and must be enabled in the filter by the user. ') |                 extraProps.push('This layer is not visible by default and must be enabled in the filter by the user. ') | ||||||
|             } |             } | ||||||
|             if (this.title === undefined) { |             if (this.title === undefined) { | ||||||
|                 extraProps.push("This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.") |                 extraProps.push("This layer cannot be toggled in the filter view. If you import this layer in your theme, override `title` to make this toggleable.") | ||||||
|             } |             } | ||||||
|             if(this.title === undefined && this.shownByDefault === false){ |             if (this.title === undefined && this.shownByDefault === false) { | ||||||
|                 extraProps.push("This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging), enable it by setting the URL-parameter layer-<id>=true") |                 extraProps.push("This layer is not visible by default and the visibility cannot be toggled, effectively resulting in a fully hidden layer. This can be useful, e.g. to calculate some metatags. If you want to render this layer (e.g. for debugging), enable it by setting the URL-parameter layer-<id>=true") | ||||||
|             } |             } | ||||||
|             if (this.name === undefined) { |             if (this.name === undefined) { | ||||||
|  | @ -449,6 +453,10 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|             if (this.mapRendering.length === 0) { |             if (this.mapRendering.length === 0) { | ||||||
|                 extraProps.push("Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`") |                 extraProps.push("Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`") | ||||||
|             } |             } | ||||||
|  | 
 | ||||||
|  |             if (this.source.geojsonSource !== undefined) { | ||||||
|  |                 extraProps.push("<img src='../warning.svg' height='1rem'/> This layer is loaded from an external source, namely `" + this.source.geojsonSource + "`") | ||||||
|  |             } | ||||||
|         } else { |         } else { | ||||||
|             extraProps.push("This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.") |             extraProps.push("This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.") | ||||||
|         } |         } | ||||||
|  | @ -462,22 +470,70 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         for (const dep of dependencies) { |         for (const dep of dependencies) { | ||||||
|             extraProps.push(new Combine(["This layer will automatically load ", new Link(dep.neededLayer, "#"+dep.neededLayer)," into the layout as it depends on it: ", dep.reason, "("+dep.context+")"])) |             extraProps.push(new Combine(["This layer will automatically load ", new Link(dep.neededLayer, "./" + dep.neededLayer + ".md"), " into the layout as it depends on it: ", dep.reason, "(" + dep.context + ")"])) | ||||||
|         } |         } | ||||||
|          | 
 | ||||||
|         for(const revDep of layerIsNeededBy?.get(this.id) ?? []){ |         for (const revDep of layerIsNeededBy?.get(this.id) ?? []) { | ||||||
|             extraProps.push(new Combine(["This layer is needed as dependency for layer",new Link(revDep, "#"+revDep)])) |             extraProps.push(new Combine(["This layer is needed as dependency for layer", new Link(revDep, "#" + revDep)])) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         const icon = Array.from(this.mapRendering[0]?.icon?.ExtractImages(true) ?? [])[0] | ||||||
|  |         let iconImg = "" | ||||||
|  |         if (icon !== undefined) { | ||||||
|  |             iconImg = `<img src='https://mapcomplete.osm.be/${icon}' height="100px"> ` | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         let neededTags: TagsFilter[] = [this.source.osmTags] | ||||||
|  |         if (this.source.osmTags["and"] !== undefined) { | ||||||
|  |             neededTags = this.source.osmTags["and"] | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         let tableRows = Utils.NoNull(this.tagRenderings.map(tr => tr.FreeformValues()) | ||||||
|  |             .map(values => { | ||||||
|  |                 if (values == undefined) { | ||||||
|  |                     return undefined | ||||||
|  |                 } | ||||||
|  |                 const embedded: (Link | string)[] = values.values?.map(v => Link.OsmWiki(values.key, v, true)) ?? ["_no preset options defined, or no values in them_"] | ||||||
|  |                 return [ | ||||||
|  |                     new Combine([ | ||||||
|  |                         new Link( | ||||||
|  |                         "<img src='https://mapcomplete.osm.be/assets/svg/statistics.svg' height='18px'>", | ||||||
|  |                         "https://taginfo.openstreetmap.org/keys/"+values.key+"#values" | ||||||
|  |                     ),Link.OsmWiki(values.key) | ||||||
|  |                     ]), | ||||||
|  |                     values.type === undefined ? "Multiple choice" : new Link(values.type, "../SpecialInputElements.md#" + values.type), | ||||||
|  |                     new Combine(embedded) | ||||||
|  |                 ]; | ||||||
|  |             })) | ||||||
|  | 
 | ||||||
|  |         let quickOverview: BaseUIElement = undefined; | ||||||
|  |         if (tableRows.length > 0) { | ||||||
|  |             quickOverview = new Combine([ | ||||||
|  |                 "**Warning** This quick overview is incomplete", | ||||||
|  |                 new Table(["attribute", "type", "values which are supported by this layer"], tableRows) | ||||||
|  |             ]).SetClass("flex-col flex") | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return new Combine([ |         return new Combine([ | ||||||
|             new Title(this.id, 3), |             new Combine([ | ||||||
|             this.description, |                 new Title(this.id, 1), | ||||||
|  |                 iconImg, | ||||||
|  |                 this.description, | ||||||
|  |                 "\n" | ||||||
|  |             ]).SetClass("flex flex-col"), | ||||||
|  |             new List(extraProps), | ||||||
|  |             ...usingLayer, | ||||||
| 
 | 
 | ||||||
|             new Link("Go to the source code", `../assets/layers/${this.id}/${this.id}.json`), |             new Link("Go to the source code", `../assets/layers/${this.id}/${this.id}.json`), | ||||||
| 
 | 
 | ||||||
|             new List(extraProps), |             new Title("Basic tags for this layer", 2), | ||||||
|             ...usingLayer |             "Elements must have the all of following tags to be shown on this layer:", | ||||||
|         ]).SetClass("flex flex-col") |             new List(neededTags.map(t => t.asHumanString(true, false, {}))), | ||||||
|  | 
 | ||||||
|  |             new Title("Supported attributes", 2), | ||||||
|  |             quickOverview, | ||||||
|  |             ...this.tagRenderings.map(tr => tr.GenerateDocumentation()) | ||||||
|  |         ]).SetClass("flex-col") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public CustomCodeSnippets(): string[] { |     public CustomCodeSnippets(): string[] { | ||||||
|  | @ -486,10 +542,10 @@ export default class LayerConfig extends WithContextLoader { | ||||||
|         } |         } | ||||||
|         return this.calculatedTags.map((code) => code[1]); |         return this.calculatedTags.map((code) => code[1]); | ||||||
|     } |     } | ||||||
|      | 
 | ||||||
|     AllTagRenderings(): TagRenderingConfig[]{ |     AllTagRenderings(): TagRenderingConfig[] { | ||||||
|         return  Utils.NoNull([...this.tagRenderings, ...this.titleIcons, this.title, this.isShown]) |         return Utils.NoNull([...this.tagRenderings, ...this.titleIcons, this.title, this.isShown]) | ||||||
| } |     } | ||||||
| 
 | 
 | ||||||
|     public ExtractImages(): Set<string> { |     public ExtractImages(): Set<string> { | ||||||
|         const parts: Set<string>[] = []; |         const parts: Set<string>[] = []; | ||||||
|  |  | ||||||
|  | @ -7,6 +7,11 @@ import {And} from "../../Logic/Tags/And"; | ||||||
| import ValidatedTextField from "../../UI/Input/ValidatedTextField"; | import ValidatedTextField from "../../UI/Input/ValidatedTextField"; | ||||||
| import {Utils} from "../../Utils"; | import {Utils} from "../../Utils"; | ||||||
| import {Tag} from "../../Logic/Tags/Tag"; | import {Tag} from "../../Logic/Tags/Tag"; | ||||||
|  | import BaseUIElement from "../../UI/BaseUIElement"; | ||||||
|  | import Combine from "../../UI/Base/Combine"; | ||||||
|  | import Title from "../../UI/Base/Title"; | ||||||
|  | import Link from "../../UI/Base/Link"; | ||||||
|  | import List from "../../UI/Base/List"; | ||||||
| 
 | 
 | ||||||
| /*** | /*** | ||||||
|  * The parsed version of TagRenderingConfigJSON |  * The parsed version of TagRenderingConfigJSON | ||||||
|  | @ -397,7 +402,7 @@ export default class TagRenderingConfig { | ||||||
|     EnumerateTranslations(): Translation[] { |     EnumerateTranslations(): Translation[] { | ||||||
|         const translations: Translation[] = [] |         const translations: Translation[] = [] | ||||||
|         for (const key in this) { |         for (const key in this) { | ||||||
|             if(!this.hasOwnProperty(key)){ |             if (!this.hasOwnProperty(key)) { | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|             const o = this[key] |             const o = this[key] | ||||||
|  | @ -420,5 +425,74 @@ export default class TagRenderingConfig { | ||||||
|         return usedIcons; |         return usedIcons; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     FreeformValues(): { key: string, type?: string, values?: string [] } { | ||||||
|  |         try { | ||||||
| 
 | 
 | ||||||
|  |             const key = this.freeform?.key | ||||||
|  |             if (key === undefined) { | ||||||
|  | 
 | ||||||
|  |                 let values: { k: string, v: string }[][] = Utils.NoNull(this.mappings?.map(m => m.if.asChange({})) ?? []) | ||||||
|  |                 if (values.length === 0) { | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 const allKeys = values.map(arr => arr.map(o => o.k)) | ||||||
|  |                 let common = allKeys[0]; | ||||||
|  |                 for (const keyset of allKeys) { | ||||||
|  |                     common = common.filter(item => keyset.indexOf(item) >= 0) | ||||||
|  |                 } | ||||||
|  |                 const commonKey = common[0] | ||||||
|  |                 if (commonKey === undefined) { | ||||||
|  |                     return undefined; | ||||||
|  |                 } | ||||||
|  |                 return { | ||||||
|  |                     key: commonKey, | ||||||
|  |                     values: Utils.NoNull(values.map(arr => arr.filter(item => item.k === commonKey)[0]?.v)) | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             let values = Utils.NoNull(this.mappings?.map(m => m.if.asChange({}).filter(item => item.k === key)[0]?.v) ?? []) | ||||||
|  |             if (values.length === undefined) { | ||||||
|  |                 values = undefined | ||||||
|  |             } | ||||||
|  |             return { | ||||||
|  |                 key, | ||||||
|  |                 type: this.freeform.type, | ||||||
|  |                 values | ||||||
|  |             } | ||||||
|  |         } catch (e) { | ||||||
|  |             console.error("Could not create FreeformValues for tagrendering", this.id) | ||||||
|  |             return undefined | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     GenerateDocumentation(): BaseUIElement { | ||||||
|  | 
 | ||||||
|  |         let withRender: (BaseUIElement | string)[] = []; | ||||||
|  |         if (this.freeform?.key !== undefined) { | ||||||
|  |             withRender = [ | ||||||
|  |                 `This rendering asks information about the property `, | ||||||
|  |                 Link.OsmWiki(this.freeform.key), | ||||||
|  |                 `\nThis is rendered with \`${this.render.txt}\`` | ||||||
|  | 
 | ||||||
|  |             ] | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         let mappings: BaseUIElement = undefined; | ||||||
|  |         if (this.mappings !== undefined) { | ||||||
|  |             mappings = new List( | ||||||
|  |                 this.mappings.map(m => | ||||||
|  |                     "**" + m.then.txt + "** corresponds with " + m.if.asHumanString(true, false, {}) | ||||||
|  |                 ) | ||||||
|  |             ) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return new Combine([ | ||||||
|  |             new Title(this.id, 3), | ||||||
|  |             this.question !== undefined ? "The question is **" + this.question.txt + "**" : "_This tagrendering has no question and is thus read-only_", | ||||||
|  |             new Combine(withRender), | ||||||
|  |             mappings | ||||||
|  |         ]).SetClass("flex-col"); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | @ -17,7 +17,11 @@ export default class Combine extends BaseUIElement { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     AsMarkdown(): string { |     AsMarkdown(): string { | ||||||
|         return this.uiElements.map(el => el.AsMarkdown()).join(this.HasClass("flex-col") ? "\n\n" : " "); |         let sep = " "; | ||||||
|  |         if(this.HasClass("flex-col")){ | ||||||
|  |             sep = "\n\n" | ||||||
|  |         } | ||||||
|  |         return this.uiElements.map(el => el.AsMarkdown()).join(sep); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     Destroy() { |     Destroy() { | ||||||
|  |  | ||||||
|  | @ -53,5 +53,17 @@ export default class Img extends BaseUIElement { | ||||||
|         } |         } | ||||||
|         return el; |         return el; | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     AsMarkdown(): string { | ||||||
|  |         if(this._rawSvg === true){ | ||||||
|  |             console.warn("Converting raw svgs to markdown is not supported"); | ||||||
|  |             return undefined | ||||||
|  |         } | ||||||
|  |         let src = this._src | ||||||
|  |         if(this._src.startsWith("./")){ | ||||||
|  |             src = "https://mapcomplete.osm.be/"+src | ||||||
|  |         } | ||||||
|  |         return ""; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,6 +13,9 @@ export default class Link extends BaseUIElement { | ||||||
|         this._embeddedShow = Translations.W(embeddedShow); |         this._embeddedShow = Translations.W(embeddedShow); | ||||||
|         this._href = href; |         this._href = href; | ||||||
|         this._newTab = newTab; |         this._newTab = newTab; | ||||||
|  |         if(this._embeddedShow === undefined){ | ||||||
|  |             throw "Error: got a link where embeddedShow is undefined" | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -40,5 +43,16 @@ export default class Link extends BaseUIElement { | ||||||
|         el.appendChild(embeddedShow) |         el.appendChild(embeddedShow) | ||||||
|         return el; |         return el; | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     public static OsmWiki(key: string, value?: string, hideKey = false){ | ||||||
|  |         if(value !== undefined){ | ||||||
|  |             let k = ""; | ||||||
|  |             if(!hideKey){ | ||||||
|  |                 k = key+"=" | ||||||
|  |             } | ||||||
|  |             return new Link(k+value,`https://wiki.openstreetmap.org/wiki/Tag:${key}%3D${value}`) | ||||||
|  |         } | ||||||
|  |         return  new Link(key, "https://wiki.openstreetmap.org/wiki/Key:" + key) | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| import {UIEventSource} from "../../Logic/UIEventSource"; | import {UIEventSource} from "../../Logic/UIEventSource"; | ||||||
| import BaseUIElement from "../BaseUIElement"; | import BaseUIElement from "../BaseUIElement"; | ||||||
|  | import Combine from "./Combine"; | ||||||
| 
 | 
 | ||||||
| export class VariableUiElement extends BaseUIElement { | export class VariableUiElement extends BaseUIElement { | ||||||
|     private readonly _contents: UIEventSource<string | BaseUIElement | BaseUIElement[]>; |     private readonly _contents: UIEventSource<string | BaseUIElement | BaseUIElement[]>; | ||||||
|  | @ -46,4 +47,15 @@ export class VariableUiElement extends BaseUIElement { | ||||||
|         }); |         }); | ||||||
|         return el; |         return el; | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     AsMarkdown(): string { | ||||||
|  |         const d = this._contents.data; | ||||||
|  |         if(typeof d === "string"){ | ||||||
|  |             return d; | ||||||
|  |         } | ||||||
|  |         if(d instanceof BaseUIElement){ | ||||||
|  |             return d.AsMarkdown() | ||||||
|  |         } | ||||||
|  |         return new Combine(<BaseUIElement[]>d).AsMarkdown() | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -633,7 +633,7 @@ | ||||||
|   "mapRendering": [ |   "mapRendering": [ | ||||||
|     { |     { | ||||||
|       "icon": { |       "icon": { | ||||||
|         "render": "circle:#FE6F32;./assets/layers/bench/bench.svg" |         "render": "./assets/layers/bench/bench.svg" | ||||||
|       }, |       }, | ||||||
|       "iconSize": { |       "iconSize": { | ||||||
|         "render": "35,35,center" |         "render": "35,35,center" | ||||||
|  |  | ||||||
|  | @ -1,24 +1,23 @@ | ||||||
| import SpecialVisualizations from "../UI/SpecialVisualizations"; |  | ||||||
| import SimpleMetaTagger from "../Logic/SimpleMetaTagger"; |  | ||||||
| import Combine from "../UI/Base/Combine"; | import Combine from "../UI/Base/Combine"; | ||||||
| import {ExtraFunctions} from "../Logic/ExtraFunctions"; |  | ||||||
| import ValidatedTextField from "../UI/Input/ValidatedTextField"; |  | ||||||
| import BaseUIElement from "../UI/BaseUIElement"; | import BaseUIElement from "../UI/BaseUIElement"; | ||||||
| import Translations from "../UI/i18n/Translations"; | import Translations from "../UI/i18n/Translations"; | ||||||
| import {writeFileSync} from "fs"; | import {writeFileSync} from "fs"; | ||||||
| import {QueryParameters} from "../Logic/Web/QueryParameters"; |  | ||||||
| import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; |  | ||||||
| import Minimap from "../UI/Base/Minimap"; |  | ||||||
| import FeatureSwitchState from "../Logic/State/FeatureSwitchState"; |  | ||||||
| import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; | import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; | ||||||
| import TableOfContents from "../UI/Base/TableOfContents"; | import TableOfContents from "../UI/Base/TableOfContents"; | ||||||
|  | import SimpleMetaTaggers, {SimpleMetaTagger} from "../Logic/SimpleMetaTagger"; | ||||||
|  | import ValidatedTextField from "../UI/Input/ValidatedTextField"; | ||||||
|  | import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; | ||||||
|  | import SpecialVisualizations from "../UI/SpecialVisualizations"; | ||||||
|  | import FeatureSwitchState from "../Logic/State/FeatureSwitchState"; | ||||||
|  | import {ExtraFunctions} from "../Logic/ExtraFunctions"; | ||||||
| import Title from "../UI/Base/Title"; | import Title from "../UI/Base/Title"; | ||||||
|  | import Minimap from "../UI/Base/Minimap"; | ||||||
|  | import {QueryParameters} from "../Logic/Web/QueryParameters"; | ||||||
| import QueryParameterDocumentation from "../UI/QueryParameterDocumentation"; | import QueryParameterDocumentation from "../UI/QueryParameterDocumentation"; | ||||||
| 
 | 
 | ||||||
| function WriteFile(filename, html: BaseUIElement, autogenSource: string[]): void { | function WriteFile(filename, html: BaseUIElement, autogenSource: string[]): void { | ||||||
| 
 | 
 | ||||||
|     if (html instanceof Combine) { |     if (html instanceof Combine) { | ||||||
|          |  | ||||||
|         const toc = new TableOfContents(html); |         const toc = new TableOfContents(html); | ||||||
|         const els = html.getElements(); |         const els = html.getElements(); | ||||||
|         html = new Combine( |         html = new Combine( | ||||||
|  | @ -26,19 +25,32 @@ function WriteFile(filename, html: BaseUIElement, autogenSource: string[]): void | ||||||
|                 toc, |                 toc, | ||||||
|                 ...els |                 ...els | ||||||
|             ] |             ] | ||||||
|         ) |         ).SetClass("flex flex-col") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     writeFileSync(filename, new Combine([Translations.W(html), |     let md = new Combine([Translations.W(html), | ||||||
|         "\n\nThis document is autogenerated from " + autogenSource.join(", ") |         "\n\nThis document is autogenerated from " + autogenSource.join(", ") | ||||||
|     ]).AsMarkdown()); |     ]).AsMarkdown() | ||||||
|  | 
 | ||||||
|  |     md.replace(/\n\n\n+/g, "\n\n"); | ||||||
|  |      | ||||||
|  |     writeFileSync(filename, md); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | console.log("Starting documentation generation...") | ||||||
|  | AllKnownLayouts.GenOverviewsForSingleLayer((layer, element) => { | ||||||
|  |     console.log("Exporting ", layer.id) | ||||||
|  |     WriteFile("./Docs/Layers/" + layer.id + ".md", element, [`assets/layers/${layer.id}/${layer.id}.json`]) | ||||||
|  | 
 | ||||||
|  | }) | ||||||
| WriteFile("./Docs/SpecialRenderings.md", SpecialVisualizations.HelpMessage(), ["UI/SpecialVisualisations.ts"]) | WriteFile("./Docs/SpecialRenderings.md", SpecialVisualizations.HelpMessage(), ["UI/SpecialVisualisations.ts"]) | ||||||
| WriteFile("./Docs/CalculatedTags.md", new Combine([new Title("Metatags", 1), SimpleMetaTagger.HelpText(), ExtraFunctions.HelpText()]).SetClass("flex-col"), | WriteFile("./Docs/CalculatedTags.md", new Combine([new Title("Metatags", 1), | ||||||
|  |         SimpleMetaTaggers.HelpText(), ExtraFunctions.HelpText()]).SetClass("flex-col"), | ||||||
|     ["SimpleMetaTagger", "ExtraFunction"]) |     ["SimpleMetaTagger", "ExtraFunction"]) | ||||||
| WriteFile("./Docs/SpecialInputElements.md", ValidatedTextField.HelpText(), ["ValidatedTextField.ts"]); | WriteFile("./Docs/SpecialInputElements.md", ValidatedTextField.HelpText(), ["ValidatedTextField.ts"]); | ||||||
| WriteFile("./Docs/BuiltinLayers.md", AllKnownLayouts.GenLayerOverviewText(), ["AllKnownLayers.ts"]) | WriteFile("./Docs/BuiltinLayers.md", AllKnownLayouts.GenLayerOverviewText(), ["AllKnownLayers.ts"]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| Minimap.createMiniMap = _ => { | Minimap.createMiniMap = _ => { | ||||||
|     console.log("Not creating a minimap, it is disabled"); |     console.log("Not creating a minimap, it is disabled"); | ||||||
|     return undefined |     return undefined | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue