forked from MapComplete/MapComplete
		
	Refactoring: split icons into proper layered icons, fix and rerun shops-thief
This commit is contained in:
		
							parent
							
								
									d6cd0516bb
								
							
						
					
					
						commit
						19a760178b
					
				
					 307 changed files with 26845 additions and 116541 deletions
				
			
		|  | @ -1,39 +0,0 @@ | |||
| { | ||||
|   "$ref": "#/definitions/AndOrTagConfigJson", | ||||
|   "definitions": { | ||||
|     "AndOrTagConfigJson": { | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|                 "$ref": "#/definitions/AndOrTagConfigJson" | ||||
|               }, | ||||
|               { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|                 "$ref": "#/definitions/AndOrTagConfigJson" | ||||
|               }, | ||||
|               { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "additionalProperties": false | ||||
| } | ||||
|  | @ -1,37 +0,0 @@ | |||
| export default { | ||||
|     "$ref": "#/definitions/AndOrTagConfigJson", | ||||
|     "definitions": { | ||||
|         "AndOrTagConfigJson": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|                 "and": { | ||||
|                     "type": "array", | ||||
|                     "items": { | ||||
|                         "anyOf": [ | ||||
|                             { | ||||
|                                 "$ref": "#/definitions/AndOrTagConfigJson" | ||||
|                             }, | ||||
|                             { | ||||
|                                 "type": "string" | ||||
|                             } | ||||
|                         ] | ||||
|                     } | ||||
|                 }, | ||||
|                 "or": { | ||||
|                     "type": "array", | ||||
|                     "items": { | ||||
|                         "anyOf": [ | ||||
|                             { | ||||
|                                 "$ref": "#/definitions/AndOrTagConfigJson" | ||||
|                             }, | ||||
|                             { | ||||
|                                 "type": "string" | ||||
|                             } | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     "$schema": "http://json-schema.org/draft-07/schema#" | ||||
| } | ||||
|  | @ -1,66 +0,0 @@ | |||
| { | ||||
|   "$ref": "#/definitions/AndTagConfigJson", | ||||
|   "description": "Chain many tags, to match, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|   "definitions": { | ||||
|     "TagConfigJson": { | ||||
|       "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/AndTagConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "or": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/TagConfigJson" | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "or" | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "AndTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "and" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "OrTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "or" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "additionalProperties": false | ||||
| } | ||||
|  | @ -1,63 +0,0 @@ | |||
| export default { | ||||
|   "$ref": "#/definitions/AndTagConfigJson", | ||||
|   "description": "Chain many tags, to match, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|   "definitions": { | ||||
|     "TagConfigJson": { | ||||
|       "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/AndTagConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "or": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/TagConfigJson" | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "or" | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "AndTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "and" | ||||
|       ] | ||||
|     }, | ||||
|     "OrTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "or" | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#" | ||||
| } | ||||
|  | @ -29,7 +29,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "source": { | ||||
|       "description": "Question: Where should the data be fetched from?\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|       "description": "Question: Where should the data be fetched from?\ntitle: Data Source\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "type": "object", | ||||
|  | @ -166,21 +166,18 @@ | |||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "mapRendering": { | ||||
|       "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering\ngroup: maprendering\ntypes: PointRendering ; LineRendering ;", | ||||
|     "pointRendering": { | ||||
|       "description": "Creates points to render on the map.\nThis can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered\ngroup: pointrendering", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "anyOf": [ | ||||
|           { | ||||
|         "$ref": "#/definitions/default_4" | ||||
|           }, | ||||
|           { | ||||
|             "$ref": "#/definitions/default_5" | ||||
|           }, | ||||
|           { | ||||
|             "$ref": "#/definitions/default<default|default|default[]|default[]>" | ||||
|       } | ||||
|         ] | ||||
|     }, | ||||
|     "lineRendering": { | ||||
|       "description": "Creates lines and areas to render on the map\ngroup: linerendering", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "$ref": "#/definitions/default_5" | ||||
|       } | ||||
|     }, | ||||
|     "passAllFeatures": { | ||||
|  | @ -397,6 +394,7 @@ | |||
|   }, | ||||
|   "required": [ | ||||
|     "id", | ||||
|     "pointRendering", | ||||
|     "source" | ||||
|   ], | ||||
|   "definitions": { | ||||
|  | @ -703,6 +701,38 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object", | ||||
|       "additionalProperties": false | ||||
|  | @ -825,14 +855,19 @@ | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "location": { | ||||
|           "description": "All the locations that this point should be rendered at.\nPossible values are:\n- `point`: only renders points at their location\n- `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this\n- `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way\n- `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString", | ||||
|           "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line\"}]", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "string" | ||||
|           } | ||||
|         }, | ||||
|         "marker": { | ||||
|           "description": "question: What marker should be used to\nThe icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one c    an use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "icon": { | ||||
|           "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -842,6 +877,22 @@ | |||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               "color": { | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|                   }, | ||||
|                   { | ||||
|                     "type": "string" | ||||
|                   } | ||||
|                 ] | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "icon" | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "iconBadges": { | ||||
|           "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", | ||||
|           "type": "array", | ||||
|  | @ -882,7 +933,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "anchor": { | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\nFor example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location.", | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\n\nifunset: Use MapComplete-default (<b>center</b>)\nsuggestions: return [{if: \"value=center\", then: \"Place the <b>center</b> of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the <b>top</b> of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the <b>bottom</b> of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the <b>left</b> of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the <b>right</b> of the icon on the geographical location\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -904,7 +955,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "label": { | ||||
|           "description": "A HTML-fragment that is shown below the icon, for example:\n<div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", | ||||
|           "description": "question: What label should be shown beneath the marker?\nFor example: <div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\ntypes: Dynamic value | string\ninline: Always show label <b>{value}</b> beneath the marker", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -915,7 +966,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "css": { | ||||
|           "description": "A snippet of css code which is applied onto the container of the entire marker", | ||||
|           "description": "question: What CSS should be applied to the entire marker?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\nThis will be applied to the _container_ containing both the marker and the label\ninline: Apply CSS-style <b>{value}</b> to the _entire marker_\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -926,7 +977,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "cssClasses": { | ||||
|           "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the entire marker?\nThis will be applied to the _container_ containing both the marker and the label\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the entire container\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -937,7 +988,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "labelCss": { | ||||
|           "description": "Css that is applied onto the label", | ||||
|           "description": "question: What CSS should be applied to the label?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\ninline: Apply CSS-style <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -948,7 +999,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "labelCssClasses": { | ||||
|           "description": "Css classes that are applied onto the label; can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the label?\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -974,7 +1025,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "rotationAlignment": { | ||||
|           "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", | ||||
|           "description": "question: Should the icon be rotated or tilted if the map is rotated or tilted?\nifunset: Do not rotate or tilt icons. Always keep the icons straight\nsuggestions: return [{if: \"value=canvas\", then: \"If the map is tilted, tilt the icon as well. This gives the impression of an icon that is glued to the ground.\"}, {if: \"value=map\", then: \"If the map is rotated, rotate the icon as well. This gives the impression of an icon that floats perpendicular above the ground.\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -999,10 +1050,10 @@ | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "color": { | ||||
|           "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", | ||||
|           "description": "question: What color should lines be drawn in?\n\nFor an area, this will be the colour of the outside line.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead\n\ntypes: dynamic value ; string\ntitle: Line Colour\ninline: The line colour always is <b>{value}</b>\nifunset: Round ending\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -1010,10 +1061,10 @@ | |||
|           ] | ||||
|         }, | ||||
|         "width": { | ||||
|           "description": "The stroke-width for way-elements", | ||||
|           "description": "question: How wide should the line be?\nThe stroke-width for way-elements\n\ntypes: dynamic value ; string\ntitle: Line width\ninline: The line width is <b>{value} pixels</b>\ntype: pnat\nifunset: Use the default-linewidth of 7 pixels", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": [ | ||||
|  | @ -1024,21 +1075,14 @@ | |||
|           ] | ||||
|         }, | ||||
|         "dashArray": { | ||||
|           "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|           "description": "question: Should a dasharray be used to render the lines?\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap, ...'. For example, `5 6` will be 5 pixels of line followed by a 6 pixel gap.\nCannot be a dynamic property due to a mapbox limitation\nifunset: Ways are rendered with a full line", | ||||
|           "type": "string" | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "lineCap": { | ||||
|           "description": "The form at the end of a line", | ||||
|           "description": "question: What form should the line-ending have?\nsuggestions: return [{if:\"value=round\",then:\"Round endings\"}, {if: \"value=square\", then: \"square endings\"}, {if: \"value=butt\", then: \"no ending (square ending at the end, without padding)\"}]\ntypes: dynamic value ; string\ntitle: Line Cap\nifunset: Use the default value (round ending)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -1046,10 +1090,10 @@ | |||
|           ] | ||||
|         }, | ||||
|         "fillColor": { | ||||
|           "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line.\nUse '#00000000' to make the fill invisible", | ||||
|           "description": "question: What colour should be used as fill colour for polygons?\nifunset: The polygon fill colour will be a more transparent version of the stroke colour\nsuggestions: return [{if: \"value=#00000000\", then: \"Use a transparent fill (only render the outline)\"}]\ninline: The fill colour is <b>{value}</b>\ntypes: dynamic value ; string\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -1057,10 +1101,10 @@ | |||
|           ] | ||||
|         }, | ||||
|         "offset": { | ||||
|           "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", | ||||
|           "description": "question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines?\nThe number of pixels this line should be moved.\nUse a positive number to move to the right in the drawing direction or a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details\nifunset: don't offset lines on the map\ninline: Pixel offset by <b>{value}</b> pixels\ntypes: dynamic value ; number\ntype: int", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "number" | ||||
|  | @ -1070,61 +1114,6 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "default<default|default|default[]|default[]>": { | ||||
|       "description": "Rewrites and multiplies the given renderings of type T.\n\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\n\n(Note that the key does _not_ need to be wrapped in {}.\nHowever, we recommend to use them if the key is used in a translation, as missing keys will be picked up and warned for by the translation scripts)\n\nFor example:\n\n```\n{\n    rewrite: {\n        sourceString: [\"key\", \"a|b|c\"],\n        into: [\n            [\"X\", 0]\n            [\"Y\", 1],\n            [\"Z\", 2]\n        ],\n        renderings: [{\n            \"key\":\"a|b|c\"\n        }]\n    }\n}\n```\nwill result in _three_ copies (as the values to rewrite into have three values, namely:\n\n[\n  {\n  # The first pair: key --> X, a|b|c --> 0\n      \"X\": 0\n  },\n  {\n      \"Y\": 1\n  },\n  {\n      \"Z\": 2\n  }\n\n]", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "rewrite": { | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "sourceString": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "into": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "array", | ||||
|                 "items": {} | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "into", | ||||
|             "sourceString" | ||||
|           ] | ||||
|         }, | ||||
|         "renderings": { | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/default_4" | ||||
|             }, | ||||
|             { | ||||
|               "$ref": "#/definitions/default_5" | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               } | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_4" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "renderings", | ||||
|         "rewrite" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "QuestionableTagRenderingConfigJson": { | ||||
|       "description": "A QuestionableTagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", | ||||
|       "type": "object", | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "source": { | ||||
|       "description": "Question: Where should the data be fetched from?\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|       "description": "Question: Where should the data be fetched from?\ntitle: Data Source\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "type": "object", | ||||
|  | @ -166,21 +166,18 @@ export default { | |||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "mapRendering": { | ||||
|       "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering\ngroup: maprendering\ntypes: PointRendering ; LineRendering ;", | ||||
|     "pointRendering": { | ||||
|       "description": "Creates points to render on the map.\nThis can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered\ngroup: pointrendering", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "anyOf": [ | ||||
|           { | ||||
|         "$ref": "#/definitions/default_4" | ||||
|           }, | ||||
|           { | ||||
|             "$ref": "#/definitions/default_5" | ||||
|           }, | ||||
|           { | ||||
|             "$ref": "#/definitions/default<default|default|default[]|default[]>" | ||||
|       } | ||||
|         ] | ||||
|     }, | ||||
|     "lineRendering": { | ||||
|       "description": "Creates lines and areas to render on the map\ngroup: linerendering", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "$ref": "#/definitions/default_5" | ||||
|       } | ||||
|     }, | ||||
|     "passAllFeatures": { | ||||
|  | @ -397,6 +394,7 @@ export default { | |||
|   }, | ||||
|   "required": [ | ||||
|     "id", | ||||
|     "pointRendering", | ||||
|     "source" | ||||
|   ], | ||||
|   "definitions": { | ||||
|  | @ -697,6 +695,37 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object" | ||||
|     }, | ||||
|  | @ -816,14 +845,19 @@ export default { | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "location": { | ||||
|           "description": "All the locations that this point should be rendered at.\nPossible values are:\n- `point`: only renders points at their location\n- `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this\n- `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way\n- `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString", | ||||
|           "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line\"}]", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "string" | ||||
|           } | ||||
|         }, | ||||
|         "marker": { | ||||
|           "description": "question: What marker should be used to\nThe icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one c    an use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "icon": { | ||||
|           "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -833,6 +867,22 @@ export default { | |||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               "color": { | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|                   }, | ||||
|                   { | ||||
|                     "type": "string" | ||||
|                   } | ||||
|                 ] | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "icon" | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "iconBadges": { | ||||
|           "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", | ||||
|           "type": "array", | ||||
|  | @ -873,7 +923,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "anchor": { | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\nFor example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location.", | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\n\nifunset: Use MapComplete-default (<b>center</b>)\nsuggestions: return [{if: \"value=center\", then: \"Place the <b>center</b> of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the <b>top</b> of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the <b>bottom</b> of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the <b>left</b> of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the <b>right</b> of the icon on the geographical location\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -895,7 +945,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "label": { | ||||
|           "description": "A HTML-fragment that is shown below the icon, for example:\n<div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", | ||||
|           "description": "question: What label should be shown beneath the marker?\nFor example: <div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\ntypes: Dynamic value | string\ninline: Always show label <b>{value}</b> beneath the marker", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -906,7 +956,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "css": { | ||||
|           "description": "A snippet of css code which is applied onto the container of the entire marker", | ||||
|           "description": "question: What CSS should be applied to the entire marker?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\nThis will be applied to the _container_ containing both the marker and the label\ninline: Apply CSS-style <b>{value}</b> to the _entire marker_\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -917,7 +967,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "cssClasses": { | ||||
|           "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the entire marker?\nThis will be applied to the _container_ containing both the marker and the label\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the entire container\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -928,7 +978,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "labelCss": { | ||||
|           "description": "Css that is applied onto the label", | ||||
|           "description": "question: What CSS should be applied to the label?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\ninline: Apply CSS-style <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -939,7 +989,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "labelCssClasses": { | ||||
|           "description": "Css classes that are applied onto the label; can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the label?\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -965,7 +1015,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "rotationAlignment": { | ||||
|           "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", | ||||
|           "description": "question: Should the icon be rotated or tilted if the map is rotated or tilted?\nifunset: Do not rotate or tilt icons. Always keep the icons straight\nsuggestions: return [{if: \"value=canvas\", then: \"If the map is tilted, tilt the icon as well. This gives the impression of an icon that is glued to the ground.\"}, {if: \"value=map\", then: \"If the map is rotated, rotate the icon as well. This gives the impression of an icon that floats perpendicular above the ground.\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -989,10 +1039,10 @@ export default { | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "color": { | ||||
|           "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", | ||||
|           "description": "question: What color should lines be drawn in?\n\nFor an area, this will be the colour of the outside line.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead\n\ntypes: dynamic value ; string\ntitle: Line Colour\ninline: The line colour always is <b>{value}</b>\nifunset: Round ending\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -1000,10 +1050,10 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "width": { | ||||
|           "description": "The stroke-width for way-elements", | ||||
|           "description": "question: How wide should the line be?\nThe stroke-width for way-elements\n\ntypes: dynamic value ; string\ntitle: Line width\ninline: The line width is <b>{value} pixels</b>\ntype: pnat\nifunset: Use the default-linewidth of 7 pixels", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": [ | ||||
|  | @ -1014,21 +1064,14 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "dashArray": { | ||||
|           "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|           "description": "question: Should a dasharray be used to render the lines?\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap, ...'. For example, `5 6` will be 5 pixels of line followed by a 6 pixel gap.\nCannot be a dynamic property due to a mapbox limitation\nifunset: Ways are rendered with a full line", | ||||
|           "type": "string" | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "lineCap": { | ||||
|           "description": "The form at the end of a line", | ||||
|           "description": "question: What form should the line-ending have?\nsuggestions: return [{if:\"value=round\",then:\"Round endings\"}, {if: \"value=square\", then: \"square endings\"}, {if: \"value=butt\", then: \"no ending (square ending at the end, without padding)\"}]\ntypes: dynamic value ; string\ntitle: Line Cap\nifunset: Use the default value (round ending)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -1036,10 +1079,10 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "fillColor": { | ||||
|           "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line.\nUse '#00000000' to make the fill invisible", | ||||
|           "description": "question: What colour should be used as fill colour for polygons?\nifunset: The polygon fill colour will be a more transparent version of the stroke colour\nsuggestions: return [{if: \"value=#00000000\", then: \"Use a transparent fill (only render the outline)\"}]\ninline: The fill colour is <b>{value}</b>\ntypes: dynamic value ; string\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -1047,10 +1090,10 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "offset": { | ||||
|           "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", | ||||
|           "description": "question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines?\nThe number of pixels this line should be moved.\nUse a positive number to move to the right in the drawing direction or a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details\nifunset: don't offset lines on the map\ninline: Pixel offset by <b>{value}</b> pixels\ntypes: dynamic value ; number\ntype: int", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "number" | ||||
|  | @ -1059,60 +1102,6 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "default<default|default|default[]|default[]>": { | ||||
|       "description": "Rewrites and multiplies the given renderings of type T.\n\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\n\n(Note that the key does _not_ need to be wrapped in {}.\nHowever, we recommend to use them if the key is used in a translation, as missing keys will be picked up and warned for by the translation scripts)\n\nFor example:\n\n```\n{\n    rewrite: {\n        sourceString: [\"key\", \"a|b|c\"],\n        into: [\n            [\"X\", 0]\n            [\"Y\", 1],\n            [\"Z\", 2]\n        ],\n        renderings: [{\n            \"key\":\"a|b|c\"\n        }]\n    }\n}\n```\nwill result in _three_ copies (as the values to rewrite into have three values, namely:\n\n[\n  {\n  # The first pair: key --> X, a|b|c --> 0\n      \"X\": 0\n  },\n  {\n      \"Y\": 1\n  },\n  {\n      \"Z\": 2\n  }\n\n]", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "rewrite": { | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "sourceString": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "into": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "array", | ||||
|                 "items": {} | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "into", | ||||
|             "sourceString" | ||||
|           ] | ||||
|         }, | ||||
|         "renderings": { | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/default_4" | ||||
|             }, | ||||
|             { | ||||
|               "$ref": "#/definitions/default_5" | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               } | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_4" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "renderings", | ||||
|         "rewrite" | ||||
|       ] | ||||
|     }, | ||||
|     "QuestionableTagRenderingConfigJson": { | ||||
|       "description": "A QuestionableTagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", | ||||
|       "type": "object", | ||||
|  |  | |||
|  | @ -608,6 +608,38 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object", | ||||
|       "additionalProperties": false | ||||
|  | @ -730,14 +762,19 @@ | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "location": { | ||||
|           "description": "All the locations that this point should be rendered at.\nPossible values are:\n- `point`: only renders points at their location\n- `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this\n- `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way\n- `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString", | ||||
|           "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line\"}]", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "string" | ||||
|           } | ||||
|         }, | ||||
|         "marker": { | ||||
|           "description": "question: What marker should be used to\nThe icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one c    an use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "icon": { | ||||
|           "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -747,6 +784,22 @@ | |||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               "color": { | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|                   }, | ||||
|                   { | ||||
|                     "type": "string" | ||||
|                   } | ||||
|                 ] | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "icon" | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "iconBadges": { | ||||
|           "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", | ||||
|           "type": "array", | ||||
|  | @ -787,7 +840,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "anchor": { | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\nFor example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location.", | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\n\nifunset: Use MapComplete-default (<b>center</b>)\nsuggestions: return [{if: \"value=center\", then: \"Place the <b>center</b> of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the <b>top</b> of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the <b>bottom</b> of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the <b>left</b> of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the <b>right</b> of the icon on the geographical location\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -809,7 +862,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "label": { | ||||
|           "description": "A HTML-fragment that is shown below the icon, for example:\n<div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", | ||||
|           "description": "question: What label should be shown beneath the marker?\nFor example: <div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\ntypes: Dynamic value | string\ninline: Always show label <b>{value}</b> beneath the marker", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -820,7 +873,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "css": { | ||||
|           "description": "A snippet of css code which is applied onto the container of the entire marker", | ||||
|           "description": "question: What CSS should be applied to the entire marker?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\nThis will be applied to the _container_ containing both the marker and the label\ninline: Apply CSS-style <b>{value}</b> to the _entire marker_\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -831,7 +884,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "cssClasses": { | ||||
|           "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the entire marker?\nThis will be applied to the _container_ containing both the marker and the label\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the entire container\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -842,7 +895,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "labelCss": { | ||||
|           "description": "Css that is applied onto the label", | ||||
|           "description": "question: What CSS should be applied to the label?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\ninline: Apply CSS-style <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -853,7 +906,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "labelCssClasses": { | ||||
|           "description": "Css classes that are applied onto the label; can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the label?\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -879,7 +932,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "rotationAlignment": { | ||||
|           "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", | ||||
|           "description": "question: Should the icon be rotated or tilted if the map is rotated or tilted?\nifunset: Do not rotate or tilt icons. Always keep the icons straight\nsuggestions: return [{if: \"value=canvas\", then: \"If the map is tilted, tilt the icon as well. This gives the impression of an icon that is glued to the ground.\"}, {if: \"value=map\", then: \"If the map is rotated, rotate the icon as well. This gives the impression of an icon that floats perpendicular above the ground.\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -904,10 +957,10 @@ | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "color": { | ||||
|           "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", | ||||
|           "description": "question: What color should lines be drawn in?\n\nFor an area, this will be the colour of the outside line.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead\n\ntypes: dynamic value ; string\ntitle: Line Colour\ninline: The line colour always is <b>{value}</b>\nifunset: Round ending\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -915,10 +968,10 @@ | |||
|           ] | ||||
|         }, | ||||
|         "width": { | ||||
|           "description": "The stroke-width for way-elements", | ||||
|           "description": "question: How wide should the line be?\nThe stroke-width for way-elements\n\ntypes: dynamic value ; string\ntitle: Line width\ninline: The line width is <b>{value} pixels</b>\ntype: pnat\nifunset: Use the default-linewidth of 7 pixels", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": [ | ||||
|  | @ -929,21 +982,14 @@ | |||
|           ] | ||||
|         }, | ||||
|         "dashArray": { | ||||
|           "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|           "description": "question: Should a dasharray be used to render the lines?\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap, ...'. For example, `5 6` will be 5 pixels of line followed by a 6 pixel gap.\nCannot be a dynamic property due to a mapbox limitation\nifunset: Ways are rendered with a full line", | ||||
|           "type": "string" | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "lineCap": { | ||||
|           "description": "The form at the end of a line", | ||||
|           "description": "question: What form should the line-ending have?\nsuggestions: return [{if:\"value=round\",then:\"Round endings\"}, {if: \"value=square\", then: \"square endings\"}, {if: \"value=butt\", then: \"no ending (square ending at the end, without padding)\"}]\ntypes: dynamic value ; string\ntitle: Line Cap\nifunset: Use the default value (round ending)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -951,10 +997,10 @@ | |||
|           ] | ||||
|         }, | ||||
|         "fillColor": { | ||||
|           "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line.\nUse '#00000000' to make the fill invisible", | ||||
|           "description": "question: What colour should be used as fill colour for polygons?\nifunset: The polygon fill colour will be a more transparent version of the stroke colour\nsuggestions: return [{if: \"value=#00000000\", then: \"Use a transparent fill (only render the outline)\"}]\ninline: The fill colour is <b>{value}</b>\ntypes: dynamic value ; string\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -962,10 +1008,10 @@ | |||
|           ] | ||||
|         }, | ||||
|         "offset": { | ||||
|           "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", | ||||
|           "description": "question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines?\nThe number of pixels this line should be moved.\nUse a positive number to move to the right in the drawing direction or a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details\nifunset: don't offset lines on the map\ninline: Pixel offset by <b>{value}</b> pixels\ntypes: dynamic value ; number\ntype: int", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "number" | ||||
|  | @ -975,61 +1021,6 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "default<default|default|default[]|default[]>": { | ||||
|       "description": "Rewrites and multiplies the given renderings of type T.\n\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\n\n(Note that the key does _not_ need to be wrapped in {}.\nHowever, we recommend to use them if the key is used in a translation, as missing keys will be picked up and warned for by the translation scripts)\n\nFor example:\n\n```\n{\n    rewrite: {\n        sourceString: [\"key\", \"a|b|c\"],\n        into: [\n            [\"X\", 0]\n            [\"Y\", 1],\n            [\"Z\", 2]\n        ],\n        renderings: [{\n            \"key\":\"a|b|c\"\n        }]\n    }\n}\n```\nwill result in _three_ copies (as the values to rewrite into have three values, namely:\n\n[\n  {\n  # The first pair: key --> X, a|b|c --> 0\n      \"X\": 0\n  },\n  {\n      \"Y\": 1\n  },\n  {\n      \"Z\": 2\n  }\n\n]", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "rewrite": { | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "sourceString": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "into": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "array", | ||||
|                 "items": {} | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "into", | ||||
|             "sourceString" | ||||
|           ] | ||||
|         }, | ||||
|         "renderings": { | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/default_4" | ||||
|             }, | ||||
|             { | ||||
|               "$ref": "#/definitions/default_5" | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               } | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_4" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "renderings", | ||||
|         "rewrite" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "QuestionableTagRenderingConfigJson": { | ||||
|       "description": "A QuestionableTagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", | ||||
|       "type": "object", | ||||
|  | @ -1760,7 +1751,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "source": { | ||||
|           "description": "Question: Where should the data be fetched from?\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "description": "Question: Where should the data be fetched from?\ntitle: Data Source\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "type": "object", | ||||
|  | @ -1897,21 +1888,18 @@ | |||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "mapRendering": { | ||||
|           "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering\ngroup: maprendering\ntypes: PointRendering ; LineRendering ;", | ||||
|         "pointRendering": { | ||||
|           "description": "Creates points to render on the map.\nThis can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered\ngroup: pointrendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|             "$ref": "#/definitions/default_4" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default<default|default|default[]|default[]>" | ||||
|           } | ||||
|             ] | ||||
|         }, | ||||
|         "lineRendering": { | ||||
|           "description": "Creates lines and areas to render on the map\ngroup: linerendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/default_5" | ||||
|           } | ||||
|         }, | ||||
|         "passAllFeatures": { | ||||
|  | @ -2128,6 +2116,7 @@ | |||
|       }, | ||||
|       "required": [ | ||||
|         "id", | ||||
|         "pointRendering", | ||||
|         "source" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|  | @ -2162,7 +2151,7 @@ | |||
|           ] | ||||
|         }, | ||||
|         "source": { | ||||
|           "description": "Question: Where should the data be fetched from?\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "description": "Question: Where should the data be fetched from?\ntitle: Data Source\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "type": "object", | ||||
|  | @ -2299,21 +2288,18 @@ | |||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "mapRendering": { | ||||
|           "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering\ngroup: maprendering\ntypes: PointRendering ; LineRendering ;", | ||||
|         "pointRendering": { | ||||
|           "description": "Creates points to render on the map.\nThis can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered\ngroup: pointrendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|             "$ref": "#/definitions/default_4" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default<default|default|default[]|default[]>" | ||||
|           } | ||||
|             ] | ||||
|         }, | ||||
|         "lineRendering": { | ||||
|           "description": "Creates lines and areas to render on the map\ngroup: linerendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/default_5" | ||||
|           } | ||||
|         }, | ||||
|         "passAllFeatures": { | ||||
|  |  | |||
|  | @ -602,6 +602,37 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object" | ||||
|     }, | ||||
|  | @ -721,14 +752,19 @@ export default { | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "location": { | ||||
|           "description": "All the locations that this point should be rendered at.\nPossible values are:\n- `point`: only renders points at their location\n- `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this\n- `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way\n- `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString", | ||||
|           "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line\"}]", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "string" | ||||
|           } | ||||
|         }, | ||||
|         "marker": { | ||||
|           "description": "question: What marker should be used to\nThe icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one c    an use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "icon": { | ||||
|           "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -738,6 +774,22 @@ export default { | |||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               "color": { | ||||
|                 "anyOf": [ | ||||
|                   { | ||||
|                     "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|                   }, | ||||
|                   { | ||||
|                     "type": "string" | ||||
|                   } | ||||
|                 ] | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "icon" | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "iconBadges": { | ||||
|           "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", | ||||
|           "type": "array", | ||||
|  | @ -778,7 +830,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "anchor": { | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\nFor example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location.", | ||||
|           "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\n\nifunset: Use MapComplete-default (<b>center</b>)\nsuggestions: return [{if: \"value=center\", then: \"Place the <b>center</b> of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the <b>top</b> of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the <b>bottom</b> of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the <b>left</b> of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the <b>right</b> of the icon on the geographical location\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -800,7 +852,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "label": { | ||||
|           "description": "A HTML-fragment that is shown below the icon, for example:\n<div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", | ||||
|           "description": "question: What label should be shown beneath the marker?\nFor example: <div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\ntypes: Dynamic value | string\ninline: Always show label <b>{value}</b> beneath the marker", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -811,7 +863,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "css": { | ||||
|           "description": "A snippet of css code which is applied onto the container of the entire marker", | ||||
|           "description": "question: What CSS should be applied to the entire marker?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\nThis will be applied to the _container_ containing both the marker and the label\ninline: Apply CSS-style <b>{value}</b> to the _entire marker_\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -822,7 +874,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "cssClasses": { | ||||
|           "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the entire marker?\nThis will be applied to the _container_ containing both the marker and the label\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the entire container\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -833,7 +885,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "labelCss": { | ||||
|           "description": "Css that is applied onto the label", | ||||
|           "description": "question: What CSS should be applied to the label?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\ninline: Apply CSS-style <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -844,7 +896,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "labelCssClasses": { | ||||
|           "description": "Css classes that are applied onto the label; can be space-separated", | ||||
|           "description": "question: Which CSS-classes should be applied to the label?\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -870,7 +922,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "rotationAlignment": { | ||||
|           "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", | ||||
|           "description": "question: Should the icon be rotated or tilted if the map is rotated or tilted?\nifunset: Do not rotate or tilt icons. Always keep the icons straight\nsuggestions: return [{if: \"value=canvas\", then: \"If the map is tilted, tilt the icon as well. This gives the impression of an icon that is glued to the ground.\"}, {if: \"value=map\", then: \"If the map is rotated, rotate the icon as well. This gives the impression of an icon that floats perpendicular above the ground.\"}]", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -894,10 +946,10 @@ export default { | |||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "color": { | ||||
|           "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", | ||||
|           "description": "question: What color should lines be drawn in?\n\nFor an area, this will be the colour of the outside line.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead\n\ntypes: dynamic value ; string\ntitle: Line Colour\ninline: The line colour always is <b>{value}</b>\nifunset: Round ending\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -905,10 +957,10 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "width": { | ||||
|           "description": "The stroke-width for way-elements", | ||||
|           "description": "question: How wide should the line be?\nThe stroke-width for way-elements\n\ntypes: dynamic value ; string\ntitle: Line width\ninline: The line width is <b>{value} pixels</b>\ntype: pnat\nifunset: Use the default-linewidth of 7 pixels", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": [ | ||||
|  | @ -919,21 +971,14 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "dashArray": { | ||||
|           "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|           "description": "question: Should a dasharray be used to render the lines?\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap, ...'. For example, `5 6` will be 5 pixels of line followed by a 6 pixel gap.\nCannot be a dynamic property due to a mapbox limitation\nifunset: Ways are rendered with a full line", | ||||
|           "type": "string" | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "lineCap": { | ||||
|           "description": "The form at the end of a line", | ||||
|           "description": "question: What form should the line-ending have?\nsuggestions: return [{if:\"value=round\",then:\"Round endings\"}, {if: \"value=square\", then: \"square endings\"}, {if: \"value=butt\", then: \"no ending (square ending at the end, without padding)\"}]\ntypes: dynamic value ; string\ntitle: Line Cap\nifunset: Use the default value (round ending)", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -941,10 +986,10 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "fillColor": { | ||||
|           "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line.\nUse '#00000000' to make the fill invisible", | ||||
|           "description": "question: What colour should be used as fill colour for polygons?\nifunset: The polygon fill colour will be a more transparent version of the stroke colour\nsuggestions: return [{if: \"value=#00000000\", then: \"Use a transparent fill (only render the outline)\"}]\ninline: The fill colour is <b>{value}</b>\ntypes: dynamic value ; string\ntype: color", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "string" | ||||
|  | @ -952,10 +997,10 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "offset": { | ||||
|           "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", | ||||
|           "description": "question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines?\nThe number of pixels this line should be moved.\nUse a positive number to move to the right in the drawing direction or a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details\nifunset: don't offset lines on the map\ninline: Pixel offset by <b>{value}</b> pixels\ntypes: dynamic value ; number\ntype: int", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|             }, | ||||
|             { | ||||
|               "type": "number" | ||||
|  | @ -964,60 +1009,6 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "default<default|default|default[]|default[]>": { | ||||
|       "description": "Rewrites and multiplies the given renderings of type T.\n\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\n\n(Note that the key does _not_ need to be wrapped in {}.\nHowever, we recommend to use them if the key is used in a translation, as missing keys will be picked up and warned for by the translation scripts)\n\nFor example:\n\n```\n{\n    rewrite: {\n        sourceString: [\"key\", \"a|b|c\"],\n        into: [\n            [\"X\", 0]\n            [\"Y\", 1],\n            [\"Z\", 2]\n        ],\n        renderings: [{\n            \"key\":\"a|b|c\"\n        }]\n    }\n}\n```\nwill result in _three_ copies (as the values to rewrite into have three values, namely:\n\n[\n  {\n  # The first pair: key --> X, a|b|c --> 0\n      \"X\": 0\n  },\n  {\n      \"Y\": 1\n  },\n  {\n      \"Z\": 2\n  }\n\n]", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "rewrite": { | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "sourceString": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "into": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "type": "array", | ||||
|                 "items": {} | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "into", | ||||
|             "sourceString" | ||||
|           ] | ||||
|         }, | ||||
|         "renderings": { | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "$ref": "#/definitions/default_4" | ||||
|             }, | ||||
|             { | ||||
|               "$ref": "#/definitions/default_5" | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               } | ||||
|             }, | ||||
|             { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/default_4" | ||||
|               } | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "renderings", | ||||
|         "rewrite" | ||||
|       ] | ||||
|     }, | ||||
|     "QuestionableTagRenderingConfigJson": { | ||||
|       "description": "A QuestionableTagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", | ||||
|       "type": "object", | ||||
|  | @ -1739,7 +1730,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "source": { | ||||
|           "description": "Question: Where should the data be fetched from?\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "description": "Question: Where should the data be fetched from?\ntitle: Data Source\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "type": "object", | ||||
|  | @ -1876,21 +1867,18 @@ export default { | |||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "mapRendering": { | ||||
|           "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering\ngroup: maprendering\ntypes: PointRendering ; LineRendering ;", | ||||
|         "pointRendering": { | ||||
|           "description": "Creates points to render on the map.\nThis can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered\ngroup: pointrendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|             "$ref": "#/definitions/default_4" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default<default|default|default[]|default[]>" | ||||
|           } | ||||
|             ] | ||||
|         }, | ||||
|         "lineRendering": { | ||||
|           "description": "Creates lines and areas to render on the map\ngroup: linerendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/default_5" | ||||
|           } | ||||
|         }, | ||||
|         "passAllFeatures": { | ||||
|  | @ -2107,6 +2095,7 @@ export default { | |||
|       }, | ||||
|       "required": [ | ||||
|         "id", | ||||
|         "pointRendering", | ||||
|         "source" | ||||
|       ] | ||||
|     }, | ||||
|  | @ -2140,7 +2129,7 @@ export default { | |||
|           ] | ||||
|         }, | ||||
|         "source": { | ||||
|           "description": "Question: Where should the data be fetched from?\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "description": "Question: Where should the data be fetched from?\ntitle: Data Source\n\nThis determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\n\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\n\nEvery source _must_ define which tags _must_ be present in order to be picked up.\n\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer\n\ntypes: Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;\ntypesdefault: 0\ngroup: Basic", | ||||
|           "anyOf": [ | ||||
|             { | ||||
|               "type": "object", | ||||
|  | @ -2277,21 +2266,18 @@ export default { | |||
|             } | ||||
|           ] | ||||
|         }, | ||||
|         "mapRendering": { | ||||
|           "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering\ngroup: maprendering\ntypes: PointRendering ; LineRendering ;", | ||||
|         "pointRendering": { | ||||
|           "description": "Creates points to render on the map.\nThis can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered\ngroup: pointrendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|             "$ref": "#/definitions/default_4" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default_5" | ||||
|               }, | ||||
|               { | ||||
|                 "$ref": "#/definitions/default<default|default|default[]|default[]>" | ||||
|           } | ||||
|             ] | ||||
|         }, | ||||
|         "lineRendering": { | ||||
|           "description": "Creates lines and areas to render on the map\ngroup: linerendering", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/default_5" | ||||
|           } | ||||
|         }, | ||||
|         "passAllFeatures": { | ||||
|  |  | |||
|  | @ -3,10 +3,10 @@ | |||
|   "type": "object", | ||||
|   "properties": { | ||||
|     "color": { | ||||
|       "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", | ||||
|       "description": "question: What color should lines be drawn in?\n\nFor an area, this will be the colour of the outside line.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead\n\ntypes: dynamic value ; string\ntitle: Line Colour\ninline: The line colour always is <b>{value}</b>\nifunset: Round ending\ntype: color", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|  | @ -14,10 +14,10 @@ | |||
|       ] | ||||
|     }, | ||||
|     "width": { | ||||
|       "description": "The stroke-width for way-elements", | ||||
|       "description": "question: How wide should the line be?\nThe stroke-width for way-elements\n\ntypes: dynamic value ; string\ntitle: Line width\ninline: The line width is <b>{value} pixels</b>\ntype: pnat\nifunset: Use the default-linewidth of 7 pixels", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": [ | ||||
|  | @ -28,21 +28,14 @@ | |||
|       ] | ||||
|     }, | ||||
|     "dashArray": { | ||||
|       "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|       "description": "question: Should a dasharray be used to render the lines?\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap, ...'. For example, `5 6` will be 5 pixels of line followed by a 6 pixel gap.\nCannot be a dynamic property due to a mapbox limitation\nifunset: Ways are rendered with a full line", | ||||
|       "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "lineCap": { | ||||
|       "description": "The form at the end of a line", | ||||
|       "description": "question: What form should the line-ending have?\nsuggestions: return [{if:\"value=round\",then:\"Round endings\"}, {if: \"value=square\", then: \"square endings\"}, {if: \"value=butt\", then: \"no ending (square ending at the end, without padding)\"}]\ntypes: dynamic value ; string\ntitle: Line Cap\nifunset: Use the default value (round ending)", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|  | @ -50,10 +43,10 @@ | |||
|       ] | ||||
|     }, | ||||
|     "fillColor": { | ||||
|       "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line.\nUse '#00000000' to make the fill invisible", | ||||
|       "description": "question: What colour should be used as fill colour for polygons?\nifunset: The polygon fill colour will be a more transparent version of the stroke colour\nsuggestions: return [{if: \"value=#00000000\", then: \"Use a transparent fill (only render the outline)\"}]\ninline: The fill colour is <b>{value}</b>\ntypes: dynamic value ; string\ntype: color", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|  | @ -61,10 +54,10 @@ | |||
|       ] | ||||
|     }, | ||||
|     "offset": { | ||||
|       "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", | ||||
|       "description": "question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines?\nThe number of pixels this line should be moved.\nUse a positive number to move to the right in the drawing direction or a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details\nifunset: don't offset lines on the map\ninline: Pixel offset by <b>{value}</b> pixels\ntypes: dynamic value ; number\ntype: int", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "number" | ||||
|  | @ -375,6 +368,38 @@ | |||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|  |  | |||
|  | @ -3,10 +3,10 @@ export default { | |||
|   "type": "object", | ||||
|   "properties": { | ||||
|     "color": { | ||||
|       "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", | ||||
|       "description": "question: What color should lines be drawn in?\n\nFor an area, this will be the colour of the outside line.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead\n\ntypes: dynamic value ; string\ntitle: Line Colour\ninline: The line colour always is <b>{value}</b>\nifunset: Round ending\ntype: color", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|  | @ -14,10 +14,10 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "width": { | ||||
|       "description": "The stroke-width for way-elements", | ||||
|       "description": "question: How wide should the line be?\nThe stroke-width for way-elements\n\ntypes: dynamic value ; string\ntitle: Line width\ninline: The line width is <b>{value} pixels</b>\ntype: pnat\nifunset: Use the default-linewidth of 7 pixels", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": [ | ||||
|  | @ -28,21 +28,14 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "dashArray": { | ||||
|       "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|       "description": "question: Should a dasharray be used to render the lines?\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap, ...'. For example, `5 6` will be 5 pixels of line followed by a 6 pixel gap.\nCannot be a dynamic property due to a mapbox limitation\nifunset: Ways are rendered with a full line", | ||||
|       "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "lineCap": { | ||||
|       "description": "The form at the end of a line", | ||||
|       "description": "question: What form should the line-ending have?\nsuggestions: return [{if:\"value=round\",then:\"Round endings\"}, {if: \"value=square\", then: \"square endings\"}, {if: \"value=butt\", then: \"no ending (square ending at the end, without padding)\"}]\ntypes: dynamic value ; string\ntitle: Line Cap\nifunset: Use the default value (round ending)", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|  | @ -50,10 +43,10 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "fillColor": { | ||||
|       "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line.\nUse '#00000000' to make the fill invisible", | ||||
|       "description": "question: What colour should be used as fill colour for polygons?\nifunset: The polygon fill colour will be a more transparent version of the stroke colour\nsuggestions: return [{if: \"value=#00000000\", then: \"Use a transparent fill (only render the outline)\"}]\ninline: The fill colour is <b>{value}</b>\ntypes: dynamic value ; string\ntype: color", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|  | @ -61,10 +54,10 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "offset": { | ||||
|       "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", | ||||
|       "description": "question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines?\nThe number of pixels this line should be moved.\nUse a positive number to move to the right in the drawing direction or a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details\nifunset: don't offset lines on the map\ninline: Pixel offset by <b>{value}</b> pixels\ntypes: dynamic value ; number\ntype: int", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|           "$ref": "#/definitions/MinimalTagRenderingConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "type": "number" | ||||
|  | @ -369,6 +362,37 @@ export default { | |||
|           "type": "string" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#" | ||||
|  |  | |||
|  | @ -409,6 +409,38 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object", | ||||
|       "additionalProperties": false | ||||
|  |  | |||
|  | @ -403,6 +403,37 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object" | ||||
|     } | ||||
|  |  | |||
							
								
								
									
										90
									
								
								Docs/Schemas/MinimalTagRenderingConfigJson.schema.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								Docs/Schemas/MinimalTagRenderingConfigJson.schema.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,90 @@ | |||
| { | ||||
|   "description": "Mostly used for lineRendering and pointRendering", | ||||
|   "type": "object", | ||||
|   "properties": { | ||||
|     "render": { | ||||
|       "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "mappings": { | ||||
|       "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "if": { | ||||
|             "$ref": "#/definitions/TagConfigJson", | ||||
|             "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|           }, | ||||
|           "then": { | ||||
|             "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|             "type": "string" | ||||
|           } | ||||
|         }, | ||||
|         "required": [ | ||||
|           "if", | ||||
|           "then" | ||||
|         ] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "definitions": { | ||||
|     "TagConfigJson": { | ||||
|       "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n\ntype: tag", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/{and:TagConfigJson[];}" | ||||
|         }, | ||||
|         { | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "or": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/TagConfigJson" | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "or" | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "{and:TagConfigJson[];}": { | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "and" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "{or:TagConfigJson[];}": { | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "or" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "additionalProperties": false | ||||
| } | ||||
							
								
								
									
										87
									
								
								Docs/Schemas/MinimalTagRenderingConfigJsonJSC.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								Docs/Schemas/MinimalTagRenderingConfigJsonJSC.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,87 @@ | |||
| export default { | ||||
|   "description": "Mostly used for lineRendering and pointRendering", | ||||
|   "type": "object", | ||||
|   "properties": { | ||||
|     "render": { | ||||
|       "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "mappings": { | ||||
|       "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "if": { | ||||
|             "$ref": "#/definitions/TagConfigJson", | ||||
|             "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|           }, | ||||
|           "then": { | ||||
|             "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|             "type": "string" | ||||
|           } | ||||
|         }, | ||||
|         "required": [ | ||||
|           "if", | ||||
|           "then" | ||||
|         ] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "definitions": { | ||||
|     "TagConfigJson": { | ||||
|       "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n\ntype: tag", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/{and:TagConfigJson[];}" | ||||
|         }, | ||||
|         { | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "or": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/TagConfigJson" | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "or" | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "{and:TagConfigJson[];}": { | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "and" | ||||
|       ] | ||||
|     }, | ||||
|     "{or:TagConfigJson[];}": { | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "or" | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#" | ||||
| } | ||||
|  | @ -1,66 +0,0 @@ | |||
| { | ||||
|   "$ref": "#/definitions/OrTagConfigJson", | ||||
|   "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|   "definitions": { | ||||
|     "TagConfigJson": { | ||||
|       "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/AndTagConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "or": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/TagConfigJson" | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "or" | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "AndTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "and" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "OrTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "or" | ||||
|       ], | ||||
|       "additionalProperties": false | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "additionalProperties": false | ||||
| } | ||||
|  | @ -1,63 +0,0 @@ | |||
| export default { | ||||
|   "$ref": "#/definitions/OrTagConfigJson", | ||||
|   "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|   "definitions": { | ||||
|     "TagConfigJson": { | ||||
|       "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/AndTagConfigJson" | ||||
|         }, | ||||
|         { | ||||
|           "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|           "type": "object", | ||||
|           "properties": { | ||||
|             "or": { | ||||
|               "type": "array", | ||||
|               "items": { | ||||
|                 "$ref": "#/definitions/TagConfigJson" | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "required": [ | ||||
|             "or" | ||||
|           ] | ||||
|         }, | ||||
|         { | ||||
|           "type": "string" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "AndTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "and": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "and" | ||||
|       ] | ||||
|     }, | ||||
|     "OrTagConfigJson": { | ||||
|       "description": "Chain many tags, to match, all of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "or": { | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "$ref": "#/definitions/TagConfigJson" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "required": [ | ||||
|         "or" | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#" | ||||
| } | ||||
|  | @ -3,14 +3,19 @@ | |||
|   "type": "object", | ||||
|   "properties": { | ||||
|     "location": { | ||||
|       "description": "All the locations that this point should be rendered at.\nPossible values are:\n- `point`: only renders points at their location\n- `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this\n- `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way\n- `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString", | ||||
|       "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line\"}]", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "string" | ||||
|       } | ||||
|     }, | ||||
|     "marker": { | ||||
|       "description": "question: What marker should be used to\nThe icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one c    an use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "icon": { | ||||
|       "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|             "anyOf": [ | ||||
|               { | ||||
|                 "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -20,6 +25,22 @@ | |||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "color": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|                 "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               }, | ||||
|               { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "required": [ | ||||
|           "icon" | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "iconBadges": { | ||||
|       "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", | ||||
|       "type": "array", | ||||
|  | @ -60,7 +81,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "anchor": { | ||||
|       "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\nFor example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location.", | ||||
|       "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\n\nifunset: Use MapComplete-default (<b>center</b>)\nsuggestions: return [{if: \"value=center\", then: \"Place the <b>center</b> of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the <b>top</b> of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the <b>bottom</b> of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the <b>left</b> of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the <b>right</b> of the icon on the geographical location\"}]", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -82,7 +103,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "label": { | ||||
|       "description": "A HTML-fragment that is shown below the icon, for example:\n<div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", | ||||
|       "description": "question: What label should be shown beneath the marker?\nFor example: <div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\ntypes: Dynamic value | string\ninline: Always show label <b>{value}</b> beneath the marker", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -93,7 +114,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "css": { | ||||
|       "description": "A snippet of css code which is applied onto the container of the entire marker", | ||||
|       "description": "question: What CSS should be applied to the entire marker?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\nThis will be applied to the _container_ containing both the marker and the label\ninline: Apply CSS-style <b>{value}</b> to the _entire marker_\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -104,7 +125,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "cssClasses": { | ||||
|       "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", | ||||
|       "description": "question: Which CSS-classes should be applied to the entire marker?\nThis will be applied to the _container_ containing both the marker and the label\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the entire container\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -115,7 +136,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "labelCss": { | ||||
|       "description": "Css that is applied onto the label", | ||||
|       "description": "question: What CSS should be applied to the label?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\ninline: Apply CSS-style <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -126,7 +147,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "labelCssClasses": { | ||||
|       "description": "Css classes that are applied onto the label; can be space-separated", | ||||
|       "description": "question: Which CSS-classes should be applied to the label?\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -152,7 +173,7 @@ | |||
|       ] | ||||
|     }, | ||||
|     "rotationAlignment": { | ||||
|       "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", | ||||
|       "description": "question: Should the icon be rotated or tilted if the map is rotated or tilted?\nifunset: Do not rotate or tilt icons. Always keep the icons straight\nsuggestions: return [{if: \"value=canvas\", then: \"If the map is tilted, tilt the icon as well. This gives the impression of an icon that is glued to the ground.\"}, {if: \"value=map\", then: \"If the map is rotated, rotate the icon as well. This gives the impression of an icon that floats perpendicular above the ground.\"}]", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  |  | |||
|  | @ -3,14 +3,19 @@ export default { | |||
|   "type": "object", | ||||
|   "properties": { | ||||
|     "location": { | ||||
|       "description": "All the locations that this point should be rendered at.\nPossible values are:\n- `point`: only renders points at their location\n- `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this\n- `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way\n- `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString", | ||||
|       "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line\"}]", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "string" | ||||
|       } | ||||
|     }, | ||||
|     "marker": { | ||||
|       "description": "question: What marker should be used to\nThe icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one c    an use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "icon": { | ||||
|       "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;<path to my icon.svg>`\n\nType: icon", | ||||
|             "anyOf": [ | ||||
|               { | ||||
|                 "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -20,6 +25,22 @@ export default { | |||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "color": { | ||||
|             "anyOf": [ | ||||
|               { | ||||
|                 "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|               }, | ||||
|               { | ||||
|                 "type": "string" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         "required": [ | ||||
|           "icon" | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "iconBadges": { | ||||
|       "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", | ||||
|       "type": "array", | ||||
|  | @ -60,7 +81,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "anchor": { | ||||
|       "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\nFor example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location.", | ||||
|       "description": "question: What is the anchorpoint of the icon?\n\nThis matches the geographical point with a location on the icon.\n\nifunset: Use MapComplete-default (<b>center</b>)\nsuggestions: return [{if: \"value=center\", then: \"Place the <b>center</b> of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the <b>top</b> of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the <b>bottom</b> of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the <b>left</b> of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the <b>right</b> of the icon on the geographical location\"}]", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -82,7 +103,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "label": { | ||||
|       "description": "A HTML-fragment that is shown below the icon, for example:\n<div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", | ||||
|       "description": "question: What label should be shown beneath the marker?\nFor example: <div style=\"background: white\">{name}</div>\n\nIf the icon is undefined, then the label is shown in the center of the feature.\ntypes: Dynamic value | string\ninline: Always show label <b>{value}</b> beneath the marker", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -93,7 +114,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "css": { | ||||
|       "description": "A snippet of css code which is applied onto the container of the entire marker", | ||||
|       "description": "question: What CSS should be applied to the entire marker?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\nThis will be applied to the _container_ containing both the marker and the label\ninline: Apply CSS-style <b>{value}</b> to the _entire marker_\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -104,7 +125,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "cssClasses": { | ||||
|       "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", | ||||
|       "description": "question: Which CSS-classes should be applied to the entire marker?\nThis will be applied to the _container_ containing both the marker and the label\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the entire container\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -115,7 +136,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "labelCss": { | ||||
|       "description": "Css that is applied onto the label", | ||||
|       "description": "question: What CSS should be applied to the label?\nYou can set the css-properties here, e.g. `background: red; font-size: 12px; `\ninline: Apply CSS-style <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -126,7 +147,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "labelCssClasses": { | ||||
|       "description": "Css classes that are applied onto the label; can be space-separated", | ||||
|       "description": "question: Which CSS-classes should be applied to the label?\n\nThe classes should be separated by a space (` `)\nYou can use most Tailwind-css classes, see https://tailwindcss.com/ for more information\nFor example: `center bg-gray-500 mx-2 my-1 rounded-full`\ninline: Apply CSS-classes <b>{value}</b> to the label\ntypes: Dynamic value ; string", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  | @ -152,7 +173,7 @@ export default { | |||
|       ] | ||||
|     }, | ||||
|     "rotationAlignment": { | ||||
|       "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", | ||||
|       "description": "question: Should the icon be rotated or tilted if the map is rotated or tilted?\nifunset: Do not rotate or tilt icons. Always keep the icons straight\nsuggestions: return [{if: \"value=canvas\", then: \"If the map is tilted, tilt the icon as well. This gives the impression of an icon that is glued to the ground.\"}, {if: \"value=map\", then: \"If the map is rotated, rotate the icon as well. This gives the impression of an icon that floats perpendicular above the ground.\"}]", | ||||
|       "anyOf": [ | ||||
|         { | ||||
|           "$ref": "#/definitions/TagRenderingConfigJson" | ||||
|  |  | |||
|  | @ -497,6 +497,38 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object", | ||||
|       "additionalProperties": false | ||||
|  |  | |||
|  | @ -491,6 +491,37 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object" | ||||
|     }, | ||||
|  |  | |||
|  | @ -336,6 +336,38 @@ | |||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "additionalProperties": false | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object", | ||||
|       "additionalProperties": false | ||||
|  |  | |||
|  | @ -330,6 +330,37 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "MinimalTagRenderingConfigJson": { | ||||
|       "description": "Mostly used for lineRendering and pointRendering", | ||||
|       "type": "object", | ||||
|       "properties": { | ||||
|         "render": { | ||||
|           "description": "question: What value should be rendered?\n\nThis piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\n\nThis value will be used if there is no mapping which matches (or there are no matches)\nNote that this is a HTML-interpreted value, so you can add links as e.g. '<a href='{website}'>{website}</a>' or include images such as `This is of type A <br><img src='typeA-icon.svg' />`", | ||||
|           "type": "string" | ||||
|         }, | ||||
|         "mappings": { | ||||
|           "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", | ||||
|           "type": "array", | ||||
|           "items": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|               "if": { | ||||
|                 "$ref": "#/definitions/TagConfigJson", | ||||
|                 "description": "question: When should this single mapping match?\n\nIf this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" | ||||
|               }, | ||||
|               "then": { | ||||
|                 "description": "question: What text should be shown?\n\nIf the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option", | ||||
|                 "type": "string" | ||||
|               } | ||||
|             }, | ||||
|             "required": [ | ||||
|               "if", | ||||
|               "then" | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "Record<string,string[]>": { | ||||
|       "type": "object" | ||||
|     }, | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -270,6 +270,8 @@ | |||
|         "condition": "addr:housenumber~*" | ||||
|       }, | ||||
|       "iconSize": "50,50", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/address/housenumber_blank.svg", | ||||
|             "mappings": [ | ||||
|  | @ -288,7 +290,9 @@ | |||
|                 "then": "./assets/themes/uk_addresses/housenumber_unknown.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|  |  | |||
|  | @ -1278,6 +1278,18 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "_referencing_ways=[\"way/-1\"]", | ||||
|                 "then": "brick_wall_square" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/themes/advertising/sign.svg", | ||||
|             "mappings": [ | ||||
|  | @ -1301,15 +1313,6 @@ | |||
|                 "if": "advertising=flag", | ||||
|                 "then": "./assets/themes/advertising/flag.svg" | ||||
|               }, | ||||
|           { | ||||
|             "if": { | ||||
|               "and": [ | ||||
|                 "advertising=poster_box", | ||||
|                 "_referencing_ways=[\"way/-1\"]" | ||||
|               ] | ||||
|             }, | ||||
|             "then": "brick_wall_square;./assets/themes/advertising/poster_box_no_support.svg" | ||||
|           }, | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|  | @ -1323,15 +1326,6 @@ | |||
|                 "if": "advertising=poster_box", | ||||
|                 "then": "./assets/themes/advertising/poster_box.svg" | ||||
|               }, | ||||
|           { | ||||
|             "if": { | ||||
|               "and": [ | ||||
|                 "advertising=screen", | ||||
|                 "_referencing_ways=[\"way/-1\"]" | ||||
|               ] | ||||
|             }, | ||||
|             "then": "brick_wall_square;./assets/themes/advertising/screen_no_support.svg" | ||||
|           }, | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|  | @ -1349,15 +1343,6 @@ | |||
|                 "if": "advertising=sculpture", | ||||
|                 "then": "./assets/themes/advertising/sculpture.svg" | ||||
|               }, | ||||
|           { | ||||
|             "if": { | ||||
|               "and": [ | ||||
|                 "advertising=sign", | ||||
|                 "_referencing_ways=[\"way/-1\"]" | ||||
|               ] | ||||
|             }, | ||||
|             "then": "brick_wall_square;./assets/themes/advertising/sign.svg" | ||||
|           }, | ||||
|               { | ||||
|                 "if": "advertising=sign", | ||||
|                 "then": "./assets/themes/advertising/sign.svg" | ||||
|  | @ -1375,7 +1360,9 @@ | |||
|                 "then": "./assets/themes/advertising/wall_painting.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": { | ||||
|         "render": "40,40", | ||||
|         "mappings": [ | ||||
|  |  | |||
|  | @ -378,13 +378,17 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/hailhydrant/Twemoji_1f691.svg", | ||||
|       "iconSize": "35,35", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/hailhydrant/Twemoji_1f691.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -800,7 +800,15 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/themes/artwork/artwork.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/themes/artwork/artwork.svg" | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|  | @ -812,15 +820,5 @@ | |||
|       "color": "#0000ff", | ||||
|       "width": "10" | ||||
|     } | ||||
|   ], | ||||
|   "pl": { | ||||
|     "title": { | ||||
|       "mappings": { | ||||
|         "0": { | ||||
|           "then": "{name}" | ||||
|         } | ||||
|       }, | ||||
|       "render": "turbina wiatrowa" | ||||
|     } | ||||
|   } | ||||
|   ] | ||||
| } | ||||
|  |  | |||
|  | @ -476,6 +476,23 @@ | |||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/atm/atm.svg" | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "filter": [ | ||||
|     "open_now", | ||||
|     { | ||||
|  | @ -495,14 +512,5 @@ | |||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/atm/atm.svg", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
| } | ||||
|  |  | |||
|  | @ -107,7 +107,15 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/bank/bank.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/bank/bank.svg" | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|  |  | |||
|  | @ -604,7 +604,11 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/layers/barrier/barrier.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/barrier/barrier.svg" | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ] | ||||
|  |  | |||
|  | @ -1125,7 +1125,6 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:#99bd54;./assets/layers/bench/bench.svg", | ||||
|       "iconSize": "35,35", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|  | @ -1137,7 +1136,16 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "#99bd54" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/bench/bench.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -259,12 +259,20 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/themes/benches/bench_public_transport.svg", | ||||
|       "iconSize": "35,35", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/themes/benches/bench_public_transport.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -328,7 +328,6 @@ | |||
|   "deletion": true, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "pin:#22ff55;./assets/layers/bicycle_library/bicycle_library.svg", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "opening_hours~*", | ||||
|  | @ -344,7 +343,16 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": "#22ff55" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/bicycle_library/bicycle_library.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -586,13 +586,17 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/bicycle_rental/logo.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/bicycle_rental/logo.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -316,7 +316,6 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "pin:#ffffff;./assets/layers/bicycle_tube_vending_machine/pinIcon.svg", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": { | ||||
|  | @ -333,7 +332,16 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": "#ffffff" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/bicycle_tube_vending_machine/pinIcon.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -351,12 +351,20 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "pin:#684c2b;./assets/layers/bike_cafe/bike_cafe.svg", | ||||
|       "iconSize": "50,50", | ||||
|       "anchor": "bottom", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": "#684c2b" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/bike_cafe/bike_cafe.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -249,7 +249,6 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/layers/bike_cleaning/bike_cleaning.svg", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": { | ||||
|  | @ -270,7 +269,12 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/bike_cleaning/bike_cleaning.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -716,13 +716,21 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "pin:#5473de;./assets/layers/bike_parking/parking.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": "#5473de" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/bike_parking/parking.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -999,8 +999,11 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": { | ||||
|         "render": "pin:#88d32c;./assets/layers/bike_repair_station/repair_station.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": { | ||||
|             "render": "#88d32c", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": { | ||||
|  | @ -1010,7 +1013,7 @@ | |||
|                     "service:bicycle:pump:operational_status=broken" | ||||
|                   ] | ||||
|                 }, | ||||
|             "then": "pin:#88d32c;./assets/layers/bike_repair_station/repair_station_broken_pump.svg" | ||||
|                 "then": "#88d32c" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|  | @ -1019,7 +1022,7 @@ | |||
|                     "service:bicycle:tools=yes" | ||||
|                   ] | ||||
|                 }, | ||||
|             "then": "pin:#30abf0;./assets/layers/bike_repair_station/repair_station_pump.svg" | ||||
|                 "then": "#30abf0" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|  | @ -1028,7 +1031,7 @@ | |||
|                     "service:bicycle:tools=no" | ||||
|                   ] | ||||
|                 }, | ||||
|             "then": "pin:black;./assets/layers/bike_repair_station/broken_pump.svg" | ||||
|                 "then": "black" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|  | @ -1042,10 +1045,61 @@ | |||
|                     } | ||||
|                   ] | ||||
|                 }, | ||||
|             "then": "pin:#e1783a;./assets/layers/bike_repair_station/pump.svg" | ||||
|                 "then": "#e1783a" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/bike_repair_station/repair_station.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|                     "service:bicycle:pump=yes", | ||||
|                     "service:bicycle:tools=yes", | ||||
|                     "service:bicycle:pump:operational_status=broken" | ||||
|                   ] | ||||
|                 }, | ||||
|                 "then": "./assets/layers/bike_repair_station/repair_station_broken_pump.svg" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|                     "service:bicycle:pump=yes", | ||||
|                     "service:bicycle:tools=yes" | ||||
|                   ] | ||||
|                 }, | ||||
|                 "then": "./assets/layers/bike_repair_station/repair_station_pump.svg" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|                     "service:bicycle:pump:operational_status=broken", | ||||
|                     "service:bicycle:tools=no" | ||||
|                   ] | ||||
|                 }, | ||||
|                 "then": "./assets/layers/bike_repair_station/broken_pump.svg" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|                     "service:bicycle:pump=yes", | ||||
|                     { | ||||
|                       "or": [ | ||||
|                         "service:bicycle:tools=no", | ||||
|                         "service:bicycle:tools=" | ||||
|                       ] | ||||
|                     } | ||||
|                   ] | ||||
|                 }, | ||||
|                 "then": "./assets/layers/bike_repair_station/pump.svg" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "operator=De Fietsambassade Gent", | ||||
|  |  | |||
|  | @ -866,9 +866,35 @@ | |||
|   ], | ||||
|   "deletion": true, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|         "render": "pin:#f04c4c;./assets/layers/bike_shop/repair_shop.svg", | ||||
|             "render": "pin", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "operator=De Fietsambassade Gent", | ||||
|                 "then": null | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "color": { | ||||
|             "render": "#f04c4c", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "operator=De Fietsambassade Gent", | ||||
|                 "then": null | ||||
|               }, | ||||
|               { | ||||
|                 "if": "service:bicycle:retail=yes", | ||||
|                 "then": "#353d57" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/bike_shop/repair_shop.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "operator=De Fietsambassade Gent", | ||||
|  | @ -876,10 +902,12 @@ | |||
|               }, | ||||
|               { | ||||
|                 "if": "service:bicycle:retail=yes", | ||||
|             "then": "pin:#353d57;./assets/layers/bike_shop/shop.svg" | ||||
|                 "then": "./assets/layers/bike_shop/shop.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "opening_hours~*", | ||||
|  |  | |||
|  | @ -84,13 +84,17 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/layers/bike_themed_object/other_services.svg", | ||||
|       "iconSize": "50,50", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/bike_themed_object/other_services.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -167,12 +167,20 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/binocular/telescope.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/binocular/telescope.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -407,6 +407,8 @@ | |||
|     "enableImproveAccuracy": true | ||||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/birdhide/birdhide.svg", | ||||
|  | @ -422,7 +424,9 @@ | |||
|                 "then": "./assets/layers/birdhide/birdshelter.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|  |  | |||
|  | @ -333,19 +333,6 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": { | ||||
|         "render": "circle:white;./assets/layers/cafe_pub/pub.svg", | ||||
|         "mappings": [ | ||||
|           { | ||||
|             "if": "amenity=cafe", | ||||
|             "then": "circle:white;./assets/layers/cafe_pub/cafe.svg" | ||||
|           }, | ||||
|           { | ||||
|             "if": "amenity=nightclub", | ||||
|             "then": "circle:white;./assets/layers/cafe_pub/nightclub.svg" | ||||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "opening_hours~*", | ||||
|  | @ -363,6 +350,23 @@ | |||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "circle:white;./assets/layers/cafe_pub/pub.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "amenity=cafe", | ||||
|                 "then": "circle:white;./assets/layers/cafe_pub/cafe.svg" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "amenity=nightclub", | ||||
|                 "then": "circle:white;./assets/layers/cafe_pub/nightclub.svg" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -118,12 +118,20 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/car_rental/car_rental.svg", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "label": "<div class='bg-white block p-1 rounded'>{name}</div>" | ||||
|       "label": "<div class='bg-white block p-1 rounded'>{name}</div>", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/car_rental/car_rental.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -5238,12 +5238,18 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": "#fff" | ||||
|         }, | ||||
|         { | ||||
|           "icon": { | ||||
|         "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", | ||||
|             "render": "./assets/themes/charging_stations/plug.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "bicycle=yes", | ||||
|             "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" | ||||
|                 "then": "./assets/themes/charging_stations/bicycle.svg" | ||||
|               }, | ||||
|               { | ||||
|                 "if": { | ||||
|  | @ -5252,46 +5258,12 @@ | |||
|                     "motorcar=yes" | ||||
|                   ] | ||||
|                 }, | ||||
|             "then": "pin:#fff;./assets/themes/charging_stations/car.svg" | ||||
|                 "then": "./assets/themes/charging_stations/car.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": { | ||||
|             "or": [ | ||||
|               "disused:amenity=charging_station", | ||||
|               "operational_status=broken" | ||||
|             ] | ||||
|           }, | ||||
|           "then": "close:#c22;" | ||||
|         }, | ||||
|         { | ||||
|           "if": { | ||||
|             "or": [ | ||||
|               "proposed:amenity=charging_station", | ||||
|               "planned:amenity=charging_station" | ||||
|             ] | ||||
|           }, | ||||
|           "then": "./assets/layers/charging_station/under_construction.svg" | ||||
|         }, | ||||
|         { | ||||
|           "if": { | ||||
|             "and": [ | ||||
|               "bicycle=yes", | ||||
|               { | ||||
|                 "or": [ | ||||
|                   "motorcar=yes", | ||||
|                   "car=yes" | ||||
|                 ] | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|           }, | ||||
|           "then": "circle:#fff;./assets/themes/charging_stations/car.svg" | ||||
|         } | ||||
|       ], | ||||
|       "anchor": "bottom", | ||||
|       "iconSize": "50,50" | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -728,18 +728,23 @@ | |||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "mapRendering": [ | ||||
|   "lineRendering": [], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [{ | ||||
|         "icon": "pin", | ||||
|         "color": "#fff" | ||||
|       },{ | ||||
|         "icon": { | ||||
|         "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", | ||||
|           "render":"./assets/themes/charging_stations/plug.svg", | ||||
|           "mappings": [ | ||||
|             { | ||||
|               "if": "bicycle=yes", | ||||
|             "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" | ||||
|               "then": "./assets/themes/charging_stations/bicycle.svg" | ||||
|             }, | ||||
|             { | ||||
|               "if": { | ||||
|  | @ -748,10 +753,12 @@ | |||
|                   "motorcar=yes" | ||||
|                 ] | ||||
|               }, | ||||
|             "then": "pin:#fff;./assets/themes/charging_stations/car.svg" | ||||
|               "then": "./assets/themes/charging_stations/car.svg" | ||||
|             } | ||||
|           ] | ||||
|       }, | ||||
|            | ||||
|         } | ||||
|       }], | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": { | ||||
|  |  | |||
|  | @ -307,13 +307,17 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/climbing/climbing_no_rope.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/climbing/climbing_no_rope.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -165,7 +165,6 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/climbing/club.svg", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "opening_hours~*", | ||||
|  | @ -185,7 +184,12 @@ | |||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/climbing/club.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -481,7 +481,6 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/climbing/climbing_gym.svg", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "opening_hours~*", | ||||
|  | @ -501,7 +500,12 @@ | |||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/climbing/climbing_gym.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -122,7 +122,11 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/climbing/climbing_unknown.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/climbing/climbing_unknown.svg" | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|  |  | |||
|  | @ -228,7 +228,6 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/themes/climbing/climbing_route.svg", | ||||
|       "iconSize": "28,28", | ||||
|       "location": [ | ||||
|         "point", | ||||
|  | @ -251,7 +250,16 @@ | |||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/themes/climbing/climbing_route.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -494,6 +494,8 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/clock/clock.svg", | ||||
|             "mappings": [ | ||||
|  | @ -502,7 +504,9 @@ | |||
|                 "then": "./assets/layers/clock/clock_digital.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": { | ||||
|         "render": "40,40,center", | ||||
|         "mappings": [ | ||||
|  |  | |||
|  | @ -7,48 +7,108 @@ | |||
|   "title": "Conflation", | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "location": "point", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "color": { | ||||
|             "render": "#000", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "detach=yes", | ||||
|                 "then": "white" | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "icon": { | ||||
|             "render": "addSmall:#000", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "detach=yes", | ||||
|             "then": "circle:white;close:#c33" | ||||
|                 "then": "white" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "icon": { | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "detach=yes", | ||||
|                 "then": "close" | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "color": "#C33" | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "10,10", | ||||
|       "anchor": "center" | ||||
|     }, | ||||
|     { | ||||
|       "location": "end", | ||||
|       "location": [ | ||||
|         "end" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|         "render": "circle:#0f0", | ||||
|             "render": "circle", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "reprojection=yes", | ||||
|             "then": "none:#f00" | ||||
|                 "then": "none" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "move=no", | ||||
|             "then": "ring:#0f0" | ||||
|                 "then": "ring" | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "color": { | ||||
|             "render": "#0f0", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "reprojection=yes", | ||||
|                 "then": "#f00" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "move=no", | ||||
|                 "then": "#0f0" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "10,10", | ||||
|       "anchor": "center" | ||||
|     }, | ||||
|     { | ||||
|       "location": "start", | ||||
|       "location": [ | ||||
|         "start" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|         "render": "square:#f00", | ||||
|             "render": "square", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "reprojection=yes", | ||||
|             "then": "reload:#f00" | ||||
|                 "then": "reload" | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "color": { | ||||
|             "render": "#f00", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "reprojection=yes", | ||||
|                 "then": "#f00" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": { | ||||
|         "render": "10,10,center", | ||||
|         "mappings": [ | ||||
|  | @ -71,16 +131,7 @@ | |||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "color": "#00f", | ||||
|       "dasharray": { | ||||
|         "render": "", | ||||
|         "mappings": [ | ||||
|           { | ||||
|             "if": "resulting-geometry=yes", | ||||
|             "then": "6 6" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|       "color": "#00f" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|  |  | |||
|  | @ -27,9 +27,13 @@ | |||
|         "centroid" | ||||
|       ], | ||||
|       "iconSize": "50,50", | ||||
|       "icon": "./assets/layers/crab_address/housenumber_blank.svg", | ||||
|       "label": "<div style='margin-top: -42px; color: white' class='rounded-full p-1 font-bold relative'>{_HNRLABEL}</div>", | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/crab_address/housenumber_blank.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -646,6 +646,8 @@ | |||
|     "tactile_paving_advanced" | ||||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/crossings/pedestrian_crossing.svg", | ||||
|  | @ -660,7 +662,9 @@ | |||
|                 "then": "./assets/layers/crossings/traffic_lights.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ] | ||||
|  |  | |||
|  | @ -1695,10 +1695,14 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/cycle_infra/bicycleway.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/cycle_infra/bicycleway.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -683,7 +683,7 @@ | |||
|   }, | ||||
|   "allowMove": { | ||||
|     "enableRelocation": false, | ||||
|     "enableImproveAccuraccy": true | ||||
|     "enableImproveAccuracy": true | ||||
|   }, | ||||
|   "filter": [ | ||||
|     "has_image", | ||||
|  | @ -691,15 +691,23 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": { | ||||
|         "render": "square:#008754;./assets/layers/defibrillator/defibrillator.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "square", | ||||
|           "color": { | ||||
|             "render": "#008754", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "_recently_surveyed=true", | ||||
|             "then": "square:#28ba3d;./assets/layers/defibrillator/defibrillator.svg" | ||||
|                 "then": "#28ba3d" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/defibrillator/defibrillator.svg" | ||||
|         } | ||||
|       ], | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ] | ||||
|  |  | |||
|  | @ -76,13 +76,21 @@ | |||
|   "allowMove": true, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/dentist/dentist.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/dentist/dentist.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -35,14 +35,19 @@ | |||
|   "presets": [], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "direction_gradient:var(--catch-detail-color)", | ||||
|       "iconSize": "200,200", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "rotation": "{_direction:numerical}deg", | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "direction_gradient", | ||||
|           "color": "var(--catch-detail-color)" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -147,13 +147,21 @@ | |||
|   "allowMove": true, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/doctors/doctors.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/doctors/doctors.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -177,7 +177,6 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": "./assets/layers/dogpark/dog-park.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "label": { | ||||
|         "mappings": [ | ||||
|  | @ -187,7 +186,12 @@ | |||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/dogpark/dog-park.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -256,7 +256,6 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "pin:#6BC4F7;./assets/layers/drinking_water/drips.svg", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": { | ||||
|  | @ -273,7 +272,16 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": "#6BC4F7" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/drinking_water/drips.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -331,7 +331,6 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/elevator/elevator_wheelchair.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|  | @ -348,7 +347,16 @@ | |||
|           "then": "close:#c33" | ||||
|         } | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/elevator/elevator_wheelchair.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -389,7 +389,6 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:#FFFFFF00;./assets/themes/elongated_coin/penny.svg", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|  | @ -399,6 +398,15 @@ | |||
|           "if": "opening_hours~*", | ||||
|           "then": "icons.isOpen" | ||||
|         } | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "#FFFFFF00" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/themes/elongated_coin/penny.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -550,16 +550,24 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": { | ||||
|         "render": "circle:white;./assets/layers/entrance/entrance.svg", | ||||
|             "render": "./assets/layers/entrance/entrance.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "entrance=emergency", | ||||
|             "then": "circle:white;./assets/layers/entrance/emergency_door.svg" | ||||
|                 "then": "./assets/layers/entrance/emergency_door.svg" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
| } | ||||
|  |  | |||
|  | @ -266,6 +266,13 @@ | |||
|     } | ||||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "pin:#05d7fcaa", | ||||
|  | @ -280,12 +287,9 @@ | |||
|                 "then": "pin:#fcca05aa" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -164,13 +164,17 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/hailhydrant/Twemoji12_1f9ef.svg", | ||||
|       "iconSize": "20,20", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/hailhydrant/Twemoji12_1f9ef.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -297,13 +297,17 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/hailhydrant/Twemoji12_1f692.svg", | ||||
|       "iconSize": "35,35", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/hailhydrant/Twemoji12_1f692.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -99,7 +99,6 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": "circle:white;./assets/layers/fitness_centre/gym.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "label": "<div style='background: white; padding: 0.25em; border-radius:0.5em'>{name}</div>", | ||||
|       "iconBadges": [ | ||||
|  | @ -108,7 +107,16 @@ | |||
|           "then": "icons.isOpen" | ||||
|         } | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/fitness_centre/gym.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -425,7 +425,6 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": "circle:white;./assets/layers/fitness_station/fitness.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|  | @ -438,7 +437,16 @@ | |||
|           "then": "icons.isOpen" | ||||
|         } | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/fitness_station/fitness.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -78,8 +78,12 @@ | |||
|         "centroid", | ||||
|         "point" | ||||
|       ], | ||||
|       "icon": "./assets/svg/bug.svg", | ||||
|       "label": "<div class='bg-white rounded p-2'>{fixme}</div>" | ||||
|       "label": "<div class='bg-white rounded p-2'>{fixme}</div>", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/svg/bug.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -1165,24 +1165,6 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": { | ||||
|         "render": "circle:white;./assets/layers/food/restaurant.svg", | ||||
|         "mappings": [ | ||||
|           { | ||||
|             "if": { | ||||
|               "and": [ | ||||
|                 "amenity=fast_food", | ||||
|                 "cuisine=friture" | ||||
|               ] | ||||
|             }, | ||||
|             "then": "circle:white;./assets/layers/food/fries.svg" | ||||
|           }, | ||||
|           { | ||||
|             "if": "amenity=fast_food", | ||||
|             "then": "circle:white;./assets/layers/food/fastfood.svg" | ||||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "iconBadges": [ | ||||
|         { | ||||
|           "if": "opening_hours~*", | ||||
|  | @ -1222,6 +1204,28 @@ | |||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "circle:white;./assets/layers/food/restaurant.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": { | ||||
|                   "and": [ | ||||
|                     "amenity=fast_food", | ||||
|                     "cuisine=friture" | ||||
|                   ] | ||||
|                 }, | ||||
|                 "then": "circle:white;./assets/layers/food/fries.svg" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "amenity=fast_food", | ||||
|                 "then": "circle:white;./assets/layers/food/fastfood.svg" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -282,13 +282,17 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/layers/ghost_bike/ghost_bike.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "bottom" | ||||
|       "anchor": "bottom", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/ghost_bike/ghost_bike.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -68,13 +68,21 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/governments/government.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/governments/government.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -5,15 +5,20 @@ | |||
|   "source": "special", | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "color": "--catch-detail-color", | ||||
|           "icon": { | ||||
|         "render": "crosshair:var(--catch-detail-color)", | ||||
|             "render": "crosshair", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "speed>2", | ||||
|                 "then": "gps_arrow" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "40,40", | ||||
|       "pitchAlignment": "map", | ||||
|       "rotation": { | ||||
|  |  | |||
|  | @ -11,9 +11,14 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": "square:red", | ||||
|       "iconSize": "5,5", | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "square", | ||||
|           "color": "red" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -346,6 +346,8 @@ | |||
|   "allowMove": true, | ||||
|   "deletion": true, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/themes/hackerspaces/glider.svg", | ||||
|  | @ -359,7 +361,9 @@ | |||
|                 "then": "./assets/themes/hackerspaces/led.png" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|  |  | |||
|  | @ -5,11 +5,19 @@ | |||
|   "source": "special", | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/svg/home.svg", | ||||
|       "iconSize": "20,20", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/svg/home.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|  |  | |||
|  | @ -117,13 +117,21 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "circle:white;./assets/layers/hospital/hospital.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/hospital/hospital.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -107,9 +107,17 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": "circle:white;./assets/layers/hotel/hotel.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": "white" | ||||
|         }, | ||||
|         { | ||||
|           "icon": "./assets/layers/hotel/hotel.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -527,13 +527,17 @@ | |||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/themes/hailhydrant/hydrant.svg", | ||||
|       "iconSize": "20,20", | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/themes/hailhydrant/hydrant.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
							
								
								
									
										1
									
								
								assets/layers/id_presets/fas-bowl-rice.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								assets/layers/id_presets/fas-bowl-rice.svg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z"/></svg> | ||||
| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										2
									
								
								assets/layers/id_presets/fas-bowl-rice.svg.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								assets/layers/id_presets/fas-bowl-rice.svg.license
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| SPDX-FileCopyrightText: Font-Awesome icon set | ||||
| SPDX-License-Identifier: CC-BY 4.0 | ||||
							
								
								
									
										1
									
								
								assets/layers/id_presets/fas-jar.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								assets/layers/id_presets/fas-jar.svg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z"/></svg> | ||||
| After Width: | Height: | Size: 596 B | 
							
								
								
									
										2
									
								
								assets/layers/id_presets/fas-jar.svg.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								assets/layers/id_presets/fas-jar.svg.license
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| SPDX-FileCopyrightText: Font-Awesome icon set | ||||
| SPDX-License-Identifier: CC-BY 4.0 | ||||
							
								
								
									
										1
									
								
								assets/layers/id_presets/fas-plate-wheat.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								assets/layers/id_presets/fas-plate-wheat.svg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z"/></svg> | ||||
| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										2
									
								
								assets/layers/id_presets/fas-plate-wheat.svg.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								assets/layers/id_presets/fas-plate-wheat.svg.license
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| SPDX-FileCopyrightText: Font-Awesome icon set | ||||
| SPDX-License-Identifier: CC-BY 4.0 | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -49,6 +49,16 @@ | |||
|       "https://github.com/FortAwesome/Font-Awesome" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "fas-bowl-rice.svg", | ||||
|     "license": "CC-BY 4.0", | ||||
|     "authors": [ | ||||
|       "Font-Awesome icon set" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://github.com/FortAwesome/Font-Awesome" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "fas-camera-retro.svg", | ||||
|     "license": "CC-BY-4.0", | ||||
|  | @ -209,6 +219,16 @@ | |||
|       "https://github.com/FortAwesome/Font-Awesome" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "fas-jar.svg", | ||||
|     "license": "CC-BY 4.0", | ||||
|     "authors": [ | ||||
|       "Font-Awesome icon set" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://github.com/FortAwesome/Font-Awesome" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "fas-key.svg", | ||||
|     "license": "CC-BY-4.0", | ||||
|  | @ -299,6 +319,16 @@ | |||
|       "https://github.com/FortAwesome/Font-Awesome" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "fas-plate-wheat.svg", | ||||
|     "license": "CC-BY 4.0", | ||||
|     "authors": [ | ||||
|       "Font-Awesome icon set" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://github.com/FortAwesome/Font-Awesome" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "fas-plug.svg", | ||||
|     "license": "CC-BY-4.0", | ||||
|  |  | |||
|  | @ -15,9 +15,14 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": "square:red;", | ||||
|       "iconSize": "15,15", | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "square", | ||||
|           "color": "red" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [] | ||||
|  |  | |||
|  | @ -435,6 +435,8 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "mappings": [ | ||||
|               { | ||||
|  | @ -471,7 +473,9 @@ | |||
|                 "then": "./assets/layers/indoors/room_toilets.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "15,15", | ||||
|       "anchor": "bottom" | ||||
|     } | ||||
|  |  | |||
|  | @ -79,12 +79,16 @@ | |||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "icon": "./assets/layers/information_board/board.svg", | ||||
|       "iconSize": "40,40", | ||||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "anchor": "center" | ||||
|       "anchor": "center", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "./assets/layers/information_board/board.svg" | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|  |  | |||
|  | @ -396,6 +396,8 @@ | |||
|       "location": [ | ||||
|         "point" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/kerbs/KerbIcon.svg", | ||||
|             "mappings": [ | ||||
|  | @ -418,6 +420,8 @@ | |||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|     { | ||||
|  |  | |||
|  | @ -186,6 +186,8 @@ | |||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "mappings": [ | ||||
|               { | ||||
|  | @ -199,6 +201,8 @@ | |||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "lineRendering": [ | ||||
|     { | ||||
|  |  | |||
|  | @ -87,6 +87,8 @@ | |||
|     } | ||||
|   ], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "mappings": [ | ||||
|  | @ -105,7 +107,9 @@ | |||
|               } | ||||
|             ], | ||||
|             "render": "<div class='relative'> <img src='./assets/svg/add_pin.svg' class='absolute' style='height: 50px'> <div class='absolute top-0 left-0 rounded-full overflow-hidden noselect' style='width: 40px; height: 40px'><div class='flex slide min-w-min' style='animation: slide linear {number_of_presets}s infinite; width: calc( (1 + {number_of_presets}) * 40px ); height: 40px'>{renderings}{first_preset}</div></div></div>" | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "labelCssClasses": "text-sm min-w-min px-2 rounded-full text-white opacity-65 whitespace-nowrap block-ruby", | ||||
|       "labelCss": "background: #00000088", | ||||
|       "label": { | ||||
|  |  | |||
|  | @ -349,6 +349,8 @@ | |||
|     "enableImproveAccuraccy": true | ||||
|   }, | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/map/map.svg", | ||||
|  | @ -380,7 +382,9 @@ | |||
|                 "then": "./assets/layers/map/osm-logo-buggy-attr.svg" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "50,50", | ||||
|       "location": [ | ||||
|         "point", | ||||
|  |  | |||
|  | @ -309,43 +309,48 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "icon": { | ||||
|         "render": "./assets/layers/maproulette/logomark.svg", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "pin", | ||||
|           "color": { | ||||
|             "render": "#00", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "status=0", | ||||
|             "then": "pin:#959DFF" | ||||
|                 "then": "#959DFF" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=1", | ||||
|             "then": "pin:#65D2DA" | ||||
|                 "then": "#65D2DA" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=2", | ||||
|             "then": "pin:#F7BB59" | ||||
|                 "then": "#F7BB59" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=3", | ||||
|             "then": "pin:#F7BB59" | ||||
|                 "then": "#F7BB59" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=4", | ||||
|             "then": "pin:#737373" | ||||
|                 "then": "#737373" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=5", | ||||
|             "then": "pin:#CCB186" | ||||
|                 "then": "#CCB186" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=6", | ||||
|             "then": "pin:#FF5E63" | ||||
|                 "then": "#FF5E63" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "status=9", | ||||
|             "then": "pin:#FF349C" | ||||
|                 "then": "#FF349C" | ||||
|               } | ||||
|             ] | ||||
|       }, | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "40,40", | ||||
|       "anchor": "bottom" | ||||
|     } | ||||
|  |  | |||
|  | @ -204,43 +204,67 @@ | |||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "color": { | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Created", | ||||
|                 "then": "#959DFF" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Fixed", | ||||
|                 "then": "#65D2DA" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=False positive", | ||||
|                 "then": "#F7BB59" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Skipped", | ||||
|                 "then": "#F7BB59" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Deleted", | ||||
|                 "then": "#737373" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Already fixed", | ||||
|                 "then": "#CCB186" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Too hard", | ||||
|                 "then": "#FF5E63" | ||||
|               }, | ||||
|               { | ||||
|                 "if": "mr_taskStatus=Disabled", | ||||
|                 "then": "#FF349C" | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           "icon": { | ||||
|             "render": "./assets/layers/maproulette/logomark.svg", | ||||
|             "mappings": [ | ||||
|               { | ||||
|             "if": "mr_taskStatus=Created", | ||||
|             "then": "pin:#959DFF" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=Fixed", | ||||
|             "then": "pin:#65D2DA" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=False positive", | ||||
|             "then": "pin:#F7BB59" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=Skipped", | ||||
|             "then": "pin:#F7BB59" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=Deleted", | ||||
|             "then": "pin:#737373" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=Already fixed", | ||||
|             "then": "pin:#CCB186" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=Too hard", | ||||
|             "then": "pin:#FF5E63" | ||||
|           }, | ||||
|           { | ||||
|             "if": "mr_taskStatus=Disabled", | ||||
|             "then": "pin:#FF349C" | ||||
|           } | ||||
|                 "if": { | ||||
|                   "or": [ | ||||
|                     "mr_taskStatus=Created", | ||||
|                     "mr_taskStatus=Fixed", | ||||
|                     "mr_taskStatus=False positive", | ||||
|                     "mr_taskStatus=Skipped", | ||||
|                     "mr_taskStatus=Deleted", | ||||
|                     "mr_taskStatus=Already fixed", | ||||
|                     "mr_taskStatus=Already fixed", | ||||
|                     "mr_taskStatus=Disabled", | ||||
|                     "mr_taskStatus=Too hard" | ||||
|                   ] | ||||
|                 }, | ||||
|                 "then": "pin" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "40,40", | ||||
|       "anchor": "bottom" | ||||
|     } | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue