diff --git a/Docs/Schemas/AndOrTagConfigJson.schema.json b/Docs/Schemas/AndOrTagConfigJson.schema.json deleted file mode 100644 index a6214c2ea..000000000 --- a/Docs/Schemas/AndOrTagConfigJson.schema.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/Docs/Schemas/AndOrTagConfigJsonJSC.ts b/Docs/Schemas/AndOrTagConfigJsonJSC.ts deleted file mode 100644 index 3da8b5b09..000000000 --- a/Docs/Schemas/AndOrTagConfigJsonJSC.ts +++ /dev/null @@ -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#" -} \ No newline at end of file diff --git a/Docs/Schemas/AndTagConfigJson.schema.json b/Docs/Schemas/AndTagConfigJson.schema.json deleted file mode 100644 index 9f510d6b2..000000000 --- a/Docs/Schemas/AndTagConfigJson.schema.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/Docs/Schemas/AndTagConfigJsonJSC.ts b/Docs/Schemas/AndTagConfigJsonJSC.ts deleted file mode 100644 index 2903f36b1..000000000 --- a/Docs/Schemas/AndTagConfigJsonJSC.ts +++ /dev/null @@ -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#" -} \ No newline at end of file diff --git a/Docs/Schemas/LayerConfigJson.schema.json b/Docs/Schemas/LayerConfigJson.schema.json index 3e759fd10..15e718bcc 100644 --- a/Docs/Schemas/LayerConfigJson.schema.json +++ b/Docs/Schemas/LayerConfigJson.schema.json @@ -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" - } - ] + "$ref": "#/definitions/default_4" + } + }, + "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": { "type": "object", "additionalProperties": false @@ -825,22 +855,43 @@ "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" } }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" + "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;`\n\nType: icon", + "type": "array", + "items": { + "type": "object", + "properties": { + "icon": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } }, - { - "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", @@ -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 (center)\nsuggestions: return [{if: \"value=center\", then: \"Place the center of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the top of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the bottom of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the left of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the right 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
{name}
\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:
{name}
\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 {value} 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 {value} 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 {value} 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 {value} 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 {value} 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 {value}\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 {value} pixels\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" - }, - { - "type": "string" - } - ] + "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 {value}\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 {value} pixels\ntypes: dynamic value ; number\ntype: int", "anyOf": [ { - "$ref": "#/definitions/TagRenderingConfigJson" + "$ref": "#/definitions/MinimalTagRenderingConfigJson" }, { "type": "number" @@ -1070,61 +1114,6 @@ }, "additionalProperties": false }, - "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", diff --git a/Docs/Schemas/LayerConfigJsonJSC.ts b/Docs/Schemas/LayerConfigJsonJSC.ts index 3f12e9b9b..3fd828770 100644 --- a/Docs/Schemas/LayerConfigJsonJSC.ts +++ b/Docs/Schemas/LayerConfigJsonJSC.ts @@ -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" - } - ] + "$ref": "#/definitions/default_4" + } + }, + "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": { "type": "object" }, @@ -816,22 +845,43 @@ 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" } }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" + "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;`\n\nType: icon", + "type": "array", + "items": { + "type": "object", + "properties": { + "icon": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } }, - { - "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", @@ -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 (center)\nsuggestions: return [{if: \"value=center\", then: \"Place the center of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the top of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the bottom of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the left of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the right 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
{name}
\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:
{name}
\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 {value} 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 {value} 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 {value} 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 {value} 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 {value} 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 {value}\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 {value} pixels\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" - }, - { - "type": "string" - } - ] + "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 {value}\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 {value} pixels\ntypes: dynamic value ; number\ntype: int", "anyOf": [ { - "$ref": "#/definitions/TagRenderingConfigJson" + "$ref": "#/definitions/MinimalTagRenderingConfigJson" }, { "type": "number" @@ -1059,60 +1102,6 @@ export 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", diff --git a/Docs/Schemas/LayoutConfigJson.schema.json b/Docs/Schemas/LayoutConfigJson.schema.json index a8bf86f88..a186d319a 100644 --- a/Docs/Schemas/LayoutConfigJson.schema.json +++ b/Docs/Schemas/LayoutConfigJson.schema.json @@ -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": { "type": "object", "additionalProperties": false @@ -730,22 +762,43 @@ "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" } }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" + "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;`\n\nType: icon", + "type": "array", + "items": { + "type": "object", + "properties": { + "icon": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } }, - { - "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", @@ -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 (center)\nsuggestions: return [{if: \"value=center\", then: \"Place the center of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the top of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the bottom of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the left of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the right 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
{name}
\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:
{name}
\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 {value} 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 {value} 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 {value} 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 {value} 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 {value} 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 {value}\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 {value} pixels\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" - }, - { - "type": "string" - } - ] + "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 {value}\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 {value} pixels\ntypes: dynamic value ; number\ntype: int", "anyOf": [ { - "$ref": "#/definitions/TagRenderingConfigJson" + "$ref": "#/definitions/MinimalTagRenderingConfigJson" }, { "type": "number" @@ -975,61 +1021,6 @@ }, "additionalProperties": false }, - "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" - } - ] + "$ref": "#/definitions/default_4" + } + }, + "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" - } - ] + "$ref": "#/definitions/default_4" + } + }, + "lineRendering": { + "description": "Creates lines and areas to render on the map\ngroup: linerendering", + "type": "array", + "items": { + "$ref": "#/definitions/default_5" } }, "passAllFeatures": { diff --git a/Docs/Schemas/LayoutConfigJsonJSC.ts b/Docs/Schemas/LayoutConfigJsonJSC.ts index c840dfce9..860111d43 100644 --- a/Docs/Schemas/LayoutConfigJsonJSC.ts +++ b/Docs/Schemas/LayoutConfigJsonJSC.ts @@ -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": { "type": "object" }, @@ -721,22 +752,43 @@ 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" } }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" + "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;`\n\nType: icon", + "type": "array", + "items": { + "type": "object", + "properties": { + "icon": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } }, - { - "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", @@ -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 (center)\nsuggestions: return [{if: \"value=center\", then: \"Place the center of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the top of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the bottom of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the left of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the right 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
{name}
\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:
{name}
\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 {value} 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 {value} 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 {value} 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 {value} 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 {value} 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 {value}\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 {value} pixels\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" - }, - { - "type": "string" - } - ] + "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 {value}\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 {value} pixels\ntypes: dynamic value ; number\ntype: int", "anyOf": [ { - "$ref": "#/definitions/TagRenderingConfigJson" + "$ref": "#/definitions/MinimalTagRenderingConfigJson" }, { "type": "number" @@ -964,60 +1009,6 @@ export 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" - } - ] + "$ref": "#/definitions/default_4" + } + }, + "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" - } - ] + "$ref": "#/definitions/default_4" + } + }, + "lineRendering": { + "description": "Creates lines and areas to render on the map\ngroup: linerendering", + "type": "array", + "items": { + "$ref": "#/definitions/default_5" } }, "passAllFeatures": { diff --git a/Docs/Schemas/LineRenderingConfigJson.schema.json b/Docs/Schemas/LineRenderingConfigJson.schema.json index cd636b995..c823b8e7d 100644 --- a/Docs/Schemas/LineRenderingConfigJson.schema.json +++ b/Docs/Schemas/LineRenderingConfigJson.schema.json @@ -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 {value}\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 {value} pixels\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" - }, - { - "type": "string" - } - ] + "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 {value}\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 {value} 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#", diff --git a/Docs/Schemas/LineRenderingConfigJsonJSC.ts b/Docs/Schemas/LineRenderingConfigJsonJSC.ts index 6f0007229..4f619c719 100644 --- a/Docs/Schemas/LineRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/LineRenderingConfigJsonJSC.ts @@ -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 {value}\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 {value} pixels\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" - }, - { - "type": "string" - } - ] + "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 {value}\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 {value} 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#" diff --git a/Docs/Schemas/MappingConfigJson.schema.json b/Docs/Schemas/MappingConfigJson.schema.json index 6ac39c55a..27ee75a98 100644 --- a/Docs/Schemas/MappingConfigJson.schema.json +++ b/Docs/Schemas/MappingConfigJson.schema.json @@ -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": { "type": "object", "additionalProperties": false diff --git a/Docs/Schemas/MappingConfigJsonJSC.ts b/Docs/Schemas/MappingConfigJsonJSC.ts index 90f027d07..8d4693077 100644 --- a/Docs/Schemas/MappingConfigJsonJSC.ts +++ b/Docs/Schemas/MappingConfigJsonJSC.ts @@ -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": { "type": "object" } diff --git a/Docs/Schemas/MinimalTagRenderingConfigJson.schema.json b/Docs/Schemas/MinimalTagRenderingConfigJson.schema.json new file mode 100644 index 000000000..96451c791 --- /dev/null +++ b/Docs/Schemas/MinimalTagRenderingConfigJson.schema.json @@ -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 +} \ No newline at end of file diff --git a/Docs/Schemas/MinimalTagRenderingConfigJsonJSC.ts b/Docs/Schemas/MinimalTagRenderingConfigJsonJSC.ts new file mode 100644 index 000000000..acadc3f82 --- /dev/null +++ b/Docs/Schemas/MinimalTagRenderingConfigJsonJSC.ts @@ -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#" +} \ No newline at end of file diff --git a/Docs/Schemas/OrTagConfigJson.schema.json b/Docs/Schemas/OrTagConfigJson.schema.json deleted file mode 100644 index 338fb9524..000000000 --- a/Docs/Schemas/OrTagConfigJson.schema.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/Docs/Schemas/OrTagConfigJsonJSC.ts b/Docs/Schemas/OrTagConfigJsonJSC.ts deleted file mode 100644 index c0aa3ec56..000000000 --- a/Docs/Schemas/OrTagConfigJsonJSC.ts +++ /dev/null @@ -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#" -} \ No newline at end of file diff --git a/Docs/Schemas/PointRenderingConfigJson.schema.json b/Docs/Schemas/PointRenderingConfigJson.schema.json index 87701204e..5965aa60a 100644 --- a/Docs/Schemas/PointRenderingConfigJson.schema.json +++ b/Docs/Schemas/PointRenderingConfigJson.schema.json @@ -3,22 +3,43 @@ "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" } }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" + "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;`\n\nType: icon", + "type": "array", + "items": { + "type": "object", + "properties": { + "icon": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } }, - { - "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", @@ -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 (center)\nsuggestions: return [{if: \"value=center\", then: \"Place the center of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the top of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the bottom of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the left of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the right 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
{name}
\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:
{name}
\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 {value} 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 {value} 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 {value} 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 {value} 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 {value} 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" diff --git a/Docs/Schemas/PointRenderingConfigJsonJSC.ts b/Docs/Schemas/PointRenderingConfigJsonJSC.ts index e0ce8ac9f..85ff65a9c 100644 --- a/Docs/Schemas/PointRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/PointRenderingConfigJsonJSC.ts @@ -3,22 +3,43 @@ 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" } }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" + "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;`\n\nType: icon", + "type": "array", + "items": { + "type": "object", + "properties": { + "icon": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } }, - { - "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", @@ -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 (center)\nsuggestions: return [{if: \"value=center\", then: \"Place the center of the icon on the geographical location\"},{if: \"value=top\", then: \"Place the top of the icon on the geographical location\"},{if: \"value=bottom\", then: \"Place the bottom of the icon on the geographical location\"},{if: \"value=left\", then: \"Place the left of the icon on the geographical location\"},{if: \"value=right\", then: \"Place the right 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
{name}
\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:
{name}
\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 {value} 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 {value} 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 {value} 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 {value} 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 {value} 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" diff --git a/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json b/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json index a31b7034d..c48c5d130 100644 --- a/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json +++ b/Docs/Schemas/QuestionableTagRenderingConfigJson.schema.json @@ -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": { "type": "object", "additionalProperties": false diff --git a/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts b/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts index 81ed065ad..fb48f239d 100644 --- a/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts +++ b/Docs/Schemas/QuestionableTagRenderingConfigJsonJSC.ts @@ -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": { "type": "object" }, diff --git a/Docs/Schemas/RewritableConfigJson.schema.json b/Docs/Schemas/RewritableConfigJson.schema.json index 1c7f723d8..dd35dce64 100644 --- a/Docs/Schemas/RewritableConfigJson.schema.json +++ b/Docs/Schemas/RewritableConfigJson.schema.json @@ -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": { "type": "object", "additionalProperties": false diff --git a/Docs/Schemas/RewritableConfigJsonJSC.ts b/Docs/Schemas/RewritableConfigJsonJSC.ts index f8dafe492..2d326ebb9 100644 --- a/Docs/Schemas/RewritableConfigJsonJSC.ts +++ b/Docs/Schemas/RewritableConfigJsonJSC.ts @@ -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": { "type": "object" }, diff --git a/Docs/Schemas/TilesourceConfigJson.schema.json b/Docs/Schemas/TilesourceConfigJson.schema.json deleted file mode 100644 index 3fdd289d9..000000000 --- a/Docs/Schemas/TilesourceConfigJson.schema.json +++ /dev/null @@ -1,1118 +0,0 @@ -{ - "description": "Configuration for a tilesource config", - "type": "object", - "properties": { - "id": { - "description": "Id of this overlay, used in the URL-parameters to set the state", - "type": "string" - }, - "source": { - "description": "The path, where {x}, {y} and {z} will be substituted", - "type": "string" - }, - "isOverlay": { - "description": "Wether or not this is an overlay. Default: true", - "type": "boolean" - }, - "name": { - "description": "How this will be shown in the selection menu.\nMake undefined if this may not be toggled" - }, - "minZoom": { - "description": "Only visible at this or a higher zoom level", - "type": "number" - }, - "maxZoom": { - "description": "Only visible at this or a lower zoom level", - "type": "number" - }, - "defaultState": { - "description": "The default state, set to false to hide by default", - "type": "boolean" - } - }, - "required": [ - "defaultState", - "id", - "source" - ], - "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 - }, - "DenominationConfigJson": { - "type": "object", - "properties": { - "useIfNoUnitGiven": { - "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\n\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\n\nIf none of the units indicate that they are the default, the first denomination will be used instead", - "anyOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "boolean" - } - ] - }, - "canonicalDenomination": { - "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\n\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used", - "type": "string" - }, - "canonicalDenominationSingular": { - "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\n\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here", - "type": "string" - }, - "alternativeDenomination": { - "description": "A list of alternative values which can occur in the OSM database - used for parsing.\nE.g.: while 'm' is canonical, `meter`, `mtrs`, ... can occur as well", - "type": "array", - "items": { - "type": "string" - } - }, - "human": { - "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "humanSingular": { - "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"\n}", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "prefix": { - "description": "If set, then the canonical value will be prefixed instead, e.g. for '€'\nNote that if all values use 'prefix', the dropdown might move to before the text field", - "type": "boolean" - } - }, - "required": [ - "canonicalDenomination" - ], - "additionalProperties": false - }, - "Record": { - "type": "object", - "additionalProperties": false - }, - "TagRenderingConfigJson": { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "id": { - "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise.\n\nUse 'questions' to trigger the question box of this group (if a group is defined)", - "type": "string" - }, - "group": { - "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", - "type": "string" - }, - "labels": { - "description": "A list of labels. These are strings that are used for various purposes, e.g. to filter them away", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does" - }, - "render": { - "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`\ntype: rendered" - }, - "condition": { - "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "Allow freeform text input from the user", - "type": "object", - "properties": { - "key": { - "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "If 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": "If 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\nType: rendered" - }, - "icon": { - "description": "An icon supporting this mapping; typically shown pretty small\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - } - }, - "additionalProperties": false - }, - "Record": { - "type": "object", - "additionalProperties": false - }, - "MappingConfigJson": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" - }, - "then": { - "description": "Shown if the 'if is fulfilled\nType: rendered" - }, - "icon": { - "description": "An extra icon supporting the choice\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "hideInAnswer": { - "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": [ - "string", - "boolean" - ] - } - ] - }, - "ifnot": { - "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "addExtraTags": { - "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": \"not:crossing:marking=\"\n}\n```", - "type": "array", - "items": { - "type": "string" - } - }, - "searchTerms": { - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options", - "$ref": "#/definitions/Record" - }, - "priorityIf": { - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "#": { - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", - "type": "string" - } - }, - "required": [ - "if", - "then" - ], - "additionalProperties": false - }, - "T": { - "type": "object", - "additionalProperties": false - }, - "default_4": { - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", - "type": "object", - "properties": { - "location": { - "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint.\n'projected_centerpoint' will show an item on the line itself, near the middle of the line. (LineStrings only)", - "type": "array", - "items": { - "type": "string" - } - }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "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", - "items": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" - }, - "then": { - "description": "Badge to show\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "iconSize": { - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "rotation": { - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "label": { - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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.", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "css": { - "description": "A snippet of css code", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "cssClasses": { - "description": "A snippet of css-classes. They can be space-separated", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "location" - ], - "additionalProperties": false - }, - "default_5": { - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", - "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", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "width": { - "description": "The stroke-width for way-elements", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": [ - "string", - "number" - ] - } - ] - }, - "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" - }, - { - "type": "string" - } - ] - }, - "lineCap": { - "description": "The form at the end of a line", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "fill": { - "description": "Whether or not to fill polygons", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "enum": [ - "no", - "yes" - ], - "type": "string" - } - ] - }, - "fillColor": { - "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "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", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "number" - } - ] - } - }, - "additionalProperties": false - }, - "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", - "properties": { - "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "questionHint": { - "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "Allow freeform text input from the user", - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "type": { - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", - "type": "string" - }, - "placeholder": { - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - "helperArgs": { - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", - "type": "array", - "items": {} - }, - "addExtraTags": { - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", - "type": "array", - "items": { - "type": "string" - } - }, - "inline": { - "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", - "type": "boolean" - }, - "default": { - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "multiAnswer": { - "description": "If true, use checkboxes instead of radio buttons when asking the question", - "type": "boolean" - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { - "$ref": "#/definitions/MappingConfigJson" - } - }, - "id": { - "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise.\n\nUse 'questions' to trigger the question box of this group (if a group is defined)", - "type": "string" - }, - "group": { - "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", - "type": "string" - }, - "labels": { - "description": "A list of labels. These are strings that are used for various purposes, e.g. to filter them away", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does" - }, - "render": { - "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`\ntype: rendered" - }, - "condition": { - "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - } - }, - "additionalProperties": false - }, - "Partial": { - "type": "object", - "properties": { - "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "questionHint": { - "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "Allow freeform text input from the user", - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "type": { - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", - "type": "string" - }, - "placeholder": { - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - "helperArgs": { - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", - "type": "array", - "items": {} - }, - "addExtraTags": { - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", - "type": "array", - "items": { - "type": "string" - } - }, - "inline": { - "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", - "type": "boolean" - }, - "default": { - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "multiAnswer": { - "description": "If true, use checkboxes instead of radio buttons when asking the question", - "type": "boolean" - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { - "$ref": "#/definitions/MappingConfigJson" - } - }, - "id": { - "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise.\n\nUse 'questions' to trigger the question box of this group (if a group is defined)", - "type": "string" - }, - "group": { - "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", - "type": "string" - }, - "labels": { - "description": "A list of labels. These are strings that are used for various purposes, e.g. to filter them away", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does" - }, - "render": { - "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`\ntype: rendered" - }, - "condition": { - "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - } - }, - "additionalProperties": false - }, - "default<(string|QuestionableTagRenderingConfigJson|{builtin:string;override:Partial;})[]>": { - "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": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/QuestionableTagRenderingConfigJson" - }, - { - "type": "object", - "properties": { - "builtin": { - "type": "string" - }, - "override": { - "$ref": "#/definitions/Partial" - } - }, - "required": [ - "builtin", - "override" - ] - }, - { - "type": "string" - } - ] - } - } - }, - "required": [ - "renderings", - "rewrite" - ], - "additionalProperties": false - }, - "default_1": { - "type": "object", - "properties": { - "id": { - "description": "An id/name for this filter, used to set the URL parameters", - "type": "string" - }, - "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", - "type": "array", - "items": { - "type": "object", - "properties": { - "question": {}, - "osmTags": { - "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, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "default": { - "type": "boolean" - }, - "fields": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "If name is `search`, use \"_first_comment~.*{search}.*\" as osmTags", - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "name" - ] - } - } - }, - "required": [ - "question" - ] - } - }, - "#": { - "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", - "type": "string" - } - }, - "required": [ - "id", - "options" - ], - "additionalProperties": false - }, - "DeleteConfigJson": { - "type": "object", - "properties": { - "extraDeleteReasons": { - "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", - "type": "array", - "items": { - "type": "object", - "properties": { - "explanation": { - "description": "The text that will be shown to the user - translatable" - }, - "changesetMessage": { - "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", - "type": "string" - } - }, - "required": [ - "changesetMessage", - "explanation" - ] - } - }, - "nonDeleteMappings": { - "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", - "type": "array", - "items": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore" - }, - "then": { - "description": "The human explanation for the options" - } - }, - "required": [ - "if", - "then" - ] - } - }, - "softDeletionTags": { - "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "neededChangesets": { - "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", - "type": "number" - }, - "omitDefaultDeleteReasons": { - "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping", - "type": "boolean" - } - }, - "additionalProperties": false - }, - "default_3": { - "type": "object", - "properties": { - "enableImproveAccuracy": { - "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", - "type": "boolean" - }, - "enableRelocation": { - "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", - "type": "boolean" - } - }, - "additionalProperties": false - }, - "default_2": { - "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given", - "type": "object", - "properties": { - "appliesToKey": { - "description": "Every key from this list will be normalized.\n\nTo render a united value properly, use", - "type": "array", - "items": { - "type": "string" - } - }, - "eraseInvalidValues": { - "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", - "type": "boolean" - }, - "applicableUnits": { - "description": "The possible denominations for this unit.\nFor length, denominations could be \"meter\", \"kilometer\", \"miles\", \"foot\"", - "type": "array", - "items": { - "$ref": "#/definitions/DenominationConfigJson" - } - }, - "defaultInput": { - "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\n\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits", - "type": "string" - } - }, - "required": [ - "applicableUnits", - "appliesToKey" - ], - "additionalProperties": false - } - }, - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": false -} \ No newline at end of file diff --git a/Docs/Schemas/TilesourceConfigJsonJSC.ts b/Docs/Schemas/TilesourceConfigJsonJSC.ts deleted file mode 100644 index 36eda59d0..000000000 --- a/Docs/Schemas/TilesourceConfigJsonJSC.ts +++ /dev/null @@ -1,1099 +0,0 @@ -export default { - "description": "Configuration for a tilesource config", - "type": "object", - "properties": { - "id": { - "description": "Id of this overlay, used in the URL-parameters to set the state", - "type": "string" - }, - "source": { - "description": "The path, where {x}, {y} and {z} will be substituted", - "type": "string" - }, - "isOverlay": { - "description": "Wether or not this is an overlay. Default: true", - "type": "boolean" - }, - "name": { - "description": "How this will be shown in the selection menu.\nMake undefined if this may not be toggled" - }, - "minZoom": { - "description": "Only visible at this or a higher zoom level", - "type": "number" - }, - "maxZoom": { - "description": "Only visible at this or a lower zoom level", - "type": "number" - }, - "defaultState": { - "description": "The default state, set to false to hide by default", - "type": "boolean" - } - }, - "required": [ - "defaultState", - "id", - "source" - ], - "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" - ] - }, - "DenominationConfigJson": { - "type": "object", - "properties": { - "useIfNoUnitGiven": { - "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\n\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\n\nIf none of the units indicate that they are the default, the first denomination will be used instead", - "anyOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "boolean" - } - ] - }, - "canonicalDenomination": { - "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\n\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used", - "type": "string" - }, - "canonicalDenominationSingular": { - "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\n\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here", - "type": "string" - }, - "alternativeDenomination": { - "description": "A list of alternative values which can occur in the OSM database - used for parsing.\nE.g.: while 'm' is canonical, `meter`, `mtrs`, ... can occur as well", - "type": "array", - "items": { - "type": "string" - } - }, - "human": { - "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "humanSingular": { - "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"\n}", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "prefix": { - "description": "If set, then the canonical value will be prefixed instead, e.g. for '€'\nNote that if all values use 'prefix', the dropdown might move to before the text field", - "type": "boolean" - } - }, - "required": [ - "canonicalDenomination" - ] - }, - "Record": { - "type": "object" - }, - "TagRenderingConfigJson": { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "id": { - "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise.\n\nUse 'questions' to trigger the question box of this group (if a group is defined)", - "type": "string" - }, - "group": { - "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", - "type": "string" - }, - "labels": { - "description": "A list of labels. These are strings that are used for various purposes, e.g. to filter them away", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does" - }, - "render": { - "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`\ntype: rendered" - }, - "condition": { - "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "Allow freeform text input from the user", - "type": "object", - "properties": { - "key": { - "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "If 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": "If 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\nType: rendered" - }, - "icon": { - "description": "An icon supporting this mapping; typically shown pretty small\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - } - } - }, - "Record": { - "type": "object" - }, - "MappingConfigJson": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" - }, - "then": { - "description": "Shown if the 'if is fulfilled\nType: rendered" - }, - "icon": { - "description": "An extra icon supporting the choice\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "hideInAnswer": { - "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": [ - "string", - "boolean" - ] - } - ] - }, - "ifnot": { - "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "addExtraTags": { - "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": \"not:crossing:marking=\"\n}\n```", - "type": "array", - "items": { - "type": "string" - } - }, - "searchTerms": { - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options", - "$ref": "#/definitions/Record" - }, - "priorityIf": { - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "#": { - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed", - "type": "string" - } - }, - "required": [ - "if", - "then" - ] - }, - "T": { - "type": "object" - }, - "default_4": { - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", - "type": "object", - "properties": { - "location": { - "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint.\n'projected_centerpoint' will show an item on the line itself, near the middle of the line. (LineStrings only)", - "type": "array", - "items": { - "type": "string" - } - }, - "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;`\n\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "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", - "items": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" - }, - "then": { - "description": "Badge to show\nType: icon", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "iconSize": { - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "rotation": { - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "label": { - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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.", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "css": { - "description": "A snippet of css code", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "cssClasses": { - "description": "A snippet of css-classes. They can be space-separated", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "location" - ] - }, - "default_5": { - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", - "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", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "width": { - "description": "The stroke-width for way-elements", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": [ - "string", - "number" - ] - } - ] - }, - "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" - }, - { - "type": "string" - } - ] - }, - "lineCap": { - "description": "The form at the end of a line", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "fill": { - "description": "Whether or not to fill polygons", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "enum": [ - "no", - "yes" - ], - "type": "string" - } - ] - }, - "fillColor": { - "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "string" - } - ] - }, - "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", - "anyOf": [ - { - "$ref": "#/definitions/TagRenderingConfigJson" - }, - { - "type": "number" - } - ] - } - } - }, - "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", - "properties": { - "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "questionHint": { - "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "Allow freeform text input from the user", - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "type": { - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", - "type": "string" - }, - "placeholder": { - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - "helperArgs": { - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", - "type": "array", - "items": {} - }, - "addExtraTags": { - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", - "type": "array", - "items": { - "type": "string" - } - }, - "inline": { - "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", - "type": "boolean" - }, - "default": { - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "multiAnswer": { - "description": "If true, use checkboxes instead of radio buttons when asking the question", - "type": "boolean" - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { - "$ref": "#/definitions/MappingConfigJson" - } - }, - "id": { - "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise.\n\nUse 'questions' to trigger the question box of this group (if a group is defined)", - "type": "string" - }, - "group": { - "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", - "type": "string" - }, - "labels": { - "description": "A list of labels. These are strings that are used for various purposes, e.g. to filter them away", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does" - }, - "render": { - "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`\ntype: rendered" - }, - "condition": { - "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - } - } - }, - "Partial": { - "type": "object", - "properties": { - "question": { - "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "questionHint": { - "description": "A hint which is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "Allow freeform text input from the user", - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "type": { - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", - "type": "string" - }, - "placeholder": { - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - "helperArgs": { - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", - "type": "array", - "items": {} - }, - "addExtraTags": { - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", - "type": "array", - "items": { - "type": "string" - } - }, - "inline": { - "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", - "type": "boolean" - }, - "default": { - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "multiAnswer": { - "description": "If true, use checkboxes instead of radio buttons when asking the question", - "type": "boolean" - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { - "$ref": "#/definitions/MappingConfigJson" - } - }, - "id": { - "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise.\n\nUse 'questions' to trigger the question box of this group (if a group is defined)", - "type": "string" - }, - "group": { - "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", - "type": "string" - }, - "labels": { - "description": "A list of labels. These are strings that are used for various purposes, e.g. to filter them away", - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does" - }, - "render": { - "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`\ntype: rendered" - }, - "condition": { - "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - } - } - }, - "default<(string|QuestionableTagRenderingConfigJson|{builtin:string;override:Partial;})[]>": { - "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": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/QuestionableTagRenderingConfigJson" - }, - { - "type": "object", - "properties": { - "builtin": { - "type": "string" - }, - "override": { - "$ref": "#/definitions/Partial" - } - }, - "required": [ - "builtin", - "override" - ] - }, - { - "type": "string" - } - ] - } - } - }, - "required": [ - "renderings", - "rewrite" - ] - }, - "default_1": { - "type": "object", - "properties": { - "id": { - "description": "An id/name for this filter, used to set the URL parameters", - "type": "string" - }, - "options": { - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```", - "type": "array", - "items": { - "type": "object", - "properties": { - "question": {}, - "osmTags": { - "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, a single of these should be true\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for documentation" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "default": { - "type": "boolean" - }, - "fields": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "If name is `search`, use \"_first_comment~.*{search}.*\" as osmTags", - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "name" - ] - } - } - }, - "required": [ - "question" - ] - } - }, - "#": { - "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer", - "type": "string" - } - }, - "required": [ - "id", - "options" - ] - }, - "DeleteConfigJson": { - "type": "object", - "properties": { - "extraDeleteReasons": { - "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", - "type": "array", - "items": { - "type": "object", - "properties": { - "explanation": { - "description": "The text that will be shown to the user - translatable" - }, - "changesetMessage": { - "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", - "type": "string" - } - }, - "required": [ - "changesetMessage", - "explanation" - ] - } - }, - "nonDeleteMappings": { - "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", - "type": "array", - "items": { - "type": "object", - "properties": { - "if": { - "$ref": "#/definitions/TagConfigJson", - "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore" - }, - "then": { - "description": "The human explanation for the options" - } - }, - "required": [ - "if", - "then" - ] - } - }, - "softDeletionTags": { - "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", - "anyOf": [ - { - "$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" - }, - { - "$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" - }, - { - "type": "string" - } - ] - }, - "neededChangesets": { - "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", - "type": "number" - }, - "omitDefaultDeleteReasons": { - "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping", - "type": "boolean" - } - } - }, - "default_3": { - "type": "object", - "properties": { - "enableImproveAccuracy": { - "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", - "type": "boolean" - }, - "enableRelocation": { - "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", - "type": "boolean" - } - } - }, - "default_2": { - "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given", - "type": "object", - "properties": { - "appliesToKey": { - "description": "Every key from this list will be normalized.\n\nTo render a united value properly, use", - "type": "array", - "items": { - "type": "string" - } - }, - "eraseInvalidValues": { - "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", - "type": "boolean" - }, - "applicableUnits": { - "description": "The possible denominations for this unit.\nFor length, denominations could be \"meter\", \"kilometer\", \"miles\", \"foot\"", - "type": "array", - "items": { - "$ref": "#/definitions/DenominationConfigJson" - } - }, - "defaultInput": { - "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\n\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits", - "type": "string" - } - }, - "required": [ - "applicableUnits", - "appliesToKey" - ] - } - }, - "$schema": "http://json-schema.org/draft-07/schema#" -} \ No newline at end of file diff --git a/assets/layers/address/address.json b/assets/layers/address/address.json index 92ee8cf22..f13504867 100644 --- a/assets/layers/address/address.json +++ b/assets/layers/address/address.json @@ -270,25 +270,29 @@ "condition": "addr:housenumber~*" }, "iconSize": "50,50", - "icon": { - "render": "./assets/layers/address/housenumber_blank.svg", - "mappings": [ - { - "if": { - "or": [ - { - "and": [ - "addr:housenumber=", - "nohousenumber!=yes" + "marker": [ + { + "icon": { + "render": "./assets/layers/address/housenumber_blank.svg", + "mappings": [ + { + "if": { + "or": [ + { + "and": [ + "addr:housenumber=", + "nohousenumber!=yes" + ] + }, + "addr:street=" ] }, - "addr:street=" - ] - }, - "then": "./assets/themes/uk_addresses/housenumber_unknown.svg" + "then": "./assets/themes/uk_addresses/housenumber_unknown.svg" + } + ] } - ] - }, + } + ], "location": [ "point", "centroid" diff --git a/assets/layers/advertising/advertising.json b/assets/layers/advertising/advertising.json index 6545638a4..13a8325d6 100644 --- a/assets/layers/advertising/advertising.json +++ b/assets/layers/advertising/advertising.json @@ -1278,104 +1278,91 @@ "point", "centroid" ], - "icon": { - "render": "./assets/themes/advertising/sign.svg", - "mappings": [ - { - "if": { - "or": [ - "advertising=billboard" - ] - }, - "then": "./assets/themes/advertising/billboard.svg" - }, - { - "if": "advertising=board", - "then": "./assets/themes/advertising/board.svg" - }, - { - "if": "advertising=column", - "then": "./assets/themes/advertising/column.svg" - }, - { - "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": [ - "advertising=poster_box", - "_referencing_ways~*" - ] - }, - "then": "./assets/themes/advertising/poster_box_no_support.svg" - }, - { - "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": [ - "advertising=screen", - "_referencing_ways~*" - ] - }, - "then": "./assets/themes/advertising/screen_no_support.svg" - }, - { - "if": "advertising=screen", - "then": "./assets/themes/advertising/screen.svg" - }, - { - "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" - }, - { - "if": "advertising=tarp", - "then": "./assets/themes/advertising/tarp.svg" - }, - { - "if": "advertising=totem", - "then": "./assets/themes/advertising/totem.svg" - }, - { - "if": "advertising=wall_painting", - "then": "./assets/themes/advertising/wall_painting.svg" + "marker": [ + { + "icon": { + "mappings": [ + { + "if": "_referencing_ways=[\"way/-1\"]", + "then": "brick_wall_square" + } + ] } - ] - }, + }, + { + "icon": { + "render": "./assets/themes/advertising/sign.svg", + "mappings": [ + { + "if": { + "or": [ + "advertising=billboard" + ] + }, + "then": "./assets/themes/advertising/billboard.svg" + }, + { + "if": "advertising=board", + "then": "./assets/themes/advertising/board.svg" + }, + { + "if": "advertising=column", + "then": "./assets/themes/advertising/column.svg" + }, + { + "if": "advertising=flag", + "then": "./assets/themes/advertising/flag.svg" + }, + { + "if": { + "and": [ + "advertising=poster_box", + "_referencing_ways~*" + ] + }, + "then": "./assets/themes/advertising/poster_box_no_support.svg" + }, + { + "if": "advertising=poster_box", + "then": "./assets/themes/advertising/poster_box.svg" + }, + { + "if": { + "and": [ + "advertising=screen", + "_referencing_ways~*" + ] + }, + "then": "./assets/themes/advertising/screen_no_support.svg" + }, + { + "if": "advertising=screen", + "then": "./assets/themes/advertising/screen.svg" + }, + { + "if": "advertising=sculpture", + "then": "./assets/themes/advertising/sculpture.svg" + }, + { + "if": "advertising=sign", + "then": "./assets/themes/advertising/sign.svg" + }, + { + "if": "advertising=tarp", + "then": "./assets/themes/advertising/tarp.svg" + }, + { + "if": "advertising=totem", + "then": "./assets/themes/advertising/totem.svg" + }, + { + "if": "advertising=wall_painting", + "then": "./assets/themes/advertising/wall_painting.svg" + } + ] + } + } + ], "iconSize": { "render": "40,40", "mappings": [ diff --git a/assets/layers/ambulancestation/ambulancestation.json b/assets/layers/ambulancestation/ambulancestation.json index 18f5e6c13..dfeb9a00d 100644 --- a/assets/layers/ambulancestation/ambulancestation.json +++ b/assets/layers/ambulancestation/ambulancestation.json @@ -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": [ diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json index 910e88a89..1ab9569e1 100644 --- a/assets/layers/artwork/artwork.json +++ b/assets/layers/artwork/artwork.json @@ -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" - } - } + ] } diff --git a/assets/layers/atm/atm.json b/assets/layers/atm/atm.json index cec667bce..2c5d25efb 100644 --- a/assets/layers/atm/atm.json +++ b/assets/layers/atm/atm.json @@ -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": [] } diff --git a/assets/layers/bank/bank.json b/assets/layers/bank/bank.json index a1385804d..669177bd4 100644 --- a/assets/layers/bank/bank.json +++ b/assets/layers/bank/bank.json @@ -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" diff --git a/assets/layers/barrier/barrier.json b/assets/layers/barrier/barrier.json index d481b8981..10fbaa6ba 100644 --- a/assets/layers/barrier/barrier.json +++ b/assets/layers/barrier/barrier.json @@ -604,7 +604,11 @@ }, "pointRendering": [ { - "icon": "./assets/layers/barrier/barrier.svg", + "marker": [ + { + "icon": "./assets/layers/barrier/barrier.svg" + } + ], "location": [ "point" ] diff --git a/assets/layers/bench/bench.json b/assets/layers/bench/bench.json index 413355fdd..cd6412883 100644 --- a/assets/layers/bench/bench.json +++ b/assets/layers/bench/bench.json @@ -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": [] diff --git a/assets/layers/bench_at_pt/bench_at_pt.json b/assets/layers/bench_at_pt/bench_at_pt.json index 6a62c8d1e..e0a5a3f71 100644 --- a/assets/layers/bench_at_pt/bench_at_pt.json +++ b/assets/layers/bench_at_pt/bench_at_pt.json @@ -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": [ diff --git a/assets/layers/bicycle_library/bicycle_library.json b/assets/layers/bicycle_library/bicycle_library.json index 3f54748c0..3b30d4804 100644 --- a/assets/layers/bicycle_library/bicycle_library.json +++ b/assets/layers/bicycle_library/bicycle_library.json @@ -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": [ diff --git a/assets/layers/bicycle_rental/bicycle_rental.json b/assets/layers/bicycle_rental/bicycle_rental.json index 6ea1479fb..d99522c8c 100644 --- a/assets/layers/bicycle_rental/bicycle_rental.json +++ b/assets/layers/bicycle_rental/bicycle_rental.json @@ -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": [ diff --git a/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json b/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json index 097eb4051..1f629e4e9 100644 --- a/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json +++ b/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json @@ -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": [ diff --git a/assets/layers/bike_cafe/bike_cafe.json b/assets/layers/bike_cafe/bike_cafe.json index b40677870..2dc128d97 100644 --- a/assets/layers/bike_cafe/bike_cafe.json +++ b/assets/layers/bike_cafe/bike_cafe.json @@ -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" + } ] } ], diff --git a/assets/layers/bike_cleaning/bike_cleaning.json b/assets/layers/bike_cleaning/bike_cleaning.json index e235da234..2374b60fb 100644 --- a/assets/layers/bike_cleaning/bike_cleaning.json +++ b/assets/layers/bike_cleaning/bike_cleaning.json @@ -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": [] diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json index 21f9c5d2f..ed0c73243 100644 --- a/assets/layers/bike_parking/bike_parking.json +++ b/assets/layers/bike_parking/bike_parking.json @@ -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": [ diff --git a/assets/layers/bike_repair_station/bike_repair_station.json b/assets/layers/bike_repair_station/bike_repair_station.json index 011e6dc5e..ea0f43628 100644 --- a/assets/layers/bike_repair_station/bike_repair_station.json +++ b/assets/layers/bike_repair_station/bike_repair_station.json @@ -999,53 +999,107 @@ }, "pointRendering": [ { - "icon": { - "render": "pin:#88d32c;./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": "pin:#88d32c;./assets/layers/bike_repair_station/repair_station_broken_pump.svg" - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - "service:bicycle:tools=yes" - ] - }, - "then": "pin:#30abf0;./assets/layers/bike_repair_station/repair_station_pump.svg" - }, - { - "if": { - "and": [ - "service:bicycle:pump:operational_status=broken", - "service:bicycle:tools=no" - ] - }, - "then": "pin:black;./assets/layers/bike_repair_station/broken_pump.svg" - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - { - "or": [ - "service:bicycle:tools=no", - "service:bicycle:tools=" + "marker": [ + { + "icon": "pin", + "color": { + "render": "#88d32c", + "mappings": [ + { + "if": { + "and": [ + "service:bicycle:pump=yes", + "service:bicycle:tools=yes", + "service:bicycle:pump:operational_status=broken" ] - } - ] - }, - "then": "pin:#e1783a;./assets/layers/bike_repair_station/pump.svg" + }, + "then": "#88d32c" + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", + "service:bicycle:tools=yes" + ] + }, + "then": "#30abf0" + }, + { + "if": { + "and": [ + "service:bicycle:pump:operational_status=broken", + "service:bicycle:tools=no" + ] + }, + "then": "black" + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", + { + "or": [ + "service:bicycle:tools=no", + "service:bicycle:tools=" + ] + } + ] + }, + "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", diff --git a/assets/layers/bike_shop/bike_shop.json b/assets/layers/bike_shop/bike_shop.json index 993b2194b..7615ab979 100644 --- a/assets/layers/bike_shop/bike_shop.json +++ b/assets/layers/bike_shop/bike_shop.json @@ -867,19 +867,47 @@ "deletion": true, "pointRendering": [ { - "icon": { - "render": "pin:#f04c4c;./assets/layers/bike_shop/repair_shop.svg", - "mappings": [ - { - "if": "operator=De Fietsambassade Gent", - "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" + "marker": [ + { + "icon": { + "render": "pin", + "mappings": [ + { + "if": "operator=De Fietsambassade Gent", + "then": null + } + ] }, - { - "if": "service:bicycle:retail=yes", - "then": "pin:#353d57;./assets/layers/bike_shop/shop.svg" + "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", + "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" + }, + { + "if": "service:bicycle:retail=yes", + "then": "./assets/layers/bike_shop/shop.svg" + } + ] + } + } + ], "iconBadges": [ { "if": "opening_hours~*", diff --git a/assets/layers/bike_themed_object/bike_themed_object.json b/assets/layers/bike_themed_object/bike_themed_object.json index 9d1e9eef9..68cc11c6f 100644 --- a/assets/layers/bike_themed_object/bike_themed_object.json +++ b/assets/layers/bike_themed_object/bike_themed_object.json @@ -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": [ diff --git a/assets/layers/binocular/binocular.json b/assets/layers/binocular/binocular.json index 15c2ec8f1..53d34d3ff 100644 --- a/assets/layers/binocular/binocular.json +++ b/assets/layers/binocular/binocular.json @@ -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": [ diff --git a/assets/layers/birdhide/birdhide.json b/assets/layers/birdhide/birdhide.json index c695e2773..707965276 100644 --- a/assets/layers/birdhide/birdhide.json +++ b/assets/layers/birdhide/birdhide.json @@ -408,21 +408,25 @@ }, "pointRendering": [ { - "icon": { - "render": "./assets/layers/birdhide/birdhide.svg", - "mappings": [ - { - "if": { - "or": [ - "building=yes", - "shelter=yes", - "amenity=shelter" - ] - }, - "then": "./assets/layers/birdhide/birdshelter.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/birdhide/birdhide.svg", + "mappings": [ + { + "if": { + "or": [ + "building=yes", + "shelter=yes", + "amenity=shelter" + ] + }, + "then": "./assets/layers/birdhide/birdshelter.svg" + } + ] } - ] - }, + } + ], "location": [ "point", "centroid" diff --git a/assets/layers/cafe_pub/cafe_pub.json b/assets/layers/cafe_pub/cafe_pub.json index 57676a4c8..7f36b5ab2 100644 --- a/assets/layers/cafe_pub/cafe_pub.json +++ b/assets/layers/cafe_pub/cafe_pub.json @@ -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" + } + ] + } + } ] } ], diff --git a/assets/layers/car_rental/car_rental.json b/assets/layers/car_rental/car_rental.json index b3b51198f..7c0a017d3 100644 --- a/assets/layers/car_rental/car_rental.json +++ b/assets/layers/car_rental/car_rental.json @@ -118,12 +118,20 @@ ], "pointRendering": [ { - "icon": "circle:white;./assets/layers/car_rental/car_rental.svg", "location": [ "point", "centroid" ], - "label": "
{name}
" + "label": "
{name}
", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/car_rental/car_rental.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index be38c59f6..a9c448a47 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -5238,60 +5238,32 @@ "point", "centroid" ], - "icon": { - "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", - "mappings": [ - { - "if": "bicycle=yes", - "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" - }, - { - "if": { - "or": [ - "car=yes", - "motorcar=yes" - ] - }, - "then": "pin:#fff;./assets/themes/charging_stations/car.svg" - } - ] - }, - "iconBadges": [ + "marker": [ { - "if": { - "or": [ - "disused:amenity=charging_station", - "operational_status=broken" - ] - }, - "then": "close:#c22;" + "icon": "pin", + "color": "#fff" }, { - "if": { - "or": [ - "proposed:amenity=charging_station", - "planned:amenity=charging_station" - ] - }, - "then": "./assets/layers/charging_station/under_construction.svg" - }, - { - "if": { - "and": [ - "bicycle=yes", + "icon": { + "render": "./assets/themes/charging_stations/plug.svg", + "mappings": [ { - "or": [ - "motorcar=yes", - "car=yes" - ] + "if": "bicycle=yes", + "then": "./assets/themes/charging_stations/bicycle.svg" + }, + { + "if": { + "or": [ + "car=yes", + "motorcar=yes" + ] + }, + "then": "./assets/themes/charging_stations/car.svg" } ] - }, - "then": "circle:#fff;./assets/themes/charging_stations/car.svg" + } } - ], - "anchor": "bottom", - "iconSize": "50,50" + ] } ], "lineRendering": [] diff --git a/assets/layers/charging_station/charging_station.protojson b/assets/layers/charging_station/charging_station.protojson index 48a36e70d..828045f39 100644 --- a/assets/layers/charging_station/charging_station.protojson +++ b/assets/layers/charging_station/charging_station.protojson @@ -728,30 +728,37 @@ } } ], - "mapRendering": [ + "lineRendering": [], + "pointRendering": [ { "location": [ "point", "centroid" ], - "icon": { - "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", - "mappings": [ - { - "if": "bicycle=yes", - "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" - }, - { - "if": { - "or": [ - "car=yes", - "motorcar=yes" - ] + "marker": [{ + "icon": "pin", + "color": "#fff" + },{ + "icon": { + "render":"./assets/themes/charging_stations/plug.svg", + "mappings": [ + { + "if": "bicycle=yes", + "then": "./assets/themes/charging_stations/bicycle.svg" }, - "then": "pin:#fff;./assets/themes/charging_stations/car.svg" - } - ] - }, + { + "if": { + "or": [ + "car=yes", + "motorcar=yes" + ] + }, + "then": "./assets/themes/charging_stations/car.svg" + } + ] + + } + }], "iconBadges": [ { "if": { diff --git a/assets/layers/climbing_area/climbing_area.json b/assets/layers/climbing_area/climbing_area.json index 967a4d8fa..857f3eb97 100644 --- a/assets/layers/climbing_area/climbing_area.json +++ b/assets/layers/climbing_area/climbing_area.json @@ -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": [ diff --git a/assets/layers/climbing_club/climbing_club.json b/assets/layers/climbing_club/climbing_club.json index 10cd1ad90..e9b2c7186 100644 --- a/assets/layers/climbing_club/climbing_club.json +++ b/assets/layers/climbing_club/climbing_club.json @@ -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": [] diff --git a/assets/layers/climbing_gym/climbing_gym.json b/assets/layers/climbing_gym/climbing_gym.json index fc969a609..340ca07af 100644 --- a/assets/layers/climbing_gym/climbing_gym.json +++ b/assets/layers/climbing_gym/climbing_gym.json @@ -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": [] diff --git a/assets/layers/climbing_opportunity/climbing_opportunity.json b/assets/layers/climbing_opportunity/climbing_opportunity.json index de070e4bf..cef762a1e 100644 --- a/assets/layers/climbing_opportunity/climbing_opportunity.json +++ b/assets/layers/climbing_opportunity/climbing_opportunity.json @@ -122,7 +122,11 @@ ], "pointRendering": [ { - "icon": "./assets/themes/climbing/climbing_unknown.svg", + "marker": [ + { + "icon": "./assets/themes/climbing/climbing_unknown.svg" + } + ], "location": [ "point", "centroid" diff --git a/assets/layers/climbing_route/climbing_route.json b/assets/layers/climbing_route/climbing_route.json index f34ba20c9..f4dce1693 100644 --- a/assets/layers/climbing_route/climbing_route.json +++ b/assets/layers/climbing_route/climbing_route.json @@ -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": [ diff --git a/assets/layers/clock/clock.json b/assets/layers/clock/clock.json index 3b94f800d..8f6e9b25b 100644 --- a/assets/layers/clock/clock.json +++ b/assets/layers/clock/clock.json @@ -494,15 +494,19 @@ "point", "centroid" ], - "icon": { - "render": "./assets/layers/clock/clock.svg", - "mappings": [ - { - "if": "display=digital", - "then": "./assets/layers/clock/clock_digital.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/clock/clock.svg", + "mappings": [ + { + "if": "display=digital", + "then": "./assets/layers/clock/clock_digital.svg" + } + ] } - ] - }, + } + ], "iconSize": { "render": "40,40,center", "mappings": [ diff --git a/assets/layers/conflation/conflation.json b/assets/layers/conflation/conflation.json index 0078fa1c8..e66d6e0b1 100644 --- a/assets/layers/conflation/conflation.json +++ b/assets/layers/conflation/conflation.json @@ -7,48 +7,108 @@ "title": "Conflation", "pointRendering": [ { - "location": "point", - "icon": { - "render": "addSmall:#000", - "mappings": [ - { - "if": "detach=yes", - "then": "circle:white;close:#c33" - } - ] - }, - "iconSize": "10,10", - "anchor": "center" - }, - { - "location": "end", - "icon": { - "render": "circle:#0f0", - "mappings": [ - { - "if": "reprojection=yes", - "then": "none:#f00" + "location": [ + "point" + ], + "marker": [ + { + "color": { + "render": "#000", + "mappings": [ + { + "if": "detach=yes", + "then": "white" + } + ] }, - { - "if": "move=no", - "then": "ring:#0f0" + "icon": { + "render": "addSmall:#000", + "mappings": [ + { + "if": "detach=yes", + "then": "white" + } + ] } - ] - }, + }, + { + "icon": { + "mappings": [ + { + "if": "detach=yes", + "then": "close" + } + ] + }, + "color": "#C33" + } + ], "iconSize": "10,10", "anchor": "center" }, { - "location": "start", - "icon": { - "render": "square:#f00", - "mappings": [ - { - "if": "reprojection=yes", - "then": "reload:#f00" + "location": [ + "end" + ], + "marker": [ + { + "icon": { + "render": "circle", + "mappings": [ + { + "if": "reprojection=yes", + "then": "none" + }, + { + "if": "move=no", + "then": "ring" + } + ] + }, + "color": { + "render": "#0f0", + "mappings": [ + { + "if": "reprojection=yes", + "then": "#f00" + }, + { + "if": "move=no", + "then": "#0f0" + } + ] } - ] - }, + } + ], + "iconSize": "10,10", + "anchor": "center" + }, + { + "location": [ + "start" + ], + "marker": [ + { + "icon": { + "render": "square", + "mappings": [ + { + "if": "reprojection=yes", + "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" } ] } diff --git a/assets/layers/crab_address/crab_address.json b/assets/layers/crab_address/crab_address.json index e76daf295..d8403b5c5 100644 --- a/assets/layers/crab_address/crab_address.json +++ b/assets/layers/crab_address/crab_address.json @@ -27,9 +27,13 @@ "centroid" ], "iconSize": "50,50", - "icon": "./assets/layers/crab_address/housenumber_blank.svg", "label": "
{_HNRLABEL}
", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/crab_address/housenumber_blank.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json index de91a6b86..e3b6ab143 100644 --- a/assets/layers/crossings/crossings.json +++ b/assets/layers/crossings/crossings.json @@ -647,20 +647,24 @@ ], "pointRendering": [ { - "icon": { - "render": "./assets/layers/crossings/pedestrian_crossing.svg", - "mappings": [ - { - "if": { - "or": [ - "highway=traffic_signals", - "crossing=traffic_signals" - ] - }, - "then": "./assets/layers/crossings/traffic_lights.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/crossings/pedestrian_crossing.svg", + "mappings": [ + { + "if": { + "or": [ + "highway=traffic_signals", + "crossing=traffic_signals" + ] + }, + "then": "./assets/layers/crossings/traffic_lights.svg" + } + ] } - ] - }, + } + ], "location": [ "point" ] diff --git a/assets/layers/cycleways_and_roads/cycleways_and_roads.json b/assets/layers/cycleways_and_roads/cycleways_and_roads.json index 40f4396a7..2c61b260c 100644 --- a/assets/layers/cycleways_and_roads/cycleways_and_roads.json +++ b/assets/layers/cycleways_and_roads/cycleways_and_roads.json @@ -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" + } ] } ], diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json index fd77aa00a..4981d7389 100644 --- a/assets/layers/defibrillator/defibrillator.json +++ b/assets/layers/defibrillator/defibrillator.json @@ -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", - "mappings": [ - { - "if": "_recently_surveyed=true", - "then": "square:#28ba3d;./assets/layers/defibrillator/defibrillator.svg" + "marker": [ + { + "icon": "square", + "color": { + "render": "#008754", + "mappings": [ + { + "if": "_recently_surveyed=true", + "then": "#28ba3d" + } + ] } - ] - }, + }, + { + "icon": "./assets/layers/defibrillator/defibrillator.svg" + } + ], "location": [ "point" ] diff --git a/assets/layers/dentist/dentist.json b/assets/layers/dentist/dentist.json index 32b9cdee3..a6a15e15d 100644 --- a/assets/layers/dentist/dentist.json +++ b/assets/layers/dentist/dentist.json @@ -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": [] diff --git a/assets/layers/direction/direction.json b/assets/layers/direction/direction.json index cd47931bf..d36f3a4c6 100644 --- a/assets/layers/direction/direction.json +++ b/assets/layers/direction/direction.json @@ -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": [ diff --git a/assets/layers/doctors/doctors.json b/assets/layers/doctors/doctors.json index 63920c0ce..8799799d1 100644 --- a/assets/layers/doctors/doctors.json +++ b/assets/layers/doctors/doctors.json @@ -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": [] diff --git a/assets/layers/dogpark/dogpark.json b/assets/layers/dogpark/dogpark.json index 26560527d..8ff7cb867 100644 --- a/assets/layers/dogpark/dogpark.json +++ b/assets/layers/dogpark/dogpark.json @@ -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": [ diff --git a/assets/layers/drinking_water/drinking_water.json b/assets/layers/drinking_water/drinking_water.json index 1f02973eb..99e2779b2 100644 --- a/assets/layers/drinking_water/drinking_water.json +++ b/assets/layers/drinking_water/drinking_water.json @@ -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": [] diff --git a/assets/layers/elevator/elevator.json b/assets/layers/elevator/elevator.json index 772b31766..c54cee0e3 100644 --- a/assets/layers/elevator/elevator.json +++ b/assets/layers/elevator/elevator.json @@ -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": [] diff --git a/assets/layers/elongated_coin/elongated_coin.json b/assets/layers/elongated_coin/elongated_coin.json index 05a3ec5dd..ef8d661ae 100644 --- a/assets/layers/elongated_coin/elongated_coin.json +++ b/assets/layers/elongated_coin/elongated_coin.json @@ -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" + } ] } ], diff --git a/assets/layers/entrance/entrance.json b/assets/layers/entrance/entrance.json index c1d85d906..f8743f86e 100644 --- a/assets/layers/entrance/entrance.json +++ b/assets/layers/entrance/entrance.json @@ -550,15 +550,23 @@ "point", "centroid" ], - "icon": { - "render": "circle:white;./assets/layers/entrance/entrance.svg", - "mappings": [ - { - "if": "entrance=emergency", - "then": "circle:white;./assets/layers/entrance/emergency_door.svg" + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": { + "render": "./assets/layers/entrance/entrance.svg", + "mappings": [ + { + "if": "entrance=emergency", + "then": "./assets/layers/entrance/emergency_door.svg" + } + ] } - ] - } + } + ] } ], "lineRendering": [] diff --git a/assets/layers/etymology/etymology.json b/assets/layers/etymology/etymology.json index cb28869c7..ca6445bc4 100644 --- a/assets/layers/etymology/etymology.json +++ b/assets/layers/etymology/etymology.json @@ -267,25 +267,29 @@ ], "pointRendering": [ { - "icon": { - "render": "pin:#05d7fcaa", - "mappings": [ - { - "if": { - "and": [ - "name:etymology=", - "name:etymology:wikidata=" - ] - }, - "then": "pin:#fcca05aa" - } - ] - }, "iconSize": "40,40", "location": [ "point" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": { + "render": "pin:#05d7fcaa", + "mappings": [ + { + "if": { + "and": [ + "name:etymology=", + "name:etymology:wikidata=" + ] + }, + "then": "pin:#fcca05aa" + } + ] + } + } + ] } ], "lineRendering": [ diff --git a/assets/layers/extinguisher/extinguisher.json b/assets/layers/extinguisher/extinguisher.json index b36277b6f..9762d4a96 100644 --- a/assets/layers/extinguisher/extinguisher.json +++ b/assets/layers/extinguisher/extinguisher.json @@ -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": [] diff --git a/assets/layers/fire_station/fire_station.json b/assets/layers/fire_station/fire_station.json index c82e2aeba..a0ee52646 100644 --- a/assets/layers/fire_station/fire_station.json +++ b/assets/layers/fire_station/fire_station.json @@ -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": [ diff --git a/assets/layers/fitness_centre/fitness_centre.json b/assets/layers/fitness_centre/fitness_centre.json index 7434fa331..57d2a3d7f 100644 --- a/assets/layers/fitness_centre/fitness_centre.json +++ b/assets/layers/fitness_centre/fitness_centre.json @@ -99,7 +99,6 @@ "point", "centroid" ], - "icon": "circle:white;./assets/layers/fitness_centre/gym.svg", "iconSize": "40,40", "label": "
{name}
", "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": [] diff --git a/assets/layers/fitness_station/fitness_station.json b/assets/layers/fitness_station/fitness_station.json index f1f676d25..bb2de60a3 100644 --- a/assets/layers/fitness_station/fitness_station.json +++ b/assets/layers/fitness_station/fitness_station.json @@ -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": [] diff --git a/assets/layers/fixme/fixme.json b/assets/layers/fixme/fixme.json index d190ede18..7b2446c43 100644 --- a/assets/layers/fixme/fixme.json +++ b/assets/layers/fixme/fixme.json @@ -78,8 +78,12 @@ "centroid", "point" ], - "icon": "./assets/svg/bug.svg", - "label": "
{fixme}
" + "label": "
{fixme}
", + "marker": [ + { + "icon": "./assets/svg/bug.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index 806406f09..92281e153 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -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" + } + ] + } + } ] } ], diff --git a/assets/layers/ghost_bike/ghost_bike.json b/assets/layers/ghost_bike/ghost_bike.json index 04df97202..aaee97ba5 100644 --- a/assets/layers/ghost_bike/ghost_bike.json +++ b/assets/layers/ghost_bike/ghost_bike.json @@ -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": [] diff --git a/assets/layers/governments/governments.json b/assets/layers/governments/governments.json index a0e6ae2ff..3dbdb1281 100644 --- a/assets/layers/governments/governments.json +++ b/assets/layers/governments/governments.json @@ -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": [] diff --git a/assets/layers/gps_location/gps_location.json b/assets/layers/gps_location/gps_location.json index f54b07561..e693fc4ba 100644 --- a/assets/layers/gps_location/gps_location.json +++ b/assets/layers/gps_location/gps_location.json @@ -5,15 +5,20 @@ "source": "special", "pointRendering": [ { - "icon": { - "render": "crosshair:var(--catch-detail-color)", - "mappings": [ - { - "if": "speed>2", - "then": "gps_arrow" + "marker": [ + { + "color": "--catch-detail-color", + "icon": { + "render": "crosshair", + "mappings": [ + { + "if": "speed>2", + "then": "gps_arrow" + } + ] } - ] - }, + } + ], "iconSize": "40,40", "pitchAlignment": "map", "rotation": { diff --git a/assets/layers/gps_location_history/gps_location_history.json b/assets/layers/gps_location_history/gps_location_history.json index 1d9afb125..387ca4836 100644 --- a/assets/layers/gps_location_history/gps_location_history.json +++ b/assets/layers/gps_location_history/gps_location_history.json @@ -11,9 +11,14 @@ "point", "centroid" ], - "icon": "square:red", "iconSize": "5,5", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "red" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/hackerspace/hackerspace.json b/assets/layers/hackerspace/hackerspace.json index b69ad4cc0..f952ad1fc 100644 --- a/assets/layers/hackerspace/hackerspace.json +++ b/assets/layers/hackerspace/hackerspace.json @@ -347,19 +347,23 @@ "deletion": true, "pointRendering": [ { - "icon": { - "render": "./assets/themes/hackerspaces/glider.svg", - "mappings": [ - { - "if": { - "and": [ - "hackerspace=makerspace" - ] - }, - "then": "./assets/themes/hackerspaces/led.png" + "marker": [ + { + "icon": { + "render": "./assets/themes/hackerspaces/glider.svg", + "mappings": [ + { + "if": { + "and": [ + "hackerspace=makerspace" + ] + }, + "then": "./assets/themes/hackerspaces/led.png" + } + ] } - ] - }, + } + ], "iconSize": "40,40", "location": [ "point", diff --git a/assets/layers/home_location/home_location.json b/assets/layers/home_location/home_location.json index 3a6177f32..9a60b4d1d 100644 --- a/assets/layers/home_location/home_location.json +++ b/assets/layers/home_location/home_location.json @@ -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" + } ] } ], diff --git a/assets/layers/hospital/hospital.json b/assets/layers/hospital/hospital.json index 80072e843..83ecadaca 100644 --- a/assets/layers/hospital/hospital.json +++ b/assets/layers/hospital/hospital.json @@ -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": [ diff --git a/assets/layers/hotel/hotel.json b/assets/layers/hotel/hotel.json index 4536cfbb7..f3483514c 100644 --- a/assets/layers/hotel/hotel.json +++ b/assets/layers/hotel/hotel.json @@ -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": [] diff --git a/assets/layers/hydrant/hydrant.json b/assets/layers/hydrant/hydrant.json index 3e1a036ae..2d0a32b58 100644 --- a/assets/layers/hydrant/hydrant.json +++ b/assets/layers/hydrant/hydrant.json @@ -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": [ diff --git a/assets/layers/id_presets/fas-bowl-rice.svg b/assets/layers/id_presets/fas-bowl-rice.svg new file mode 100644 index 000000000..338d333aa --- /dev/null +++ b/assets/layers/id_presets/fas-bowl-rice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/id_presets/fas-bowl-rice.svg.license b/assets/layers/id_presets/fas-bowl-rice.svg.license new file mode 100644 index 000000000..fb6d4d684 --- /dev/null +++ b/assets/layers/id_presets/fas-bowl-rice.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Font-Awesome icon set +SPDX-License-Identifier: CC-BY 4.0 \ No newline at end of file diff --git a/assets/layers/id_presets/fas-jar.svg b/assets/layers/id_presets/fas-jar.svg new file mode 100644 index 000000000..9cb936dd6 --- /dev/null +++ b/assets/layers/id_presets/fas-jar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/id_presets/fas-jar.svg.license b/assets/layers/id_presets/fas-jar.svg.license new file mode 100644 index 000000000..fb6d4d684 --- /dev/null +++ b/assets/layers/id_presets/fas-jar.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Font-Awesome icon set +SPDX-License-Identifier: CC-BY 4.0 \ No newline at end of file diff --git a/assets/layers/id_presets/fas-plate-wheat.svg b/assets/layers/id_presets/fas-plate-wheat.svg new file mode 100644 index 000000000..75a7010f9 --- /dev/null +++ b/assets/layers/id_presets/fas-plate-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/layers/id_presets/fas-plate-wheat.svg.license b/assets/layers/id_presets/fas-plate-wheat.svg.license new file mode 100644 index 000000000..fb6d4d684 --- /dev/null +++ b/assets/layers/id_presets/fas-plate-wheat.svg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Font-Awesome icon set +SPDX-License-Identifier: CC-BY 4.0 \ No newline at end of file diff --git a/assets/layers/id_presets/id_presets.json b/assets/layers/id_presets/id_presets.json index ed8c034fe..04b12d9a5 100644 --- a/assets/layers/id_presets/id_presets.json +++ b/assets/layers/id_presets/id_presets.json @@ -12,18 +12,32 @@ { "id": "shop_types", "mappings": [ + { + "if": "shop=vacant", + "then": { + "en": "Vacant Shop" + }, + "searchTerms": {}, + "icon": { + "path": "./assets/layers/id_presets/maki-shop.svg", + "class": "medium" + } + }, { "if": "shop=agrarian", "then": { "en": "Farm Supply Shop", "ca": "Agrobotiga", + "cs": "Farmářská prodejna", "da": "Grovvareforretning", "de": "Agrarmarkt", "eo": "Terkultur-investaĵa vendejo", "es": "Tienda de suministros agrícolas", + "eu": "Nekazal-tresna denda", "fi": "Maataloustarvikeliike", "fr": "Magasin d'agriculture", "gl": "Tenda de subministracións agrícolas", + "he": "חנות אביזרי חקלאות", "hu": "Gazdabolt", "it": "Negozio di attrezzatura agricola", "ja": "農業用品店", @@ -42,6 +56,20 @@ "fertilizer", "agricultural tools" ], + "ca": [ + "botiga de suministres agrícoles", + "tenda de suministres agrícoles", + "agrotenda", + "cooperativa agrícola" + ], + "cs": [ + "zemědělské vstupy", + "zemědělské stroje", + "semena", + "pesticidy", + "hnojiva", + "zemědělské nástroje" + ], "da": [ "korn", "landbrug", @@ -76,6 +104,14 @@ "agrícola", "agricola" ], + "eu": [ + "nekazal-tresnak", + "traktoreak", + "ongarriak", + "aitzurrak", + "atxurrak", + "makinaria" + ], "fi": [ "maatila", "maatalous", @@ -92,6 +128,9 @@ "graines", "engins agricoles" ], + "he": [ + "חנות אביזרי חקלאות" + ], "hu": [ "mezőgazdasági szaküzlet" ], @@ -112,7 +151,11 @@ "肥料", "駆除剤", "農機具", - "除草剤" + "除草剤", + "店舗", + "種子", + "種苗", + "お店" ], "nl": [ "landbouwwinkel", @@ -129,7 +172,7 @@ "landbouwwerktuigenwinkel" ], "pl": [ - "rolniczy", + "sklep rolniczy", "produkcja rolna", "pasze", "nasiona", @@ -180,13 +223,15 @@ "then": { "en": "Liquor Store", "ca": "Botiga de licors", - "da": "Vinforhandler", + "cs": "Prodejna alkoholu", + "da": "Spiritusforretning", "de": "Spirituosenladen", "eo": "Alkohola vendejo", "es": "Licorería", "fi": "Alkoholimyymälä", "fr": "Magasin de vente d'alcool", "gl": "Licoraría", + "he": "חנות משקאות חריפים", "hu": "Alkoholüzlet", "id": "Toko Minuman", "it": "Negozio di liquori", @@ -209,10 +254,20 @@ "licoreria", "botiga de licors" ], + "cs": [ + "alkohol", + "alkoholický" + ], "da": [ + "spiritusforretning", + "sprutforretning", + "spritbutik", "vinforhandler", "vinbutik", - "vinforretning" + "vinforretning", + "alkoholforretning", + "ølsalg", + "ølbutik" ], "de": [ "alkoholika", @@ -249,6 +304,9 @@ "magasin de vin", "vins & spiritueux" ], + "he": [ + "חנות משקאות" + ], "hu": [ "unikum", "pálinka", @@ -322,12 +380,15 @@ "then": { "en": "Anime / Manga Shop", "ca": "Botiga de manga / anime", + "cs": "Obchod s Anime / Mangou", + "da": "Anime/Manga-buik", "de": "Anime- / Manga-Geschäft", "eo": "Anime-/manga-vendejo", "es": "Tienda de anime / manga", "fi": "Anime-/mangaliike", "fr": "Boutique de manga et anime", "gl": "Tenda de anime / manga", + "he": "חנות אנימה/מנגה", "hu": "Anime képregényekkel kapcsolatos bolt", "it": "Negozio di Anime / Manga", "ja": "アニメショップ", @@ -339,10 +400,26 @@ }, "searchTerms": { "en": [ - "manga", - "japan", "cosplay", + "dakimakura", "figurine", + "hobby", + "japan", + "manga" + ], + "ca": [ + "tenda de manga / anime", + "otaku", + "manga", + "japó", + "kawaii", + "comic" + ], + "cs": [ + "manga", + "japonské", + "cosplay", + "figurína", "dakimakura" ], "de": [ @@ -371,6 +448,16 @@ "bd", "figurine" ], + "he": [ + "חנות אנימה", + "מנגה", + "פנאי", + "קוואי", + "קוספליי", + "משחקי תפקידים", + "פנטזיה", + "יפן" + ], "hu": [ "képregénybolt" ], @@ -381,15 +468,20 @@ "コスプレ", "マンガ", "まんが", - "アニメ店" + "アニメ店", + "店舗", + "お店", + "サブカル" ], "nl": [ "anime", "manga" ], "pl": [ + "sklep z mangą i anime", "anime", "manga", + "komiksy", "cosplay" ], "pt": [ @@ -417,30 +509,32 @@ { "if": "shop=antiques", "then": { - "en": "Antiques Shop", + "en": "Antique Shop", "ca": "Botiga d'antiguitats", + "cs": "Starožitnictví", "da": "Antikvitetsforretning", "de": "Antiquitätenhändler", - "eo": "Antikvaĵa vendejo", "es": "Tienda de antigüedades", - "fi": "Antiikkiliike", + "fi": "Antikvariaatti", "fr": "Antiquaire", - "gl": "Tenda de antigüidades", + "he": "חנות עתיקות", "hu": "Régiségkereskedés", - "id": "Toko Barang Antik", - "it": "Antiquario", + "it": "Negozio di oggetti antichi", "ja": "古美術品店", - "nl": "Antiquair", - "pl": "Antykwariat", + "nl": "Antiekwinkel", + "pl": "Sklep z antykami", "pt": "Loja de antiguidades", - "ru": "Магазин антиквариата", - "sl": "Starinarnica", + "ru": "Антиквариат", "sv": "Antikaffär" }, "searchTerms": { - "da": [ - "antikvitetsforretning", - "antikvitetsbutik" + "ca": [ + "tenda d'antiguitats", + "antiquari", + "vintage", + "història", + "vell", + "antic" ], "de": [ "antiquitätengeschäft", @@ -448,46 +542,54 @@ "antiquitätenhandel", "antiquitätenladen" ], - "eo": [ - "antikvaĵejo", - "antikvajhejo", - "antikvajxejo" - ], "es": [ "antigüedades", + "antiguedades", "anticuario", - "colecciones", - "muebles antiguos", - "objetos antiguos", - "cuadros", - "pinturas", - "subastas" + "antiguo", + "antigualla" ], "fr": [ + "anticaire", + "magasin", + "antiquité", + "vieillerie", "brocante" ], + "he": [ + "חנות ענתיקות", + "ישן", + "ענתיקה", + "מיושן", + "עתיק" + ], "hu": [ - "antikvitás", - "antikvárium", - "ószeres" + "antikvitás" ], "it": [ + "anticaglia", + "antichi", "antichità", - "mobili antichi" + "desueti", + "disuso" ], "ja": [ "古美術品店", - "アンティークショップ", - "美術", - "アート", - "古美術", - "骨董品店" + "古美術商", + "骨董品店", + "店舗", + "お店", + "アンティーク" ], "nl": [ - "antiekwinkel" + "antiekhandelaar", + "antiquair", + "antiquaar", + "antiquariaat" ], "pl": [ "sklep z antykami", + "antykwariat", "antyki" ], "pt": [ @@ -498,13 +600,6 @@ "relíquia", "relíquias" ], - "ru": [ - "атниквариат" - ], - "sl": [ - "starinarnica", - "antikvariat" - ], "sv": [ "antikaffär", "antikshop", @@ -522,6 +617,8 @@ "if": "shop=appliance", "then": { "en": "Appliance Store", + "ca": "Botiga d'electrodomèstics", + "cs": "Prodejna spotřební elektroniky", "da": "Hvidevareforretning", "de": "Haushaltselektrogerätegeschäft", "eo": "Elektronikaĵega vendejo", @@ -529,6 +626,7 @@ "fi": "Kodinkonemyymälä", "fr": "Magasin d'électroménager", "gl": "Tenda de electrodomésticos", + "he": "חנות כלים חשמלים", "hu": "Háztartásigép-bolt", "it": "Negozio di elettrodomestici", "ja": "白物家電販売店(大型製品)", @@ -553,7 +651,38 @@ "refrigerator", "stove", "washer", - "washing machine" + "washing machine", + "white goods" + ], + "ca": [ + "tenda d'electrodomèstics", + "electrodomèstic", + "aire condicionat", + "secadora", + "rentadora", + "llavadora", + "congelador", + "nevera", + "forn", + "estufa", + "refrigerador", + "cafetera", + "televisió" + ], + "cs": [ + "klimatizace", + "spotřebič", + "myčka", + "sušička", + "mraznička", + "lednička", + "gril", + "kuchyně", + "trouba", + "lednice", + "sporák", + "pračka", + "prací stroj" ], "da": [ "hvidevare", @@ -667,6 +796,9 @@ "réfrigérateur", "climatiseur" ], + "he": [ + "חנות כלים חשמלים" + ], "hu": [ "háztartási", "gép", @@ -694,7 +826,11 @@ "生活家電", "冷蔵庫", "洗濯機", - "電機屋" + "電機屋", + "家電", + "電気店", + "電器店", + "お店" ], "nl": [ "huisraadwinkel", @@ -774,6 +910,7 @@ "then": { "en": "Art Store", "ca": "Botiga d'art", + "cs": "Obchod s uměním", "da": "Kunstbutik", "de": "Kunsthandlung", "eo": "Artaĵa vendejo", @@ -781,6 +918,7 @@ "fi": "Taideliike", "fr": "Marchand d'art", "gl": "Tenda de arte", + "he": "חנות לחפצי אומנות", "hu": "Művészeti bolt", "it": "Negozio di opere d'arte", "ja": "美術品販売店", @@ -793,10 +931,24 @@ }, "searchTerms": { "en": [ - "art*", - "exhibit*", + "art", + "exhibition", "gallery" ], + "ca": [ + "art", + "exhibit", + "galeria", + "galeria d'art", + "exhibició" + ], + "cs": [ + "obchod s uměním", + "umění", + "galerie", + "umělecká galerie", + "prodejní galerie" + ], "da": [ "kunstbutik", "galleributik" @@ -828,6 +980,9 @@ "artiste", "exposition" ], + "he": [ + "חנות למוצרי אומנות" + ], "hu": [ "művészbolt", "művészellátó" @@ -901,6 +1056,7 @@ "then": { "en": "Baby Goods Store", "ca": "Botiga per a nadons", + "cs": "Potřeby pro děti", "da": "Babyudstyrsbutik", "de": "Babysachengeschäft", "eo": "Bebaĵa vendejo", @@ -908,6 +1064,7 @@ "fi": "Vauvatarvikeliike", "fr": "Magasin de produits pour bébés", "gl": "Tenda de produtos para meniños", + "he": "חנות לדברי תינוקות", "hu": "Bababolt", "id": "Toko Perlengkapan Bayi", "it": "Negozio di prodotti per l'infanzia", @@ -920,6 +1077,27 @@ "sv": "Babyprodukter" }, "searchTerms": { + "ca": [ + "botiga per a bebès", + "tenda per a bebès", + "tenda per a nadons", + "bebè", + "nadó", + "bebé", + "puericultura" + ], + "cs": [ + "děti", + "dítě", + "miminko", + "mimino", + "plína", + "plíny", + "plínka", + "plínky", + "kojenecké potřeby", + "dětská výživa" + ], "da": [ "babyudstyrsbutik", "babyudstyrsforretning" @@ -962,6 +1140,9 @@ "meniños", "bebés" ], + "he": [ + "חנות לציוד תינוקות" + ], "hu": [ "babaruha", "babakocsi", @@ -984,6 +1165,7 @@ "babykledijwinkel" ], "pl": [ + "sklep z artykułami dla dzieci i niemowląt", "akcesoria dla dzieci i niemowląt", "sklep dziecięcy", "artykuły dziecięce", @@ -1035,14 +1217,16 @@ "if": "shop=bag", "then": { "en": "Bag/Luggage Store", - "ca": "Botiga d'equipatges", + "ca": "Botiga d'equipatges o bosses", + "cs": "Obchod se zavazadly", "da": "Taske/Kuffertbutik", - "de": "Taschenladen", + "de": "Taschengeschäft", "eo": "Saka/valiza vendejo", "es": "Tienda de bolsos / equipaje", "fi": "Matkalaukkumyymälä", "fr": "Bagagerie", "gl": "Tenda de maletas", + "he": "חנות מזוודות", "hu": "Táska- és bőröndbolt", "id": "Toko Tas/Koper", "it": "Negozio di borse e valigie", @@ -1059,15 +1243,41 @@ "handbag", "purse" ], + "ca": [ + "bolso", + "maleta", + "bossa", + "complements", + "cartera", + "equipatge", + "moneder", + "tenda d'equipatges o bosses" + ], + "cs": [ + "zavazadlo", + "zavazadla", + "kufr", + "kufry", + "batoh", + "batohy", + "brašna", + "brašny", + "brašnář", + "cestovní" + ], "da": [ "taskebutik", "kuffertbutik", "lædervareforretning" ], "de": [ - "taschengeschäft", - "taschen/koffer-geschäft", - "reisegepäckgeschäft" + "taschen", + "koffer", + "reisegepäck", + "rollkoffer", + "reisetaschen", + "handtaschen", + "umhängetaschen" ], "eo": [ "sakoj", @@ -1101,6 +1311,9 @@ "fr": [ "vente de bagages" ], + "he": [ + "חנות מזוודות" + ], "hu": [ "bőrdíszmű és táskabolt", "koffer", @@ -1124,6 +1337,8 @@ "reiskofferwinkel" ], "pl": [ + "sklep z torebkami", + "sklep z walizkami", "torebki", "torby", "walizki", @@ -1164,13 +1379,16 @@ "then": { "en": "Bakery", "ca": "Fleca", + "cs": "Pekařství", "da": "Bager", "de": "Bäckerei", "eo": "Panejo", "es": "Panadería", + "eu": "Okindegia", "fi": "Leipomo", "fr": "Boulangerie", "gl": "Panadaría", + "he": "מאפייה", "hu": "Pékség", "id": "Toko Roti", "it": "Panificio", @@ -1194,6 +1412,11 @@ "pastisseria", "forn" ], + "cs": [ + "chleba", + "dorty", + "rohlíky" + ], "da": [ "bager", "bageri" @@ -1219,9 +1442,20 @@ "bollería", "bollo" ], + "eu": [ + "okindegia", + "ogia", + "okina" + ], + "fi": [ + "leipomo" + ], "fr": [ "boulangerie" ], + "he": [ + "מאפייה" + ], "hu": [ "pogácsa", "kifli", @@ -1253,6 +1487,7 @@ ], "pl": [ "piekarnia", + "sklep z pieczywem", "pieczywo", "chleb", "bułki" @@ -1271,7 +1506,10 @@ ], "sl": [ "pekarija", - "pek" + "pek", + "kruh", + "pecivo", + "hrana" ], "sv": [ "bageri", @@ -1291,6 +1529,7 @@ "then": { "en": "Bathroom Furnishing Store", "ca": "Botiga de mobles de bany", + "cs": "Vybavení koupelen", "da": "Badeværelseindretningsbutik", "de": "Badeinrichtungsgeschäft", "eo": "Lavĉambr-akcesoraĵa vendejo", @@ -1298,6 +1537,7 @@ "fi": "Kylpyhuoneliike", "fr": "Fournitures pour salles de bain", "gl": "Tenda de mobles de baño", + "he": "חנות רהיטי שירותים/מקלחת", "hu": "Fürdőszobafelszerelés-bolt", "id": "Toko Perlengkapan Kamar Mandi", "it": "Negozio di prodotti per il bagno", @@ -1310,6 +1550,11 @@ "sv": "Badrumsinredning" }, "searchTerms": { + "cs": [ + "koupelna", + "koupelny", + "vybavení koupelen" + ], "da": [ "badeværelseindretningsbutik" ], @@ -1342,6 +1587,9 @@ "fr": [ "fournitures pour salles de bain" ], + "he": [ + "חנות ריהוט לשירותים/מקלחת" + ], "hu": [ "szaniter", "csaptelep", @@ -1359,6 +1607,7 @@ "sanitairwinkel" ], "pl": [ + "sklep z wyposażeniem łazienek", "łazienki", "wyposażenie łazienek", "meble łazienkowe", @@ -1400,7 +1649,8 @@ "if": "shop=beauty", "then": { "en": "Beauty Shop", - "ca": "Botiga de cosmètics", + "ca": "Saló de bellesa", + "cs": "Kosmetický salón", "da": "Skønhedsforhandler", "de": "Schönheitssalon", "eo": "Salono de beligado", @@ -1408,6 +1658,7 @@ "fi": "Kauneushoitola", "fr": "Salon de beauté", "gl": "Salón de beleza", + "he": "חנות מוצרי יופי/טיפוח", "hu": "Szépségszalon", "id": "Salon Kecantikan", "it": "Salone di bellezza", @@ -1425,6 +1676,21 @@ "salon", "tanning" ], + "ca": [ + "estètica", + "spa", + "saló", + "broncejat" + ], + "cs": [ + "kosmetický salón", + "kadeřnictví", + "vizážista", + "kosmetika", + "salón krásy", + "nehty", + "depilace" + ], "da": [ "parfume", "skønhed", @@ -1455,7 +1721,11 @@ ], "fr": [ "salon de beauté", - "institut de beauté" + "institut de beauté", + "épilation" + ], + "he": [ + "חנות מוצרי יופיטיפוח" ], "hu": [ "kozmetikus" @@ -1484,15 +1754,18 @@ "ja": [ "美容サービス", "エステサロン", - "ネイルサロン" + "ネイルサロン", + "サービス", + "店舗", + "お店" ], "nl": [ "schoonheidswinkel", "schoonheidsspeciaalzaak" ], "pl": [ - "salon piękności", "salon urody", + "salon piękności", "salon kosmetyczny", "gabinet kosmetyczny", "zakład kosmetyczny", @@ -1554,6 +1827,7 @@ "then": { "en": "Bedding/Mattress Store", "ca": "Botiga de matalassos", + "cs": "Prodejna postelí", "da": "Sengetøj / Madras forhandler", "de": "Betten/Matratzengeschäft", "eo": "Lita/matraca vendejo", @@ -1561,6 +1835,7 @@ "fi": "Vuodetarvikeliike", "fr": "Magasin de literie", "gl": "Tenda de colchóns/roupa de cama", + "he": "חנות מזרנים", "hu": "Ágy- és matracbolt", "id": "Toko Selimut/Matras", "it": "Negozio di letti/materassi", @@ -1573,8 +1848,24 @@ "sv": "Sängaffär" }, "searchTerms": { + "en": [ + "bed", + "duvet", + "mattress", + "pillow" + ], + "cs": [ + "postel", + "postele", + "matrace", + "lůžko", + "lůžka", + "spaní", + "spánek" + ], "da": [ - "sengetøj / madras forhandler" + "sengetøj / madras forhandler", + "sengeforhandler" ], "de": [ "matratzengeschäft", @@ -1620,6 +1911,10 @@ "vente de literie", "vente de matelas" ], + "he": [ + "חנות אביזרי שינה", + "חנות מזרנים" + ], "hu": [ "hálószobabútor", "ágy", @@ -1648,7 +1943,13 @@ "ふとん", "布団", "ふとん店", - "ベッド" + "ベッド", + "毛布", + "お店", + "店舗", + "寝具", + "シーツ", + "マットレス" ], "nl": [ "beddenzaak", @@ -1658,6 +1959,7 @@ "matrassenwinkel" ], "pl": [ + "sklep z łóżkami/materacami", "łóżka", "materace", "pościel", @@ -1697,13 +1999,15 @@ "then": { "en": "Beverage Store", "ca": "Botiga de begudes", - "da": "Vinforhandler", + "cs": "Prodejna nápojů", + "da": "Drikkevarebutik", "de": "Getränkehandel", "eo": "Trinkaĵa vendejo", "es": "Tienda de bebidas", "fi": "Viinakauppa", "fr": "Magasin de boissons", "gl": "Tenda de bebidas", + "he": "חנות משקאות", "hu": "Italbolt", "id": "Toko Minuman", "it": "Negozio di bevande", @@ -1722,9 +2026,20 @@ "ca": [ "licoreria" ], + "cs": [ + "prodejna nápojů", + "obchod s nápoji", + "nápoje", + "pití", + "malinovka", + "kofola", + "občerstvení", + "nealkoholické nápoje" + ], "da": [ - "vinforhandler", - "vinforretning" + "drikkevarebutik", + "drikkevareforretning", + "flaskebutik" ], "de": [ "getränkehandlung", @@ -1746,6 +2061,9 @@ "fr": [ "magasin de vins et spiritueux" ], + "he": [ + "חנות משקאות" + ], "hu": [ "pálinka", "whiskey", @@ -1806,13 +2124,15 @@ "then": { "en": "Bicycle Shop", "ca": "Botiga de bicicletes", - "da": "Cykelbutik", + "cs": "Cykloprodejna", + "da": "Cykelhandler", "de": "Fahrradladen", "eo": "Bicikla vendejo", "es": "Tienda de bicicletas", "fi": "Pyöräliike", "fr": "Magasin de vélos", "gl": "Tenda de bicicletas", + "he": "חנות אופניים", "hu": "Kerékpárbolt", "id": "Toko Sepeda", "it": "Negozio di biciclette", @@ -1829,12 +2149,25 @@ "bicycle store", "bike", "bike store", + "hobby", "repair", "tricycle", "unicycle" ], "ca": [ - "botiga de bicicletes" + "tenda de bicicletes", + "ciclisme", + "bicicleta", + "reparació", + "taller" + ], + "cs": [ + "obchod s koly", + "kola", + "horská kola", + "jízdní kola", + "cyklistika", + "cykloprodejna" ], "da": [ "cykelforretning", @@ -1876,6 +2209,9 @@ "fr": [ "magasin de vélo" ], + "he": [ + "חנות אופניים" + ], "hu": [ "bicaj", "bringa", @@ -1894,7 +2230,12 @@ "自転車店", "自転車", "自転車屋", - "二輪" + "二輪", + "パンク修理", + "空気入れ", + "店舗", + "お店", + "サービス" ], "nl": [ "fietsenwinkel", @@ -1940,6 +2281,7 @@ "then": { "en": "Boat Store", "ca": "Botiga de nàutica", + "cs": "Prodejna lodí", "da": "Bådforhandler", "de": "Bootsgeschäft", "eo": "Boat‑vendejo", @@ -1947,6 +2289,7 @@ "fi": "Venekauppa", "fr": "Magasin de bateaux", "gl": "Tenda de embarcacións", + "he": "חנות סירות", "hu": "Hajósbolt", "it": "Negozio di barche", "ja": "ボート店", @@ -1959,6 +2302,7 @@ "searchTerms": { "en": [ "fishing boat", + "hobby", "jetski", "motorboat", "rowboat", @@ -1966,6 +2310,15 @@ "vessel", "watercraft" ], + "cs": [ + "rybářský člun", + "vodní skútr", + "motorový člun", + "veslice", + "plachetnice", + "nádoba", + "plavidlo" + ], "da": [ "fiskebåd", "kutter", @@ -2017,12 +2370,19 @@ "embarcacion", "barcos" ], + "he": [ + "חנות שייט", + "סירות" + ], "ja": [ "ボート店", "お店", "店舗", "ショッピング", - "小売" + "小売", + "ボート", + "船", + "舟" ], "nl": [ "visboot", @@ -2084,7 +2444,8 @@ "if": "shop=bookmaker", "then": { "en": "Bookmaker", - "ca": "Cusidor de llibres", + "ca": "Casa d'apostes", + "cs": "Sázková kancelář", "da": "Bookmaker", "de": "Wettbüro", "eo": "Vetperistejo", @@ -2092,12 +2453,13 @@ "fi": "Kirjapaino", "fr": "Bookmaker", "gl": "Corredor de apostas", + "he": "כורך ספרים", "hu": "Fogadóiroda", "id": "Juru Taruh", "it": "Agenzia di scommesse", "ja": "公営競技投票券売り場", "nl": "Bookmaker (gokkantoor)", - "pl": "Zakład bukmacherski", + "pl": "Bukmacher", "pt": "Casa de apostas", "ru": "Букмекерская контора", "sl": "Stavnica", @@ -2106,10 +2468,28 @@ "searchTerms": { "en": [ "betting", - "bookie", "gamble", - "gambling", - "turf accountant" + "gambling" + ], + "ca": [ + "apostes", + "joc d'atzar", + "escurabujaques", + "jocs d'atzar", + "apostar", + "joc", + "saló", + "sala" + ], + "cs": [ + "sázková kancelář", + "sázky", + "sázení", + "kurzové sázení", + "bookmaker", + "sazka", + "tipsport", + "fortuna" ], "da": [ "bookmaker" @@ -2124,7 +2504,10 @@ "es": [ "apuesta", "dinero", - "apostador" + "apostador", + "juego", + "casa de apuestas", + "corredor de apuestas" ], "fr": [ "preneur de paris", @@ -2137,6 +2520,9 @@ "luckia", "apostas" ], + "he": [ + "כורכת ספרים" + ], "hu": [ "bukméker" ], @@ -2162,8 +2548,8 @@ "bookmaker" ], "pl": [ - "zakład bukmacherski", "bukmacher", + "zakłady bukmacherskie", "zakłady sportowe", "hazard" ], @@ -2205,79 +2591,77 @@ { "if": "shop=books", "then": { - "en": "Book Store", + "en": "Bookstore", "ca": "Llibreria", - "da": "Boghandler", - "de": "Buchladen", - "eo": "Libra vendejo", - "es": "Librería (venta de libros)", + "cs": "Knihkupectví", + "da": "Boghandel", + "de": "Buchhandlung", + "es": "Librería", "fi": "Kirjakauppa", "fr": "Librairie", "gl": "Libraría", + "he": "חנות ספרים", "hu": "Könyvesbolt", "id": "Toko Buku", "it": "Libreria", "ja": "本屋", - "nl": "Boekwinkel", + "nl": "Boekenwinkel", "pl": "Księgarnia", "pt": "Livraria", "ru": "Книжный магазин", - "sl": "Knjigarna", "sv": "Bokhandel" }, "searchTerms": { + "en": [ + "hobby" + ], "da": [ - "boghandler" + "antikvariat", + "boglade", + "bogudsalg" ], "de": [ - "buchhandlung", - "buchhändler" - ], - "eo": [ - "librejo", - "librovendejo" + "buchladen", + "buchhändler", + "bücher" ], "es": [ "libro", - "obra", - "novela", - "cuento", - "revista", - "tienda", - "venta" + "librería", + "libreria" + ], + "fi": [ + "kirjakauppa" ], "fr": [ - "bouquiniste", - "livres d'occasion" - ], - "gl": [ - "libraría", - "venda de libros" - ], - "hu": [ - "antikvárium" + "librairie", + "papeterie" ], "it": [ "negozio di libri" ], "ja": [ "本屋", - "ブックストア", - "古書店", - "古書", - "書籍販売", "書店", - "本" - ], - "nl": [ - "boek", - "bibliotheek", - "boekenwinkel", - "boekhandel" + "本", + "書籍", + "雑誌", + "新刊", + "文庫本", + "漫画", + "まんが", + "マンガ", + "週刊誌", + "実用書", + "技術書", + "辞書", + "参考書", + "店舗", + "お店", + "ブック" ], "pl": [ "księgarnia", - "książki", "komiksy", "antykwariat" ], @@ -2288,16 +2672,6 @@ "livros", "livreiro" ], - "ru": [ - "магазин книг", - "книжный магазин", - "книги" - ], - "sl": [ - "knjigarna", - "trgovina s knjigami", - "založba" - ], "sv": [ "bokhandel", "bokförsäljning", @@ -2313,25 +2687,33 @@ "if": "shop=brewing_supplies", "then": { "en": "Brewing Supply Store", + "cs": "Pivovarnický obchod", "da": "Bryggeudstyrsbutik", "de": "Brauzubehörgeschäft", "eo": "Bier-/vin-farendaĵa vendejo", "es": "Tienda de suministros de cerveza", "fr": "Magasin de matériel de brasserie", "gl": "Tenda de cervexaría artesanal", + "he": "חנות ציוד למבשלות", "hu": "Borászati, sör- és párlafőzési felszereléseket árusító üzlet", "it": "Negozio di forniture per la produzione di birra", "ja": "醸造用品店", "nl": "Winkel voor brouwbenodigdheden", "pl": "Sklep dla piwowarów domowych", "pt": "Loja de material de fermentação", + "ru": "Магазин пивоваренного оборудования", "sv": "Affär för hembryggningstillbehör" }, "searchTerms": { "en": [ "brew shop", + "hobby", "homebrew supply store" ], + "cs": [ + "pivovar", + "obchod s domácími potřebami" + ], "da": [ "brygning", "øl", @@ -2362,6 +2744,12 @@ "brasserie", "brasseur" ], + "he": [ + "חנות תחביבים קולינריים", + "חנות מוצרי מבשלה", + "חנות בירה", + "אספקה למבשלות" + ], "ja": [ "醸造用品店", "醸造", @@ -2374,6 +2762,7 @@ "brouwerijbenodigdheden" ], "pl": [ + "sklep dla piwowarów domowych", "piwowarstwo domowe", "browar domowy", "domowy browar", @@ -2412,13 +2801,15 @@ "then": { "en": "Butcher", "ca": "Carnisseria", + "cs": "Řeznictví", "da": "Slagter", "de": "Metzgerei", "eo": "Vianda vendejo", "es": "Carnicería", "fi": "Lihakauppa", - "fr": "Boucher", + "fr": "Boucherie", "gl": "Carnizaría", + "he": "קצב", "hu": "Hentes", "id": "Penjagalan", "it": "Macellaio", @@ -2438,6 +2829,13 @@ "meat", "pork" ], + "cs": [ + "kuře", + "hovězí", + "jehněčí", + "maso", + "vepřové" + ], "da": [ "slagter", "slagterbutik", @@ -2468,6 +2866,9 @@ "charcutier", "boucher" ], + "he": [ + "קצבית" + ], "hu": [ "mészáros", "húsbolt" @@ -2542,6 +2943,7 @@ "if": "shop=camera", "then": { "en": "Camera Equipment Store", + "cs": "Prodejna kamer", "da": "Fotoforhandler", "de": "Fotofachgeschäft", "eo": "Vendejo kun fotiloj kaj lensoj", @@ -2549,11 +2951,12 @@ "fi": "Kameraliike", "fr": "Boutique de matériel photographique", "gl": "Tenda de fotografía", + "he": "חנות ציוד צילום", "hu": "Fényképezőgép-üzlet", "it": "Negozio di materiale fotografico", "ja": "カメラ店", "nl": "Winkel voor camerabenodigdheden", - "pl": "Sklep z kamerami i aparatami", + "pl": "Sklep z aparatami fotograficznymi i kamerami", "pt": "Loja de equipamento fotográfico", "sv": "Affär för kameratillbehör" }, @@ -2564,6 +2967,12 @@ "lens", "photo" ], + "cs": [ + "kamera", + "film", + "čočka", + "foto" + ], "da": [ "foto", "kamera", @@ -2601,6 +3010,9 @@ "cámara", "vídeo" ], + "he": [ + "חנות ציוד צילומי/היקפי" + ], "hu": [ "fotósbolt" ], @@ -2616,7 +3028,7 @@ "foto" ], "pl": [ - "sklep z kamerami i aparatami fotograficznymi", + "sklep z aparatami fotograficznymi i kamerami", "sprzęt fotograficzny", "kamery", "aparaty fotograficzne", @@ -2653,6 +3065,7 @@ "then": { "en": "Candle Shop", "ca": "Botiga d'espelmes", + "cs": "Obchod se svíčkami", "da": "Stearinlysforhandler", "de": "Kerzengeschäft", "eo": "Kandela vendejo", @@ -2660,6 +3073,7 @@ "fi": "Kynttiläkauppa", "fr": "Magasin de bougies", "gl": "Tenda de velas", + "he": "חנות נרות", "hu": "Gyertyabolt", "id": "Toko Lilin", "it": "Negozio di candele", @@ -2675,6 +3089,22 @@ "en": [ "wax" ], + "ca": [ + "tenda de ciris", + "ciris", + "cera", + "espelma", + "foc" + ], + "cs": [ + "svíčky", + "svíčka", + "svícen", + "svícny", + "lampa", + "lampy", + "lampičky" + ], "da": [ "stearinlysforhandler", "stearinlysbutik", @@ -2695,6 +3125,9 @@ "fr": [ "vente de bougies et d'accessoires" ], + "he": [ + "חנות נרות" + ], "hu": [ "mécsesbolt", "viasz" @@ -2707,7 +3140,9 @@ "ロウソク", "蝋燭", "蠟燭", - "インテリア" + "インテリア", + "店舗", + "お店" ], "nl": [ "kaarsen", @@ -2717,6 +3152,7 @@ "lont" ], "pl": [ + "sklep ze świecami", "świece" ], "pt": [ @@ -2751,28 +3187,52 @@ "then": { "en": "Cannabis Shop", "ca": "Botiga cannàbica", + "cs": "Prodejna konopí", "de": "Cannabisgeschäft", "eo": "Mariĥuana vendejo", "es": "Tienda de cannabis", "fi": "Kannabiskauppa", - "fr": "Magasin de canabis", + "fr": "Magasin de cannabis", "gl": "Tenda de cannabis", + "he": "חנות קנביס", "hu": "Marihuánabolt", "it": "Negozio di cannabis", "ja": "Cannabis Shop(illegal in Japan)", "nl": "Cannabiswinkel", "pl": "Sklep z produktami z konopi", "pt": "Loja de canábis", + "ru": "Магазин марихуаны", "sv": "Cannabisaffär" }, "searchTerms": { "en": [ "420", + "cannabis dispensary", "marijuana", "pot", "reefer", "weed" ], + "ca": [ + "tenda cannàbica", + "420", + "marihuana", + "canàbis", + "cannàbis", + "herba", + "tulipans", + "maria", + "porro" + ], + "cs": [ + "420", + "konopí", + "marihuana", + "kořenáč", + "cigareta", + "tráva", + "weed" + ], "de": [ "cannabis", "marihuana", @@ -2798,6 +3258,15 @@ "marijuana", "herbe" ], + "he": [ + "חנות עישון", + "מוצרי עישון", + "סמים", + "סמים קלים", + "מריחואנה", + "גראס", + "חשיש" + ], "hu": [ "kannabisz", "vadkender", @@ -2816,7 +3285,8 @@ "konopie", "marihuana", "cannabis", - "kanabis" + "kanabis", + "cbd" ], "pt": [ "cannabis", @@ -2850,6 +3320,7 @@ "then": { "en": "Car Dealership", "ca": "Concessionari de cotxes", + "cs": "Prodejna aut", "da": "Bilforhandler", "de": "Autohändler", "eo": "Aŭtomobila vendejo", @@ -2857,12 +3328,13 @@ "fi": "Autokauppa", "fr": "Concessionnaire automobile", "gl": "Concesionario de automóbiles", + "he": "סוכנות רכב", "hu": "Autókereskedés", "id": "Dealer Mobil", "it": "Concessionario", "ja": "カーディーラー", "nl": "Autoshowroom", - "pl": "Sprzedaż samochodów", + "pl": "Salon sprzedaży samochodów", "pt": "Loja de automóveis", "ru": "Автодилер", "sl": "Avtomobilski salon", @@ -2873,6 +3345,11 @@ "automobile", "automotive" ], + "cs": [ + "prodejna aut", + "autosalón", + "autobazar" + ], "da": [ "bilforhandler", "autoforhandler", @@ -2900,11 +3377,19 @@ "concesionario de coches", "concesionario de autos" ], + "fi": [ + "autokauppa", + "automyyjä", + "vaihtoautokauppa" + ], "fr": [ "concessionnaire", "garage", "garagiste" ], + "he": [ + "סוכנות רכב" + ], "hu": [ "autószalon", "márkakereskedés" @@ -2915,7 +3400,9 @@ "ja": [ "自動車販売店", "カーディーラー", - "中古車販売店" + "中古車販売店", + "自動車", + "カー" ], "nl": [ "autodealer", @@ -2926,6 +3413,7 @@ "autogarage" ], "pl": [ + "salon sprzedaży samochodów", "sprzedawca samochodów", "dealer samochodowy", "salon samochodowy", @@ -2963,10 +3451,6 @@ "bilreparatör", "biltillbehör" ] - }, - "icon": { - "path": "./assets/layers/id_presets/maki-car.svg", - "class": "medium" } }, { @@ -2974,6 +3458,7 @@ "then": { "en": "Car Parts Store", "ca": "Botiga de recanvis de cotxe", + "cs": "Náhradní díly pro auta", "da": "Bilreservedelsforhandler", "de": "Autoteilehandel", "eo": "Aŭtomobil-parta vendejo", @@ -2981,6 +3466,7 @@ "fi": "Varaosamyymälä", "fr": "Magasin de pièces automobiles", "gl": "Tenda de recambios de automóbiles", + "he": "חנות חלקי מכוניות", "hu": "Autóalkatrész-üzlet", "id": "Toko Peralatan Mobil", "it": "Negozio di autoricambi", @@ -2997,6 +3483,12 @@ "automobile", "automotive" ], + "cs": [ + "prodejna autodílů", + "autodíly", + "automobilový", + "auto" + ], "da": [ "autoudstyrsbutik", "biludstyrsbutik", @@ -3037,6 +3529,9 @@ "fr": [ "magasin de pièces automobiles" ], + "he": [ + "חנות חלקי חילוף" + ], "hu": [ "gépkocsi", "gépjármű", @@ -3049,7 +3544,10 @@ "自動車部品店", "カーパーツショップ", "カー用品", - "自動車用品" + "自動車用品", + "カー用品店", + "自動車", + "カー" ], "nl": [ "automaterialenwinkel", @@ -3057,6 +3555,7 @@ "auto-onderdelenhandel" ], "pl": [ + "sklep z częściami do samochodów", "sklep z częściami samochodowymi", "części samochodowe", "sklep motoryzacyjny", @@ -3101,6 +3600,7 @@ "then": { "en": "Car Repair Shop", "ca": "Taller d'automòbils", + "cs": "Autoopravna", "da": "Bilværksted", "de": "Autowerkstatt", "eo": "Aŭtomobil-riparejo", @@ -3108,6 +3608,7 @@ "fi": "Autokorjaamo", "fr": "Garage de réparation automobile", "gl": "Taller de arranxo de automóbiles", + "he": "מוסך", "hu": "Autószerelő", "id": "Bengkel Mobil", "it": "Autofficina", @@ -3121,15 +3622,35 @@ }, "searchTerms": { "en": [ - "auto mechanic", "automechanic", - "automobile", "automotive", "garage", "inspection", + "mechanic", "oil change", + "panelbeater", + "panel beater", "service" ], + "ca": [ + "taller", + "electromecànica", + "garaig", + "itv", + "inspecció", + "canvi d'oli", + "servei", + "servici", + "cotxe", + "taller de cotxes" + ], + "cs": [ + "opravna aut", + "autoservis", + "servis", + "pneuservis", + "opravna" + ], "da": [ "autoværksted", "bilværksted", @@ -3199,6 +3720,9 @@ "taller de coches", "taller de reparación" ], + "he": [ + "מוסך" + ], "hu": [ "autószerviz", "autójavító" @@ -3207,7 +3731,13 @@ "officina" ], "ja": [ - "自動車修理工場" + "自動車修理工場", + "自動車", + "カー", + "修理", + "板金", + "塗装", + "サービス" ], "nl": [ "garage", @@ -3262,12 +3792,15 @@ "if": "shop=caravan", "then": { "en": "RV Dealership", + "cs": "Prodejna karavanů", + "da": "Autocamperforhandler", "de": "Wohnwagengeschäft", "eo": "Vendejo de kampad-veturiloj", "es": "Concesionario de autocaravanas", "fi": "Asuntovaunukauppa", "fr": "Concessionnaire de véhicules de tourisme", "gl": "Concesionario de autocaravanas", + "he": "סוכנות קרוואנים", "hu": "Lakókocsi kereskedés", "it": "Concessionario caravan", "ja": "キャラバンカー販売店", @@ -3283,6 +3816,16 @@ "camper", "recreational vehicle" ], + "cs": [ + "auto", + "karavan", + "rekreační vozidlo" + ], + "da": [ + "autocamperforhandler", + "rv-forhandler", + "campingvognsforhandler" + ], "de": [ "wohnwagengeschäft", "caravangeschäft" @@ -3309,6 +3852,12 @@ "caravane", "camping-car" ], + "he": [ + "רכב", + "מכונית", + "נגרר", + "אוטו" + ], "it": [ "auto", "camper" @@ -3328,6 +3877,7 @@ "caravan" ], "pl": [ + "sklep z kamperami i przyczepami", "kamper", "camper", "karawan", @@ -3369,6 +3919,7 @@ "then": { "en": "Carpet Store", "ca": "Botiga de catifes", + "cs": "Prodejna koberců", "da": "Tæppeforhandler", "de": "Teppichgeschäft", "eo": "Tapiŝa vendejo", @@ -3376,10 +3927,11 @@ "fi": "Mattokauppa", "fr": "Magasin de tapis", "gl": "Tenda de alfombras", + "he": "חנות שטיחים", "hu": "Szőnyegbolt", "id": "Toko Karpet", "it": "Negozio di tappeti", - "ja": "カーペット専門店", + "ja": "カーペット店", "nl": "Tapijtwinkel", "pl": "Sklep z dywanami", "pt": "Loja de tapetes", @@ -3391,6 +3943,14 @@ "en": [ "rug" ], + "cs": [ + "koberce", + "koberec", + "podlahové", + "podlahový", + "krytina", + "krytiny" + ], "da": [ "tæppeforhandler", "tæppeforretning" @@ -3413,6 +3973,9 @@ "fr": [ "magasin de tapis" ], + "he": [ + "חנות שטיחים" + ], "hu": [ "szőnyegház", "padlószőnyeg áruház", @@ -3427,7 +3990,14 @@ "敷物", "表具店", "表具", - "インテリア" + "インテリア", + "絨毯", + "じゅうたん", + "カーペット店", + "店舗", + "お店", + "買い物", + "ショッピング" ], "nl": [ "vloerbedekkingswinkel", @@ -3465,11 +4035,13 @@ "if": "shop=catalogue", "then": { "en": "Catalog Shop", + "cs": "Katalogový obchod", "de": "Versandhandel", "eo": "Ricevejo de aĉetaĵoj (per katalogo)", "es": "Tienda de catálogo", "fr": "Magasin à catalogue", "gl": "Tenda de catálogo", + "he": "חנות קטלוגים", "hu": "Katalógus-áruház", "it": "Produzione di Cataloghi", "ja": "カタログショップ", @@ -3493,6 +4065,13 @@ "fr": [ "catalogue" ], + "he": [ + "בחירה קטלוגית", + "בחירה מקטלוג", + "חנות ללא מלאי", + "חנות הזמנות", + "חנות קטלוג" + ], "hu": [ "webshop" ], @@ -3530,6 +4109,7 @@ "then": { "en": "Charity Store", "ca": "Botiga de Caritat", + "cs": "Charitativní obchod", "da": "Velgørenhedsbutik", "de": "Sozialkaufhaus", "eo": "Almoza vendejo", @@ -3537,9 +4117,10 @@ "fi": "Hyväntekeväisyyskauppa", "fr": "Magasin d'organisme caritatif", "gl": "Tenda solidaria", + "he": "חנות צדקה", "hu": "Adománybolt", "it": "Mercatino dell'usato", - "ja": "チャリティーショップ", + "ja": "チャリティショップ", "nl": "Winkel van goed doel", "pl": "Sklep charytatywny", "pt": "Loja solidária", @@ -3552,6 +4133,11 @@ "op shop", "nonprofit" ], + "cs": [ + "charitativní obchod", + "dobročinný obchod", + "charita" + ], "da": [ "genbrugsbutik", "velgørenhedsbutik" @@ -3570,6 +4156,9 @@ "fr": [ "boutique caritative" ], + "he": [ + "חנות צדקה" + ], "hu": [ "jótékonysági bolt" ], @@ -3578,13 +4167,15 @@ "robivecchi" ], "ja": [ - "スリフトショップ", + "チャリティショップ", "チャリティ店", "チャリティ販売店", "慈善販売店", "慈善活動", "寄贈", - "寄付" + "寄付", + "中古", + "スリフトショップ" ], "nl": [ "kringloopwinkel", @@ -3635,13 +4226,15 @@ "then": { "en": "Cheese Store", "ca": "Botiga de formatge", + "cs": "Prodejna sýrů", "da": "Ostehandler", "de": "Käseladen", "eo": "Fromaĝa vendejo", "es": "Tienda de quesos", "fi": "Juustopuoti", - "fr": "Fromager", + "fr": "Fromagerie", "gl": "Queixaría", + "he": "חנות גבינות", "hu": "Sajtbolt", "id": "Toko Keju", "it": "Negozio di formaggi", @@ -3654,6 +4247,12 @@ "sv": "Ostaffär" }, "searchTerms": { + "cs": [ + "sýrařství", + "sýrař", + "sýry", + "sýr" + ], "da": [ "ostehandler", "ostebutik", @@ -3673,13 +4272,17 @@ "lácteos" ], "fr": [ - "vente de fromages" + "vente de fromages", + "fromager" ], "gl": [ "tenda de queixos", "queixería", "queixo" ], + "he": [ + "פרומז׳רי" + ], "hu": [ "kecskesajtbolt", "francia sajtok boltja" @@ -3700,6 +4303,7 @@ "kaashandel" ], "pl": [ + "sklep z serami", "sery" ], "pt": [ @@ -3739,7 +4343,8 @@ "if": "shop=chemist", "then": { "en": "Drugstore", - "ca": "Farmàcia", + "ca": "Drogueria", + "cs": "Drogerie", "da": "Materialist", "de": "Drogerie", "eo": "Kosmetikaĵa (ankaŭ purigaĵoj) vendejo", @@ -3747,7 +4352,9 @@ "fi": "Apteekki-luontaistuotemyymälä", "fr": "Parapharmacie", "gl": "Drogaría", + "he": "בית מרקחת", "hu": "Drogéria", + "id": "Toko Obat", "it": "Drogheria", "ja": "ドラッグストア・化粧品・薬品店(薬剤師がいない店)", "nl": "Drogisterij", @@ -3761,14 +4368,35 @@ "en": [ "apothecary", "beauty", + "chemist", + "dispensary", "drug store", "gift", "hair", - "med*", + "medicine", "pharmacy", "prescription", "tooth" ], + "ca": [ + "perfumeria", + "bellesa", + "cosmètics", + "monyo", + "pèl", + "farmàcia", + "dents", + "higiene" + ], + "cs": [ + "drogerie", + "parfumerie", + "kosmetika", + "hygiena", + "čisticí prostředky", + "lékárna", + "léky" + ], "da": [ "materialist" ], @@ -3813,6 +4441,9 @@ "gl": [ "botica" ], + "he": [ + "בית מרקחת" + ], "hu": [ "illatszer", "kozmetikum", @@ -3832,7 +4463,10 @@ "薬", "くすり屋", "健康", - "薬店" + "薬店", + "医薬品", + "店舗", + "お店" ], "nl": [ "apotheek", @@ -3883,6 +4517,7 @@ "then": { "en": "Chocolate Store", "ca": "Botiga de xocolata", + "cs": "Prodejna čokolády", "da": "Chokoladeforretning", "de": "Schokoladenladen", "eo": "Ĉokolada vendejo", @@ -3890,6 +4525,7 @@ "fi": "Suklaapuoti", "fr": "Chocolatier", "gl": "Chocolataría", + "he": "חנות שוקולד", "hu": "Csokoládébolt", "id": "Toko Cokelat", "it": "Cioccolateria", @@ -3898,13 +4534,20 @@ "pl": "Sklep z czekoladą", "pt": "Loja de chocolates", "ru": "Магазин шоколада", - "sl": "Trgovina s čokolado", + "sl": "Čokoladnica", "sv": "Chokladaffär" }, "searchTerms": { "en": [ "cocoa" ], + "cs": [ + "čokoláda", + "čokolády", + "čokoládovna", + "cukrářství", + "cukrář" + ], "da": [ "chokoladeforretning", "chokoladebutik" @@ -3936,6 +4579,9 @@ "chocolatada", "chocolateiro" ], + "he": [ + "חנות שוקולד" + ], "hu": [ "kézműves csokoládébolt", "csokibolt", @@ -3951,7 +4597,12 @@ "食べ物", "食料品", "店舗", - "お店" + "お店", + "お菓子", + "スイーツ", + "スナック", + "チョコ", + "チョコレート" ], "nl": [ "chocolatier", @@ -3993,6 +4644,7 @@ "then": { "en": "Clothing Store", "ca": "Botiga de roba", + "cs": "Oblečení", "da": "Tøjbutik", "de": "Bekleidungsgeschäft", "eo": "Vesta vendejo", @@ -4000,6 +4652,7 @@ "fi": "Vaatekauppa", "fr": "Magasin de vêtements", "gl": "Tenda de roupa", + "he": "חנות בגדים", "hu": "Ruházati bolt", "id": "Toko Baju", "it": "Negozio di abbigliamento", @@ -4019,6 +4672,7 @@ "clothes", "dresses", "fashion", + "outfits", "pants", "shirts", "shorts", @@ -4031,6 +4685,15 @@ "ca": [ "botiga de roba" ], + "cs": [ + "oděvy", + "oděv", + "šaty", + "oblečení", + "obchod s oblečením", + "móda", + "módní" + ], "da": [ "tøjbutik", "herretøjsbutik", @@ -4102,6 +4765,9 @@ "fr": [ "magasin de vêtements" ], + "he": [ + "חנות בגדים" + ], "hu": [ "fehérneműbolt", "öltönyáruház", @@ -4121,7 +4787,14 @@ "スーツ", "和服", "着物", - "古着" + "古着", + "衣料", + "ブティック", + "店舗", + "お店", + "アパレル", + "ショッピング", + "買い物" ], "nl": [ "kledingwinkel", @@ -4129,6 +4802,7 @@ "kledij" ], "pl": [ + "sklep odzieżowy", "odzież", "ubrania", "ciuchy", @@ -4182,6 +4856,7 @@ "then": { "en": "Coffee Store", "ca": "Botiga de cafè", + "cs": "Obchod prodávající kávu", "da": "Kaffebutik", "de": "Kaffeegeschäft", "eo": "Kafa vendejo", @@ -4189,6 +4864,7 @@ "fi": "Kahvikauppa", "fr": "Boutique de vente de cafés", "gl": "Tenda de café", + "he": "חנות קפה", "hu": "Kávébolt", "it": "Negozio di caffè", "ja": "コーヒー豆販売店", @@ -4200,6 +4876,20 @@ "sv": "Kaffeaffär" }, "searchTerms": { + "ca": [ + "tenda de cafè", + "cafe", + "cafè", + "expresso", + "flat white", + "cappuchino" + ], + "cs": [ + "káva", + "obchod kávou", + "obchod s kávou", + "pražírna" + ], "da": [ "kaffebutik", "kaffeforretning" @@ -4226,6 +4916,9 @@ "fr": [ "magasin de café" ], + "he": [ + "חנות קפה" + ], "hu": [ "kávébolt", "kávéüzlet", @@ -4243,7 +4936,9 @@ "飲み物", "食料品", "店舗", - "お店" + "お店", + "コーヒーパウダー", + "コーヒー豆" ], "nl": [ "koffiebonen", @@ -4285,17 +4980,21 @@ "if": "shop=collector", "then": { "en": "Collectibles Shop", + "ca": "Botiga de coleccionabes", + "cs": "Sběratel", "de": "Sammlergeschäft", "eo": "Kolektaĵa vendejo", "es": "Tienda de coleccionables", "fr": "Magasin d'objets de collection", "gl": "Tenda de colecionismo", + "he": "חנות אספנים", "hu": "Gyűjthető tárgyak boltja", "it": "Negozio di articoli da collezione", "ja": "コレクター店", "nl": "Winkel voor verzamelobjecten", "pl": "Sklep kolekcjonerski", "pt": "Loja de colecionismo", + "ru": "Коллекционный магазин", "sv": "Affär med samlarobjekt" }, "searchTerms": { @@ -4307,11 +5006,38 @@ "comics", "dolls", "figurines", + "hobby", "numismatics", "philately", "stamps", "thrift" ], + "ca": [ + "tenda de coleccionables", + "colecció", + "comics", + "coleccionista", + "figures", + "antiguitats", + "sellos", + "estamps" + ], + "cs": [ + "sběratelské potřeby", + "sběratelství", + "obchod se známkami", + "obchod se sběratelskými předměty", + "známky", + "mince", + "komix", + "panenky", + "antikvariát", + "filaterista", + "filaterie", + "razítka", + "sběratelský", + "sbírat" + ], "de": [ "antiquitäten", "münzen", @@ -4369,6 +5095,11 @@ "manga", "pin's" ], + "he": [ + "חנות עתיקות", + "חנות עבוט", + "חנות משכון" + ], "ja": [ "コレクター店", "コレクターズショップ", @@ -4437,6 +5168,7 @@ "then": { "en": "Computer Store", "ca": "Botiga d'informàtica", + "cs": "Počítače", "da": "Computerforhandler", "de": "Computerfachhandel", "eo": "Komputila vendejo", @@ -4444,6 +5176,7 @@ "fi": "Tietokoneliike", "fr": "Magasin d'informatique", "gl": "Tenda de informática", + "he": "חנות מחשבים", "hu": "Számítógépbolt", "id": "Toko Komputer", "it": "Negozio di informatica", @@ -4467,6 +5200,13 @@ "botiga d'informàtica", "botiga d'ordinadors" ], + "cs": [ + "obchod s výpočetní technikou", + "počítače", + "elektro", + "elektronika", + "výpočetní technika" + ], "da": [ "computerbutik", "pc-butik", @@ -4496,11 +5236,14 @@ "fr": [ "magasin d'informatique" ], + "he": [ + "חנות מחשבים" + ], "hu": [ - "számítástechnikai üzlet", - "notebook bolt", - "laptop bolt", - "apple bolt" + "számítástechnika", + "hardver", + "szoftver", + "laptop" ], "it": [ "negozio di computer" @@ -4562,13 +5305,16 @@ "then": { "en": "Candy Store", "ca": "Botiga de llaminadures", + "cs": "Cukrovinky", "da": "Slikbutik", "de": "Süßwarenladen", "eo": "Sukeraĵa vendejo", "es": "Tienda de dulces", + "eu": "Gozodenda", "fi": "Karkkipuoti", "fr": "Confiserie", "gl": "Tenda de larpeiradas", + "he": "חנות ממתקים", "hu": "Édességbolt", "id": "Toko Permen", "it": "Negozio di dolciumi", @@ -4582,6 +5328,9 @@ }, "searchTerms": { "en": [ + "fudge", + "lollipop", + "sugar", "sweet" ], "ca": [ @@ -4593,6 +5342,12 @@ "caramels", "llepolies" ], + "cs": [ + "cukrovinky", + "cukrovinka", + "cukrář", + "cukrářství" + ], "da": [ "slikbutik", "slikforretning" @@ -4620,6 +5375,12 @@ "chucherías", "tienda de chucherías" ], + "eu": [ + "gozodenda", + "goxokiak", + "azukrea", + "txutxeak" + ], "fr": [ "confiserie", "confiseur", @@ -4644,6 +5405,9 @@ "gominolas", "tenda de larpeiradas" ], + "he": [ + "חנות ממתקים" + ], "hu": [ "süteménybolt", "tortaszaküzlet", @@ -4670,7 +5434,8 @@ "食べ物", "食料品", "店舗", - "お店" + "お店", + "スイーツ" ], "nl": [ "confectionery", @@ -4718,6 +5483,7 @@ "then": { "en": "Convenience Store", "ca": "Botiga d'ultramarins", + "cs": "Obchod se smíšeným zbožím", "da": "Minimarked", "de": "Minimarkt", "eo": "Butiko oportuna", @@ -4725,6 +5491,7 @@ "fi": "Lähikauppa", "fr": "Épicerie / Supérette", "gl": "Tenda de ultramarinos", + "he": "חנות נוחות", "hu": "Kis élelmiszerbolt", "id": "Toko Kelontong", "it": "Minimarket", @@ -4737,15 +5504,29 @@ "sv": "Närbutik" }, "searchTerms": { + "en": [ + "mini-mart", + "mini-market" + ], "ca": [ "botiga de queviures", "ultramarins", "queviures", "colmado" ], + "cs": [ + "smíšené zboží", + "krám", + "obchod", + "potraviny", + "večerka" + ], "da": [ "minimarked", - "minikøbmand" + "minikøbmand", + "nærbutik", + "købmand", + "kiosk" ], "de": [ "minimarkt", @@ -4779,6 +5560,9 @@ "supérette", "petite épicerie du coin" ], + "he": [ + "חנות נוחות" + ], "hu": [ "abc", "sarki élelmiszer", @@ -4811,8 +5595,7 @@ "spożywczak", "delikatesy", "żywność", - "żabka", - "freshmarket" + "żabka" ], "pt": [ "pequena loja", @@ -4850,6 +5633,7 @@ "then": { "en": "Copy Store", "ca": "Copisteria", + "cs": "Kopírování", "da": "Fotokopishop", "de": "Kopierladen", "eo": "Fotokopiilejo", @@ -4857,6 +5641,7 @@ "fi": "Kopiointiliike", "fr": "Photocopie et impression", "gl": "Copistaría", + "he": "חנות העתקות", "hu": "Fénymásoló", "id": "Tempat Fotokopi", "it": "Copisteria", @@ -4879,6 +5664,16 @@ "fulls", "impressora" ], + "cs": [ + "kopírování", + "kopírka", + "kopírky", + "copy centrum", + "copy studio", + "kopírovací centrum", + "kopírárna", + "xerox" + ], "da": [ "fotokopishop" ], @@ -4910,6 +5705,10 @@ "photocopies", "impression" ], + "he": [ + "חנות עותקים", + "חנות שכפולים" + ], "hu": [ "nyomtatás", "diplomakötés", @@ -4968,6 +5767,7 @@ "then": { "en": "Cosmetics Store", "ca": "Botiga de cosmètics", + "cs": "Obchod s kosmetikou", "da": "Kosmetikbutik", "de": "Kosmetikladen", "eo": "Kosmetikaĵa (persona higieno) vendejo", @@ -4975,6 +5775,7 @@ "fi": "Kosmetiikkamyymälä", "fr": "Magasin de cosmétiques", "gl": "Tenda de cosméticos", + "he": "חנות קוסמטיקה", "hu": "Kozmetikai bolt", "id": "Toko Kosmetik", "it": "Negozio di cosmetici", @@ -4998,6 +5799,13 @@ "perfums", "perfumeria" ], + "cs": [ + "kosmetika", + "kosmetický", + "makeup", + "parfém", + "parfumerie" + ], "da": [ "kosmetikbutik", "kosmetikforretning" @@ -5029,6 +5837,9 @@ "vente de cosmétiques", "parfumerie" ], + "he": [ + "חנות קוסמטיקה" + ], "hu": [ "szépségápolási szaküzlet", "sminkbolt", @@ -5049,6 +5860,7 @@ "parfumerie" ], "pl": [ + "sklep z kosmetykami", "kosmetyki", "makijaż", "make-up", @@ -5062,7 +5874,9 @@ "cosméticos", "produtos de beleza", "beleza", - "belesa" + "belesa", + "maquiagem", + "maquilhagem" ], "ru": [ "косметика", @@ -5083,66 +5897,42 @@ { "if": "shop=country_store", "then": { - "en": "Country Store", - "de": "Ländlicher Laden", - "eo": "Ĝenerala vendejo en vilaĝo", - "es": "Tienda de campo", - "fr": "Magasin de campagne", - "gl": "Tenda do agro ou campo", - "hu": "Vidéki élet kellékeinek boltja", - "it": "Negozio locale di articoli vari", - "ja": "よろずや", - "nl": "Outdoorzaak", - "pl": "Country Store", + "en": "Rural Supplies Store", + "cs": "Venkovské potřeby", + "de": "Dorfladen", + "es": "Tienda de suministros rurales", + "fr": "Quincaillerie", + "he": "חנות הספקה כפרית", + "ja": "農山村用品店", + "nl": "Plattelandswinkel", + "pl": "Sklep z artykułami wiejskimi", "pt": "Loja para proprietários rurais", - "sv": "Lanthandel" + "sv": "Butik med landsbygdsförnödenheter" }, "searchTerms": { "de": [ - "ländlicher laden", "dorfladen" ], - "eo": [ - "ĝenerala vendejo", - "vilaĝa vendejo", - "ghenerala vendejo", - "gxenerala vendejo", - "vilagha vendejo", - "vilagxa vendejo", - "butiko oportuna" - ], "es": [ + "tienda de suministros rurales", + "suministros rurales", "campo", - "tienda", "rural" ], "fr": [ - "campagne", - "chasse", - "pêche", - "équitation", - "cheval", - "chevaux" + "quincaillerie rurale", + "épicerie rurale", + "épicerie de campagne", + "quincaillerie de campagne" ], "ja": [ - "よろずや", - "万屋", + "農山村用品店", "店舗", - "お店", - "ショッピング", - "小売" - ], - "nl": [ - "kampeerzaak", - "landelijk", - "scoutingwinkel", - "jacht", - "ruiter", - "paardrijden", - "tuinmachines" + "田舎", + "狩猟" ], "pl": [ - "country store" + "sklep z artykułami wiejskimi" ], "pt": [ "campo", @@ -5157,8 +5947,24 @@ "maquinaria" ], "sv": [ + "butik med landsbygdsförnödenheter", + "landsbygdsförnödenheter", + "lantmannaföreningen", + "granngården", "lanthandel", - "landet" + "landsbyggdsbutik", + "utomhuskläder", + "jakt", + "jaktutrustning", + "ridutrustning", + "ridtillbehör", + "trädgårdsbutik", + "trädgårdsmaskiner", + "husdjur", + "foder", + "djurfoder", + "bonde", + "bönder" ] }, "icon": { @@ -5171,6 +5977,7 @@ "then": { "en": "Arts & Crafts Store", "ca": "Botiga d'art i artesania", + "cs": "Obchod s uměleckými a řemeslnými potřebami", "da": "Kunst & hobbybutik", "de": "Geschäft für Künstlerbedarf", "eo": "Vendejo de materialoj por metio", @@ -5178,19 +5985,35 @@ "fi": "Käsityöliike", "fr": "Magasin d'arts et loisirs créatifs", "gl": "Tenda de artes e oficios", + "he": "חנות חפצי אומנות", "hu": "Kézműves bolt", "it": "Negozio di arti e mestieri", "ja": "美術・工芸用品店", "nl": "Winkel voor schilder- en tekengereedschap", "pl": "Sklep z artykułami dla artystów", "pt": "Loja de acessórios para artes manuais", + "ru": "Магазин художественных принадлежностей", "sv": "Konst- & hantverksbutik" }, "searchTerms": { "en": [ - "art*", - "paint*", + "art", + "canvas", + "crafting", + "crafts", + "draw", "frame", + "handicraft", + "hobby", + "paint", + "paper", + "pencil", + "wood" + ], + "cs": [ + "umění*", + "barva*", + "rám", "hobby" ], "da": [ @@ -5236,6 +6059,12 @@ "loisir", "peinture" ], + "he": [ + "חנות דברי אומנות", + "חנות אומנות", + "פריטי אומנות", + "חנות פריטי אומנות" + ], "hu": [ "hobbi", "kreatív hobbi" @@ -5246,7 +6075,8 @@ "画材", "絵の具", "美術用品", - "クラフト" + "クラフト", + "工房" ], "nl": [ "kunst*", @@ -5297,6 +6127,7 @@ "then": { "en": "Curtain Store", "ca": "Botiga de cortines", + "cs": "Obchod se závěsy", "da": "Gardinbutik", "de": "Vorhanggeschäft", "eo": "Kurtena vendejo", @@ -5304,6 +6135,7 @@ "fi": "Verhomyymälä", "fr": "Magasin de rideaux", "gl": "Tenda de cortinas", + "he": "חנות וילונות", "hu": "Függönybolt", "id": "Toko Gorden", "it": "Negozio di tende", @@ -5317,7 +6149,8 @@ }, "searchTerms": { "en": [ - "drape*", + "drape", + "drapery", "window" ], "ca": [ @@ -5325,6 +6158,14 @@ "cortines", "coixins" ], + "cs": [ + "závěs", + "závěsy", + "potah", + "potahy", + "ubrus", + "ubrusy" + ], "da": [ "gardinbutik", "gardinforretning" @@ -5354,6 +6195,9 @@ "fr": [ "magasin de rideaux" ], + "he": [ + "חנות וילונות" + ], "hu": [ "karnis", "függöny", @@ -5370,13 +6214,19 @@ ], "ja": [ "カーテン店", - "家具" + "家具", + "カーテン", + "インテリア", + "布", + "お店", + "店舗" ], "nl": [ "gordijnenwinkel", "gordijnenzaak" ], "pl": [ + "sklep z zasłonami", "zasłony", "zasłonki", "firany", @@ -5415,6 +6265,7 @@ "then": { "en": "Dairy Store", "ca": "Botiga de productes làctics", + "cs": "Mléčné výrobky", "da": "Ismejeri", "de": "Milchgeschäft", "eo": "Laktaĵa vendejo", @@ -5422,6 +6273,7 @@ "fi": "Maitotuotemyymälä", "fr": "Crèmerie", "gl": "Tenda de produtos frescos", + "he": "חנות מוצרי חלב", "hu": "Tejtermékbolt", "id": "Toko Susu", "it": "Negozio di latticini", @@ -5439,6 +6291,15 @@ "egg", "cheese" ], + "cs": [ + "mléčné výrobky", + "mlékařství", + "mléko", + "mléčné produkty", + "sýr", + "jogurt", + "smetana" + ], "da": [ "ismejeri", "mejeri", @@ -5487,6 +6348,9 @@ "queixaría", "central leiteira" ], + "he": [ + "חנות דברי חלב" + ], "hu": [ "tejtermék", "kecsketej", @@ -5513,12 +6377,14 @@ "バター", "食料品", "店舗", - "お店" + "お店", + "デイリーストア" ], "nl": [ "zuivelwinkel" ], "pl": [ + "sklep z nabiałem", "nabiał" ], "pt": [ @@ -5549,85 +6415,75 @@ { "if": "shop=deli", "then": { - "en": "Deli", - "ca": "Botiga de comestibles", - "da": "Deli", + "en": "Delicatessen", + "cs": "Lahůdkářství", + "da": "Delikatesse", "de": "Feinkostladen", - "eo": "Delikataĵa vendejo", "es": "Delicatessen", - "fi": "Deli", - "fr": "Épicerie de luxe", - "gl": "Delicatessen", + "fr": "Épicerie fine", + "he": "מעדניה", "hu": "Csemegebolt", - "id": "Delikatesen", - "it": "Gastronomia", - "ja": "惣菜屋", - "nl": "Delicatessenwinkel", + "it": "Negozio di specialità gastronomiche", + "ja": "高級食材店", + "nl": "Delicatessen", "pl": "Ekskluzywne delikatesy", "pt": "Loja gourmet", - "ru": "Магазин деликатесов", - "sl": "Delikatesa", + "ru": "Деликатесы", "sv": "Delikatessaffär" }, "searchTerms": { "en": [ - "lunch", - "meat", - "sandwich" + "deli" ], - "da": [ - "deli", - "delikatesse" + "cs": [ + "delikatesy" ], "de": [ "feinkost-geschäft", "delikatessen-laden" ], - "eo": [ - "delikataĵoj", - "delikatajhoj", - "delikatajxoj", - "frandaĵoj", - "bongustaĵoj" - ], "es": [ "delicatessen", "gourmet", - "exquisiteces", - "charcutería" + "charcutería", + "rotisería", + "salsamentaria", + "salchichonería" ], "fr": [ - "epicerie fine", - "traiteur" - ], - "hu": [ - "delikát", - "csemege" + "épicerie fine", + "traiteur", + "charcuterie", + "plat à emporter" ], "it": [ - "cibi e bevande pregiate" + "gastronomia", + "tipico", + "tipici", + "prodotti", + "prodotti tipici" ], "ja": [ - "惣菜屋", - "弁当屋", - "デリカ", + "デリカテッセン", + "デリ", + "高級食品", + "グルメ食品", + "チーズ", + "ソーセージ", + "キャビア", + "フォアグラ", + "パテ", + "オリーブ", + "ワイン", "食品", - "食べ物", - "おかず", - "豆腐", - "蒟蒻", + "つまみ", "食料品", + "小売", "店舗", "お店" ], - "nl": [ - "delicatesse", - "speciaalzaak", - "delicatessenwinkel", - "delicatessen", - "winkel" - ], "pl": [ + "delikatesy", "wyroby delikatesowe", "wykwintne artykuły spożywcze", "specjały", @@ -5640,14 +6496,8 @@ "mercearia", "dop", "produtos de qualidade", - "origem protegida" - ], - "ru": [ - "деликатесы" - ], - "sl": [ - "špecerija", - "delikatesna trgovina" + "origem protegida", + "iguarias" ], "sv": [ "delikatessaffär", @@ -5660,7 +6510,7 @@ ] }, "icon": { - "path": "./assets/layers/id_presets/temaki-meat.svg", + "path": "./assets/layers/id_presets/fas-jar.svg", "class": "medium" } }, @@ -5669,6 +6519,7 @@ "then": { "en": "Department Store", "ca": "Grans magatzems", + "cs": "Obchodní dům", "da": "Stormagasin", "de": "Kaufhaus", "eo": "Ĉiovendejo", @@ -5676,6 +6527,7 @@ "fi": "Tavaratalo", "fr": "Grand magasin", "gl": "Grandes almacéns", + "he": "חנות כלבו", "hu": "Nagyáruház", "id": "Pasar Swalayan", "it": "Grande magazzino", @@ -5688,6 +6540,12 @@ "sv": "Varuhus" }, "searchTerms": { + "cs": [ + "obchodní dům", + "nákupní středisko", + "obchodní středisko", + "nákupní centrum" + ], "da": [ "stormagasin" ], @@ -5717,6 +6575,9 @@ "grand magasin", "magasin par départements" ], + "he": [ + "חנות כלבו" + ], "hu": [ "áruház", "városi áruház", @@ -5777,6 +6638,7 @@ "then": { "en": "DIY Store", "ca": "Botiga de bricolatge", + "cs": "Obchod pro kutily", "da": "Byggemarked", "de": "Heimwerkerladen", "eo": "Memfaradila vendejo", @@ -5784,10 +6646,11 @@ "fi": "Askartelukauppa", "fr": "Magasin de bricolage", "gl": "Tenda de bricolaxe", + "he": "חנות עשה זאת בעצמך", "hu": "Barkácsáruház", "id": "Toko Swakriya", "it": "Negozio per il fai-da-te", - "ja": "ホームセンター", + "ja": "ホームセンター(DIY)", "nl": "Bouwmarkt, doe-het-zelfwinkel", "pl": "Market budowlany / sklep dla majsterkowiczów", "pt": "Loja de bricolagem", @@ -5801,12 +6664,24 @@ "diy", "do it yourself", "hardware", + "hobby", "home improvement", "tools" ], "ca": [ "botiga de bricolatge" ], + "cs": [ + "obchod pro kutily", + "stavební materiál", + "stavebniny", + "staviva", + "potřeby pro kutily", + "zahradní potřeby", + "železářství", + "kutil", + "hobby" + ], "da": [ "værktøj", "materiale", @@ -5837,6 +6712,9 @@ "bricolaxe", "diy" ], + "he": [ + "חנות עשה זאת בעצמך" + ], "hu": [ "ezermester", "barkácsbolt", @@ -5864,7 +6742,8 @@ "園芸", "工芸用品", "家庭菜園", - "植木" + "植木", + "diy店" ], "nl": [ "dhz-winkel", @@ -5931,6 +6810,7 @@ "then": { "en": "Door Shop", "ca": "Botiga de portes", + "cs": "Prodejna dveří", "da": "Dørforhandler", "de": "Türgeschäft", "eo": "Vendejo de pordoj", @@ -5938,6 +6818,7 @@ "fi": "Oviliike", "fr": "Magasin de portes", "gl": "Tenda de portas", + "he": "חנות דלתות", "hu": "Ajtószaküzlet", "it": "Negozio di porte", "ja": "ドア販売店", @@ -5948,6 +6829,11 @@ "sv": "Affär med dörrar" }, "searchTerms": { + "ca": [ + "tenda de portes", + "portes", + "entrada" + ], "da": [ "dør", "karm", @@ -5974,13 +6860,22 @@ "porte-fenêtre", "porte-fenetre" ], + "he": [ + "חנות לדלתות", + "דלתות פנים", + "דלתות חוץ", + "דלתות מעוצבות" + ], "it": [ "porte" ], "ja": [ "ドア販売店", "ドア", - "扉" + "扉", + "店舗", + "お店", + "建材店" ], "nl": [ "deurbeslag", @@ -6018,6 +6913,7 @@ "then": { "en": "Dry Cleaner", "ca": "Bugaderia", + "cs": "Čistírna", "da": "Renseri", "de": "Chemische Reinigung", "eo": "Vest-lavejo (nepolara solvilo)", @@ -6025,6 +6921,7 @@ "fi": "Kuivapesula", "fr": "Pressing", "gl": "Tinturaría", + "he": "ניקוי יבש", "hu": "Vegytisztitó", "id": "Jasa Cuci Kering", "it": "Lavanderia", @@ -6043,6 +6940,12 @@ "neteja", "neteja en sec" ], + "cs": [ + "čistírna", + "čistírna oděvů", + "prádelna", + "praní" + ], "da": [ "renseri" ], @@ -6062,6 +6965,9 @@ "teinturerie", "blanchisserie" ], + "he": [ + "ניקוי יבש" + ], "hu": [ "száraztisztító", "patyolat", @@ -6113,6 +7019,7 @@ "then": { "en": "E-Cigarette Shop", "ca": "Botiga de cigars electrònics", + "cs": "Obchod s e-cigaretami", "da": "E-cigaretbutik", "de": "E-Zigarettengeschäft", "eo": "Elektronik-cigareda vendejo", @@ -6120,6 +7027,7 @@ "fi": "Sähkösavukemyymälä", "fr": "Magasin de cigarettes électroniques", "gl": "Tenda de cigarros electrónicos", + "he": "חנות מוצרי עישון", "hu": "E-cigaretta bolt", "it": "Negozio di sigarette elettroniche", "ja": "電子タバコ店", @@ -6136,6 +7044,22 @@ "vaping", "vapor" ], + "ca": [ + "tenda de cigars electrònics", + "vapeig", + "vaper", + "electrònica", + "cigarret electrònic", + "tabaco", + "tabac", + "cigarro electrònic" + ], + "cs": [ + "elektronické", + "cigarety", + "kouřit", + "kouř" + ], "da": [ "e-cigaretbutik", "e-cigaretforretning" @@ -6166,6 +7090,9 @@ "fr": [ "boutique de cigarettes électroniques" ], + "he": [ + "חנות דברי עישון" + ], "hu": [ "e-cigaretta", "elektromos cigaretta" @@ -6181,13 +7108,17 @@ "嗜好品", "タバコ", "たばこ", - "煙草" + "煙草", + "店舗", + "お店" ], "nl": [ "e-cigarettewinkel" ], "pl": [ - "e-papierosy" + "sklep z e-papierosami", + "e-papierosy", + "vape shop" ], "pt": [ "e-cigarette", @@ -6218,12 +7149,15 @@ "if": "shop=electrical", "then": { "en": "Electrical Equipment Store", + "ca": "Tenda d'equipament elèctric", + "cs": "Prodejna elektoniky", "de": "Elektrofachgeschaft", "eo": "Elektraĵa vendejo", "es": "Tienda de equipos eléctricos", "fi": "Sähkötarvikekauppa", "fr": "Magasin d'équipements électriques", "gl": "Tenda de material eléctrico", + "he": "חנות מוצרי חשמל", "hu": "Villamossági szaküzlet", "it": "Negozio di materiale elettrico", "ja": "電気店", @@ -6243,6 +7177,23 @@ "power", "wire" ], + "ca": [ + "cable", + "elèctric", + "electricitat", + "ventilador", + "il·luminació", + "potència" + ], + "cs": [ + "kabel", + "elektrický", + "ventilátor", + "vedení", + "osvětlení", + "napájení", + "drát" + ], "de": [ "kabel", "elektrik", @@ -6281,6 +7232,17 @@ "éclairage", "lampes" ], + "he": [ + "חנות חשמל", + "חנות תאורה", + "מאווררים", + "כבל", + "חשמל", + "תאורה" + ], + "hu": [ + "villanyszerelés" + ], "it": [ "cavi", "prese", @@ -6351,6 +7313,7 @@ "then": { "en": "Electronics Store", "ca": "Botiga d'electrònica", + "cs": "Elektro", "da": "Elektronikbutik", "de": "Elektronikfachgeschäft", "eo": "Elektronika vendejo", @@ -6358,12 +7321,13 @@ "fi": "Elektroniikkamyymälä", "fr": "Magasin d'électronique et d'électroménager", "gl": "Tenda de electrodomésticos", + "he": "חנות אלקטרוניקה", "hu": "Szórakoztató elektronikai bolt", "id": "Toko Elektronik", "it": "Negozio di elettronica", "ja": "家電販売店(小型製品)", "nl": "Huishoudtoestellen-/Witgoedwinkel", - "pl": "Sklep z elektroniką/RTV/AGD", + "pl": "Sklep z elektroniką (RTV/AGD)", "pt": "Loja de eletrodomésticos", "ru": "Магазин бытовой электроники", "sl": "Elektronska trgovina", @@ -6387,6 +7351,19 @@ "botiga d'electrònica", "botiga de components electrònics" ], + "cs": [ + "spotřebič", + "audio", + "blueray", + "fotoaparát", + "počítač", + "dvd", + "domácí kino", + "rádio", + "reproduktor", + "televize", + "video" + ], "da": [ "elektronikbutik" ], @@ -6410,6 +7387,9 @@ "fr": [ "magasin d'électronique et d'électroménager" ], + "he": [ + "חנות אלקטרוניקה" + ], "hu": [ "háztartási gép", "tévé", @@ -6440,6 +7420,7 @@ "afwasmachine" ], "pl": [ + "sklep z elektroniką", "rtv", "agd", "artykuły gospodarstwa domowego", @@ -6530,6 +7511,7 @@ "then": { "en": "Erotic Store", "ca": "Botiga d'articles eròtics", + "cs": "Sex shop", "da": "Erotikbutik", "de": "Erotikgeschäft", "eo": "Seksumila vendejo", @@ -6537,6 +7519,7 @@ "fi": "Erotiikkamyymälä", "fr": "Sex-shop", "gl": "Tenda erótica", + "he": "חנות ארוטיקה", "hu": "Szexbolt", "it": "Sexy shop", "ja": "アダルトショップ", @@ -6557,6 +7540,13 @@ "shop", "sexshop" ], + "cs": [ + "sex shop", + "sexshop", + "erotické zboží", + "erotické pomůcky", + "erotické prádlo" + ], "da": [ "erotikbutik", "sexlegetøjsbutik", @@ -6597,6 +7587,9 @@ "fr": [ "sex-shop" ], + "he": [ + "חנות סקס" + ], "hu": [ "erotikus bolt", "szexuális segédeszköz" @@ -6668,6 +7661,7 @@ "then": { "en": "Fabric Store", "ca": "Botiga de teles", + "cs": "Obchod s textilem", "da": "Stofforretning", "de": "Stoffgeschäft", "eo": "Teksaĵa vendejo", @@ -6675,6 +7669,7 @@ "fi": "Kangaskauppa", "fr": "Magasin de tissus", "gl": "Tenda de teas", + "he": "חנות אריגה", "hu": "Méteráru-bolt", "id": "Toko Kain", "it": "Negozio di tessuti", @@ -6695,6 +7690,14 @@ "teles", "robes" ], + "cs": [ + "textil", + "textilní", + "látka", + "látky", + "bytový textil", + "metrový textil" + ], "da": [ "stofforretning" ], @@ -6718,6 +7721,9 @@ "fr": [ "mercerie" ], + "he": [ + "חנות אריגה" + ], "hu": [ "röltex", "lakástextil", @@ -6744,13 +7750,15 @@ "お店", "ショッピング", "小売", - "アパレル" + "アパレル", + "店舗" ], "nl": [ "kledij", "naaien" ], "pl": [ + "sklep z tkaninami", "tkaniny" ], "pt": [ @@ -6779,7 +7787,7 @@ "if": "shop=farm", "then": { "en": "Produce Stand", - "ca": "Estand productiu", + "cs": "Stánek s ovocem, zeleninou", "da": "Gårdbutik", "de": "Hofladen", "eo": "Terfrukta vendotablo", @@ -6787,11 +7795,13 @@ "fi": "Maatilan suoramyynti", "fr": "Magasin de producteurs", "gl": "Tenda de produtos agrícolas", + "he": "דוכן ירקות", "hu": "Termelői bolt", + "id": "Kios Tanaman", "it": "Bancarella agricola", "ja": "農産物直売所", "nl": "Boerderijwinkel voor groente en fruit", - "pl": "Stragan świeżych produktów", + "pl": "Stragan z owocami i warzywami", "pt": "Loja de produtos agrícolas locais", "ru": "Магазин свежих продуктов", "sl": "Prodaja domačih pridelkov", @@ -6810,6 +7820,16 @@ "ca": [ "grades" ], + "cs": [ + "stánek", + "ovoce", + "zelenina", + "trh", + "tržiště", + "farmářský trh", + "farmářské tržiště", + "farma" + ], "da": [ "fødevarestand", "frugtstand", @@ -6854,6 +7874,9 @@ "vente à la ferme", "vente producteurs" ], + "he": [ + "ירקן" + ], "hu": [ "farm bolt", "árus", @@ -6874,7 +7897,11 @@ "食べ物", "食料品", "店舗", - "お店" + "お店", + "農場", + "販売所", + "野菜", + "直売所" ], "nl": [ "groentekraam", @@ -6882,8 +7909,7 @@ "groente- en fruitkraam" ], "pl": [ - "stragan świeżych produktów", - "sklep wiejski", + "stragan z owocami i warzywami", "świeże płody rolne", "świeża żywność", "warzywa", @@ -6928,12 +7954,15 @@ "then": { "en": "Fashion Accessories Store", "ca": "Botiga d'accessoris de moda", + "cs": "Prodejna módních doplňků", + "da": "Butik for modetilbehør", "de": "Geschäft für Modeaccessoires", "eo": "Galanteria (vestaj akcesoraĵoj) vendejo", "es": "Tienda de accesorios de moda", "fi": "Muotitarvikekauppa", "fr": "Boutique d'accessoires de mode", "gl": "Tenda de accesorios de moda", + "he": "חנות אביזרי אופנה", "hu": "Divat kiegészítők boltja", "it": "Negozio di accessori di moda", "ja": "ファッション小物店", @@ -6958,6 +7987,24 @@ "wallet", "watch" ], + "cs": [ + "taška", + "kolínská voda", + "vůně", + "klobouk", + "šperky", + "parfém", + "peněženka", + "šátek", + "sluneční brýle", + "deštník", + "náprsní taška", + "hodinky" + ], + "da": [ + "butik for modetilbehør", + "accessories" + ], "de": [ "tasche", "parfum", @@ -7002,6 +8049,23 @@ "parapluie", "montres" ], + "he": [ + "אקססוריז", + "תיק", + "בושם", + "קולון", + "כובע", + "תכשיט", + "תכשיטים", + "פרפום", + "ארנק", + "צעיף", + "משקפיים", + "מטריה", + "שעון", + "תיק יד", + "תיק צד" + ], "ja": [ "アクセサリー店", "アクセサリーショップ", @@ -7015,7 +8079,9 @@ "おしゃれ", "ファッション小物店", "ショッピング", - "小売" + "小売", + "買い物", + "アクセサリー" ], "nl": [ "handtas", @@ -7031,6 +8097,7 @@ "sklep z galanterią", "galanteria", "akcesoria modowe", + "dodatki modowe", "dodatki do ubrania", "dodatki do odzieży", "paski", @@ -7088,12 +8155,15 @@ "then": { "en": "Fireplace Store", "ca": "Botiga de llars de foc", + "cs": "Prodej krbů a kamen", + "da": "Brændeovnsforretning", "de": "Kachelofenladen", "eo": "Kamen-vendejo", "es": "Tienda de chimeneas", "fi": "Takkamyymälä", "fr": "Magasin de cheminées", "gl": "Tenda de chemineas", + "he": "חנות חימום", "hu": "Cserépkályha- és kandalló-szaküzlet", "it": "Negozio di caminetti", "ja": "暖房具店", @@ -7109,6 +8179,21 @@ "stove", "masonry heater" ], + "cs": [ + "krb", + "kamna", + "zděné topení" + ], + "da": [ + "ovn", + "kamin", + "brænde", + "ild", + "ildsted", + "pejs", + "skorsten", + "opvarmning" + ], "de": [ "kachelofenladen", "kamin", @@ -7132,6 +8217,12 @@ "lume", "fumeira" ], + "he": [ + "אח", + "קמין", + "תנור", + "חימום" + ], "it": [ "camino", "caminetto", @@ -7155,6 +8246,7 @@ "kachelwinkel" ], "pl": [ + "sklep z kominkami", "kominek", "kominki", "piece", @@ -7168,7 +8260,15 @@ "fogões", "fogão", "salamandra", - "calor" + "calor", + "fogao", + "fogoes", + "aquecer", + "stove", + "fireplace", + "heat", + "heating", + "heater" ], "sv": [ "eldstad", @@ -7188,12 +8288,15 @@ "then": { "en": "Fishing Shop", "ca": "Botiga de pesca", + "cs": "Rybářské potřeby", + "da": "Fiskebutik", "de": "Angelgeschäft", "eo": "Fiŝkaptil-vendejo", "es": "Tienda de pesca", "fi": "Kalastuskauppa", "fr": "Magasin de pêche", "gl": "Tenda de pesca", + "he": "חנות דיג", "hu": "Horgászbolt", "it": "Negozio di pesca", "ja": "釣具店", @@ -7209,11 +8312,38 @@ "fishing line", "flies", "fly", + "hobby", "lure", "reel", "rod", "tackle" ], + "ca": [ + "tenda de pesca", + "cebo", + "canya", + "sedal", + "esquer", + "am", + "ams", + "peix", + "pesca", + "mar" + ], + "cs": [ + "návnada", + "vlasec", + "mouchy", + "muška", + "lákadlo", + "naviják", + "prut", + "náčiní" + ], + "da": [ + "fiskeforretning", + "lystfiskerbutik" + ], "de": [ "angelgeschäft", "angelsportzentrum" @@ -7239,6 +8369,16 @@ "fr": [ "pêche" ], + "he": [ + "פיתיונות", + "דגה", + "דייג", + "דיג", + "חכה", + "חוטי דיג", + "פיתיון", + "מצערת" + ], "it": [ "pesca", "pescatori", @@ -7259,7 +8399,9 @@ "フィッシング", "釣り道具", "スポーツ", - "ホビー" + "ホビー", + "店舗", + "お店" ], "nl": [ "visserswinkel", @@ -7269,6 +8411,7 @@ "vislijnen" ], "pl": [ + "sklep wędkarski", "wędki", "przynęty", "ryby", @@ -7312,11 +8455,14 @@ "if": "shop=flooring", "then": { "en": "Flooring Supply Shop", + "ca": "Botiga de sòls", + "cs": "Podlahové krytiny", "de": "Fußbodengeschäft", "eo": "Plank-vendejo", "es": "Tienda de suministros para pisos", "fr": "Magasin de revêtements de sol", "gl": "Tenda de chans", + "he": "חנות ריצוף", "hu": "Burkoló bolt", "it": "Negozio di articoli per pavimentazioni", "ja": "床用品店", @@ -7329,6 +8475,18 @@ "en": [ "tile" ], + "ca": [ + "tenda de sòls", + "manises", + "piso", + "màrmol", + "suelo", + "pis", + "terra" + ], + "cs": [ + "dlaždice" + ], "de": [ "fliese" ], @@ -7353,6 +8511,15 @@ "vinyle", "pvc" ], + "he": [ + "רצפות", + "אריחים", + "ריצוף", + "בלטות" + ], + "hu": [ + "hidegburkoló" + ], "it": [ "pavimenti", "piastrelle" @@ -7360,7 +8527,10 @@ "ja": [ "床用品店", "フロア", - "フローリング" + "フローリング", + "店舗", + "お店", + "建材店" ], "nl": [ "tegel" @@ -7399,6 +8569,7 @@ "then": { "en": "Florist", "ca": "Floristeria", + "cs": "Květinářství", "da": "Blomsterbutik", "de": "Blumenhändler", "eo": "Florvendejo", @@ -7406,6 +8577,7 @@ "fi": "Kukkakauppa", "fr": "Fleuriste", "gl": "Floraría", + "he": "חנות פרחים", "hu": "Virágbolt", "id": "Toko Bunga", "it": "Fioraio", @@ -7426,6 +8598,13 @@ "botiga de plantes", "botiga de jardineria" ], + "cs": [ + "květinář", + "květinářství", + "květy", + "květiny", + "kytice" + ], "da": [ "blomsterbutik", "blomsterforretning" @@ -7450,6 +8629,9 @@ "fr": [ "fleuriste" ], + "he": [ + "חנות פרחים" + ], "hu": [ "virágos", "virágárus", @@ -7509,6 +8691,7 @@ "then": { "en": "Framing Shop", "ca": "Botiga de marcs", + "cs": "Rámařství", "da": "Rammebutik", "de": "Bilderrahmengeschäft", "eo": "Bild-kadra vendejo", @@ -7516,11 +8699,12 @@ "fi": "Kehystämö", "fr": "Magasin d'encadrements", "gl": "Tenda de enmarcado", + "he": "חנות חקלאות", "hu": "Képkeret-bolt", "id": "Toko Bingkai", "it": "Negozio di cornici", "ja": "額縁店", - "nl": "Kaderwinkel", + "nl": "Lijstenmakerij", "pl": "Sklep z ramami", "pt": "Loja de molduras", "ru": "Магазин рамок для фотографий и картин", @@ -7528,10 +8712,26 @@ }, "searchTerms": { "en": [ - "art*", - "paint*", - "photo*", - "frame" + "art", + "frame", + "painting", + "photograph" + ], + "ca": [ + "tenda de marcs", + "art", + "pintura", + "pintor", + "fotografia" + ], + "cs": [ + "rámař", + "rámařství", + "rám", + "rámy", + "rámování", + "rámeček", + "rámečky" ], "da": [ "rammebutik", @@ -7569,6 +8769,9 @@ "enmarcar", "cadro" ], + "he": [ + "חנות חקלאות" + ], "hu": [ "képkeretező" ], @@ -7576,14 +8779,21 @@ "corniceria" ], "ja": [ - "額縁店" + "額縁店", + "店舗", + "お店", + "絵画" ], "nl": [ "schilderijen", "kunst", - "kadrering" + "kadering", + "inlijsten", + "lijsten", + "lijstenmaker" ], "pl": [ + "sklep z ramami", "ramy", "oprawa obrazów", "oprawy obrazów", @@ -7617,11 +8827,13 @@ "then": { "en": "Frozen Food Store", "ca": "Botiga de menjars congelats", + "cs": "Prodejna mražených potravin", "de": "Geschäft für Tiefkühlprodukte", "eo": "Frostigit-manĝaĵa vendejo", "es": "Tienda de alimentos congelados", "fr": "Magasin de produits surgelés", "gl": "Tenda de conxelados", + "he": "חנות מזון קפוא", "hu": "Fagyasztottélelmiszer-bolt", "it": "Negozio di cibo surgelato", "ja": "冷凍食品店", @@ -7632,6 +8844,16 @@ "sv": "Affär för fryst mat" }, "searchTerms": { + "cs": [ + "obchod s mraženými potravinami", + "mražené potraviny", + "mražené jídlo", + "mrazák", + "zmražené", + "zmrazit", + "potraviny", + "obchod" + ], "de": [ "tiefkühllebensmittel", "tiefkühlkost", @@ -7655,6 +8877,16 @@ "surgeles", "glaces" ], + "he": [ + "קפואים", + "סנפרוסט", + "קיפאון", + "הקפאה", + "מקרר", + "פריג'ידר", + "פריזר", + "קרח" + ], "hu": [ "mirelit" ], @@ -7678,6 +8910,7 @@ "diepvriesvoedsel" ], "pl": [ + "sklep z mrożonkami", "mrożonki" ], "pt": [ @@ -7700,31 +8933,48 @@ "mat", "lunch" ] - }, - "icon": { - "path": "./assets/layers/id_presets/maki-shop.svg", - "class": "medium" } }, { "if": "shop=fuel", "then": { "en": "Fuel Shop", + "ca": "Botiga de combustibles", + "cs": "Obchod s palivem", + "da": "Brændstofbutik", "de": "Tankstelle", "eo": "Brulaĵ-vendejo", "es": "Tienda de combustible", "fi": "Polttoainemyymälä", "fr": "Revendeur de carburant", "gl": "Tenda de combustíbel", + "he": "חנות נוחות", "hu": "Üzemanyag-szaküzlet", "it": "Negozio di carburanti", "ja": "燃料店", "nl": "Brandstofwinkel", - "pl": "Sklep z paliwami", + "pl": "Sklep z paliwem", "pt": "Loja de combustíveis", "sv": "Bränsleaffär" }, "searchTerms": { + "ca": [ + "gas", + "butà", + "butano", + "metà", + "propà", + "metano", + "propano", + "paella", + "tenda de combustibles", + "cepsa", + "repsol", + "cuina", + "gasòil", + "gasolina", + "diesel" + ], "de": [ "treibstoffverkaufsstelle" ], @@ -7769,6 +9019,12 @@ "butano", "propano" ], + "he": [ + "חומרי בערה", + "אנרגיה", + "דלק", + "גז" + ], "it": [ "benzina", "diesel", @@ -7801,6 +9057,7 @@ "kerosine" ], "pl": [ + "sklep z paliwem", "paliwo", "paliwa", "skład opału", @@ -7864,6 +9121,7 @@ "then": { "en": "Funeral Home", "ca": "Tanatori", + "cs": "Pohřební služba", "da": "Bedemandsforretning", "de": "Beerdigungsinstitut", "eo": "Tombistejo", @@ -7871,6 +9129,7 @@ "fi": "Hautaustoimisto", "fr": "Pompes funèbres", "gl": "Funeraria", + "he": "קברן", "hu": "Temetkezési iroda", "id": "Rumah Pemakaman", "it": "Casa funeraria", @@ -7885,7 +9144,19 @@ "searchTerms": { "en": [ "undertaker", - "memorial home" + "memorial home", + "mortuary" + ], + "ca": [ + "funerària", + "mortuori" + ], + "cs": [ + "pohřební služba", + "pohřebák", + "hřbitovní služby", + "hřbitovní služba", + "hrobař" ], "da": [ "bedemandsforretning", @@ -7929,6 +9200,9 @@ "velorio", "abellón" ], + "he": [ + "קברנית" + ], "hu": [ "temetkezési ügyintézés", "temetkezési intézet", @@ -7952,6 +9226,8 @@ "rouwcentrum" ], "pl": [ + "zakład pogrzebowy", + "dom pogrzebowy", "pochówek", "pogrzeb" ], @@ -7993,6 +9269,7 @@ "then": { "en": "Furniture Store", "ca": "Botiga de mobles", + "cs": "Nábytek", "da": "Møbelforhandler", "de": "Möbelhaus", "eo": "Mebla vendejo", @@ -8000,6 +9277,7 @@ "fi": "Huonekaluliike", "fr": "Magasin de meubles", "gl": "Moblaría", + "he": "חנות רהיטים", "hu": "Bútorbolt", "id": "Toko Furnitur", "it": "Negozio di mobili", @@ -8021,6 +9299,11 @@ "botiga de mobles", "moblista" ], + "cs": [ + "obchod s nábytkem", + "nábytek", + "domácnost" + ], "da": [ "møbelbutik", "møbelhandler", @@ -8050,9 +9333,17 @@ "muebles", "tienda de muebles" ], + "fi": [ + "huonekalumyymälä", + "huonekalukauppa", + "huonekaluliike" + ], "fr": [ "magasin de meubles" ], + "he": [ + "חנות ריהוט" + ], "hu": [ "bútor", "lakberendezés" @@ -8066,7 +9357,16 @@ ], "ja": [ "家具店", - "インテリア用品店" + "インテリア用品店", + "店舗", + "お店", + "机", + "テーブル", + "ラック", + "本棚", + "椅子", + "箪笥", + "タンス" ], "nl": [ "woonwarenhuis", @@ -8116,12 +9416,14 @@ "if": "shop=games", "then": { "en": "Tabletop Game Store", + "cs": "Deskové hry", "de": "Brettspielgeschäft", "eo": "Tabullud‑vendejo", "es": "Tienda de juegos de mesa", "fi": "Lautapeliliike", "fr": "Magasin de jeux de plateau", "gl": "Tenda de xogos de mesa", + "he": "חנות משחקי קופסה", "hu": "Társasjáték-bolt", "it": "Negozio di giochi da tavolo", "ja": "ボードゲーム販売店", @@ -8137,9 +9439,25 @@ "card game", "dice game", "game shop", + "hobby", + "larp", "live action role-playing game", - "miniatures wargame", - "strategy game" + "miniature wargame", + "role-playing", + "strategy game", + "wargame" + ], + "cs": [ + "desková hra", + "karetní hra", + "hra s kostkami", + "obchod s hrami", + "larp", + "živá akční hra na hrdiny", + "miniaturní válečná hra", + "hraní rolí", + "strategická hra", + "válečná hra" ], "de": [ "brettspielgeschäft" @@ -8182,6 +9500,21 @@ "cartes", "figurines" ], + "he": [ + "חנות גיקים", + "חנות פנזטיה", + "פנטזיה", + "הרפתקאות מבוכים ודרקונים", + "קלפים", + "קלפי משחק", + "משחקי תפקידים", + "משחקי אסטרטגיה", + "משחקי מלחמה", + "חנות משחקים" + ], + "hu": [ + "játék" + ], "it": [ "giochi da tavolo", "carte da gioco", @@ -8251,6 +9584,7 @@ "then": { "en": "Garden Center", "ca": "Centre de jardineria", + "cs": "Zahradnictví", "da": "Havecenter", "de": "Gartenzentrum", "eo": "Ĝarden-vendejo", @@ -8258,6 +9592,7 @@ "fi": "Puutarhamyymälä", "fr": "Jardinerie", "gl": "Centro de xardinaría", + "he": "חנות גננות", "hu": "Kertészet", "id": "Toko Tanaman", "it": "Vivaio", @@ -8273,9 +9608,18 @@ "en": [ "landscape", "mulch", + "nursery", + "plant nursery", + "retail plant nursery", "shrub", "tree" ], + "cs": [ + "zahradnictví", + "zahradní centrum", + "zahradnické středisko", + "zahradnické centrum" + ], "da": [ "havecenter", "plantecenter" @@ -8300,6 +9644,14 @@ "jardinerie", "magasin de jardinage" ], + "he": [ + "חנות ציוד לגן" + ], + "hu": [ + "táj", + "bokor", + "fa" + ], "id": [ "bunga", "tanaman hias", @@ -8375,6 +9727,8 @@ "if": "shop=gas", "then": { "en": "Bottled Gas Shop", + "ca": "Punt de venta de Gas embotellat", + "cs": "Obchod s lahvovým plynem", "da": "Gasflaskebutik", "de": "Gasflaschenverkauf", "eo": "Gasuja vendejo", @@ -8382,6 +9736,7 @@ "fi": "Kaasupulloliike", "fr": "Magasin de bouteilles de gaz", "gl": "Tenda de bombonas de gas", + "he": "חנות גז", "hu": "Palackozottgáz-bolt", "it": "Negozio di bombole", "ja": "ガスボンベ店", @@ -8401,6 +9756,32 @@ "refill", "tank" ], + "ca": [ + "gas", + "butà", + "butano", + "metà", + "propà", + "metano", + "propano", + "paella", + "repsol", + "cepsa", + "botella", + "punt de venta de gas", + "botiga de gas", + "tenda de gas" + ], + "cs": [ + "cng", + "lpg", + "svítiplyn", + "zemní plyn", + "propan", + "butan", + "doplnit", + "zásobník" + ], "da": [ "gasflaskebutik" ], @@ -8445,6 +9826,9 @@ "butane", "propane" ], + "he": [ + "חנות גז" + ], "hu": [ "gáztöltő", "pb gáz", @@ -8467,7 +9851,11 @@ "ricarica" ], "ja": [ - "ガスボンベ店" + "ガスボンベ店", + "店舗", + "お店", + "ガス", + "小売" ], "nl": [ "methaan", @@ -8480,6 +9868,7 @@ "lpg" ], "pl": [ + "sklep z butlami gazowymi", "butle gazowe", "gaz płynny", "propan", @@ -8526,12 +9915,14 @@ "then": { "en": "General Store", "ca": "Botiga generalista", + "cs": "Smíšené zboží", "de": "Gemischtwarenhandlung", "eo": "Ĝenerala vendejo", "es": "Tienda general", "fi": "Sekatavarakauppa", "fr": "Magasin général", "gl": "Tenda xeral", + "he": "חנות כללית", "hu": "Vegyesbolt", "id": "Warung", "it": "Emporio", @@ -8543,8 +9934,13 @@ }, "searchTerms": { "en": [ + "small-town store", "village shop" ], + "cs": [ + "maloměstský obchod", + "vesnický obchod" + ], "de": [ "gemischtwarenhandlung", "dorfladen", @@ -8570,6 +9966,12 @@ "magasin général", "magasin de village" ], + "he": [ + "כלבו", + "חנות קיבוצית", + "חנות יישובית", + "חנות אזורית" + ], "hu": [ "szatócs" ], @@ -8580,7 +9982,16 @@ "ja": [ "よろずや", "よろず屋", - "万屋" + "万屋", + "なんでも屋", + "雑貨店", + "食料品", + "日用品", + "日用雑貨", + "家庭用品", + "小売", + "店舗", + "お店" ], "nl": [ "winkeltje" @@ -8609,6 +10020,7 @@ "then": { "en": "Gift Shop", "ca": "Botiga de regals", + "cs": "Dárky, suvenýry", "da": "Gavebutik", "de": "Geschenkeladen", "eo": "Suvenira vendejo", @@ -8616,6 +10028,7 @@ "fi": "Lahjamyymälä", "fr": "Boutique de cadeaux", "gl": "Tenda de agasallos", + "he": "חנות מתנות", "hu": "Ajándékbolt", "id": "Toko Hadiah", "it": "Negozio souvenir", @@ -8629,11 +10042,16 @@ }, "searchTerms": { "en": [ - "souvenir" + "tourist trap" ], "ca": [ - "botiga de regals", - "botiga d'objectes de regal" + "botiga d'objectes de regal", + "tenda de regals", + "tenda d'objectes de regal" + ], + "cs": [ + "obchod s dárky", + "suvenýry" ], "da": [ "gavebutik", @@ -8666,6 +10084,9 @@ "fr": [ "boutique de souvenirs" ], + "he": [ + "חנות מתנות" + ], "hu": [ "meglepetés", "ajándéktárgy", @@ -8684,7 +10105,11 @@ "ギフト用品店", "土産店", "お土産", - "贈答品" + "贈答品", + "店舗", + "お店", + "ギフト", + "プレゼント" ], "nl": [ "cadeauzaak", @@ -8745,17 +10170,20 @@ "then": { "en": "Greengrocer", "ca": "Fruiteria", + "cs": "Ovoce a zelenina", "da": "Grønthandler", "de": "Obst- und Gemüseladen", "eo": "Legom-butiko", "es": "Verdulería / Frutería", + "eu": "Fruta eta barazki-saltzailea", "fi": "Kasviskauppa", "fr": "Marchand de fruits et légumes", "gl": "Froitaría", + "he": "ירקן", "hu": "Zöldséges", "id": "Toko Buah dan Sayuran", "it": "Fruttivendolo", - "ja": "八百屋・果物屋", + "ja": "青果店", "nl": "Groenteboer", "pl": "Warzywniak", "pt": "Loja de frutas e verduras", @@ -8769,6 +10197,14 @@ "produce", "vegetable" ], + "cs": [ + "zelinář", + "zelinářství", + "prodejna zeleniny", + "zelenina", + "ovoce", + "ovoce a zelenina" + ], "da": [ "grønthandler", "frugtbutik" @@ -8796,6 +10232,13 @@ "verdulero", "frutero" ], + "eu": [ + "frutadenda", + "barazkiak", + "frutak", + "fruituak", + "entsalada" + ], "fi": [ "vihanneskauppias", "vihannes", @@ -8836,6 +10279,9 @@ "verduleria", "verdularia" ], + "he": [ + "חנות ירקות" + ], "hu": [ "zöldség", "gyümölcs" @@ -8844,16 +10290,18 @@ "fruttivendolo" ], "ja": [ - "八百屋", "青果店", + "八百屋", + "果物屋", + "食料品", "食品", "食べ物", "野菜", - "フルーツ", + "ベジタブル", "果物", "くだもの", - "ベジタブル", - "食料品", + "フルーツ", + "小売", "店舗", "お店" ], @@ -8870,10 +10318,11 @@ "zieleniak", "sklep warzywny", "sklep z warzywami", + "sklep z owocami", "stoisko z warzywami", "stragan z warzywami", "owoce", - "owocami" + "warzywa" ], "pt": [ "greengrocer", @@ -8911,13 +10360,16 @@ "then": { "en": "Hairdresser", "ca": "Perruqueria", + "cs": "Kadeřnictví", "da": "Frisør", "de": "Friseur", "eo": "Frizejo", "es": "Peluquería", + "eu": "Ile-apaintzailea", "fi": "Parturi-kampaamo", "fr": "Salon de coiffure", "gl": "Perrucaría", + "he": "מעצב שיער", "hu": "Fodrász", "id": "Salon", "it": "Parrucchiere", @@ -8931,7 +10383,13 @@ }, "searchTerms": { "en": [ - "barber" + "beard" + ], + "cs": [ + "kadeřník", + "holič", + "vizážista", + "kadeřnictví" ], "da": [ "frisør", @@ -8976,10 +10434,15 @@ "parta" ], "fr": [ - "coiffeur" + "coiffeur", + "barbier" + ], + "he": [ + "מעצב שער" ], "hu": [ - "hajvágás" + "hajvágás", + "fodrász" ], "it": [ "parrucchiere", @@ -9004,7 +10467,8 @@ "fryzjer", "fryzjernia", "salon fryzjerski", - "zakład fryzjerski" + "zakład fryzjerski", + "barber" ], "pt": [ "hairdresser", @@ -9060,27 +10524,40 @@ "if": "shop=hairdresser_supply", "then": { "en": "Hairdresser Supply Store", + "cs": "Kadeřnické potřeby", "da": "Butik med udstyr til frisører", "de": "Friseurbedarf", "eo": "Frizist-ilara vendejo", "es": "Tienda de suministros para peluquería", + "eu": "Ile-apaindegiko hornidura-denda", "fi": "Hiustarvikemyymälä", "fr": "Magasin de matériel de coiffure", "gl": "Tenda de accesorios de salón de peiteado", + "he": "חנות ציוד לספרים", "hu": "Fodrászkellék-bolt", "it": "Negozio di prodotti per parrucchiere", "ja": "理容用品店", "nl": "Haarbenodigdhedenwinkel", "pl": "Sklep z artykułami fryzjerskimi", "pt": "Loja de acessórios de cabeleireiro", + "ru": "Парикмахерские принадлежности", "sv": "Affär för hårprodukter" }, "searchTerms": { "en": [ "barber", + "razor", "shampoo", + "shaver", "conditioner" ], + "cs": [ + "holič", + "holící strojek", + "šampon", + "holítko", + "kondicionér" + ], "de": [ "friseurbedarf", "frisörbedarf" @@ -9115,6 +10592,16 @@ "shampoings", "barbier" ], + "he": [ + "תספורת", + "שמפו", + "מרכך", + "עיצוב שיער", + "מספרה", + "ספר", + "סלון יופי", + "סלון טיפוח" + ], "hu": [ "fodrászcikk" ], @@ -9137,6 +10624,7 @@ "kapperswinkel" ], "pl": [ + "sklep z artykułami fryzjerskimi", "artykuły fryzjerskie", "szampony", "odżywki", @@ -9176,6 +10664,7 @@ "then": { "en": "Hardware Store", "ca": "Ferreteria", + "cs": "Železářství", "da": "Håndværkerbutik", "de": "Eisenwarenhandel", "eo": "Laborila vendejo", @@ -9183,6 +10672,7 @@ "fi": "Rautakauppa", "fr": "Quincaillerie", "gl": "Ferraxaría", + "he": "חנות אספקה טכנית", "hu": "Vas-műszaki bolt", "id": "Toko Perkakas", "it": "Ferramenta", @@ -9203,6 +10693,14 @@ "home improvement", "tools" ], + "cs": [ + "řemeslo", + "kutilství", + "udělej si sám", + "hardware", + "domácí kutily", + "nástroje" + ], "da": [ "værktøj", "håndværker", @@ -9230,9 +10728,15 @@ "herramientas", "herrajes" ], + "fi": [ + "rautakauppa" + ], "fr": [ "quincaillerie" ], + "he": [ + "חנות כלי חומרה" + ], "hu": [ "csavarbolt", "villanyszerelés", @@ -9244,13 +10748,15 @@ ], "ja": [ "金物屋", - "金物店" + "金物店", + "工具" ], "nl": [ "bouwcentrum", "bouwmaterialenspeciaalzaak" ], "pl": [ + "sklep z narzędziami", "sklep narzędziowy", "narzędzia", "elektronarzędzia", @@ -9320,40 +10826,60 @@ { "if": "shop=health_food", "then": { - "en": "Health Food Shop", + "en": "Health Food Store", + "cs": "Obchod zdravé výživy", + "da": "Helsekostbutik", "de": "Reformhaus", - "eo": "Sanig-manĝaĵa vendejo", - "es": "Tienda de comida saludable", - "fi": "Terveysravinnemyymälä", - "fr": "Magasin d'alimentation de santé", - "gl": "Tenda de produtos saudábeis", - "hu": "Egészséges élelmiszerek boltja", - "it": "Prodotti per il benessere", + "es": "Tienda de alimentos saludables", + "fr": "Magasin d'alimentation diététique/bio", + "he": "חנות מזון בריאות", + "hu": "Biobolt", + "it": "Negozio di cibi sani", "ja": "健康食品店", - "nl": "Gezondheidswinkel", + "nl": "Natuurvoedingswinkel", "pl": "Sklep ze zdrową żywnością", "pt": "Loja de comida saudável", - "ru": "Магазин здорового питания", "sv": "Hälsokostbutik" }, "searchTerms": { "en": [ - "wholefood", - "vitamins", + "groceries", + "nutritional", + "organic", + "raw food", + "unprocessed", "vegetarian", - "vegan" + "vegan", + "vitamins", + "wholefood" + ], + "cs": [ + "potraviny", + "výživové", + "bio", + "syrové potraviny", + "nezpracované", + "vegetariánské", + "veganské", + "vitamíny", + "celkové potraviny" + ], + "da": [ + "helsekostbutik", + "helsekostforretning", + "naturkostbutik", + "kosttilskud" ], "de": [ - "reformhaus" - ], - "eo": [ - "saniga manĝaĵo", - "sana manĝaĵo", - "ekologia manĝaĵo", - "vegetarisma manĝaĵo" + "reformhaus", + "gesundheit", + "naturkost" ], "es": [ + "tienda de alimentos saludables", + "alimentos saludables", "tienda de comida saludable", + "comida saludable", "alimentos integrales", "vitaminas", "vegetariano", @@ -9362,15 +10888,24 @@ "dietetica" ], "fr": [ - "magasin d'alimentation de santé", - "vitamines" + "magasin", + "alimentation", + "produits", + "aliments", + "bio", + "biologique", + "diététique", + "naturel", + "végétarien", + "végan" + ], + "he": [ + "מזון בריא", + "אוכל", + "אוכל בריא" ], "it": [ - "prodotti genuini", - "benessere", - "negozio di prodotti biologici", - "negozio di prodotti per la salute", - "prodotti per la salute" + "negozio di cibi salutari" ], "ja": [ "健康食品店", @@ -9381,17 +10916,33 @@ "ビタミン", "栄養剤", "店舗", - "お店" + "お店", + "健康食品" ], "nl": [ - "supervoedselwinkel", - "superfoodwinkel" + "biologisch", + "reformwinkel", + "gezondheid", + "vitamines", + "supplementen", + "vegetarisch", + "onbewerkt" ], "pl": [ + "sklep ze zdrową żywnością", + "sklep dietetyczny", + "sklep bezglutenowy", "zdrowa żywność", "żywność ekologiczna", "żywność regionalna", - "produkty regionalne" + "produkty regionalne", + "spożywcze", + "odżywcze", + "żywność surowa", + "żywność nieprzetworzona", + "wegetariańskie", + "wegańskie", + "witaminy" ], "pt": [ "alimentos naturais", @@ -9408,12 +10959,6 @@ "biológico", "vegano" ], - "ru": [ - "здоровая еда", - "здоровая пища", - "органические продукты", - "чистая продукция" - ], "sv": [ "hälsokostbutik", "hälsokost", @@ -9439,6 +10984,7 @@ "then": { "en": "Hearing Aids Store", "ca": "Centre d'audició", + "cs": "Obchod s naslouchátky", "da": "Høreapparatbutik", "de": "Hörgerätegeschäft", "eo": "Aŭd-helpila vendejo", @@ -9446,6 +10992,7 @@ "fi": "Kuuloapumyymälä", "fr": "Audioprothésiste", "gl": "Tenda de audífonos", + "he": "חנות מכשירי שמיעה", "hu": "Hallókészülékbolt", "id": "Toko Alat Bantu Dengar", "it": "Negozio di apparecchi acustici", @@ -9458,6 +11005,15 @@ "sv": "Hörapparater" }, "searchTerms": { + "cs": [ + "naslouchátko", + "naslouchátka", + "naslouchadlo", + "naslouchadla", + "neslyšící", + "nedoslýchavý", + "nedoslýchavost" + ], "da": [ "høreapparatbutik", "audiolog", @@ -9501,6 +11057,9 @@ "fr": [ "vente de prothèses auditives" ], + "he": [ + "חנות מכשירי שמיעה" + ], "hu": [ "hallókészülékek" ], @@ -9522,6 +11081,7 @@ "hoorhulp" ], "pl": [ + "sklep z aparatami słuchowymi", "aparaty słuchowe" ], "pt": [ @@ -9551,6 +11111,7 @@ "then": { "en": "Herbalist", "ca": "Herbolari", + "cs": "Bylinkářství", "da": "Helseforretning", "de": "Kräuterladen", "eo": "Herba vendejo", @@ -9558,6 +11119,7 @@ "fi": "Luontaistuotemyymälä", "fr": "Herboristerie", "gl": "Herboristaría", + "he": "חנות צמחי מרפא", "hu": "Gyógynövénybolt", "it": "Erboristeria", "ja": "薬草店", @@ -9569,6 +11131,31 @@ "sv": "Medicinalväxter" }, "searchTerms": { + "en": [ + "ayurveda", + "ayurvedic", + "medicinal plants", + "paraherbal", + "phytomedicine", + "plant medicine", + "traditional medicine" + ], + "cs": [ + "bylinkář", + "bylinkářka", + "bylinář", + "bylinářka", + "bylinkářství", + "bylinářství", + "kořenář", + "kořenářka", + "kořenářství", + "herbalista", + "bylinky", + "byliny", + "bylinka", + "bylina" + ], "da": [ "helseforretning" ], @@ -9601,6 +11188,9 @@ "fármaco", "parafarmacia" ], + "he": [ + "הרבליסט" + ], "hu": [ "gyógynövény", "tea", @@ -9658,6 +11248,7 @@ "then": { "en": "Hifi Store", "ca": "Botiga d'alta fidelitat", + "cs": "Hifi elektronika", "da": "Radioforhandler", "de": "HiFi-Laden", "eo": "Aldfidela-sona vendejo", @@ -9665,6 +11256,7 @@ "fi": "Hifimyymälä", "fr": "Magasin de matériel hi-fi", "gl": "Tenda de equipamento de son", + "he": "חנות הגברה", "hu": "HiFi-szaküzlet", "id": "Toko Hifi", "it": "Negozio Hifi", @@ -9684,6 +11276,12 @@ "stereo", "video" ], + "cs": [ + "obchod se zvukovými systémy", + "obchod s ozvučením", + "ozvučení", + "hifi" + ], "da": [ "radioforhandler", "hifi-butik" @@ -9710,6 +11308,9 @@ "fr": [ "magasin d'appareils audio-visuel" ], + "he": [ + "חנות ציוד הגברה" + ], "hu": [ "akusztika", "extreme audio", @@ -9737,6 +11338,7 @@ "stereoinstallatie" ], "pl": [ + "sklep ze sprzętem hi-fi", "hi-fi", "hifi", "audio", @@ -9784,107 +11386,65 @@ } }, { - "if": "shop=hobby", + "if": "shop=honey", "then": { - "en": "Hobby Shop", - "da": "Hobbybutik", - "de": "Bastelgeschäft", - "eo": "Hobia vendejo", - "es": "Tienda de pasatiempos", - "fi": "Harrastuskauppa", - "fr": "Magasin pour hobby (non spécifié)", - "gl": "Tenda de pasatempos", - "hu": "Hobbibolt", - "it": "Negozio di hobbystica", - "ja": "ホビーショップ", - "nl": "Hobbywinkel", - "pl": "Sklep hobbystyczny", - "pt": "Loja de modelismo", - "sv": "Hobbyaffär" + "en": "Honey Store", + "cs": "Obchod s medem", + "de": "Honiggeschäft", + "es": "Tienda de miel", + "fr": "Magasin de miel", + "he": "חנות דבש", + "ja": "蜂蜜販売店", + "nl": "Honingwinkel", + "pl": "Sklep z miodem", + "pt": "Loja de mel", + "sv": "Honungsaffär" }, "searchTerms": { - "en": [ - "manga", - "figurine", - "model" - ], "de": [ - "bastelgeschäft", - "hobbyshop" - ], - "eo": [ - "hobio", - "ŝatokupo", - "modelfarado", - "figuroj", - "animeo" + "honig", + "biene", + "wachs", + "propolis", + "mel" ], "es": [ - "manga", - "figuras", - "modelo" - ], - "fi": [ - "harrastus", - "harrastukset", - "harrastaa", - "kauppa", - "liike", - "myymälä", - "putiikki", - "puoti" + "tienda de miel", + "miel", + "apicultura" ], "fr": [ - "manga", - "figurine", - "modèle", - "modélisme" - ], - "it": [ - "manga", - "figurine", - "modellini", - "hobby" + "magasin de miel", + "miel", + "apiculture", + "apiculteur", + "apicultrice" ], "ja": [ - "ホビーショップ", - "ホビー店", - "プラモデル", - "フィギュア", - "マンガ", - "ミリタリー", - "模型" - ], - "nl": [ - "hobbywinkel" + "蜂蜜販売店", + "ハチミツ", + "はちみつ" ], "pl": [ - "sklep hobbystyczny" + "sklep z miodem", + "miód", + "miody" ], "pt": [ - "modelos", - "passatempo", - "hobby", - "aviões", - "carros", - "comboios", - "helicópteros" - ], - "ru": [ - "хобби" + "honey", + "mel", + "abelhas", + "apicultura" ], "sv": [ - "hobbyaffär", - "hobby", - "manga", - "model", - "modellbygge", - "modellflyg", - "modelljärnväg" + "honung", + "honing", + "honungsbutik", + "honungsaffär" ] }, "icon": { - "path": "./assets/layers/id_presets/fas-dragon.svg", + "path": "./assets/layers/id_presets/maki-shop.svg", "class": "medium" } }, @@ -9892,11 +11452,14 @@ "if": "shop=household_linen", "then": { "en": "Household Linen Shop", + "ca": "Botiga de roba per a la llar", + "cs": "Bytový textil", "de": "Haushaltswäschegeschäft", "eo": "Tuka vendejo", "es": "Tienda de ropa de hogar", "fr": "Magasin de linge de maison", "gl": "Tenda de roupa de fogar", + "he": "חנות מצעים", "hu": "Lakástextil-szaküzlet", "it": "Negozio di biancheria per la casa", "ja": "家庭用布製品店", @@ -9918,6 +11481,30 @@ "sheets", "towels" ], + "ca": [ + "tenda de roba per a la llar", + "llar", + "casa", + "hogar", + "llençols", + "llançols", + "pijama", + "coixins", + "torcamans" + ], + "cs": [ + "látky", + "prodejna látek", + "povlečení", + "záclony", + "závěsy", + "ručníky", + "prostěradla", + "hadry", + "textil", + "domácí", + "bytový" + ], "de": [ "leintücher", "bettwäsche", @@ -9976,6 +11563,19 @@ "torchon", "nappe" ], + "he": [ + "חנות מצעים", + "כלי מיטה", + "מיטה", + "מצעים", + "שמיכה", + "כרית", + "ציפית", + "ציפה", + "מפה", + "מפות", + "עיצוב" + ], "it": [ "lenzuola", "coperte", @@ -9996,7 +11596,9 @@ "ローブ", "パジャマ", "ショッピング", - "小売" + "小売", + "布", + "木綿" ], "nl": [ "lakens", @@ -10011,6 +11613,7 @@ ], "pl": [ "sklep z pościelą", + "sklep z ręcznikami", "pościel", "prześcieradła", "kołdry", @@ -10073,7 +11676,8 @@ "if": "shop=houseware", "then": { "en": "Houseware Store", - "ca": "Botiga de la llar", + "ca": "Botiga d'articles per a la llar", + "cs": "Domácí potřeby", "da": "Køkkenudstyr", "de": "Haushaltswarengeschäft", "eo": "Mastrum-aparata vendejo", @@ -10081,6 +11685,7 @@ "fi": "Kotitarvikekauppa", "fr": "Magasin d’articles ménagers", "gl": "Tenda de artigos do fogar", + "he": "חנות כלי בית", "hu": "Háztartási bolt", "it": "Casalinghi", "ja": "家庭用品店", @@ -10093,9 +11698,21 @@ "searchTerms": { "en": [ "home", - "household", "kitchenware" ], + "ca": [ + "tenda d'articles per a la llar", + "hogar", + "llar", + "casa", + "cuina" + ], + "cs": [ + "domácí potřeby", + "kuchyňské potřeby", + "potřeby pro domácnost", + "nádobí" + ], "da": [ "køkkenudstyr" ], @@ -10120,6 +11737,9 @@ "fr": [ "vente d'articles de cuisine" ], + "he": [ + "חנות כלי בית" + ], "hu": [ "edények", "evőeszközök", @@ -10150,7 +11770,8 @@ "包丁", "ナイフ", "フォーク", - "箸" + "箸", + "雑貨" ], "nl": [ "huiswaar", @@ -10161,6 +11782,7 @@ "gebruiksvoorwerpen" ], "pl": [ + "sklep z małymi artykułami gospodarstwa domowego", "małe agd", "artykuły kuchenne", "przybory kuchenne", @@ -10206,6 +11828,7 @@ "then": { "en": "Hunting Shop", "ca": "Botiga de caça", + "cs": "Lovecké potřeby", "da": "Jagtbutik", "de": "Jagdgeschäft", "eo": "Ĉasil-vendejo", @@ -10213,6 +11836,7 @@ "fi": "Metsästyskauppa", "fr": "Magasin de chasse", "gl": "Tenda de caza", + "he": "חנות ציד", "hu": "Vadászati bolt", "it": "Negozio di caccia", "ja": "狩猟用品店", @@ -10228,9 +11852,31 @@ "bows", "bullets", "crossbows", + "hobby", "rifles", "traps" ], + "ca": [ + "tenda de caça", + "fletexes", + "arcs", + "bales", + "ballestes", + "rifles", + "escopetes", + "trampres", + "porcsenglars", + "jabalins", + "vedat" + ], + "cs": [ + "šípy", + "luky", + "kulky", + "kuše", + "pušky", + "pasti" + ], "de": [ "geschäft für jagdausrüstung", "jagdgeschäft" @@ -10250,6 +11896,14 @@ "fr": [ "chasse" ], + "he": [ + "חצים", + "קשתות", + "כדורים", + "חץ וקשת", + "אקדחים", + "מלכודות" + ], "it": [ "caccia", "frecce", @@ -10290,6 +11944,7 @@ "vallen" ], "pl": [ + "sklep myśliwski", "myśliwy", "polowanie", "strzały", @@ -10334,7 +11989,8 @@ "if": "shop=interior_decoration", "then": { "en": "Interior Decoration Store", - "ca": "Botiga d'Interiorisme", + "ca": "Botiga de decoració d'interior", + "cs": "Obchod s bytovými doplňky", "da": "Brugskunstbutik", "de": "Innenausstattungsgeschäft", "eo": "Ensembla (meblara) vendejo", @@ -10342,6 +11998,7 @@ "fi": "Sisustusmyymälä", "fr": "Magasin de décoration d'intérieur", "gl": "Tenda de decoración de interiores", + "he": "חנות עיצוב פנים", "hu": "Lakberendezési bolt", "id": "Toko Dekorasi Interior", "it": "Negozio di decorazioni per interni", @@ -10353,6 +12010,21 @@ "sv": "Inredningsaffär" }, "searchTerms": { + "ca": [ + "decoració", + "adornaments", + "interiorisme" + ], + "cs": [ + "bytový doplněk", + "bytové doplňky", + "bytové dekorace", + "bytová dekorace", + "dekorace", + "dekorativní doplněk", + "doplněk do bytu", + "dekorace do bytu" + ], "da": [ "indendørsudsmykningsbutik", "indendørsudsmykning", @@ -10399,6 +12071,9 @@ "fr": [ "magasin de décoration d'intérieur" ], + "he": [ + "חנות עיצוב פנים" + ], "hu": [ "lakástextil", "díszek", @@ -10421,7 +12096,9 @@ "インテリア店", "住宅", "インテリア", - "内装" + "内装", + "お店", + "店舗" ], "nl": [ "versiering", @@ -10431,6 +12108,7 @@ "stijl" ], "pl": [ + "sklep z dekoracją wnętrz", "wyposażenie wnętrz", "dekoracja wnętrz", "dekoracje wnętrz", @@ -10460,6 +12138,7 @@ "then": { "en": "Jewelry Store", "ca": "Joieria", + "cs": "Klenotnictví", "da": "Guldsmed", "de": "Juwelier", "eo": "Juvelista vendejo", @@ -10467,6 +12146,7 @@ "fi": "Jalokiviliike", "fr": "Bijouterie", "gl": "Xoiaría", + "he": "חנות תכשיטים", "hu": "Ékszerüzlet", "id": "Toko Perhiasan", "it": "Gioielleria", @@ -10495,6 +12175,20 @@ "ca": [ "joier" ], + "cs": [ + "náramek", + "diamant", + "náušnice", + "drahokam", + "zlato", + "klenotník", + "šperky", + "klenotnice", + "náhrdelník", + "špendlíky", + "prsten", + "stříbro" + ], "da": [ "smykke", "ædelsten", @@ -10566,6 +12260,33 @@ "aceiro", "ferro" ], + "he": [ + "צורף", + "תכשיט", + "יהלום", + "פנינה", + "טבעת", + "צמיד", + "זהב", + "אבן", + "שרשרת", + "כסף", + "צורפת", + "יהלומן", + "יהלומנית", + "רובי", + "אודם", + "סברובסקי" + ], + "hu": [ + "karkötő", + "gyémánt", + "fülbevaló", + "drágakő", + "arany", + "ékszerész", + "ékszer" + ], "it": [ "gioielli", "braccialetti", @@ -10594,6 +12315,7 @@ "sierraden" ], "pl": [ + "sklep jubilerski", "jubiler", "złotnik", "złoto", @@ -10645,6 +12367,7 @@ "then": { "en": "Kiosk", "ca": "Quiosc", + "cs": "Kiosek", "da": "Kiosk", "de": "Kiosk", "eo": "Gazetbudo", @@ -10652,6 +12375,7 @@ "fi": "Kioski", "fr": "Kiosque", "gl": "Quiosco", + "he": "קיוסק", "hu": "Trafik (önálló épület)", "id": "Warung", "it": "Chiosco", @@ -10664,6 +12388,26 @@ "sv": "Kiosk" }, "searchTerms": { + "en": [ + "beverages", + "cigarettes", + "mall kiosk", + "newsagent", + "newspaper", + "newsstand", + "snacks", + "sweets" + ], + "cs": [ + "nápoje", + "cigarety", + "kiosek v obchodním centru", + "trafika", + "noviny", + "novinový stánek", + "občerstvení", + "sladkosti" + ], "de": [ "kiosk", "zeitungsstand", @@ -10678,7 +12422,9 @@ "es": [ "kiosko", "kiosco", + "kiosquero", "puesto", + "caseta", "negocio", "periódico", "revista", @@ -10689,11 +12435,19 @@ "golosinas", "refrescos", "jugos", - "flores" + "flores", + "glorieta" + ], + "fi": [ + "kioski", + "koju" ], "fr": [ "kiosque" ], + "he": [ + "פיצוציה" + ], "hu": [ "újságos" ], @@ -10766,6 +12520,7 @@ "then": { "en": "Kitchen Design Store", "ca": "Botiga de disseny de cuines", + "cs": "Kuchyňské studio", "da": "Køkkenforhandler", "de": "Küchenfachmarkt", "eo": "Kuirej-mebla vendejo", @@ -10773,6 +12528,7 @@ "fi": "Keittiöliike", "fr": "Cuisiniste", "gl": "Tenda de deseño de cociñas", + "he": "חנות עיצוב המטבח", "hu": "Konyhabútorbolt", "id": "Toko Desain Interior Dapur", "it": "Negozio di cucine", @@ -10789,6 +12545,12 @@ "countertops", "sinks" ], + "cs": [ + "kuchyně", + "kuchyňský", + "kuchyňské linky", + "kuchyně na míru" + ], "da": [ "køkkenbutik" ], @@ -10808,6 +12570,9 @@ "fr": [ "vente de mobilier et accessoires de cuisine" ], + "he": [ + "חנות עיצוב מטבח" + ], "hu": [ "konyhabútor", "konyhatervezés", @@ -10833,6 +12598,7 @@ "keukenzaak" ], "pl": [ + "sklep z wyposażeniem i meblami kuchennymi", "wyposażenie kuchni", "kuchnie", "meble kuchenne" @@ -10869,6 +12635,7 @@ "then": { "en": "Laundry", "ca": "Bugaderia", + "cs": "Prádelna", "da": "Vaskeri", "de": "Wäscherei", "eo": "Vest-lavejo (akvo)", @@ -10876,6 +12643,7 @@ "fi": "Pesula", "fr": "Laverie", "gl": "Lavandaría", + "he": "כביסה", "hu": "Mosoda", "id": "Penatu", "it": "Lavanderia", @@ -10888,6 +12656,11 @@ "sv": "Tvättinrättning" }, "searchTerms": { + "cs": [ + "prádelna", + "čistírna", + "prádlo" + ], "da": [ "vaskeri", "møntvaskeri" @@ -10914,6 +12687,9 @@ "fr": [ "laverie" ], + "he": [ + "כביסה" + ], "hu": [ "ruhatisztító", "vegytisztító", @@ -10974,6 +12750,7 @@ "then": { "en": "Leather Store", "ca": "Botiga de cuirs", + "cs": "Kožené zboží", "da": "Læderbutik", "de": "Lederwarengeschäft", "eo": "Ledaĵa vendejo", @@ -10981,6 +12758,7 @@ "fi": "Nahkaliike", "fr": "Maroquinier", "gl": "Tenda de peles", + "he": "חנות עור", "hu": "Bőrdíszműbolt", "id": "Toko Kulit", "it": "Pelletteria", @@ -10993,6 +12771,23 @@ "sv": "Läderaffär" }, "searchTerms": { + "ca": [ + "tenda de cuirs", + "cuir", + "cuero", + "pell", + "pelleteria" + ], + "cs": [ + "kožený", + "kožená", + "kožené", + "kůže", + "useň", + "usňový", + "usňová", + "usňové" + ], "da": [ "læderbutik", "skinbutik", @@ -11020,6 +12815,9 @@ "fr": [ "boutique de vêtements en cuir" ], + "he": [ + "חנות עור" + ], "hu": [ "bőrdíszműves", "bőrös", @@ -11034,7 +12832,8 @@ "皮革洋品店", "レザーショップ", "皮革", - "レザー" + "レザー", + "革製品店" ], "nl": [ "handtassen", @@ -11077,12 +12876,15 @@ "if": "shop=lighting", "then": { "en": "Lighting Store", + "cs": "Prodejna osvětlení", + "da": "Lampebutik", "de": "Leuchten- und Lampengeschäft", "eo": "Prilumigad‑aparata vendejo", "es": "Tienda de iluminación", "fi": "Valaisinkauppa", "fr": "Magasin de lampes", "gl": "Tenda de iluminación", + "he": "חנות תאורה", "hu": "Világítástechnikai szaküzlet", "it": "Negozio di illuminazione", "ja": "照明器具店", @@ -11100,6 +12902,17 @@ "light fixtures", "lightbulbs" ], + "cs": [ + "zářivkové osvětlení", + "lampy", + "led diody", + "svítidla", + "žárovky" + ], + "da": [ + "lampeforretning", + "lysbutik" + ], "de": [ "leuchten", "lampen", @@ -11136,6 +12949,18 @@ "leds", "luminarias" ], + "he": [ + "מחסני תאורה", + "חנות מנורות", + "תאורה", + "אור", + "מנורות", + "נורות", + "נורה", + "לד", + "ליבון", + "פלורוסנט" + ], "hu": [ "lámpa" ], @@ -11164,6 +12989,7 @@ "lampen" ], "pl": [ + "sklep z oświetleniem", "oświetlenie", "lampy", "lampki", @@ -11206,13 +13032,16 @@ "then": { "en": "Locksmith", "ca": "Copisteria de claus", + "cs": "Zámečník", "da": "Låsesmed", "de": "Schlüsseldienst", "eo": "Laborejo de seruristo", "es": "Cerrajería", + "eu": "Sarrailagilea", "fi": "Lukkoliike", "fr": "Serrurier", "gl": "Cerralleiro", + "he": "מנעולן", "hu": "Lakatos", "id": "Ahli Kunci", "it": "Fabbro", @@ -11229,12 +13058,20 @@ "key", "lockpick" ], + "cs": [ + "zámečnictví", + "zámečník", + "klíč", + "zámek" + ], "da": [ - "låsesmed" + "låsesmed", + "hælebar" ], "de": [ "schlosser", - "schlüsseldienst" + "schlüsseldienst", + "schlüsselmacher" ], "eo": [ "seruristo", @@ -11246,6 +13083,10 @@ "cerradura", "cerrajería" ], + "eu": [ + "sarrailagilea", + "sarrailak" + ], "fi": [ "lukkoseppä", "lukko", @@ -11272,6 +13113,9 @@ "cerralleria", "cerrajeria" ], + "he": [ + "מנעולנית" + ], "hu": [ "kulcsmásoló", "záras", @@ -11341,6 +13185,7 @@ "then": { "en": "Lottery Shop", "ca": "Administració de loteria", + "cs": "Prodejna losů", "da": "Lotteributik", "de": "Lottoannahmestelle", "eo": "Loterbileta vendejo", @@ -11348,6 +13193,7 @@ "fi": "Veikkauspiste", "fr": "Loterie", "gl": "Tenda de lotaría", + "he": "חנות לוטו", "hu": "Lottózó", "id": "Toko Lotre", "it": "Ricevitoria", @@ -11366,6 +13212,14 @@ "gambling", "scratch-offs" ], + "cs": [ + "los", + "losy", + "loterie", + "sázky", + "sázení", + "sportka" + ], "da": [ "lotteributik", "lotteriforretning" @@ -11392,6 +13246,9 @@ "fr": [ "vente de billets de loterie" ], + "he": [ + "עמדת לוטו" + ], "hu": [ "szerencsejáték", "fogadóiroda", @@ -11459,6 +13316,7 @@ "then": { "en": "Mall", "ca": "Centre comercial", + "cs": "Obchodní centrum", "da": "Indkøbscenter", "de": "Einkaufszentrum", "eo": "Vendejaro", @@ -11466,6 +13324,7 @@ "fi": "Kauppakeskus", "fr": "Centre commercial", "gl": "Centro comercial", + "he": "קניון", "hu": "Bevásárlóközpont", "id": "Mal", "it": "Centro commerciale", @@ -11481,6 +13340,12 @@ "en": [ "shopping" ], + "cs": [ + "nákupní středisko", + "obchodní středisko", + "obchody", + "nákupní centrum" + ], "da": [ "indkøbscenter" ], @@ -11509,6 +13374,9 @@ "galerie marchande", "centre d'achat" ], + "he": [ + "קניון" + ], "hu": [ "pláza" ], @@ -11531,6 +13399,7 @@ "centrum handlowe", "galeria handlowa", "pasaż handlowy", + "mall", "zakupy" ], "pt": [ @@ -11568,6 +13437,7 @@ "then": { "en": "Massage Shop", "ca": "Centre de massatges", + "cs": "Masáže", "da": "Massagebutik", "de": "Massagesalon", "eo": "Salono de masaĝo", @@ -11575,6 +13445,7 @@ "fi": "Hierontayritys", "fr": "Salon de massage", "gl": "Tenda de masaxes", + "he": "מכון עיסוי", "hu": "Masszázsszalon", "id": "Panti Pijat", "it": "Centro massaggi", @@ -11586,6 +13457,15 @@ "sv": "Massage" }, "searchTerms": { + "cs": [ + "masáž", + "masáže", + "masér", + "masérka", + "masírování", + "masírovat", + "massage" + ], "da": [ "massagebutik" ], @@ -11610,6 +13490,9 @@ "fr": [ "salon de massage" ], + "he": [ + "מכון מסאז׳" + ], "hu": [ "masszőr", "masszázs", @@ -11627,8 +13510,23 @@ "マッサージ店", "マッサージ", "あんま", + "あん摩", + "按摩", "指圧", - "健康" + "整骨院", + "健康", + "接骨院", + "鍼灸", + "肩こり", + "カイロプラクティック", + "カイロ", + "サービス", + "鍼灸院", + "ほねつぎ", + "施術所", + "治療院", + "治療所", + "整体院" ], "nl": [ "olie" @@ -11663,14 +13561,17 @@ "if": "shop=medical_supply", "then": { "en": "Medical Supply Store", - "ca": "Farmàcia", + "ca": "Botiga d'equipament mèdic", + "cs": "Zdravotnické potřeby", "da": "Håndkøbsmedicinforhandler", "de": "Sanitätshaus", "eo": "Medicin-aparata vendejo", "es": "Tienda de aparatos ortopédicos", + "eu": "Ortopedia eta medikuntzako-hornidura denda", "fi": "Lääketarvikemyymälä", "fr": "Magasin de matériel médical", "gl": "Tenda de subministracións médicas", + "he": "חנות ציוד רפואי", "hu": "Gyógyászati segédeszközök boltja", "id": "Toko Peralatan Medis", "it": "Negozio di forniture mediche", @@ -11683,6 +13584,11 @@ "sv": "Medicinsk utrustning" }, "searchTerms": { + "cs": [ + "zdravotnické potřeby", + "zdravotní potřeby", + "ortopedické pomůcky" + ], "da": [ "håndkøbsmedicinforhandler" ], @@ -11709,6 +13615,9 @@ "fr": [ "magasin de matériel médical" ], + "he": [ + "חנות ציוד רפואי" + ], "hu": [ "gyógybolt", "egészségbolt", @@ -11785,12 +13694,14 @@ "then": { "en": "Military Surplus Store", "ca": "Botiga d'excedents militars", + "cs": "Armádní výprodej", "de": "Militärkleidungsabverkauf", "eo": "Ne-plu-necesa-armea-ekipaĵo vendejo", "es": "Tienda de excedentes militares", "fi": "Armeijan ylijäämämyymälä", "fr": "Surplus militaire", "gl": "Tenda de accesorios militares", + "he": "חנות עודפי צבא", "hu": "Használt katonai felszerelések boltja", "it": "Negozio di eccedenze militari", "ja": "軍払い下げ品店", @@ -11810,6 +13721,15 @@ "war surplus shop", "weapons" ], + "cs": [ + "brnění", + "obchod pro armádu a námořnictvo", + "přebytky armády", + "přebytky v námořnictvu", + "taktické vybavení", + "obchod s válečnými přebytky", + "zbraně" + ], "de": [ "waffen", "armee", @@ -11841,9 +13761,27 @@ "guerre", "équipement de guerre" ], + "he": [ + "ריקושט", + "חנות עודפים צבאיים", + "חנות צבא", + "ציוד צבאי", + "צבא", + "כלי נשק", + "נשקים" + ], "hu": [ "military" ], + "it": [ + "armature", + "negozio dell'esercito-marina", + "eccedenza dell'esercito", + "eccedenza della marina", + "equipaggiamento tattico", + "negozio dell'eccedenza di guerra", + "armi" + ], "ja": [ "軍払い下げ品店", "軍払下げ品店", @@ -11872,6 +13810,7 @@ "sklep z militariami", "militaria", "sprzęt wojskowy", + "demobil", "broń", "zbroje", "hełmy", @@ -11908,6 +13847,7 @@ "then": { "en": "Mobile Phone Store", "ca": "Botiga de telefonia mòbil", + "cs": "Obchod s mobily", "da": "Mobiltelefonforhandler", "de": "Mobiltelefonladen", "eo": "Poŝtelefona vendejo", @@ -11915,6 +13855,7 @@ "fi": "Matkapuhelinmyymälä", "fr": "Magasin de téléphonie mobile", "gl": "Tenda de telefonía móbil", + "he": "חנות טלפונים ניידים", "hu": "Mobiltelefon-szaküzlet", "id": "Toko Handphone", "it": "Negozio di telefonia mobile", @@ -11927,6 +13868,12 @@ "sv": "Mobiltelefoner" }, "searchTerms": { + "cs": [ + "obchod s mobilními telefony", + "přenosné telefony", + "mobil", + "telefon" + ], "da": [ "mobiltelefonforhandler" ], @@ -11958,6 +13905,9 @@ "magasin de téléphones portables", "cellulaires" ], + "he": [ + "חנות טלפונים ניידים" + ], "hu": [ "android", "iphone", @@ -11974,7 +13924,10 @@ ], "ja": [ "携帯電話店", - "ケータイショップ" + "ケータイショップ", + "携帯ショップ", + "携帯", + "電話" ], "nl": [ "gsm-winkel", @@ -11985,6 +13938,8 @@ "mobieltjeszaak" ], "pl": [ + "sklep z telefonami komórkowymi", + "salon telefonii komórkowej", "telefony", "telefony komórkowe", "komórki", @@ -12018,11 +13973,14 @@ "if": "shop=model", "then": { "en": "Model Shop", + "cs": "Modelářský obchod", "de": "Modellbaugeschäft", "eo": "Vendejo de modelfarado", "es": "Tienda de modelismo", + "fi": "Pienoismallikauppa", "fr": "Magasin de modélisme", "gl": "Tenda de modelismo", + "he": "חנות דגמים", "hu": "Modellező bolt", "it": "Negozio di modellistica", "ja": "模型店", @@ -12038,9 +13996,28 @@ "model building", "model figures", "model kits", + "model railroading", "model store", + "rail transport modelling", "scale models" ], + "cs": [ + "modelářství", + "modelářský obchod", + "modelářské potřeby", + "modely", + "stavebnice", + "modely v měřítku", + "miniatury", + "modely letadel", + "modely aut", + "koníček", + "hobby", + "modely budov", + "stavebnice modelů", + "modelová železnice", + "mašinky" + ], "de": [ "spielzeug", "spiele", @@ -12069,6 +14046,13 @@ "maquettes", "modèles réduits" ], + "he": [ + "פנאי", + "בובות", + "דגמים", + "דגמים מוקטנים", + "גיבורי פעולה" + ], "hu": [ "makett" ], @@ -12132,6 +14116,7 @@ "then": { "en": "Money Lender", "ca": "Prestamista", + "cs": "Nebankovní půjčky", "da": "Pengeudlåner", "de": "Geldverleih", "eo": "Mon-pruntejo", @@ -12139,6 +14124,7 @@ "fi": "Rahanlainausliike", "fr": "Prêteur", "gl": "Prestamista de cartos", + "he": "מלווה בריבית", "hu": "Pénzkölcsönző", "id": "Peminjaman Uang", "it": "Agenzia di prestiti", @@ -12151,8 +14137,24 @@ "sv": "Långivare" }, "searchTerms": { + "en": [ + "payday loan" + ], + "cs": [ + "lichvář", + "lichvářství", + "lichva", + "úžera", + "půjčka", + "půjčky", + "úvěr", + "úvěry" + ], "da": [ - "pengeudlåner" + "pengeudlåner", + "långiver", + "kreditor", + "panthaver" ], "de": [ "geldleiher" @@ -12180,6 +14182,9 @@ "cartos", "diñeiro" ], + "he": [ + "מלווה בריבית" + ], "hu": [ "gyorskölcsön pénzkölcsönző", "hitel centrum", @@ -12200,7 +14205,8 @@ "貸金", "お金", "金融", - "借金" + "借金", + "サラリーマン金融" ], "nl": [ "pandhuis", @@ -12212,8 +14218,10 @@ "bank van lening" ], "pl": [ + "firma pożyczkowa", "pożyczki", - "kredyty" + "kredyty", + "lichwiarstwo" ], "pt": [ "money lender", @@ -12246,6 +14254,7 @@ "then": { "en": "Motorcycle Dealership", "ca": "Botiga de motocicletes", + "cs": "Obchod s motocykly", "da": "Motorcykelforhandler", "de": "Motorradhändler", "eo": "Motorcikla vendejo", @@ -12253,6 +14262,7 @@ "fi": "Moottoripyöräliike", "fr": "Vendeur de motos", "gl": "Concesionario de motocicletas", + "he": "חנות אופנועים", "hu": "Motorkerékpár-kereskedés", "id": "Dealer Motor", "it": "Concessionario di motociclette", @@ -12268,6 +14278,12 @@ "en": [ "bike" ], + "cs": [ + "prodejna motocyklů", + "prodejna motorek", + "motocykly", + "motorky" + ], "da": [ "motorcykelforhandler", "mc", @@ -12291,6 +14307,9 @@ "fr": [ "vendeur de motocyclettes" ], + "he": [ + "חנות אופנועים" + ], "hu": [ "motorbicikli", "robogó", @@ -12358,6 +14377,7 @@ "then": { "en": "Motorcycle Repair Shop", "ca": "Taller de reparació de motos", + "cs": "Opravna motocyklů", "da": "Motorcykelværksted", "de": "Motorradwerkstatt", "eo": "Motorcikl-riparejo", @@ -12365,6 +14385,7 @@ "fi": "Moottoripyöräkorjaamo", "fr": "Réparateur de motos", "gl": "Taller de arranxo de motocicletas", + "he": "מוסך אופנועים", "hu": "Motorkerékpáralkatrész-bolt", "it": "Officina riparazione motocicli", "ja": "バイク修理店", @@ -12383,6 +14404,18 @@ "repair", "service" ], + "cs": [ + "opravna motorek", + "motorky", + "motocykl", + "opravna motocyklů", + "servis", + "bike", + "garáž", + "motorkářský", + "motorkářská", + "servis motorek" + ], "da": [ "mekaniker", "mc", @@ -12410,6 +14443,9 @@ "fr": [ "réparateur de motos" ], + "he": [ + "מוסך אופנועים" + ], "hu": [ "motorbicikli", "robogó", @@ -12433,7 +14469,9 @@ "バイク修理店", "オートバイ修理", "バイク", - "オートバイ" + "オートバイ", + "修理", + "サービス" ], "nl": [ "motorfietsreparatie" @@ -12496,6 +14534,7 @@ "then": { "en": "Music Store", "ca": "Botiga de música", + "cs": "Obchod s hudbou", "da": "Musikbutik", "de": "Musikgeschäft", "eo": "Muzika vendejo", @@ -12503,6 +14542,7 @@ "fi": "Musiikkiliike", "fr": "Magasin de musique", "gl": "Tenda de música", + "he": "חנות מוזיקה", "hu": "Hanglemezbolt", "id": "Toko Musik", "it": "Negozio di musica", @@ -12519,11 +14559,18 @@ "tape cassettes", "cds", "compact discs", + "hobby", "vinyl records", "cd store", "casette", "casette store" ], + "cs": [ + "hudební obchod", + "obchod s hudbou", + "cd", + "lp" + ], "da": [ "musikbutik", "musikforretning" @@ -12554,6 +14601,9 @@ "fr": [ "magasin de musique" ], + "he": [ + "חנות מוזיקה" + ], "hu": [ "zenebolt", "cd és dvd bolt", @@ -12634,6 +14684,7 @@ "then": { "en": "Musical Instrument Store", "ca": "Botiga d'instruments musicals", + "cs": "Obchod s hudebními nástroji", "da": "Musikinstrumentbutik", "de": "Musikinstrumentegeschäft", "eo": "Muzikinstrumenta vendejo", @@ -12641,6 +14692,7 @@ "fi": "Instrumenttimyymälä", "fr": "Magasin d'instruments de musique", "gl": "Tenda de instrumentos musicais", + "he": "חנות כלי נגינה", "hu": "Hangszerbolt", "id": "Toko Alat Musik", "it": "Negozio di strumenti musicali", @@ -12654,7 +14706,29 @@ }, "searchTerms": { "en": [ - "guitar" + "accordion", + "brass instruments", + "cello", + "clarinet", + "drum", + "flute", + "guitar", + "hobby", + "keyboard", + "piano", + "saxophone", + "trumpet", + "violin" + ], + "cs": [ + "hudba", + "hudební nástroj", + "hudební nástroje", + "hudebnina", + "hudebniny", + "muzika", + "hudebník", + "muzikant" ], "da": [ "musikinstrumentbutik", @@ -12692,6 +14766,9 @@ "fr": [ "magasin d'instruments de musique" ], + "he": [ + "חנות כלי נגינה" + ], "hu": [ "hangszer", "kotta", @@ -12714,6 +14791,7 @@ "pianokruk" ], "pl": [ + "sklep z instrumentami muzycznymi", "instrumenty muzyczne", "sklep muzyczny" ], @@ -12749,29 +14827,36 @@ { "if": "shop=newsagent", "then": { - "en": "Newspaper/Magazine Shop", - "ca": "Botiga de diaris i revistes", - "da": "Avis/Bladforhandler", + "en": "Newsstand", + "ca": "Quiosc de premsa", + "cs": "Novinový stánek", + "da": "Aviskiosk", "de": "Zeitschriftenhandel", - "eo": "Gazeta vendejo", - "es": "Puesto de periódicos / revistas", - "fi": "Lehtikoju", - "fr": "Magasin de journaux", - "gl": "Tenda de xornais/revistas", - "hu": "Újságárus", - "id": "Toko Majalah/Koran", + "es": "Puesto de periódicos y revistas", + "fi": "Lehtikioski", + "fr": "Kiosque à journaux", + "he": "דוכן עתונים", + "hu": "Újságos", + "id": "Kios Koran", "it": "Edicola", - "ja": "新聞・雑誌店", - "nl": "Kranten-/Tijdschriftwinkel", - "pl": "Sklep z prasą", + "ja": "新聞スタンド", + "nl": "Krantenkiosk", + "pl": "Salonik prasowy", "pt": "Loja de jornais / revistas", - "ru": "Газеты/пресса/журналы", - "sl": "Trgovina s časopisi/revijami", + "ru": "Газетный киоск", "sv": "Tidningsaffär" }, "searchTerms": { - "da": [ - "avis/bladforhandler" + "ca": [ + "quiosc", + "diari", + "periòdic", + "premsa" + ], + "cs": [ + "trafika", + "noviny", + "tabák" ], "de": [ "zeitschiftenhandel", @@ -12783,74 +14868,46 @@ "zeitschriftengeschäft", "magazine" ], - "eo": [ - "gazetvendejo", - "gazetejo", - "magazinoj" - ], "es": [ - "periódico", - "diario", - "semanario", - "revista", - "puesto de diarios", + "quiosco de períodicos", + "kiosco de periódicos", "puesto de periódicos", - "vendedor de diarios", - "vendedor de periódicos", - "tienda", - "negocio" + "periódicos", + "diarios", + "revistas" ], "fr": [ - "vente de journaux", - "de magazines", - "maison de la presse" - ], - "hu": [ - "újságos", - "hírlapárus", - "trafik" + "kiosque", + "magasin", + "échoppe", + "journaux", + "magazines", + "presse" ], "it": [ - "edicola" + "edicola", + "giornalaio", + "quotidiano" ], "ja": [ + "新聞スタンド", "新聞", "雑誌", - "マガジン", - "ニュース", - "スタンド" - ], - "nl": [ - "nieuws", - "kranten", - "tijdschriften", - "magazines" + "新聞販売" ], "pl": [ "salonik prasowy", - "kiosk", "prasa", "gazety", "czasopisma", - "lotto", - "kolporter", - "inmedio", - "ruch" + "lotto" ], "pt": [ "newspaper", "magazine", "jornal", - "revista" - ], - "ru": [ - "газеты", - "журналы", - "пресса", - "сопутствующие товары", - "киоск", - "лоток", - "стенд" + "revista", + "newsagent" ], "sv": [ "tidningsaffär", @@ -12874,13 +14931,15 @@ "then": { "en": "Nutrition Supplements Store", "ca": "Botiga de suplements nutricionals", - "da": "Helsekostbutik", + "cs": "Obchod s potravními doplňky", + "da": "Kosttilskudsbutik", "de": "Nahrungsergänzungsmittelgeschäft", "eo": "Diet-suplementa vendejo", "es": "Tienda de suplementos nutricionales", "fi": "Lisäravinnemyymälä", "fr": "Boutique de compléments alimentaires", "gl": "Tenda de suplementos nutricionais", + "he": "חנות ויטמינים", "hu": "Étrendkiegészítő-bolt", "it": "Negozio di integratori alimentari", "ja": "栄養サプリ販売店", @@ -12894,10 +14953,25 @@ "searchTerms": { "en": [ "health", + "protein", "supplement", "vitamin" ], + "cs": [ + "doplňky stravy", + "potravní doplňky", + "doplňky potravy", + "potravinové doplňky", + "doplňky výživy", + "výživové doplňky", + "nutraceutika", + "supplementy", + "vitamíny", + "minerály", + "léky" + ], "da": [ + "kosttilskudsbutik", "helsekostbutik", "helsekostforretning" ], @@ -12924,6 +14998,9 @@ "fr": [ "compléments alimentaires;compléments nutritionnels" ], + "he": [ + "חנות ויטמינים" + ], "hu": [ "étrend-kiegészítő", "táplálékkiegészítő" @@ -12935,7 +15012,9 @@ "栄養サプリメント販売店", "サプリ専門店", "サプリメント専門店", - "健康" + "健康", + "サプリ", + "サプリメント" ], "nl": [ "supplementen", @@ -12945,6 +15024,7 @@ "eiwitten" ], "pl": [ + "sklep z suplementami diety", "suplementy diety", "odżywki dla sportowców" ], @@ -12973,11 +15053,176 @@ "class": "medium" } }, + { + "if": "shop=nuts", + "then": { + "en": "Nuts Shop", + "cs": "Obchod s oříšky", + "da": "Nøddebutik", + "de": "Nussgeschäft", + "es": "Tienda de frutos secos", + "fi": "Pähkinäkauppa", + "fr": "Magasin de noix", + "he": "חנות פיצוחים", + "ja": "ナッツ店", + "pl": "Sklep z bakaliami", + "pt": "Loja de frutos secos", + "ru": "Магазин орехов", + "sv": "Nötbutik" + }, + "searchTerms": { + "en": [ + "almonds", + "cashews", + "brazil nuts", + "chestnuts", + "coconuts", + "dried fruits", + "hazelnuts", + "macadamia", + "nuts", + "peanuts", + "pecans", + "pistachios", + "seeds", + "walnuts" + ], + "cs": [ + "mandle", + "kešu", + "brazilské ořechy", + "kaštany", + "kokosy", + "sušené ovoce", + "lískové ořechy", + "makadamie", + "ořechy", + "arašídy", + "pekanové ořechy", + "pistácie", + "semena", + "vlašské ořechy" + ], + "de": [ + "mandeln", + "cashews", + "paranüsse", + "kastanien", + "kokosnüsse", + "trockenfrüchte", + "haselnüsse", + "macadamia", + "nüsse", + "erdnüsse", + "pekannüsse", + "pistazien", + "samen", + "walnüsse" + ], + "es": [ + "almendras", + "anacardos", + "castañas de cajú", + "nueces de pecan", + "nueces de brasil", + "castañas", + "cocos", + "frutos secos", + "avellanas", + "macadamia", + "nueces", + "cacahuetes", + "pacanas", + "pistachos", + "semillas" + ], + "fr": [ + "noix", + "fruits secs", + "fruit sec", + "cacahuète", + "pistache", + "graine", + "noix de coco", + "amande" + ], + "ja": [ + "ナッツ店", + "お店", + "店舗", + "ショッピング", + "小売", + "食べ物", + "木の実", + "ナッツ" + ], + "pl": [ + "sklep z bakaliami", + "sklep z orzechami", + "bakalie", + "orzechy" + ], + "pt": [ + "nozes", + "pinhões", + "figos", + "tâmaras", + "pinhão", + "amêndoas", + "amendoins", + "amendoim", + "cajus", + "frutos", + "fruta", + "pecã", + "pistacho", + "pistache", + "pistacio", + "almonds", + "cashews", + "brazil nuts", + "chestnuts", + "coconuts", + "dried fruits", + "hazelnuts", + "macadamia", + "nuts", + "peanuts", + "pecans", + "pistachios", + "seeds", + "walnuts" + ], + "sv": [ + "nötbutik", + "nöt", + "nötter", + "mandlar", + "cashewnötter", + "paranötter", + "kastanjer", + "kokosnötter", + "torkad frukt", + "hasselnötter", + "macadamia", + "jordnötter", + "pekannötter", + "pistagenötter", + "frön", + "valnötter" + ] + }, + "icon": { + "path": "./assets/layers/id_presets/maki-shop.svg", + "class": "medium" + } + }, { "if": "shop=optician", "then": { "en": "Optician", "ca": "Òptica", + "cs": "Optika", "da": "Optiker", "de": "Optiker", "eo": "Optikbutiko", @@ -12985,6 +15230,7 @@ "fi": "Optikko", "fr": "Opticien", "gl": "Óptica", + "he": "אופטיקאי", "hu": "Látszerész", "id": "Optik", "it": "Ottico", @@ -13001,6 +15247,14 @@ "eye", "glasses" ], + "cs": [ + "optik", + "optika", + "brýle", + "zrak", + "kontaktní čočky", + "čočky" + ], "da": [ "optiker", "optikerforretning" @@ -13038,6 +15292,9 @@ "opticien", "marchand de lunettes" ], + "he": [ + "אופטיקאית" + ], "hu": [ "szemüveg", "kontaktlencse", @@ -13116,6 +15373,7 @@ "then": { "en": "Outdoors Store", "ca": "Botiga per a activitats a l'aire lliure", + "cs": "Outdoorové zboží", "da": "Friluftsudstyrsbutik", "de": "Outdoorgeschäft", "eo": "Vojaĝila vendejo", @@ -13123,6 +15381,7 @@ "fi": "Ulkoilmamyymälä", "fr": "Magasin de matériel de sports de plein air", "gl": "Tenda de actividades ó ar libre", + "he": "חנות רהיטי גינה", "hu": "Túrafelszerelés-bolt", "id": "Toko Perlengkapan Outdoor", "it": "Negozio per sport all'aria aperta", @@ -13139,10 +15398,25 @@ "camping", "climbing", "hiking", + "hobby", "outfitter", "outdoor equipment", "outdoor supplies" ], + "cs": [ + "outdoor", + "outdoorový", + "outdoorová", + "outdoorové", + "kempování", + "kempingové", + "horolezecký", + "horolezecké", + "sport", + "sportovní", + "příroda", + "přírody" + ], "da": [ "friluftsudstyrsbutik", "friluftsudstyrsforretning", @@ -13180,6 +15454,9 @@ "excursión", "gps" ], + "he": [ + "חנות ריהוט גינה" + ], "hu": [ "hegymászó felszerelés", "outdoor", @@ -13193,7 +15470,13 @@ "escursionismo" ], "ja": [ - "アウトドアショップ" + "アウトドアショップ", + "アウトドア店", + "屋外", + "店舗", + "お店", + "キャンプ", + "登山" ], "nl": [ "trekking", @@ -13206,6 +15489,7 @@ "pl": [ "sklep turystyczny", "sklep górski", + "sklep outdoorowy", "góry", "wspinaczka", "wspinaczkowy", @@ -13253,12 +15537,14 @@ "if": "shop=outpost", "then": { "en": "Online Retailer Outpost", + "cs": "Výdejna e-shopu", "de": "Abholstelle eines Onlinehändlers", "eo": "Ricevejo de aĉetaĵoj (per interreto)", "es": "Puesto de venta minorista online", "fi": "Verkkokaupan noutopiste", "fr": "Magasin de produits vendus en ligne", "gl": "Posto de venda minorista online", + "he": "נקודת הפצה של שירות מקוון", "hu": "Internetes bolt", "it": "Centro ritiro acquisti online", "ja": "商品受け取り店", @@ -13274,6 +15560,11 @@ "pick up", "pickup" ], + "cs": [ + "online", + "vyzvednutí", + "vyzvednout" + ], "de": [ "online", "abholung", @@ -13298,6 +15589,12 @@ "en ligne", "commande" ], + "he": [ + "נקודת איסוף", + "נקודת הפצה", + "תאי חלוקה", + "תאי הפצה" + ], "hu": [ "internetes bolt", "áruátvétel", @@ -13346,6 +15643,7 @@ "then": { "en": "Paint Store", "ca": "Botiga de pintura", + "cs": "Barvy a laky", "da": "Farvehandel", "de": "Farbengeschäft", "eo": "Farba vendejo", @@ -13353,6 +15651,7 @@ "fi": "Maalikauppa", "fr": "Magasin de peintures", "gl": "Tenda de pinturas", + "he": "חנות צבע", "hu": "Festékbolt", "id": "Toko Cat", "it": "Negozio di vernici", @@ -13365,6 +15664,14 @@ "sv": "Färgbutik" }, "searchTerms": { + "cs": [ + "barva", + "barvy", + "nátěr", + "nátěry", + "lak", + "laky" + ], "da": [ "farvehandel", "malerforretning", @@ -13399,6 +15706,9 @@ "fr": [ "vente de peintures" ], + "he": [ + "חנות צבע" + ], "hu": [ "falfesték", "színkeverés", @@ -13416,6 +15726,7 @@ "verfzaak" ], "pl": [ + "sklep z farbami", "farby", "malowanie" ], @@ -13450,11 +15761,13 @@ "if": "shop=party", "then": { "en": "Party Supply Store", + "cs": "Párty zboží", "de": "Partyzubehör", "eo": "Vendejo de okazaĵaj provizoj", "es": "Tienda de artículos para fiestas", "fr": "Magasin de matériel de fête", "gl": "Tenda de artigos para festas", + "he": "חנות ציוד למסיבות", "hu": "Partykellékbolt", "it": "Negozio di articoli per le feste", "ja": "パーティ用品店", @@ -13471,6 +15784,12 @@ "decorations", "invitations" ], + "cs": [ + "balonky", + "kostýmy", + "dekorace", + "pozvánky" + ], "de": [ "partyzubehör" ], @@ -13519,6 +15838,12 @@ "garulada", "festividade" ], + "he": [ + "בלונים", + "תחפושות", + "קישוטים", + "הזמנות" + ], "ja": [ "パーティ用品店", "パーティグッズ", @@ -13538,6 +15863,7 @@ "kostuums" ], "pl": [ + "sklep z artykułami imprezowymi", "artykuły imprezowe", "balony", "kostiumy", @@ -13581,11 +15907,88 @@ "class": "medium" } }, + { + "if": "shop=pasta", + "then": { + "en": "Pasta Store", + "cs": "Obchod s těstovinami", + "de": "Nudelgeschäft", + "es": "Fábrica de pastas", + "fr": "Magasin de pâtes", + "he": "חנות פסטה", + "ja": "パスタショップ", + "pl": "Sklep z makaronami", + "pt": "Loja de massas" + }, + "searchTerms": { + "en": [ + "fresh pasta", + "ravioli", + "spaghetti" + ], + "cs": [ + "čerstvé těstoviny", + "ravioly", + "špagety" + ], + "de": [ + "nudel", + "nudeln", + "pasta", + "ravioli", + "spaghetti" + ], + "es": [ + "tienda de pasta", + "pastelería", + "pastería", + "fábrica de pastas" + ], + "fr": [ + "magasin de pâtes" + ], + "ja": [ + "生パスタ", + "ラビオリ", + "スパゲティ" + ], + "pl": [ + "sklep z makaronami", + "makarony", + "produkty mączne" + ], + "pt": [ + "pasta", + "estabelecimento", + "ravioli", + "spaghetti", + "esparguete", + "fusili", + "farfalle", + "tubulares", + "rigatoni", + "penne", + "concha", + "conchiglie", + "lumaconi", + "fettucine", + "linguine", + "tagliatelle", + "lasagnette", + "aletria" + ] + }, + "icon": { + "path": "./assets/layers/id_presets/fas-plate-wheat.svg", + "class": "medium" + } + }, { "if": "shop=pastry", "then": { "en": "Pastry Shop", "ca": "Pastisseria", + "cs": "Cukrárna", "da": "Konditori", "de": "Konditorei", "eo": "Kukejo", @@ -13593,6 +15996,7 @@ "fi": "Leipomokonditoria", "fr": "Pâtisserie", "gl": "Confeitaría ou pastelaría", + "he": "בית מאפה", "hu": "Cukrászda", "it": "Pasticceria", "ja": "焼菓子(ペイストリー)店", @@ -13609,6 +16013,10 @@ "cake shop", "cakery" ], + "cs": [ + "cukrářství", + "dorty" + ], "da": [ "konditori" ], @@ -13640,6 +16048,9 @@ "pasteis", "tartas" ], + "he": [ + "חנות מאפים" + ], "hu": [ "sütemény", "süti", @@ -13666,7 +16077,9 @@ "食べ物", "食料品", "店舗", - "お店" + "お店", + "ケーキ", + "スイーツ" ], "nl": [ "patisserie", @@ -13720,74 +16133,55 @@ { "if": "shop=pawnbroker", "then": { - "en": "Pawn Shop", - "ca": "Botiga d'empenyoraments", - "da": "Panteudlåner", + "en": "Pawnshop", + "cs": "Zastavárna", + "da": "Pantelåner", "de": "Pfandleihe", - "eo": "Mon-pruntejo (kontraŭ garantiaĵo)", - "es": "Casa de empeño", - "fi": "Panttilainaamo", + "es": "Casa de empeños", "fr": "Prêteur sur gages", - "gl": "Casa de empeños", + "he": "בית משכון", "hu": "Zálogház", - "id": "Pegadaian", - "it": "Banco dei pegni", - "ja": "質店", + "ja": "質屋", "nl": "Pandjeshuis", "pl": "Lombard", - "pt": "Casa de penhoras", + "pt": "Loja de penhoras", "ru": "Ломбард", - "sl": "Zastavljalnica", "sv": "Pantbank" }, "searchTerms": { - "da": [ - "panteudlåner" - ], "de": [ "leihhaus", "pfandleihhaus", "pfandhaus", - "goldankauf" - ], - "eo": [ - "lombardo", - "monprunto", - "lombardejo", - "pruntejo", - "brokantejo" + "goldankauf", + "pfandleiher" ], "es": [ - "casa de empeño", - "empeño", - "tienda de empeño", - "prenda" + "casa de empeños", + "empeños", + "tienda de empeños" ], "fr": [ + "prêteur", + "dépôt", + "gage", + "gages", + "occasion", "mont-de-piété", "crédit municipal" ], - "hu": [ - "zaci", - "záloghitel" - ], - "it": [ - "banco dei pegni", - "monte dei pegni" + "he": [ + "בית עבוט", + "מציאות" ], "ja": [ "質屋", - "質店", + "質", + "金融", "お金", - "金融" - ], - "nl": [ - "pandhuis", - "lommerd", - "lombard", - "kredietinstelling", - "lenen", - "geld" + "借金", + "サービス", + "質草" ], "pl": [ "lombard" @@ -13798,9 +16192,6 @@ "penhoras", "penhorar" ], - "ru": [ - "ломбард" - ], "sv": [ "pantbank", "pantbanken", @@ -13820,6 +16211,7 @@ "then": { "en": "Perfume Store", "ca": "Botiga de perfums", + "cs": "Parfumerie", "da": "Parfumebutik", "de": "Parfümerie", "eo": "Parfuma vendejo", @@ -13827,6 +16219,7 @@ "fi": "Hajusteliike", "fr": "Parfumerie", "gl": "Perfumaría", + "he": "חנות בשמים", "hu": "Parfüméria", "it": "Profumeria", "ja": "香水店", @@ -13847,6 +16240,10 @@ "perfumeria", "botiga de colònies" ], + "cs": [ + "parfumerie", + "parfémy" + ], "da": [ "parfumebutik", "parfumeforretning", @@ -13879,6 +16276,9 @@ "fr": [ "parfumerie" ], + "he": [ + "חנות בשמים" + ], "hu": [ "parfüm", "illatszer" @@ -13899,6 +16299,7 @@ "eau de parfum" ], "pl": [ + "perfumeria", "sklep z perfumami", "perfumy" ], @@ -13935,13 +16336,15 @@ "then": { "en": "Pet Store", "ca": "Botiga d'animals", - "da": "Kæledyrsbutik", - "de": "Tierhandlung", + "cs": "Chovatelské potřeby", + "da": "Dyrehandler", + "de": "Zoofachgeschäft", "eo": "Hejmbesta vendejo", "es": "Tienda de mascotas", "fi": "Lemmikkiliike", "fr": "Animalerie", "gl": "Tenda de mascotas", + "he": "חנות לחיות מחמד", "hu": "Kisállatkereskedés", "id": "Toko Peliharaan", "it": "Negozio per animali", @@ -13963,15 +16366,24 @@ "puppy", "reptile" ], + "cs": [ + "obchod pro domácí zvířata", + "obchod pro domácí mazlíčky", + "zverimex" + ], "da": [ + "dyrehandler", "kæledyrsbutik", - "dyreforhandler", - "dyrehandler" + "dyreforhandler" ], "de": [ "tierhandlung", "zoohandlung", - "zoofachgeschäft" + "zoofachgeschäft", + "tiernahrung", + "tierzubehör", + "haustier", + "goldfisch" ], "eo": [ "dombesta vendejo", @@ -13987,9 +16399,20 @@ "animal", "tienda de animales" ], + "fi": [ + "lemmikkikauppa", + "lemmikkieläinkauppa", + "kotieläinkauppa", + "lemmikkiliike", + "lemmikkieläinliike", + "kotieläinliike" + ], "fr": [ "animalerie" ], + "he": [ + "חנות לחיות מחמד" + ], "hu": [ "állat", "kisállat", @@ -14063,69 +16486,66 @@ { "if": "shop=pet_grooming", "then": { - "en": "Pet Grooming Store", - "de": "Tierpflegedienst, Tierfriseur (meist Hundesalon)", - "eo": "Hejmbesta beligejo", - "es": "Tienda de aseo de mascotas", - "fi": "Lemmikkihoitola", + "en": "Pet Groomer", + "ca": "Perruqueria d'animals", + "cs": "Zvířecí kadeřník", + "da": "Dyrefrisør", + "de": "Tierfriseur", + "es": "Peluquería de mascotas", "fr": "Salon de toilettage", - "gl": "Tenda de coidado de animais", - "hu": "Állatkozmetika", - "it": "Toelettatura per animali", + "he": "מספרת חיות", + "hu": "Kisállatfodrász", "ja": "ペット美容室", - "nl": "Trimsalon", "pl": "Salon fryzjerski dla zwierząt", - "pt": "Loja de banhos e tosquias", + "pt": "Salão de banhos e tosquias", "ru": "Парикмахерская для животных", "sv": "Pälsvård för husdjur" }, "searchTerms": { "en": [ "cat", - "dog" + "cat grooming", + "dog", + "dog grooming" + ], + "ca": [ + "peluqueria d'animals", + "gos", + "gat", + "perruqueria de gats", + "perruqueria de gosssos", + "peluquria de gats", + "peluqueria de gossos" + ], + "cs": [ + "kočka", + "pes" + ], + "da": [ + "dyrefrisør", + "hundefrisør", + "hundesalon" ], "de": [ "hundefriseur", "hundesalon", "tierfriseur", - "tierpflegedienst" - ], - "eo": [ - "frizejo", - "hartondisto", - "hundoj", - "katoj", - "hejmbestoj", - "dombestoj" + "tierpflegedienst", + "tierpflege" ], "es": [ - "baño", - "aseo", - "peluquería", - "mascotas", - "perro", + "peluquería de mascotas", + "aseo de mascotas", "gato", - "peluquero canino", - "can" + "perro" ], "fr": [ - "salon de toilettage" - ], - "hu": [ - "kutyakozmetika" - ], - "it": [ - "cane", - "gatto", - "cani", - "gatti", - "toilette", - "toletta", - "tolettatura", - "toelettatura", - "parrucchiere", - "unghie", - "shampoo" + "toilettage", + "animal", + "chien", + "chat", + "salon", + "animalerie" ], "ja": [ "ペット美容室", @@ -14138,41 +16558,32 @@ "猫", "動物" ], - "nl": [ - "huisdierenverzorging", - "huisdierentrimsalon", - "hondenverzorging", - "hondentrimsalon", - "kattenverzorging", - "kattentrimsalon" - ], "pl": [ + "salon fryzjerski dla zwierząt", + "salon groomerski", "psi fryzjer" ], "pt": [ - "loja de cuidados com animais de estimação", - "animais", - "animal", - "gato", - "gatos", - "cão", + "grooming", + "groomer", "cães", - "pet", - "tratamento", - "limpeza", + "cão", + "gatos", + "animais", + "tosquiaria", "tosquia", - "cabeleireiro", - "companhia", - "estimação" + "higiénica", + "higiênico", + "higiénico", + "higiênica", + "tosa", + "estética", + "asseio", + "higiene", + "limpeza" ], "ru": [ - "зоосалон", - "салон красоты для животных", - "собак", - "кошек", - "стрижка", - "уход", - "мытьё" + "грумер" ], "sv": [ "pälsvård för husdjur", @@ -14180,7 +16591,10 @@ "husdjur", "hund", "trimning", - "hundvård" + "hundvård", + "katt", + "kattskötsel", + "hundskötsel" ] }, "icon": { @@ -14193,13 +16607,16 @@ "then": { "en": "Photography Store", "ca": "Botiga de fotografia", + "cs": "Fotografický obchod", "da": "Fotoforretning", "de": "Fotofachgeschäft", "eo": "Fotografia vendejo", "es": "Tienda de fotografía", + "eu": "Argazkilaritza denda", "fi": "Valokuvausliike", "fr": "Tirage de photos", "gl": "Tenda de fotografía", + "he": "חנות צילום", "hu": "Fotósbolt", "id": "Toko Fotografi", "it": "Fotografo", @@ -14218,6 +16635,25 @@ "lens", "photo" ], + "cs": [ + "fotografie", + "fotografický obchod", + "foto", + "fotoobchod", + "video", + "vyvolávání", + "tisk", + "film", + "filmy", + "fotostudio", + "studio", + "fotoaparát", + "digitální", + "digitál", + "střih", + "ateliér", + "objektiv" + ], "da": [ "foto", "kamera", @@ -14249,6 +16685,9 @@ "photographe", "tirage de photos" ], + "he": [ + "חנות צילום" + ], "hu": [ "fényképész", "fényképezés", @@ -14277,6 +16716,7 @@ "film" ], "pl": [ + "sklep fotograficzny", "fotografia", "filmy do aparatów", "ramki na zdjęcia", @@ -14334,11 +16774,15 @@ "then": { "en": "Pottery Store", "ca": "Botiga de ceràmica", + "cs": "Keramika", + "da": "Keramikbutik", "de": "Keramikladen", "eo": "Porcelan-vendejo", "es": "Tienda de alfarería", + "fi": "Keramiikkamyymälä", "fr": "Magasin de poterie", "gl": "Tenda de cerámica", + "he": "חנות כדים", "hu": "Fazekas bolt", "it": "Negozio di ceramica", "ja": "陶磁器店", @@ -14354,6 +16798,11 @@ "pot", "vase" ], + "cs": [ + "keramika", + "hrnec", + "váza" + ], "de": [ "töpferwarenladen", "töpferladen", @@ -14384,6 +16833,10 @@ "olaría", "olería" ], + "he": [ + "חנות לכדים", + "קדרות" + ], "ja": [ "陶磁器店", "陶器店", @@ -14424,12 +16877,14 @@ "then": { "en": "Printer Ink Store", "ca": "Botiga de tinta d'impressores", + "cs": "Barvy do tiskáren", "de": "Druckertintengeschäft", "eo": "Presil-inka vendejo", "es": "Tienda de tinta para impresora", "fi": "Tulostinmustemyymälä", "fr": "Vendeur d'encre pour imprimante", "gl": "Tenda de tinta de impresora", + "he": "חנות דיו למדפסות", "hu": "Nyomtatófesték bolt", "it": "Negozio di cartucce per stampanti", "ja": "プリンタ用インク店", @@ -14446,6 +16901,12 @@ "ink cartridges", "toner" ], + "cs": [ + "inkoust do kopírek", + "inkoust pro fax", + "inkoustové kazety", + "toner" + ], "de": [ "kopierertinte", "faxtinte", @@ -14476,6 +16937,13 @@ "cartouche", "impression" ], + "he": [ + "דיו", + "פקס", + "מדפסת", + "הדפסה", + "לייזר" + ], "ja": [ "プリンタ用インク店", "プリンタ", @@ -14525,17 +16993,19 @@ "if": "shop=psychic", "then": { "en": "Psychic", + "cs": "Věštírna", "de": "Astrologiker", "eo": "Laborejo de mediumo", "es": "Vidente", "fi": "Psyykikko", "fr": "Magasin ésotérique psi", "gl": "Vidente", + "he": "מדיום", "hu": "Jóslás", "it": "Sensitivo", "ja": "サイキック店", "nl": "Medium (esoterie)", - "pl": "Medium", + "pl": "Wróżka", "pt": "Vidente", "ru": "Предсказатель", "sv": "Medium / Psykisk" @@ -14549,6 +17019,14 @@ "seer", "spirit" ], + "cs": [ + "astrologie", + "křišťálová koule", + "věštění", + "vypravěč", + "věštec", + "duch" + ], "de": [ "astrologie", "kristallkugel", @@ -14595,6 +17073,13 @@ "extrasensoriel", "psychokinésie" ], + "he": [ + "גילוי עתידות", + "תקשור", + "תיקשור", + "מגלה עתידות", + "מגדת עתידות" + ], "it": [ "astrologia", "cartomante", @@ -14612,9 +17097,11 @@ "helderziende" ], "pl": [ - "medium", "wróżka", "wróżbita", + "tarot", + "przepowiadanie przyszłości", + "medium", "wróżenie" ], "pt": [ @@ -14668,6 +17155,7 @@ "then": { "en": "Fireworks Store", "ca": "Botiga d'articles pirotècnics", + "cs": "Obchod s pyrotechnikou", "da": "Fyrværkeributik", "de": "Feuerwerksgeschäft", "eo": "Art-fajraĵa vendejo", @@ -14675,6 +17163,7 @@ "fi": "Ilotulitemyymälä", "fr": "Magasin de feux d'artifice", "gl": "Tenda de fogos artificiais", + "he": "חנות זיקוקים", "hu": "Tűzijátékbolt", "id": "Toko Kembang Api", "it": "Negozio di fuochi d'artificio", @@ -14689,6 +17178,13 @@ "en": [ "fireworks" ], + "cs": [ + "pyrotechnika", + "zábavní pyrotechnika", + "zábavná pyrotechnika", + "ohňostroj", + "dělbuch" + ], "da": [ "fyrværkeributik", "fyrværkeriforretning", @@ -14733,6 +17229,9 @@ "fogos artificiais", "fogos de artificio" ], + "he": [ + "חנות זיקוקים" + ], "hu": [ "robbanószer", "tűzijáték", @@ -14759,6 +17258,8 @@ "nieuwjaar" ], "pl": [ + "sklep ze sztucznymi ogniami", + "sklep z fajerwerkami", "sztuczne ognie", "fajerwerki", "petardy" @@ -14798,6 +17299,7 @@ "then": { "en": "Radio/Electronic Component Store", "ca": "Botiga d'articles electrònics", + "cs": "Obchod s elektronickými součástkami", "da": "Radio/Elektronikbutik", "de": "Radio/Elektronik-Geschäft", "eo": "Radioteĥnika/elektronik-parta vendejo", @@ -14805,6 +17307,7 @@ "fi": "Elektroniikkakomponenttimyymälä", "fr": "Magasin de composants électroniques et de radio", "gl": "Tenda de compoñentes electrónicos", + "he": "חנות אלקטרוניקה ורדיו", "hu": "Rádiótechnikai bolt", "id": "Toko Komponen Radio/Elektronik", "it": "Negozio di componenti elettronici", @@ -14821,6 +17324,14 @@ "antenna", "transistor" ], + "cs": [ + "elektrotechnika", + "elektronický", + "elektrický", + "elektro", + "radiotechnika", + "radioamatér" + ], "da": [ "radio/elektronikbutik" ], @@ -14857,6 +17368,9 @@ "electrónica", "radio" ], + "he": [ + "חנות אלקטרוניקה ורדיו" + ], "hu": [ "elektronikai alkatrész", "mérőműszer" @@ -14878,6 +17392,7 @@ "satelliet-tv" ], "pl": [ + "sklep z częściami elektronicznymi", "części elektroniczne", "elektronika", "radiotechnika", @@ -14924,6 +17439,7 @@ "then": { "en": "Religious Store", "ca": "Botiga d'articles religiosos", + "cs": "Náboženské předměty", "da": "Religøs forretning", "de": "Devotionalienhandlung", "eo": "Devotaĵa vendejo", @@ -14931,6 +17447,7 @@ "fi": "Uskonnollinen myymälä", "fr": "Magasin d'articles religieux", "gl": "Tenda relixiosa", + "he": "חנות לתשמישי דת", "hu": "Kegytárgybolt", "id": "Toko Agamawi", "it": "Negozio di articoli religiosi", @@ -14942,6 +17459,13 @@ "sv": "Religiös butik" }, "searchTerms": { + "cs": [ + "náboženství", + "náboženský", + "duchovní", + "křesťanský", + "katolický" + ], "da": [ "religøs forretning" ], @@ -14975,6 +17499,11 @@ "boutique d'une église", "d'un monastère" ], + "he": [ + "חנות לפריטי דת", + "חנות יודאיקה", + "חנות לתשמישי קדושה" + ], "hu": [ "vallás", "imakönyv", @@ -14990,7 +17519,11 @@ "仏壇", "仏具", "祭祀用品", - "信仰" + "信仰", + "神具", + "宗教", + "数珠", + "法衣" ], "nl": [ "liturgisch centrum", @@ -15000,6 +17533,7 @@ "souvenirwinkel" ], "pl": [ + "sklep z dewocjonaliami", "dewocjonalia" ], "pt": [ @@ -15032,6 +17566,8 @@ "if": "shop=rental", "then": { "en": "Rental Shop", + "ca": "Botiga de lloguers", + "cs": "půjčovna", "da": "Udlejningsforretning", "de": "Verleih", "eo": "Pruntejo", @@ -15039,6 +17575,7 @@ "fi": "Vuokraamo", "fr": "Magasin de location", "gl": "Tenda de alugueiro", + "he": "חנות השכרה", "hu": "Kölcsönző", "it": "Negozio di noleggio", "ja": "レンタルショップ", @@ -15049,6 +17586,10 @@ "sv": "Hyrbutik" }, "searchTerms": { + "ca": [ + "tenda de lloguers", + "lloguer" + ], "da": [ "udlejning", "udleje", @@ -15091,6 +17632,11 @@ "vehículos", "equipos" ], + "he": [ + "יד שנייה", + "השכרה", + "חכירה" + ], "ja": [ "レンタルショップ", "レンタル店", @@ -15128,15 +17674,19 @@ "if": "shop=repair", "then": { "en": "Repair Shop", + "cs": "Opravna", + "da": "Reparationsværksted", "de": "Reparaturgeschäft", "eo": "Riparejo", "es": "Taller de reparaciones", + "fi": "Korjaamo", "fr": "Atelier de réparation", + "he": "חנות תיקונים", "hu": "Javítóműhely", "it": "Bottega di riparazioni", "ja": "修理店", "nl": "Reparatiewinkel", - "pl": "Naprawy", + "pl": "Naprawy (nieokreślone)", "pt": "Loja de reparações", "sv": "Reparatör" }, @@ -15150,6 +17700,18 @@ "rehabilitate", "tinker" ], + "cs": [ + "opravna", + "servis", + "opravář", + "náhradní díly", + "dílna", + "oprava rozbitého" + ], + "da": [ + "reparationsværksted", + "værksted" + ], "de": [ "kaputt", "reparieren", @@ -15180,18 +17742,33 @@ "rafistolage", "retouche" ], + "he": [ + "רמונט", + "תיקון", + "שיפוץ", + "טלאי", + "פאץ׳", + "ליטוש", + "שיקום" + ], + "hu": [ + "szerelő" + ], "it": [ "riparatutto" ], "ja": [ "修理店", - "修理屋" + "修理屋", + "サービス", + "修理" ], "nl": [ "reparatiewinkel" ], "pl": [ - "naprawy" + "naprawy", + "serwis" ], "pt": [ "consertos", @@ -15207,11 +17784,65 @@ ] } }, + { + "if": "shop=rice", + "then": { + "en": "Rice Store", + "cs": "Obchod s rýží", + "de": "Reisgeschäft", + "es": "Tienda de arroz", + "fr": "Magasin de riz", + "he": "חנות אורז", + "ja": "米穀店", + "pl": "Sklep z ryżem", + "pt": "Loja de arroz", + "sv": "Risaffär" + }, + "searchTerms": { + "de": [ + "reishandel", + "reishändler", + "reisladen" + ], + "es": [ + "tienda de arroz", + "arrocería", + "granería", + "almacén de arroz" + ], + "fr": [ + "magasin de riz" + ], + "ja": [ + "米屋" + ], + "pl": [ + "sklep z ryżem", + "ryż" + ], + "pt": [ + "store", + "rice", + "cereal", + "cereais" + ], + "sv": [ + "risaffär", + "risbutik", + "ris" + ] + }, + "icon": { + "path": "./assets/layers/id_presets/fas-bowl-rice.svg", + "class": "medium" + } + }, { "if": "shop=scuba_diving", "then": { "en": "Scuba Diving Shop", "ca": "Botiga de submarinisme", + "cs": "Potřeby pro potápěče", "da": "Dykkerudstyrsbutik", "de": "Tauchwarengeschäft", "eo": "Subakvad-aparata vendejo", @@ -15219,6 +17850,7 @@ "fi": "Sukellusliike", "fr": "Magasin de matériel de plongée sous-marine", "gl": "Tenda de mergullo", + "he": "חנות לצוללנים", "hu": "Búvárfelszerelés-bolt", "id": "Toko Perlengkapan Menyelam", "it": "Negozio di attrezzatura per subacquei", @@ -15236,6 +17868,21 @@ "scuba", "snorkel" ], + "ca": [ + "tenda de submarinisme", + "mar", + "aigua", + "snorkel", + "buceig", + "submarinisme" + ], + "cs": [ + "potápění", + "potápěč", + "scuba", + "potapěč", + "šnorchl" + ], "da": [ "dykkerudstyrsbutik" ], @@ -15273,6 +17920,9 @@ "buceo", "mergullo submarino" ], + "he": [ + "חנות צלילה" + ], "hu": [ "búvárfelszerelések boltja", "búvárbolt", @@ -15286,7 +17936,10 @@ "スキューバダイビングショップ", "スキューバダイビング", "スポーツ", - "運動" + "運動", + "店舗", + "お店", + "小売" ], "nl": [ "diepzeeduiken", @@ -15295,6 +17948,7 @@ "scuba" ], "pl": [ + "sklep nurkowy", "sprzęt do nurkowania", "nurkowanie" ], @@ -15330,7 +17984,8 @@ "if": "shop=seafood", "then": { "en": "Seafood Shop", - "ca": "Marisqueria", + "ca": "Botiga de Mariscos", + "cs": "Rybárna", "da": "Fiskehandler", "de": "Fischgeschäft", "eo": "Marfrukta vendejo", @@ -15338,6 +17993,7 @@ "fi": "Meriruokakauppa", "fr": "Poissonnerie / Vente de fruits de mer", "gl": "Peixaría", + "he": "חנות למאכלי ים", "hu": "Halbolt", "id": "Toko HIdangan Laut", "it": "Pescheria", @@ -15350,8 +18006,20 @@ "sv": "Fiskaffär" }, "searchTerms": { - "en": [ - "fishmonger" + "ca": [ + "marisqueria", + "pòsit", + "llotja", + "tenda de mariscos" + ], + "cs": [ + "rybárna", + "rybářství", + "ryby", + "ryba", + "plody moře", + "seafood", + "mořské potvory" ], "da": [ "fiskehandler", @@ -15389,6 +18057,9 @@ "peixe", "marisco" ], + "he": [ + "חנות למאכלי ים" + ], "hu": [ "halkereskedés", "halas" @@ -15418,6 +18089,7 @@ ], "pl": [ "sklep rybny", + "sklep z owocami morza", "ryby", "owoce morza" ], @@ -15469,37 +18141,37 @@ { "if": "shop=second_hand", "then": { - "en": "Consignment/Thrift Store", - "ca": "Consigna", + "en": "Thrift Store", + "ca": "Botiga de segona mà", + "cs": "Second hand", "da": "Genbrugsbutik", "de": "Second-Hand-Laden", - "eo": "Brokantejo", "es": "Tienda de segunda mano", - "fi": "Käytetyn tavaran kauppa", - "fr": "Dépôt-vente/produits d'occasion", - "gl": "Tenda de segunda man", - "hu": "Használtáru-bolt", - "id": "Jual Titip/Pasar Loak", - "it": "Negozio di articoli usati", - "ja": "リサイクルショップ", + "fi": "Kirpputori", + "fr": "Magasin de produits d'occasion", + "he": "חנות יד שנייה", + "it": "Mercatino dell'usato", + "ja": "中古品店", "nl": "Tweedehandswinkel", "pl": "Sklep z rzeczami używanymi", "pt": "Loja de produtos em segunda mão", - "ru": "Магазин секонд хенда", + "ru": "Комиссионный магазин", "sv": "Second hand" }, "searchTerms": { "en": [ - "secondhand", - "second hand", + "second-hand", "resale", - "thrift", "used" ], + "cs": [ + "bazarové", + "přeprodej", + "použité" + ], "da": [ - "velgørenhedsbutik", - "velgørenhedsforretning", - "genbrugsbutik" + "genbrugsforretning", + "secondhandbutik" ], "de": [ "second-hand-laden", @@ -15510,67 +18182,40 @@ "brockenstube", "brocki" ], - "eo": [ - "lambardejo", - "eluzitaĵoj", - "uzitaĵoj", - "malnovaĵoj" - ], "es": [ "segunda mano", "usado", "productos usados", "reventa" ], - "fi": [ - "kirpputori", - "myymälä", - "liike", - "kauppa", - "second hand", - "käytetty", - "käytettyä", - "käytetyn", - "tavara", - "jälleenmyynti", - "vertaiskauppa", - "osto- ja myyntiliike" - ], "fr": [ - "produits de seconde main" + "magasin", + "dépot", + "friperie", + "seconde main", + "aubaine", + "solidaire" ], - "hu": [ - "használtruha bolt", - "turkáló", - "turi", - "turkáló butik", - "bálás bolt", - "használtcikk" - ], - "id": [ - "konsinyasi/toko barang bekas" + "he": [ + "יד שנייה", + "מיושן", + "ידשנייה" ], "it": [ - "seconda mano", - "rivendita", - "risparmio", - "usato", - "mercatino" + "negozio dell'usato", + "negozio di seconda mano" ], "ja": [ - "古物商", - "リユースショップ", - "中古", - "リサイクルショップ", + "スリフトショップ", + "リサイクル店", + "中古品店", + "再販店", "中古屋", - "リサイクル", - "リユース" - ], - "nl": [ - "hergebruik", - "doorverkoop" + "中古販売店", + "リサイクルショップ" ], "pl": [ + "sklep z rzeczami używanymi", "second hand", "komis", "używane rzeczy", @@ -15588,12 +18233,6 @@ "roupa usada", "2.ª mão" ], - "ru": [ - "секондхенд", - "секонд хенд", - "секонд", - "комиссионный" - ], "sv": [ "second hand", "loppis", @@ -15611,13 +18250,15 @@ "then": { "en": "Sewing Supply Shop", "ca": "Merceria", + "cs": "Šicí potřeby, galanterie", "da": "Syforretning", - "de": "Kurzwarenladen", + "de": "Geschäft für Nähzubehör", "eo": "Kudrilar-vendejo", "es": "Tienda de suministros de costura", "fi": "Ompelutarvikeliike", "fr": "Magasin de couture", "gl": "Tenda de artigos de costura", + "he": "חנות ציוד תפירה", "hu": "Varrásfelszerelés bolt", "it": "Merceria", "ja": "手芸用品店", @@ -15631,6 +18272,16 @@ "en": [ "haberdashery" ], + "ca": [ + "cinteria", + "llenceria", + "fils", + "cusir", + "cosir" + ], + "cs": [ + "galanterie" + ], "da": [ "sy", "syning", @@ -15641,7 +18292,16 @@ "kreativ" ], "de": [ - "nähzubehörgeschäft" + "nähzubehör", + "kurzwaren", + "garn", + "stricken", + "nähen", + "häckeln", + "sticken", + "nähmaschinen", + "nadeln", + "stricknadeln" ], "eo": [ "pasamento", @@ -15670,6 +18330,12 @@ "confeccion", "corte" ], + "he": [ + "חנות תפירה", + "תופרת", + "בדים", + "בד" + ], "hu": [ "varrógép", "kézimunka" @@ -15689,7 +18355,10 @@ "編物用品", "店", "針", - "糸" + "糸", + "趣味", + "編み物用品店", + "編物" ], "nl": [ "naaimachine", @@ -15749,11 +18418,15 @@ "then": { "en": "Shoe Repair Shop", "ca": "Sabater", + "cs": "Opravna obuvi", + "da": "Skomager", "de": "Schuhreparatur", "eo": "Ŝu-riparejo", "es": "Taller de reparación de calzado", + "eu": "Oinetako-konponketak", "fr": "Cordonnier", "gl": "Tenda de arranxo de zapatos", + "he": "חנות לתיקון נעליים", "hu": "Cipőjavítás", "it": "Calzolaio", "ja": "靴修理店", @@ -15767,6 +18440,26 @@ "en": [ "cobbler" ], + "ca": [ + "reparador de sabates", + "sabates", + "sabateria" + ], + "cs": [ + "švec", + "ševcovství", + "opravna obuvi", + "výrobce bot", + "výroba obuvi", + "boty", + "dílna", + "obuv", + "řemeslo", + "řemeslník" + ], + "da": [ + "hælebar" + ], "de": [ "kopfsteinpflaster" ], @@ -15782,6 +18475,12 @@ "taller de reparación de calzado", "tienda de reparación de calzado" ], + "eu": [ + "oinetako-konponketak", + "zapataria", + "zapatagilea", + "zapateroa" + ], "fr": [ "cordonnerie", "cordonnier réparation de chaussures" @@ -15793,20 +18492,28 @@ "arranxo de calzado", "reparación de calzado" ], + "he": [ + "שומאכר", + "מתקן נעליים", + "תיקון נעליים", + "סנדלר" + ], "hu": [ "cipész" ], "ja": [ "靴修理店", "靴屋", - "靴" + "靴", + "サービス", + "修理" ], "nl": [ "schoenenmaker" ], "pl": [ - "naprawa obuwia", "szewc", + "naprawa obuwia", "obuwie", "buty" ], @@ -15833,13 +18540,16 @@ "then": { "en": "Shoe Store", "ca": "Sabateria", + "cs": "Obuvnictví", "da": "Skobutik", "de": "Schuhgeschäft", "eo": "Ŝua vendejo", "es": "Zapatería", + "eu": "Zapata-denda", "fi": "Kenkäkauppa", "fr": "Magasin de chaussures", "gl": "Zapataría", + "he": "חנות נעליים", "hu": "Cipőbolt", "id": "Toko Sepatu", "it": "Negozio di scarpe", @@ -15859,12 +18569,28 @@ "heels", "loafers", "oxfords", - "sneakers" + "sneakers", + "footwear", + "sandals", + "slippers" ], "ca": [ "sabateria", "botiga de sabates", - "sabater" + "sabater", + "calçat", + "sabata", + "bamba", + "tacons", + "sandàlies", + "botes" + ], + "cs": [ + "dům obuvi", + "boty", + "obuvnictví", + "obuvník", + "švec" ], "da": [ "skobutik", @@ -15891,9 +18617,23 @@ "alpargata", "zapatería" ], + "eu": [ + "zapata-denda", + "zapatadenda", + "oinetakoak", + "oinetako-denda" + ], + "fi": [ + "kenkäkauppa", + "kenkämyymälä", + "kenkäliike" + ], "fr": [ "magasin de chaussures" ], + "he": [ + "חנות נעליים" + ], "hu": [ "cipő", "papucs", @@ -15912,6 +18652,7 @@ "schoenenhandel" ], "pl": [ + "sklep obuwniczy", "obuwie", "buty" ], @@ -15948,6 +18689,7 @@ "then": { "en": "Spice Shop", "ca": "Botiga d'espècies", + "cs": "Koření, bylinky", "da": "Kryddeributik", "de": "Gewürzladen", "eo": "Spica vendejo", @@ -15955,6 +18697,7 @@ "fi": "Maustekauppa", "fr": "Magasin d'épices", "gl": "Tenda de especias", + "he": "חנות תבלינים", "hu": "Fűszerbolt", "it": "Negozio di spezie", "ja": "スパイス店", @@ -15979,6 +18722,36 @@ "turmeric", "wasabi" ], + "ca": [ + "tenda d'espècies", + "curry", + "xili", + "canella", + "herba", + "pebrera", + "pimienta", + "sal", + "especie", + "condiments", + "wasabi", + "condiment", + "pebre", + "safrà" + ], + "cs": [ + "chilli", + "skořice", + "kari", + "zázvor", + "bylinky", + "pepř", + "šafrán", + "sůl", + "obchod s kořením", + "koření", + "kurkuma", + "wasabi" + ], "da": [ "krydderi", "urter", @@ -16040,6 +18813,25 @@ "sel", "wasabi" ], + "he": [ + "צ׳ילי", + "צ'ילי", + "קינמון", + "קארי", + "זנגביל", + "ג׳ינג׳ר", + "ג'ינג'ר", + "תבלינים", + "תבלין", + "זעפרן", + "וסאבי", + "כורכום", + "כמון", + "פלפל", + "חריף", + "לימון פרסי", + "זעתר" + ], "hu": [ "delikátesz" ], @@ -16052,13 +18844,14 @@ "店舗", "食品", "食べ物", - "食料品" + "食料品", + "調味料" ], "nl": [ "kruidenwinkel" ], "pl": [ - "przyprawy", + "sklep z przyprawami przyprawy", "zioła", "suszone owoce", "orzechy" @@ -16106,6 +18899,7 @@ "then": { "en": "Sporting Goods Store", "ca": "Botiga d'esports", + "cs": "Sportovní potřeby", "da": "Sportsudstyrsbutik", "de": "Sportgeschäft", "eo": "Sporta vendejo", @@ -16113,6 +18907,7 @@ "fi": "Urheiluliike", "fr": "Magasin d'équipement sportif", "gl": "Tenda de deportes", + "he": "חנות לאביזרי ספורט", "hu": "Sportbolt", "id": "Toko Olahraga", "it": "Negozio di articoli sportivi", @@ -16126,7 +18921,20 @@ }, "searchTerms": { "en": [ - "athletics" + "athletics", + "hobby" + ], + "ca": [ + "esport", + "deport", + "esports", + "tenda d'esports" + ], + "cs": [ + "sport", + "obchod se sportovními potřebami", + "sportovní potřeby", + "vybavení pro sport" ], "da": [ "sportsudstyrsbutik", @@ -16154,7 +18962,10 @@ "liikunta" ], "fr": [ - "magasin d'équipement sportif" + "magasin de sport" + ], + "he": [ + "חנות לדברי ספורט" ], "hu": [ "sportfelszerelés", @@ -16179,6 +18990,7 @@ "sportgerief" ], "pl": [ + "sklep sportowy", "sprzęt sportowy" ], "pt": [ @@ -16231,13 +19043,16 @@ "then": { "en": "Stationery Store", "ca": "Papereria", + "cs": "Kancelářské potřeby", "da": "Papirforhandler", "de": "Schreibwarengeschäft", "eo": "Papervara vendejo", "es": "Artículos de papelería y oficina", + "eu": "Paperdenda", "fi": "Toimistotarvikekauppa", "fr": "Papeterie", "gl": "Papelaría", + "he": "חנות לדברי כתיבה", "hu": "Papírbolt", "id": "Toko Alat Tulis", "it": "Negozio di cancelleria", @@ -16254,6 +19069,13 @@ "card", "paper" ], + "cs": [ + "papírnictví", + "papír", + "kancelářské potřeby", + "papírnické zboží", + "psací potřeby" + ], "da": [ "papirforhandler", "kontorforsyning" @@ -16285,6 +19107,9 @@ "fr": [ "papeterie" ], + "he": [ + "חנות לדברי כתיבה" + ], "hu": [ "papír", "írószer", @@ -16296,7 +19121,28 @@ ], "ja": [ "文具店", - "文房具屋" + "文房具屋", + "はんこ", + "ハンコ", + "筆記具", + "ノート", + "ペン", + "用紙", + "キングファイル", + "バインダー", + "ペンケース", + "はさみ", + "ホッチキス", + "セロテープ", + "のり", + "文具", + "文房具", + "ステーショナリ", + "お店", + "店舗", + "学習", + "事務用品", + "事務" ], "nl": [ "kaart", @@ -16305,7 +19151,9 @@ "kantoorartikelen" ], "pl": [ - "papierniczy" + "sklep papierniczy", + "artykuły piśmiennicze", + "zeszyty" ], "pt": [ "stationery", @@ -16347,13 +19195,15 @@ "then": { "en": "Storage Rental", "ca": "Lloguer de magatzem", + "cs": "Skladovací prostor", "da": "Lagerhotel", "de": "Lagerraumvermieter", "eo": "Magazena spaco por lui", "es": "Alquiler de espacios para almacenaje", "fi": "Varastonvuokrauspalvelu", - "fr": "Location de stockage - Ne pas utiliser", + "fr": "Location de stockage", "gl": "Alugueiro de almacéns", + "he": "שטח אחסון להשכרה", "hu": "Tárolóhely bérbeadása", "it": "Box a noleggio", "ja": "レンタル倉庫", @@ -16373,6 +19223,15 @@ "storage lockers", "storage units" ], + "cs": [ + "skladiště", + "skladování", + "skladovací prostor", + "uskladnění", + "parkování", + "pronájem", + "nájem" + ], "da": [ "lagerhotel", "opbevaringshotel" @@ -16425,6 +19284,9 @@ "arrendo", "alugamento" ], + "he": [ + "שטח אחסון להשכרה" + ], "hu": [ "tárolás", "raktárbérlés", @@ -16445,7 +19307,10 @@ "レンタル収納スペース", "トランクルーム", "コンテナ収納", - "荷物" + "荷物", + "置き場", + "保管場", + "ストレージ" ], "nl": [ "selfstorage", @@ -16492,6 +19357,7 @@ "then": { "en": "Supermarket", "ca": "Supermercat", + "cs": "Supermarket", "da": "Supermarked", "de": "Supermarkt", "eo": "Superbazaro", @@ -16499,8 +19365,9 @@ "fi": "Supermarketti", "fr": "Supermarché", "gl": "Supermercado", + "he": "סופרמרקט", "hu": "Szupermarket", - "id": "Supermarket", + "id": "Pasar Besar", "it": "Supermercato", "ja": "スーパーマーケット", "nl": "Supermarkt", @@ -16525,6 +19392,27 @@ "hipermercat", "híper" ], + "cs": [ + "obchod", + "market", + "supermarket", + "butik", + "bazar", + "řetězec", + "hypermarket", + "diskont", + "diskontní", + "bleší trh", + "trh", + "tržiště", + "outlet", + "obchodní", + "centrum", + "nákupní", + "obchodní dům", + "večerka", + "prodejní" + ], "da": [ "supermarked", "lavprisbutik", @@ -16547,6 +19435,9 @@ "fr": [ "supermarché" ], + "he": [ + "סופרמרקט" + ], "hu": [ "szupermarket", "élelmiszerbolt", @@ -16637,12 +19528,15 @@ "if": "shop=swimming_pool", "then": { "en": "Pool Supply Store", + "cs": "Bazény", + "da": "Butik med pooludstyr", "de": "Swimmingpoolbedarf", "eo": "Vendejo de naĝej-akcesoriaĵoj", "es": "Tienda de suministros para piscinas", "fi": "Uima-allasliike", "fr": "Magasin de matériel de piscine", "gl": "Tenda de subministracións para piscinas", + "he": "חנות ציוד לבריכות", "hu": "Uszodatechnika-bolt", "it": "Negozio per rifornimenti per piscina", "ja": "プール用品店", @@ -16663,6 +19557,17 @@ "swimming pool maintenance store", "swimming pool supply shop" ], + "cs": [ + "obchod s vybavením pro vířivky", + "obchod s údržbou vířivek", + "obchod s potřebami pro vířivky", + "obchod s bazény", + "bazény", + "obchod s vybavením pro bazény", + "obchod s instalací bazénů", + "obchod s údržbou bazénů", + "obchod s potřebami pro bazény" + ], "de": [ "swimmingpoolbedarf" ], @@ -16690,6 +19595,20 @@ "maintenance", "piscine" ], + "he": [ + "ציוד שחייה", + "ציוד לבריכות", + "תחזוקת ג׳קוזי", + "חנות בריכות", + "בריכת שחייה", + "חנות ציוד", + "ברכת שחייה", + "חנות להתקנת ברכת שחייה", + "חנות להתקנת בריכת שחייה", + "חנות לתחזוקת ברכות", + "חנות לתחזוקת בריכות", + "חנות ציוד לברכות" + ], "hu": [ "medence" ], @@ -16743,6 +19662,7 @@ "then": { "en": "Tailor", "ca": "Sastreria", + "cs": "Krejčovství", "da": "Skrædder", "de": "Schneider", "eo": "Tajlora laborejo/vendejo", @@ -16750,12 +19670,13 @@ "fi": "Räätäliliike", "fr": "Tailleur", "gl": "Xastraría", + "he": "חייט", "hu": "Szabó", "id": "Tukang Jahit", "it": "Sartoria", "ja": "仕立屋", "nl": "Kleermaker", - "pl": "Krawiec / usługi krawieckie", + "pl": "Krawiec (usługi krawieckie)", "pt": "Alfaiate", "ru": "Портной", "sl": "Krojač", @@ -16766,6 +19687,14 @@ "clothes", "suit" ], + "cs": [ + "krejčí", + "krejčířství", + "krejčovství", + "krejčová", + "švadlena", + "švadlenka" + ], "da": [ "skrædder" ], @@ -16773,7 +19702,8 @@ "schneider", "herrenschneider", "änderungsschneiderei", - "änderungsservice" + "änderungsservice", + "anzugsschneider" ], "eo": [ "tajloro" @@ -16805,6 +19735,9 @@ "taller de sastrería", "sastrería" ], + "he": [ + "חייטת" + ], "hu": [ "szabóság", "mértékutáni", @@ -16877,6 +19810,7 @@ "then": { "en": "Tattoo Parlor", "ca": "Centre de tatuatges", + "cs": "Tetovací salón", "da": "Tatovør", "de": "Tätowierer", "eo": "Salono de tatuado", @@ -16884,6 +19818,7 @@ "fi": "Tatuointisalonki", "fr": "Salon de tatouage", "gl": "Salón de tatuaxes", + "he": "מכון קעקועים", "hu": "Tetováló szalon", "id": "Jasa Pembuatan Tato", "it": "Tatuatore", @@ -16899,6 +19834,18 @@ "en": [ "ink" ], + "cs": [ + "tattoo", + "tatér", + "tatérka", + "tatérství", + "tetování", + "kérka", + "kérky", + "kérkař", + "piercing", + "pírsing" + ], "da": [ "tatovør", "tatovørforretning" @@ -16922,6 +19869,9 @@ "fr": [ "salon de tatouage" ], + "he": [ + "מכון קעקועים" + ], "hu": [ "tetoválás", "piercing", @@ -16975,6 +19925,7 @@ "then": { "en": "Tea Store", "ca": "Botiga de te", + "cs": "Obchod s čajem", "da": "Tebutik", "de": "Teegeschäft", "eo": "Tea vendejo", @@ -16982,6 +19933,7 @@ "fi": "Teekauppa", "fr": "Magasin de thés", "gl": "Tenda de té", + "he": "חנות תה", "hu": "Teaüzlet", "id": "Toko Teh", "it": "Negozio di tè", @@ -16994,6 +19946,12 @@ "sv": "Te-butik" }, "searchTerms": { + "cs": [ + "čaj", + "čaje", + "čajovna", + "čajírna" + ], "da": [ "tebutik", "teforhandler", @@ -17016,6 +19974,9 @@ "fr": [ "magasin de thés" ], + "he": [ + "חנות תה" + ], "hu": [ "teabolt", "teázó" @@ -17035,12 +19996,14 @@ "飲み物", "店舗", "小売", - "嗜好品" + "嗜好品", + "茶葉" ], "nl": [ "theehuis" ], "pl": [ + "sklep z herbatą", "sklep z herbatami", "herbaty" ], @@ -17078,17 +20041,19 @@ "if": "shop=telecommunication", "then": { "en": "Telecom Retail Store", + "cs": "Telekomunikační prodejna", "de": "Telekommunikationsfachgeschäft", "eo": "Oficejo de telekomunikada firmao (vendo)", "es": "Tienda minorista de telecomunicaciones", "fi": "Teleoperaattorin myymälä", "fr": "Magasin de compagnie de télécommunication", "gl": "Tenda de subministracións de telecomunicación", + "he": "חנות טלפונים", "hu": "Telekommunikációs üzlet", "it": "Negozio al dettaglio di Telefonia", "ja": "通信サービス店", "nl": "Telecomwinkel", - "pl": "Dostawca Internetu/telefonu/TV", + "pl": "Salon dostawcy usług telekomunikacyjnych", "pt": "Loja de telecomunicações", "sv": "Telekombutik" }, @@ -17101,6 +20066,14 @@ "telephone", "voice" ], + "cs": [ + "komunikace", + "poskytovatel internetové služby", + "isp", + "síť", + "telefon", + "hlas" + ], "de": [ "kommunikation", "internet service provider", @@ -17137,6 +20110,9 @@ "voix sur ip", "portable" ], + "he": [ + "חנות תקשורת" + ], "hu": [ "mobiltelefon" ], @@ -17151,6 +20127,7 @@ "telefoonwinkel" ], "pl": [ + "salon dostawcy usług telekomunikacyjnych", "dostawca internetu", "dostawca usług internetowych", "usługodawca internetowy", @@ -17190,6 +20167,7 @@ "then": { "en": "Ticket Seller", "ca": "Venedor de tiquets", + "cs": "Prodejna vstupenek", "da": "Billetsælger", "de": "Eintrittskartenverkäufer", "eo": "Biletejo", @@ -17197,12 +20175,13 @@ "fi": "Lipunmyyntipiste", "fr": "Boutique de vente de billets", "gl": "Venda de entradas", + "he": "עמדת מכירת כרטיסים", "hu": "Jegypénztár", "id": "Penjual Tiket", "it": "Biglietteria", - "ja": "チケット店", + "ja": "チケット売り場", "nl": "Ticketverkoop", - "pl": "Sprzedaż biletów", + "pl": "Kasa biletowa", "pt": "Bilheteira", "ru": "Билетная касса", "sl": "Prodajalna vstopnic", @@ -17212,6 +20191,16 @@ "en": [ "box office" ], + "cs": [ + "vstupenka", + "vstupenky", + "vstupenek", + "předprodej", + "lístek", + "lístky", + "jízdenka", + "jízdenky" + ], "da": [ "billetsælger", "billetbutik" @@ -17248,6 +20237,9 @@ "boutique de vente de billets", "billetterie" ], + "he": [ + "עמדת מכירת כרטיסים" + ], "hu": [ "koncertjegy", "színházjegy", @@ -17261,7 +20253,12 @@ "ja": [ "チケット店", "金券ショップ", - "チケット" + "チケット", + "金券店", + "切符売り場", + "きっぷ売り場", + "切符", + "チケット売り場" ], "nl": [ "toegangskaartjes", @@ -17309,6 +20306,7 @@ "then": { "en": "Tile Shop", "ca": "Botiga de rajoles", + "cs": "Obchod s obklady", "da": "Fliseforhandler", "de": "Fliesenhändler", "eo": "Kahela vendejo", @@ -17316,6 +20314,7 @@ "fi": "Laattamyymälä", "fr": "Magasin de carrelage", "gl": "Tenda de azulexos", + "he": "חנות מרצפות", "hu": "Csempebolt", "it": "Negozio di piastrelle", "ja": "タイル店", @@ -17326,6 +20325,13 @@ "sv": "Kakelbutik" }, "searchTerms": { + "ca": [ + "tenda de rajoles", + "manises", + "ceràmica", + "paret", + "taulell" + ], "da": [ "flise", "badeværelse", @@ -17360,6 +20366,9 @@ "tellas", "teselas" ], + "he": [ + "חנות מרצפות" + ], "hu": [ "burkolóanyagok" ], @@ -17373,7 +20382,10 @@ ], "ja": [ "タイル店", - "タイルショップ" + "タイルショップ", + "店舗", + "お店", + "建材店" ], "nl": [ "betegeling", @@ -17381,13 +20393,15 @@ "muurtegelwinkel" ], "pl": [ + "sklep z płytkami ceramicznymi", "płytki ceramiczne", "ceramika", "gres", "glazura", "kafelki", "płytki", - "terakota" + "terakota", + "flizy" ], "pt": [ "tijoleira", @@ -17413,6 +20427,7 @@ "then": { "en": "Tobacco Shop", "ca": "Estanc", + "cs": "Kuřácké potřeby", "da": "Tobaksforretning", "de": "Tabakwarengeschäft", "eo": "Tabaka vendejo", @@ -17420,6 +20435,7 @@ "fi": "Tupakkapuoti", "fr": "Bureau de tabac", "gl": "Estanco", + "he": "חנות טבק", "hu": "Dohánybolt", "id": "Toko Tembakau", "it": "Tabaccheria", @@ -17436,6 +20452,30 @@ "cigarettes", "cigars" ], + "ca": [ + "tabacos", + "tabacs", + "estanc", + "expeneduria", + "expendeduria", + "dispensari", + "cigarrets", + "cigars", + "fumar" + ], + "cs": [ + "kuřácké potřeby", + "potřeby pro kuřáky", + "kuřák", + "kuřáci", + "kouření", + "tabák", + "doutník", + "dýmky", + "dýmka", + "cigarety", + "cigareta" + ], "da": [ "tobaksforretning", "cigarforhandler" @@ -17464,6 +20504,9 @@ "fr": [ "buraliste" ], + "he": [ + "חנות טבק" + ], "hu": [ "nemzeti dohánybolt", "dohány", @@ -17485,12 +20528,16 @@ "嗜好品", "タバコ店", "タバコ屋", - "煙草" + "煙草", + "店舗", + "お店", + "小売" ], "nl": [ "sigarettenwinkel" ], "pl": [ + "sklep z tytoniem", "sklep tytoniowy", "tytoń", "papierosy", @@ -17544,6 +20591,7 @@ "then": { "en": "Tool Rental", "ca": "Lloguer d'eines", + "cs": "půjčovna nářadí", "da": "Værktøjsudlejning", "de": "Werkzeugverleih", "eo": "Il-pruntejo", @@ -17551,6 +20599,7 @@ "fi": "Työkaluvuokraamo", "fr": "Location d'outils", "gl": "Alugueiro de ferramentas", + "he": "השכרת כלים", "hu": "Gépkölcsönző", "it": "Noleggio utensili", "ja": "工具レンタル店", @@ -17581,6 +20630,9 @@ "outillage", "location" ], + "he": [ + "חנות להשכרת כלים" + ], "ja": [ "工具レンタル店", "工具", @@ -17590,6 +20642,7 @@ "machineverhuur" ], "pl": [ + "wypożyczalnia narzędzi", "wypożyczanie narzędzi", "wynajem narzędzi", "narzędzia", @@ -17624,6 +20677,7 @@ "then": { "en": "Toy Store", "ca": "Botiga de joguines", + "cs": "Hračkářství", "da": "Legetøjsbutik", "de": "Spielwarengeschäft", "eo": "Ludila vendejo", @@ -17631,6 +20685,7 @@ "fi": "Lelukauppa", "fr": "Magasin de jouets", "gl": "Tenda de xoguetes", + "he": "חנות צעצועים", "hu": "Játékbolt", "id": "Toko Mainan", "it": "Negozio di giocattoli", @@ -17644,13 +20699,19 @@ }, "searchTerms": { "en": [ - "games" + "games", + "hobby", + "teddy" ], "ca": [ "botiga de joguines", "botiga de jocs", "joguineria" ], + "cs": [ + "hračky", + "hry" + ], "da": [ "legetøjsforretning", "legetøjsbutik" @@ -17676,6 +20737,9 @@ "fr": [ "magasin de jouets" ], + "he": [ + "חנות צעצועים" + ], "hu": [ "barbie", "lego", @@ -17700,8 +20764,9 @@ "speelgoedwinkel" ], "pl": [ - "zabawki", - "sklep zabawkarski" + "sklep z zabawkami", + "sklep zabawkarski", + "zabawki" ], "pt": [ "brinquedos", @@ -17730,12 +20795,14 @@ "if": "shop=trade", "then": { "en": "Trade Shop", + "cs": "Stavebniny", "da": "Brancheforhandler", "de": "Baustoffhandel", "eo": "Pogranda vendejo (konstruaĵ‑materialoj)", "es": "Tienda comercial / Corralón", "fr": "Grossiste", "gl": "Distribuidor", + "he": "חנות קמעונאית", "hu": "Szakáruház", "it": "Materiali da edilizia", "ja": "建築資材店", @@ -17803,6 +20870,9 @@ "tenda comercial", "distribuidora" ], + "he": [ + "חנות מוצרים" + ], "it": [ "materiali edilizi", "edilizia", @@ -17816,7 +20886,16 @@ "建築資材店", "工務店", "建材店", - "配管工" + "配管工", + "材木", + "セメント", + "建材", + "レンガ", + "店舗", + "お店", + "住宅", + "住宅設備", + "建築" ], "nl": [ "bouwmaterialenwinkel", @@ -17834,10 +20913,13 @@ "plankenhandel" ], "pl": [ + "skład materiałów budowlanych", + "sklep instalacyjny", + "sklep hydrauliczny", "skład drewna", "skład budowlany", "hurtownia budowlana", - "skład opału" + "materiały instalacyjne" ], "pt": [ "construção", @@ -17882,6 +20964,7 @@ "then": { "en": "Travel Agency", "ca": "Agència de viatges", + "cs": "Cestovní kancelář", "da": "Rejsebureau", "de": "Reisebüro", "eo": "Vojaĝa oficejo", @@ -17889,6 +20972,7 @@ "fi": "Matkatoimisto", "fr": "Agence de voyages", "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", "hu": "Utazási iroda", "id": "Biro Perjalanan", "it": "Agenzia di viaggi", @@ -17911,6 +20995,12 @@ "ca": [ "agència de viatges" ], + "cs": [ + "cestovní kancelář", + "cestovka", + "cestování", + "dovolená" + ], "da": [ "rejsebureau", "rejseagent" @@ -17932,9 +21022,15 @@ "viajes", "turismo" ], + "fi": [ + "matkatoimisto" + ], "fr": [ "agence de voyage" ], + "he": [ + "סוכנות נסיעות" + ], "hu": [ "ibusz", "vista", @@ -17962,6 +21058,7 @@ "reisbureau" ], "pl": [ + "biuro podróży", "podróże" ], "pt": [ @@ -18004,17 +21101,21 @@ "then": { "en": "Trophy Shop", "ca": "Botiga de trofeus", + "cs": "Prodejna trofejí", + "da": "Trofæbutik", "de": "Trophäengeschäft", "eo": "Vendejo de pokaloj kaj premioj", "es": "Tienda de trofeos", "fr": "Magasin de trophées", "gl": "Tenda de trofeos", + "he": "חנות מדליות", "hu": "Kupák, kitüntetések boltja", "it": "Negozio di coppe", "ja": "徽章店", "nl": "Trofeewinkel", "pl": "Sklep z trofeami", "pt": "Loja de troféus", + "ru": "Магазин наград", "sv": "Affär för troféer" }, "searchTerms": { @@ -18025,6 +21126,35 @@ "plaques", "trophy store" ], + "ca": [ + "tenda de trofeus", + "premi", + "medalla", + "placa", + "trofeu" + ], + "cs": [ + "obchod", + "prodejna", + "trofej", + "rofeje", + "poháry", + "medaile", + "diplomy", + "ocenění", + "ceny", + "rytí", + "rytiny", + "pamětní desky", + "plakety", + "rytí nápisů", + "rytec" + ], + "da": [ + "trofæbutik", + "medaljebutik", + "præmiebutik" + ], "de": [ "pokale", "trophäen", @@ -18057,6 +21187,17 @@ "coupes", "récompenses" ], + "he": [ + "חנות גביעים", + "חנות מזכרות", + "מדליות", + "גביעים", + "חריטה", + "חריטות", + "פרסים", + "מענקים", + "אליפות" + ], "hu": [ "érem" ], @@ -18116,6 +21257,7 @@ "then": { "en": "Tire Store", "ca": "Botiga de pneumàtics", + "cs": "Pneuservis", "da": "Dækforhandler", "de": "Reifenhandel", "eo": "Aerbenda vendejo", @@ -18123,6 +21265,7 @@ "fi": "Rengasliike", "fr": "Magasin de pneus", "gl": "Tenda de pneumáticos", + "he": "חנות צמיגים", "hu": "Autógumibolt", "id": "Toko Ban", "it": "Gommista", @@ -18135,6 +21278,11 @@ "sv": "Däckfirma" }, "searchTerms": { + "cs": [ + "prodejna pneumatik", + "pneumatiky", + "pneuservis" + ], "da": [ "dækforhandler" ], @@ -18156,9 +21304,17 @@ "goma", "gomería" ], + "fi": [ + "rengaskauppa", + "rengasliike", + "rengaskauppias" + ], "fr": [ "magasin de pneus" ], + "he": [ + "חנות צמיגים" + ], "hu": [ "autógumi", "gumiabroncs", @@ -18178,10 +21334,11 @@ "autoband" ], "pl": [ - "opony", + "sklep z oponami", "wulkanizacja", "wulkanizator", "wymiana opon", + "opony", "samochody" ], "pt": [ @@ -18223,6 +21380,7 @@ "then": { "en": "Vacuum Cleaner Store", "ca": "Botiga d'aspiradors", + "cs": "Obchod s vysavači", "da": "Støvsugerforhandler", "de": "Staubsaugergeschäft", "eo": "Polvosuĉila vendejo", @@ -18230,6 +21388,7 @@ "fi": "Pölynimuriliike", "fr": "Magasin d'électroménager de nettoyage", "gl": "Tenda de aspiradoras", + "he": "חנות שואבי אבק", "hu": "Porszívóbolt", "id": "Toko Pengisap Debu", "it": "Negozio di aspirapolveri", @@ -18242,6 +21401,13 @@ "sv": "Dammsugarbutik" }, "searchTerms": { + "cs": [ + "vysavač", + "vysavače", + "vysávat", + "lux", + "luxovat" + ], "da": [ "støvsugerforhandler" ], @@ -18273,6 +21439,9 @@ "aspirateur", "nettoyage" ], + "he": [ + "חנות שואבי אבק" + ], "hu": [ "porszívó", "takarítógép" @@ -18293,6 +21462,7 @@ "elektro" ], "pl": [ + "sklep z odkurzaczami", "odkurzacze" ], "pt": [ @@ -18320,32 +21490,32 @@ { "if": "shop=variety_store", "then": { - "en": "Variety Store", + "en": "Discount Store", "ca": "Botiga de tot a 100", - "da": "Spøg og skæmtbutik", + "cs": "Diskontní prodejna", + "da": "Discountbutik", "de": "Sonderpostenmarkt", - "eo": "Ĉio-po-unu-spesmilo vendejo", - "es": "Tienda de variedades o bazar", - "fi": "Halpahalli", - "fr": "Magasin à prix unique ou à bas prix", - "gl": "Tenda de variedades ou bazar", - "hu": "100 forintos bolt", - "id": "Toserba", - "it": "Negozio a prezzo fisso", - "ja": "雑貨店(低価格)", - "nl": "Euroshop", - "pl": "Sklep z różnościami", + "es": "Tienda de saldos / variedades", + "fi": "Halpatavaramyymälä", + "fr": "Magasin discount", + "he": "חנות מוזלת", + "hu": "Diszkont üzlet", + "id": "Toko Diskon", + "ja": "均一価格店", + "nl": "Discountwinkel", + "pl": "Sklep dyskontowy", "pt": "Loja de variedades", "ru": "Товары по одной цене", - "sl": "Trgovina z mešanim blagom", "sv": "Fyndbutik" }, "searchTerms": { - "ca": [ - "basar" + "en": [ + "five and dime", + "five and ten" ], - "da": [ - "spøg og skæmtbutik" + "cs": [ + "za pár babek", + "za bura" ], "de": [ "ein-euro-geschäft", @@ -18356,79 +21526,57 @@ "restpostenmarkt", "billigladen" ], - "eo": [ - "ĉiopounuspesmilo", - "eŭrovendejo", - "euroshop", - "diversaĵoj", - "ĉio po unu" - ], "es": [ - "variedad", + "de saldos", + "variedades", "bazar", "tienda de todo a", "todo a", "todo por" ], - "fi": [ - "tokmanni", - "hintamyymälä", - "halpa", - "halpatalo", - "halpamyymälä", - "säästömyymälä", - "säästö", - "kauppa", - "myymälä", - "putiikki", - "liike" - ], "fr": [ - "épicerie", - "hard-discount" - ], - "gl": [ - "bazar", - "todo a cen", - "todo a 100", - "variedades" - ], - "hu": [ - "olcsó áruk boltja", - "1 eurós bolt" - ], - "it": [ - "articoli a basso costo", - "tutto a" + "magasin", + "bas prix", + "prix bas", + "discount" ], "ja": [ + "雑貨店(低価格)", + "安物雑貨店", "雑貨店", + "バラエティ雑貨店", + "ディスカウントストア", "100円ショップ", - "バラエティストア", - "百均", + "100円均一ショップ", + "100均", + "雑貨", "日用雑貨", - "買い物", - "ショッピング", - "ディスカウント", - "100均" + "生活雑貨", + "100円" ], "nl": [ - "variety store" + "discounter", + "action" ], "pl": [ + "sklep dyskontowy", "sklep z różnościami", "różności", + "wszystko za złotych", "bibeloty", "pamiątki", "prezenty", - "gadżety" + "gadżety", + "dyskont" ], "pt": [ "loja dos 300", "loja dos trezentos", "bijuterias", "adereços", - "quinquilharia" + "quinquilharia", + "chineses", + "chinês" ], "ru": [ "товары по одной цене", @@ -18438,9 +21586,6 @@ "фикспрайс", "fix price" ], - "sl": [ - "vse za _ _ _ €" - ], "sv": [ "fyndbutik", "billigt", @@ -18461,6 +21606,7 @@ "then": { "en": "Video Store", "ca": "Botiga de vídeos", + "cs": "Video obchod", "da": "Videobutik", "de": "Videothek", "eo": "Filma vendejo/pruntejo", @@ -18468,12 +21614,13 @@ "fi": "Videovuokraamo", "fr": "Vidéo-club", "gl": "Videoclube", + "he": "חנות סרטים", "hu": "Videófilmbolt vagy -kölcsönző", "id": "Toko Video", "it": "Videoteca", - "ja": "ビデオソフト店", + "ja": "ビデオ店", "nl": "Videotheek", - "pl": "Sklep/wypożyczalnia z filmami wideo/dvd", + "pl": "Sklep/wypożyczalnia z filmami", "pt": "Videoclube", "ru": "Видеомагазин", "sl": "Videoteka", @@ -18482,6 +21629,7 @@ "searchTerms": { "en": [ "dvd", + "hobby", "vhs", "video cassette", "video casette" @@ -18489,6 +21637,12 @@ "ca": [ "videoclub" ], + "cs": [ + "videopůjčovna", + "videokazety", + "videokazeta", + "dvd" + ], "da": [ "videobutik", "videoforretning", @@ -18516,6 +21670,9 @@ "fr": [ "club vidéo" ], + "he": [ + "חנות סרטים" + ], "hu": [ "dvd", "videokazetta", @@ -18534,7 +21691,10 @@ "ja": [ "ビデオソフト店", "dvd店", - "娯楽" + "娯楽", + "レンタルビデオ店", + "ビデオ", + "ビデオレンタル" ], "nl": [ "videoverhuur", @@ -18544,10 +21704,10 @@ "pl": [ "sklep z filmami", "wypożyczalnia filmów", - "filmy wideo", - "filmy video", - "filmy dvd", - "filmy blu-ray", + "filmy", + "video", + "dvd", + "blu-ray", "vhs" ], "pt": [ @@ -18585,6 +21745,7 @@ "then": { "en": "Video Game Store", "ca": "Botiga de videojocs", + "cs": "Obchod s videohrami", "da": "Videospilbutik", "de": "Videospielgeschäft", "eo": "Videoluda vendejo", @@ -18592,6 +21753,7 @@ "fi": "Videopeliliike", "fr": "Magasin de location et vente de jeux vidéo", "gl": "Tenda de videoxogos", + "he": "חנות למשחקי מחשב", "hu": "Videojátékbolt", "id": "Toko Permainan Video", "it": "Negozio di videogiochi", @@ -18604,6 +21766,19 @@ "sv": "TV-spel" }, "searchTerms": { + "en": [ + "hobby" + ], + "cs": [ + "videohry", + "video hry", + "video hra", + "videohra", + "herní konzole", + "počítačové hry", + "game", + "games" + ], "da": [ "videospilbutik", "videospilforretning", @@ -18641,6 +21816,9 @@ "fr": [ "magasin de location et vente de jeux vidéo" ], + "he": [ + "חנות למשחקי מחשב" + ], "hu": [ "pc-s játék", "konzolos játék", @@ -18705,7 +21883,8 @@ "if": "shop=watches", "then": { "en": "Watches Shop", - "ca": "Òptica", + "ca": "Botiga de rellotges", + "cs": "Hodinářství", "da": "Urbutik", "de": "Uhrengeschäft", "eo": "Horloĝa vendejo", @@ -18713,6 +21892,7 @@ "fi": "Kellokauppa", "fr": "Magasin de montres", "gl": "Reloxaría", + "he": "שען", "hu": "Órabolt (karóra)", "it": "Negozio di orologi", "ja": "腕時計店", @@ -18725,11 +21905,19 @@ }, "searchTerms": { "ca": [ - "botiga d'ulleres" + "tenda de rellotges", + "botiga de relonges", + "tenda de relonges" + ], + "cs": [ + "hodiny", + "hodinky", + "čas" ], "da": [ "urbutik", - "urmager" + "urmager", + "urhandler" ], "de": [ "uhrengeschäft", @@ -18759,6 +21947,9 @@ "horloger", "vente de montres" ], + "he": [ + "שענית" + ], "hu": [ "órabolt", "órás" @@ -18775,13 +21966,18 @@ ], "ja": [ "腕時計店", - "時計" + "時計", + "店舗", + "お店", + "ショッピング", + "小売" ], "nl": [ "uurwerkwinkel", "klokkenwinkel" ], "pl": [ + "sklep z zegarkami", "zegarek", "zegarki" ], @@ -18830,21 +22026,33 @@ "then": { "en": "Drinking Water Shop", "ca": "Botiga d'aigua potable", + "cs": "Obchod s pitnou vodou", + "da": "Drikkevandsbutik", "de": "Trinkwasserladen", "eo": "Trinkakv-vendejo", "es": "Tienda de agua potable", "fi": "Juomavesikauppa", "fr": "Magasin d'eau potable", "gl": "Tenda de auga potábel", + "he": "חנות מי שתייה", "hu": "Ivóvíz-bolt", "it": "Negozio di acqua da bere", "ja": "飲料水店", "nl": "Drinkwaterwinkel", "pl": "Sklep z wodą pitną", "pt": "Loja de água potável", + "ru": "Магазин питьевой воды", "sv": "Affär för dricksvatten" }, "searchTerms": { + "ca": [ + "tenda d'aigua potable", + "aigua", + "beure", + "sed", + "beguda", + "potable" + ], "de": [ "trinkwasserladen" ], @@ -18869,6 +22077,15 @@ "bebible", "potábel" ], + "he": [ + "מי שתייה", + "מים", + "מינרליים", + "נביעה", + "מי עדן", + "נביעות", + "עין גדי" + ], "it": [ "acqua potabile", "bere", @@ -18896,6 +22113,7 @@ "waterflessenwinkel" ], "pl": [ + "sklep z wodą pitną", "woda", "pitna" ], @@ -18919,6 +22137,7 @@ "then": { "en": "Watersport/Swim Shop", "ca": "Botiga d'esports aquàtics", + "cs": "Plavecké potřeby", "da": "Svømmesport/Svømmeudstyrsbutik", "de": "Wassersportgeschäft", "eo": "Akvosport-aparata vendejo", @@ -18926,6 +22145,7 @@ "fi": "Vesiurheiluliike", "fr": "Vente d'équipements et d'articles pour sports nautiques", "gl": "Tenda de deportes acuáticos / natación", + "he": "חנות שחייה", "hu": "Vízisport-bolt", "id": "Toko Renang/Olahraga Air", "it": "Negozio per sport acquatici", @@ -18937,6 +22157,23 @@ "sv": "Vattensport/simning" }, "searchTerms": { + "ca": [ + "tenda d'esports aquàtics", + "aigua", + "natació", + "nadar", + "piscina", + "mar" + ], + "cs": [ + "plavecké potřeby", + "plavání", + "plavec", + "plavce", + "plavky", + "plavecké", + "plavecký" + ], "da": [ "svømmesport", "svømmeudstyrsbutik" @@ -18983,6 +22220,9 @@ "neopreno", "auga" ], + "he": [ + "חנות שחיה" + ], "hu": [ "kajak", "csónak", @@ -19002,7 +22242,9 @@ "スポーツ", "運動", "競技", - "トレーニング" + "トレーニング", + "店舗", + "お店" ], "nl": [ "watersportwinkel", @@ -19047,6 +22289,7 @@ "then": { "en": "Weapon Shop", "ca": "Armeria", + "cs": "Zbraně a střelivo", "da": "Våbenbutik", "de": "Waffengeschäft", "eo": "Armila vendejo", @@ -19054,6 +22297,7 @@ "fi": "Aseliike", "fr": "Armurerie", "gl": "Armaría", + "he": "חנות נשק קר", "hu": "Fegyverbolt", "id": "Toko Senjata", "it": "Armeria", @@ -19072,6 +22316,25 @@ "knife", "knives" ], + "ca": [ + "botiga d'armes", + "tenda d'armes", + "gavinets", + "ganivets", + "pistola", + "munició", + "armes" + ], + "cs": [ + "zbraně", + "střelivo", + "pistole", + "pušky", + "puška", + "nůž", + "nože", + "army" + ], "da": [ "våbenbutik", "våbenforretning", @@ -19109,6 +22372,9 @@ "fr": [ "armurerie" ], + "he": [ + "חנות כלי נשק קרים" + ], "hu": [ "kés", "lőfegyver", @@ -19127,13 +22393,15 @@ "pistole" ], "ja": [ - "銃砲店" + "銃砲店", + "武器屋" ], "nl": [ "wapens", "munitie" ], "pl": [ + "sklep z bronią", "broń", "militaria", "amunicja", @@ -19176,12 +22444,14 @@ "if": "shop=wholesale", "then": { "en": "Wholesale Store", + "cs": "Velkoobchodní sklad", "de": "Großhandel", "eo": "Pogranda vendejo", "es": "Almacén al por mayor", "fi": "Tukkukauppa", "fr": "Commerce de gros", "gl": "Almacén ó por maior", + "he": "חנות סיטונאות", "hu": "Nagykereskedés", "it": "Grossista", "ja": "卸売店", @@ -19196,6 +22466,10 @@ "warehouse club", "cash and carry" ], + "cs": [ + "skladiště", + "zaplať a odvez" + ], "de": [ "großhandelsgeschäft", "großhändler" @@ -19214,6 +22488,9 @@ "lot", "entrepôt" ], + "he": [ + "חנות סיטונאות" + ], "it": [ "negozio di commercio all'ingrosso" ], @@ -19268,17 +22545,22 @@ "if": "shop=wigs", "then": { "en": "Wig Shop", + "ca": "Botiga de perruqes", + "cs": "Paruky", + "da": "Parykbutik", "de": "Perückenladen", "eo": "Vendejo de perukoj", "es": "Tienda de pelucas", "fr": "Magasin de perruques", "gl": "Tenda de perrucas", + "he": "חנות פיאות", "hu": "Paróka-szaküzlet", "it": "Negozio di parrucche", "ja": "かつら店", "nl": "Pruikenwinkel", "pl": "Sklep z perukami", "pt": "Loja de perucas", + "ru": "Магазин париков", "sv": "Affär för peruker" }, "searchTerms": { @@ -19286,6 +22568,26 @@ "hair extensions", "hair extentions" ], + "ca": [ + "tenda de perruques", + "extensions de monyo", + "extensions de pèl", + "monyo", + "pèl", + "calb", + "calva" + ], + "cs": [ + "obchod s parukami", + "paruky", + "paruka", + "tupé", + "vlásenkář", + "vlásenkáři", + "příčesky", + "příčesek", + "vlasy" + ], "de": [ "haarverlängerung", "perücken", @@ -19308,6 +22610,15 @@ "postiche", "extensions de cheveux" ], + "he": [ + "חרדיות", + "פאה", + "סרטן", + "פיאה", + "שיער מלאכותי", + "שיער", + "תוספות שיער" + ], "it": [ "capelli", "estensioni", @@ -19323,7 +22634,8 @@ "お店", "ショッピング", "小売", - "装飾品" + "装飾品", + "頭髪" ], "nl": [ "toupetwinkel" @@ -19361,6 +22673,7 @@ "then": { "en": "Window Blind Store", "ca": "Botiga de persianes", + "cs": "Obchod s roletami", "da": "Persienneforhandler", "de": "Fensterladengeschäft", "eo": "Fenestr-kovrila vendejo", @@ -19368,6 +22681,7 @@ "fi": "Kaihdinmyymälä", "fr": "Magasin de vente de stores", "gl": "Tenda de persianas", + "he": "חנות וילונות", "hu": "Redőnybolt", "id": "Toko Kerai", "it": "Negozio di tapparelle e serrande", @@ -19380,6 +22694,12 @@ "sv": "Persienner" }, "searchTerms": { + "cs": [ + "roleta", + "rolety", + "žaluzie", + "okenice" + ], "da": [ "persienneforhandler", "persienneforretning" @@ -19417,6 +22737,9 @@ "rideau", "volet" ], + "he": [ + "חנות וילונות" + ], "hu": [ "redőny", "roló", @@ -19435,7 +22758,11 @@ ], "ja": [ "ブラインド販売店", - "家具" + "家具", + "ブラインド", + "インテリア", + "お店", + "店舗" ], "nl": [ "zonwering", @@ -19443,6 +22770,8 @@ "jaloezieën" ], "pl": [ + "sklep z żaluzjami", + "sklep z roletami", "żaluzje", "rolety" ], @@ -19474,6 +22803,7 @@ "then": { "en": "Wine Shop", "ca": "Botiga de vins", + "cs": "Vinotéka", "da": "Vinforretning", "de": "Weinhandel", "eo": "Vina vendejo", @@ -19481,6 +22811,7 @@ "fi": "Viinikauppa", "fr": "Caviste", "gl": "Tenda de viños", + "he": "חנות יינות", "hu": "Borszaküzlet", "id": "Toko Anggur", "it": "Enoteca", @@ -19495,7 +22826,16 @@ "searchTerms": { "ca": [ "celler", - "licoreria" + "licoreria", + "tenda de vins", + "bodega" + ], + "cs": [ + "vinotéka", + "víno", + "vinárna", + "vinařství", + "vino" ], "da": [ "vinforretning", @@ -19527,6 +22867,9 @@ "caviste", "vin" ], + "he": [ + "חנות יינות" + ], "hu": [ "borászat", "italbolt", @@ -19549,7 +22892,10 @@ "嗜好品", "飲み物", "店舗", - "小売" + "小売", + "お店", + "酒", + "お酒" ], "nl": [ "wijnwinkel", @@ -19558,6 +22904,7 @@ "wijnerij" ], "pl": [ + "sklep z winami", "wino", "wina" ], @@ -19607,611 +22954,619 @@ "mappings": [ { "if": "shop=boutique", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=fashion", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=vacant", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=yes", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=agrarian", - "then": "circle:white;./assets/layers/id_presets/fas-tractor.svg" - }, - { - "if": "shop=alcohol", - "then": "circle:white;./assets/layers/id_presets/fas-wine-bottle.svg" - }, - { - "if": "shop=anime", - "then": "circle:white;./assets/layers/id_presets/fas-dragon.svg" - }, - { - "if": "shop=antiques", - "then": "circle:white;./assets/layers/id_presets/temaki-furniture.svg" - }, - { - "if": "shop=appliance", - "then": "circle:white;./assets/layers/id_presets/temaki-laundry.svg" - }, - { - "if": "shop=art", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=baby_goods", - "then": "circle:white;./assets/layers/id_presets/fas-baby-carriage.svg" - }, - { - "if": "shop=bag", - "then": "circle:white;./assets/layers/id_presets/fas-suitcase-rolling.svg" - }, - { - "if": "shop=bakery", - "then": "circle:white;./assets/layers/id_presets/maki-bakery.svg" - }, - { - "if": "shop=bathroom_furnishing", - "then": "circle:white;./assets/layers/id_presets/fas-bath.svg" - }, - { - "if": "shop=beauty", - "then": "circle:white;./assets/layers/id_presets/temaki-lipstick.svg" - }, - { - "if": "shop=bed", - "then": "circle:white;./assets/layers/id_presets/maki-lodging.svg" - }, - { - "if": "shop=beverages", - "then": "circle:white;./assets/layers/id_presets/temaki-bottles.svg" - }, - { - "if": "shop=bicycle", - "then": "circle:white;./assets/layers/id_presets/maki-bicycle.svg" - }, - { - "if": "shop=boat", - "then": "circle:white;./assets/layers/id_presets/temaki-boat.svg" - }, - { - "if": "shop=bookmaker", - "then": "circle:white;./assets/layers/id_presets/temaki-money_hand.svg" - }, - { - "if": "shop=books", - "then": "circle:white;./assets/layers/id_presets/fas-book.svg" - }, - { - "if": "shop=brewing_supplies", - "then": "circle:white;./assets/layers/id_presets/temaki-storage_fermenter.svg" - }, - { - "if": "shop=butcher", - "then": "circle:white;./assets/layers/id_presets/temaki-cleaver.svg" - }, - { - "if": "shop=camera", - "then": "circle:white;./assets/layers/id_presets/fas-camera-retro.svg" - }, - { - "if": "shop=cannabis", - "then": "circle:white;./assets/layers/id_presets/fas-cannabis.svg" - }, - { - "if": "shop=car", - "then": "circle:white;./assets/layers/id_presets/maki-car.svg" - }, - { - "if": "shop=car_parts", - "then": "circle:white;./assets/layers/id_presets/fas-car-battery.svg" - }, - { - "if": "shop=car_repair", - "then": "circle:white;./assets/layers/id_presets/maki-car-repair.svg" - }, - { - "if": "shop=caravan", - "then": "circle:white;./assets/layers/id_presets/temaki-camper_trailer.svg" - }, - { - "if": "shop=carpet", - "then": "circle:white;./assets/layers/id_presets/fas-tape.svg" - }, - { - "if": "shop=catalogue", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=charity", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=cheese", - "then": "circle:white;./assets/layers/id_presets/fas-cheese.svg" - }, - { - "if": "shop=chocolate", - "then": "circle:white;./assets/layers/id_presets/maki-confectionery.svg" - }, - { - "if": "shop=clothes", - "then": "circle:white;./assets/layers/id_presets/maki-clothing-store.svg" - }, - { - "if": "shop=coffee", - "then": "circle:white;./assets/layers/id_presets/temaki-coffee.svg" - }, - { - "if": "shop=computer", - "then": "circle:white;./assets/layers/id_presets/fas-laptop.svg" - }, - { - "if": "shop=confectionery", - "then": "circle:white;./assets/layers/id_presets/maki-confectionery.svg" - }, - { - "if": "shop=copyshop", - "then": "circle:white;./assets/layers/id_presets/fas-print.svg" - }, - { - "if": "shop=cosmetics", - "then": "circle:white;./assets/layers/id_presets/temaki-lipstick.svg" - }, - { - "if": "shop=country_store", - "then": "circle:white;./assets/layers/id_presets/fas-hat-cowboy-side.svg" - }, - { - "if": "shop=curtain", - "then": "circle:white;./assets/layers/id_presets/temaki-curtains.svg" - }, - { - "if": "shop=dairy", - "then": "circle:white;./assets/layers/id_presets/fas-cheese.svg" - }, - { - "if": "shop=deli", - "then": "circle:white;./assets/layers/id_presets/temaki-meat.svg" - }, - { - "if": "shop=department_store", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=doityourself", - "then": "circle:white;./assets/layers/id_presets/temaki-tools.svg" - }, - { - "if": "shop=doors", - "then": "circle:white;./assets/layers/id_presets/fas-door-open.svg" - }, - { - "if": "shop=dry_cleaning", - "then": "circle:white;./assets/layers/id_presets/temaki-clothes_hanger.svg" - }, - { - "if": "shop=e-cigarette", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=electrical", - "then": "circle:white;./assets/layers/id_presets/temaki-power.svg" - }, - { - "if": "shop=electronics", - "then": "circle:white;./assets/layers/id_presets/fas-plug.svg" - }, - { - "if": "shop=erotic", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=fabric", - "then": "circle:white;./assets/layers/id_presets/fas-tape.svg" - }, - { - "if": "shop=fashion_accessories", - "then": "circle:white;./assets/layers/id_presets/temaki-fashion_accessories.svg" - }, - { - "if": "shop=fireplace", - "then": "circle:white;./assets/layers/id_presets/temaki-fireplace.svg" - }, - { - "if": "shop=fishing", - "then": "circle:white;./assets/layers/id_presets/temaki-ice_fishing.svg" - }, - { - "if": "shop=flooring", - "then": "circle:white;./assets/layers/id_presets/temaki-tools.svg" - }, - { - "if": "shop=florist", - "then": "circle:white;./assets/layers/id_presets/maki-florist.svg" - }, - { - "if": "shop=frame", - "then": "circle:white;./assets/layers/id_presets/fas-vector-square.svg" - }, - { - "if": "shop=frozen_food", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=fuel", - "then": "circle:white;./assets/layers/id_presets/temaki-propane_tank.svg" - }, - { - "if": "shop=funeral_directors", - "then": "circle:white;./assets/layers/id_presets/maki-cemetery.svg" - }, - { - "if": "shop=furniture", - "then": "circle:white;./assets/layers/id_presets/fas-couch.svg" - }, - { - "if": "shop=games", - "then": "circle:white;./assets/layers/id_presets/fas-dice.svg" - }, - { - "if": "shop=garden_centre", - "then": "circle:white;./assets/layers/id_presets/maki-garden-centre.svg" - }, - { - "if": "shop=gas", - "then": "circle:white;./assets/layers/id_presets/temaki-propane_tank.svg" - }, - { - "if": "shop=general", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=gift", - "then": "circle:white;./assets/layers/id_presets/maki-gift.svg" - }, - { - "if": "shop=greengrocer", - "then": "circle:white;./assets/layers/id_presets/fas-carrot.svg" - }, - { - "if": "shop=hairdresser", - "then": "circle:white;./assets/layers/id_presets/temaki-beauty_salon.svg" - }, - { - "if": "shop=hairdresser_supply", - "then": "circle:white;./assets/layers/id_presets/temaki-hair_care.svg" - }, - { - "if": "shop=hardware", - "then": "circle:white;./assets/layers/id_presets/temaki-tools.svg" - }, - { - "if": "shop=health_food", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": "shop=hearing_aids", - "then": "circle:white;./assets/layers/id_presets/temaki-hearing_aid.svg" - }, - { - "if": "shop=herbalist", - "then": "circle:white;./assets/layers/id_presets/fas-leaf.svg" - }, - { - "if": "shop=hifi", - "then": "circle:white;./assets/layers/id_presets/temaki-speaker.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=hobby", - "then": "circle:white;./assets/layers/id_presets/fas-dragon.svg" + "then": "./assets/layers/id_presets/fas-dragon.svg" + }, + { + "if": "shop=vacant", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=yes", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=agrarian", + "then": "./assets/layers/id_presets/fas-tractor.svg" + }, + { + "if": "shop=alcohol", + "then": "./assets/layers/id_presets/fas-wine-bottle.svg" + }, + { + "if": "shop=anime", + "then": "./assets/layers/id_presets/fas-dragon.svg" + }, + { + "if": "shop=antiques", + "then": "./assets/layers/id_presets/temaki-furniture.svg" + }, + { + "if": "shop=appliance", + "then": "./assets/layers/id_presets/temaki-laundry.svg" + }, + { + "if": "shop=art", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=baby_goods", + "then": "./assets/layers/id_presets/fas-baby-carriage.svg" + }, + { + "if": "shop=bag", + "then": "./assets/layers/id_presets/fas-suitcase-rolling.svg" + }, + { + "if": "shop=bakery", + "then": "./assets/layers/id_presets/maki-bakery.svg" + }, + { + "if": "shop=bathroom_furnishing", + "then": "./assets/layers/id_presets/fas-bath.svg" + }, + { + "if": "shop=beauty", + "then": "./assets/layers/id_presets/temaki-lipstick.svg" + }, + { + "if": "shop=bed", + "then": "./assets/layers/id_presets/maki-lodging.svg" + }, + { + "if": "shop=beverages", + "then": "./assets/layers/id_presets/temaki-bottles.svg" + }, + { + "if": "shop=bicycle", + "then": "./assets/layers/id_presets/maki-bicycle.svg" + }, + { + "if": "shop=boat", + "then": "./assets/layers/id_presets/temaki-boat.svg" + }, + { + "if": "shop=bookmaker", + "then": "./assets/layers/id_presets/temaki-money_hand.svg" + }, + { + "if": "shop=books", + "then": "./assets/layers/id_presets/fas-book.svg" + }, + { + "if": "shop=brewing_supplies", + "then": "./assets/layers/id_presets/temaki-storage_fermenter.svg" + }, + { + "if": "shop=butcher", + "then": "./assets/layers/id_presets/temaki-cleaver.svg" + }, + { + "if": "shop=camera", + "then": "./assets/layers/id_presets/fas-camera-retro.svg" + }, + { + "if": "shop=cannabis", + "then": "./assets/layers/id_presets/fas-cannabis.svg" + }, + { + "if": "shop=car_parts", + "then": "./assets/layers/id_presets/fas-car-battery.svg" + }, + { + "if": "shop=car_repair", + "then": "./assets/layers/id_presets/maki-car-repair.svg" + }, + { + "if": "shop=caravan", + "then": "./assets/layers/id_presets/temaki-camper_trailer.svg" + }, + { + "if": "shop=carpet", + "then": "./assets/layers/id_presets/fas-tape.svg" + }, + { + "if": "shop=catalogue", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=charity", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=cheese", + "then": "./assets/layers/id_presets/fas-cheese.svg" + }, + { + "if": "shop=chocolate", + "then": "./assets/layers/id_presets/maki-confectionery.svg" + }, + { + "if": "shop=clothes", + "then": "./assets/layers/id_presets/maki-clothing-store.svg" + }, + { + "if": "shop=coffee", + "then": "./assets/layers/id_presets/temaki-coffee.svg" + }, + { + "if": "shop=computer", + "then": "./assets/layers/id_presets/fas-laptop.svg" + }, + { + "if": "shop=confectionery", + "then": "./assets/layers/id_presets/maki-confectionery.svg" + }, + { + "if": "shop=copyshop", + "then": "./assets/layers/id_presets/fas-print.svg" + }, + { + "if": "shop=cosmetics", + "then": "./assets/layers/id_presets/temaki-lipstick.svg" + }, + { + "if": "shop=country_store", + "then": "./assets/layers/id_presets/fas-hat-cowboy-side.svg" + }, + { + "if": "shop=curtain", + "then": "./assets/layers/id_presets/temaki-curtains.svg" + }, + { + "if": "shop=dairy", + "then": "./assets/layers/id_presets/fas-cheese.svg" + }, + { + "if": "shop=deli", + "then": "./assets/layers/id_presets/fas-jar.svg" + }, + { + "if": "shop=department_store", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=doityourself", + "then": "./assets/layers/id_presets/temaki-tools.svg" + }, + { + "if": "shop=doors", + "then": "./assets/layers/id_presets/fas-door-open.svg" + }, + { + "if": "shop=dry_cleaning", + "then": "./assets/layers/id_presets/temaki-clothes_hanger.svg" + }, + { + "if": "shop=e-cigarette", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=electrical", + "then": "./assets/layers/id_presets/temaki-power.svg" + }, + { + "if": "shop=electronics", + "then": "./assets/layers/id_presets/fas-plug.svg" + }, + { + "if": "shop=erotic", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=fabric", + "then": "./assets/layers/id_presets/fas-tape.svg" + }, + { + "if": "shop=fashion_accessories", + "then": "./assets/layers/id_presets/temaki-fashion_accessories.svg" + }, + { + "if": "shop=fireplace", + "then": "./assets/layers/id_presets/temaki-fireplace.svg" + }, + { + "if": "shop=fishing", + "then": "./assets/layers/id_presets/temaki-ice_fishing.svg" + }, + { + "if": "shop=flooring", + "then": "./assets/layers/id_presets/temaki-tools.svg" + }, + { + "if": "shop=florist", + "then": "./assets/layers/id_presets/maki-florist.svg" + }, + { + "if": "shop=frame", + "then": "./assets/layers/id_presets/fas-vector-square.svg" + }, + { + "if": "shop=fuel", + "then": "./assets/layers/id_presets/temaki-propane_tank.svg" + }, + { + "if": "shop=funeral_directors", + "then": "./assets/layers/id_presets/maki-cemetery.svg" + }, + { + "if": "shop=furniture", + "then": "./assets/layers/id_presets/fas-couch.svg" + }, + { + "if": "shop=games", + "then": "./assets/layers/id_presets/fas-dice.svg" + }, + { + "if": "shop=garden_centre", + "then": "./assets/layers/id_presets/maki-garden-centre.svg" + }, + { + "if": "shop=gas", + "then": "./assets/layers/id_presets/temaki-propane_tank.svg" + }, + { + "if": "shop=general", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=gift", + "then": "./assets/layers/id_presets/maki-gift.svg" + }, + { + "if": "shop=greengrocer", + "then": "./assets/layers/id_presets/fas-carrot.svg" + }, + { + "if": "shop=hairdresser", + "then": "./assets/layers/id_presets/temaki-beauty_salon.svg" + }, + { + "if": "shop=hairdresser_supply", + "then": "./assets/layers/id_presets/temaki-hair_care.svg" + }, + { + "if": "shop=hardware", + "then": "./assets/layers/id_presets/temaki-tools.svg" + }, + { + "if": "shop=health_food", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": "shop=hearing_aids", + "then": "./assets/layers/id_presets/temaki-hearing_aid.svg" + }, + { + "if": "shop=herbalist", + "then": "./assets/layers/id_presets/fas-leaf.svg" + }, + { + "if": "shop=hifi", + "then": "./assets/layers/id_presets/temaki-speaker.svg" + }, + { + "if": "shop=honey", + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=household_linen", - "then": "circle:white;./assets/layers/id_presets/temaki-cloth.svg" + "then": "./assets/layers/id_presets/temaki-cloth.svg" }, { "if": "shop=houseware", - "then": "circle:white;./assets/layers/id_presets/fas-blender.svg" + "then": "./assets/layers/id_presets/fas-blender.svg" }, { "if": "shop=hunting", - "then": "circle:white;./assets/layers/id_presets/temaki-bow_and_arrow.svg" + "then": "./assets/layers/id_presets/temaki-bow_and_arrow.svg" }, { "if": "shop=interior_decoration", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=jewelry", - "then": "circle:white;./assets/layers/id_presets/maki-jewelry-store.svg" + "then": "./assets/layers/id_presets/maki-jewelry-store.svg" }, { "if": "shop=kiosk", - "then": "circle:white;./assets/layers/id_presets/fas-store.svg" + "then": "./assets/layers/id_presets/fas-store.svg" }, { "if": "shop=kitchen", - "then": "circle:white;./assets/layers/id_presets/temaki-kitchen_sink.svg" + "then": "./assets/layers/id_presets/temaki-kitchen_sink.svg" }, { "if": "shop=laundry", - "then": "circle:white;./assets/layers/id_presets/temaki-laundry.svg" + "then": "./assets/layers/id_presets/temaki-laundry.svg" }, { "if": "shop=leather", - "then": "circle:white;./assets/layers/id_presets/temaki-handbag.svg" + "then": "./assets/layers/id_presets/temaki-handbag.svg" }, { "if": "shop=lighting", - "then": "circle:white;./assets/layers/id_presets/temaki-desk_lamp.svg" + "then": "./assets/layers/id_presets/temaki-desk_lamp.svg" }, { "if": "shop=locksmith", - "then": "circle:white;./assets/layers/id_presets/fas-key.svg" + "then": "./assets/layers/id_presets/fas-key.svg" }, { "if": "shop=mall", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=massage", - "then": "circle:white;./assets/layers/id_presets/temaki-spa.svg" + "then": "./assets/layers/id_presets/temaki-spa.svg" }, { "if": "shop=medical_supply", - "then": "circle:white;./assets/layers/id_presets/fas-crutch.svg" + "then": "./assets/layers/id_presets/fas-crutch.svg" }, { "if": "shop=military_surplus", - "then": "circle:white;./assets/layers/id_presets/temaki-military.svg" + "then": "./assets/layers/id_presets/temaki-military.svg" }, { "if": "shop=model", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=money_lender", - "then": "circle:white;./assets/layers/id_presets/temaki-money_hand.svg" + "then": "./assets/layers/id_presets/temaki-money_hand.svg" }, { "if": "shop=motorcycle", - "then": "circle:white;./assets/layers/id_presets/fas-motorcycle.svg" + "then": "./assets/layers/id_presets/fas-motorcycle.svg" }, { "if": "shop=motorcycle_repair", - "then": "circle:white;./assets/layers/id_presets/temaki-motorcycle_repair.svg" + "then": "./assets/layers/id_presets/temaki-motorcycle_repair.svg" }, { "if": "shop=music", - "then": "circle:white;./assets/layers/id_presets/fas-compact-disc.svg" + "then": "./assets/layers/id_presets/fas-compact-disc.svg" }, { "if": "shop=musical_instrument", - "then": "circle:white;./assets/layers/id_presets/fas-guitar.svg" + "then": "./assets/layers/id_presets/fas-guitar.svg" }, { "if": "shop=newsagent", - "then": "circle:white;./assets/layers/id_presets/fas-newspaper.svg" + "then": "./assets/layers/id_presets/fas-newspaper.svg" }, { "if": "shop=nutrition_supplements", - "then": "circle:white;./assets/layers/id_presets/fas-pills.svg" + "then": "./assets/layers/id_presets/fas-pills.svg" + }, + { + "if": "shop=nuts", + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=optician", - "then": "circle:white;./assets/layers/id_presets/maki-optician.svg" + "then": "./assets/layers/id_presets/maki-optician.svg" }, { "if": "shop=outdoor", - "then": "circle:white;./assets/layers/id_presets/temaki-compass.svg" + "then": "./assets/layers/id_presets/temaki-compass.svg" }, { "if": "shop=outpost", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=paint", - "then": "circle:white;./assets/layers/id_presets/fas-paint-roller.svg" + "then": "./assets/layers/id_presets/fas-paint-roller.svg" }, { "if": "shop=party", - "then": "circle:white;./assets/layers/id_presets/temaki-balloon.svg" + "then": "./assets/layers/id_presets/temaki-balloon.svg" + }, + { + "if": "shop=pasta", + "then": "./assets/layers/id_presets/fas-plate-wheat.svg" }, { "if": "shop=pastry", - "then": "circle:white;./assets/layers/id_presets/maki-bakery.svg" + "then": "./assets/layers/id_presets/maki-bakery.svg" }, { "if": "shop=pawnbroker", - "then": "circle:white;./assets/layers/id_presets/temaki-money_hand.svg" + "then": "./assets/layers/id_presets/temaki-money_hand.svg" }, { "if": "shop=perfumery", - "then": "circle:white;./assets/layers/id_presets/temaki-perfume.svg" + "then": "./assets/layers/id_presets/temaki-perfume.svg" }, { "if": "shop=pet", - "then": "circle:white;./assets/layers/id_presets/fas-cat.svg" + "then": "./assets/layers/id_presets/fas-cat.svg" }, { "if": "shop=pet_grooming", - "then": "circle:white;./assets/layers/id_presets/temaki-pet_grooming.svg" + "then": "./assets/layers/id_presets/temaki-pet_grooming.svg" }, { "if": "shop=photo", - "then": "circle:white;./assets/layers/id_presets/fas-camera-retro.svg" + "then": "./assets/layers/id_presets/fas-camera-retro.svg" }, { "if": "shop=pottery", - "then": "circle:white;./assets/layers/id_presets/temaki-vase.svg" + "then": "./assets/layers/id_presets/temaki-vase.svg" }, { "if": "shop=printer_ink", - "then": "circle:white;./assets/layers/id_presets/fas-print.svg" + "then": "./assets/layers/id_presets/fas-print.svg" }, { "if": "shop=psychic", - "then": "circle:white;./assets/layers/id_presets/temaki-psychic.svg" + "then": "./assets/layers/id_presets/temaki-psychic.svg" }, { "if": "shop=pyrotechnics", - "then": "circle:white;./assets/layers/id_presets/temaki-rocket_firework.svg" + "then": "./assets/layers/id_presets/temaki-rocket_firework.svg" }, { "if": "shop=radiotechnics", - "then": "circle:white;./assets/layers/id_presets/fas-microchip.svg" + "then": "./assets/layers/id_presets/fas-microchip.svg" }, { "if": "shop=religion", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=rental", - "then": "circle:white;./assets/layers/id_presets/fas-dolly.svg" + "then": "./assets/layers/id_presets/fas-dolly.svg" + }, + { + "if": "shop=rice", + "then": "./assets/layers/id_presets/fas-bowl-rice.svg" }, { "if": "shop=scuba_diving", - "then": "circle:white;./assets/layers/id_presets/temaki-scuba_diving.svg" + "then": "./assets/layers/id_presets/temaki-scuba_diving.svg" }, { "if": "shop=seafood", - "then": "circle:white;./assets/layers/id_presets/temaki-fish_cleaning.svg" + "then": "./assets/layers/id_presets/temaki-fish_cleaning.svg" }, { "if": "shop=second_hand", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=sewing", - "then": "circle:white;./assets/layers/id_presets/temaki-needle_and_spool.svg" + "then": "./assets/layers/id_presets/temaki-needle_and_spool.svg" }, { "if": "shop=shoe_repair", - "then": "circle:white;./assets/layers/id_presets/temaki-hammer_shoe.svg" + "then": "./assets/layers/id_presets/temaki-hammer_shoe.svg" }, { "if": "shop=shoes", - "then": "circle:white;./assets/layers/id_presets/maki-shoe.svg" + "then": "./assets/layers/id_presets/maki-shoe.svg" }, { "if": "shop=spices", - "then": "circle:white;./assets/layers/id_presets/temaki-spice_bottle.svg" + "then": "./assets/layers/id_presets/temaki-spice_bottle.svg" }, { "if": "shop=sports", - "then": "circle:white;./assets/layers/id_presets/fas-futbol.svg" + "then": "./assets/layers/id_presets/fas-futbol.svg" }, { "if": "shop=stationery", - "then": "circle:white;./assets/layers/id_presets/fas-paperclip.svg" + "then": "./assets/layers/id_presets/fas-paperclip.svg" }, { "if": "shop=storage_rental", - "then": "circle:white;./assets/layers/id_presets/temaki-storage_rental.svg" + "then": "./assets/layers/id_presets/temaki-storage_rental.svg" }, { "if": "shop=supermarket", - "then": "circle:white;./assets/layers/id_presets/maki-grocery.svg" + "then": "./assets/layers/id_presets/maki-grocery.svg" }, { "if": "shop=tailor", - "then": "circle:white;./assets/layers/id_presets/temaki-needle_and_spool.svg" + "then": "./assets/layers/id_presets/temaki-needle_and_spool.svg" }, { "if": "shop=tattoo", - "then": "circle:white;./assets/layers/id_presets/temaki-tattoo_machine.svg" + "then": "./assets/layers/id_presets/temaki-tattoo_machine.svg" }, { "if": "shop=tea", - "then": "circle:white;./assets/layers/id_presets/maki-teahouse.svg" + "then": "./assets/layers/id_presets/maki-teahouse.svg" }, { "if": "shop=telecommunication", - "then": "circle:white;./assets/layers/id_presets/maki-telephone.svg" + "then": "./assets/layers/id_presets/maki-telephone.svg" }, { "if": "shop=tiles", - "then": "circle:white;./assets/layers/id_presets/temaki-tiling.svg" + "then": "./assets/layers/id_presets/temaki-tiling.svg" }, { "if": "shop=tobacco", - "then": "circle:white;./assets/layers/id_presets/temaki-pipe.svg" + "then": "./assets/layers/id_presets/temaki-pipe.svg" }, { "if": "shop=tool_hire", - "then": "circle:white;./assets/layers/id_presets/temaki-tools.svg" + "then": "./assets/layers/id_presets/temaki-tools.svg" }, { "if": "shop=toys", - "then": "circle:white;./assets/layers/id_presets/fas-rocket.svg" + "then": "./assets/layers/id_presets/fas-rocket.svg" }, { "if": "shop=trade", - "then": "circle:white;./assets/layers/id_presets/temaki-tools.svg" + "then": "./assets/layers/id_presets/temaki-tools.svg" }, { "if": "shop=travel_agency", - "then": "circle:white;./assets/layers/id_presets/fas-suitcase.svg" + "then": "./assets/layers/id_presets/fas-suitcase.svg" }, { "if": "shop=trophy", - "then": "circle:white;./assets/layers/id_presets/fas-trophy.svg" + "then": "./assets/layers/id_presets/fas-trophy.svg" }, { "if": "shop=tyres", - "then": "circle:white;./assets/layers/id_presets/temaki-tire.svg" + "then": "./assets/layers/id_presets/temaki-tire.svg" }, { "if": "shop=vacuum_cleaner", - "then": "circle:white;./assets/layers/id_presets/temaki-vacuum.svg" + "then": "./assets/layers/id_presets/temaki-vacuum.svg" }, { "if": "shop=variety_store", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=video", - "then": "circle:white;./assets/layers/id_presets/temaki-movie_rental.svg" + "then": "./assets/layers/id_presets/temaki-movie_rental.svg" }, { "if": "shop=video_games", - "then": "circle:white;./assets/layers/id_presets/maki-gaming.svg" + "then": "./assets/layers/id_presets/maki-gaming.svg" }, { "if": "shop=watches", - "then": "circle:white;./assets/layers/id_presets/maki-watch.svg" + "then": "./assets/layers/id_presets/maki-watch.svg" }, { "if": "shop=water", - "then": "circle:white;./assets/layers/id_presets/temaki-water_bottle.svg" + "then": "./assets/layers/id_presets/temaki-water_bottle.svg" }, { "if": "shop=weapons", - "then": "circle:white;./assets/layers/id_presets/temaki-dagger.svg" + "then": "./assets/layers/id_presets/temaki-dagger.svg" }, { "if": "shop=wholesale", - "then": "circle:white;./assets/layers/id_presets/maki-warehouse.svg" + "then": "./assets/layers/id_presets/maki-warehouse.svg" }, { "if": "shop=wigs", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" + "then": "./assets/layers/id_presets/maki-shop.svg" }, { "if": "shop=window_blind", - "then": "circle:white;./assets/layers/id_presets/temaki-window.svg" + "then": "./assets/layers/id_presets/temaki-window.svg" }, { "if": "shop=wine", - "then": "circle:white;./assets/layers/id_presets/maki-alcohol-shop.svg" + "then": "./assets/layers/id_presets/maki-alcohol-shop.svg" } ] } diff --git a/assets/layers/id_presets/license_info.json b/assets/layers/id_presets/license_info.json index 7d4e44e56..efd56dbcf 100644 --- a/assets/layers/id_presets/license_info.json +++ b/assets/layers/id_presets/license_info.json @@ -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", diff --git a/assets/layers/import_candidate/import_candidate.json b/assets/layers/import_candidate/import_candidate.json index 673eb9048..360396d25 100644 --- a/assets/layers/import_candidate/import_candidate.json +++ b/assets/layers/import_candidate/import_candidate.json @@ -15,9 +15,14 @@ "point", "centroid" ], - "icon": "square:red;", "iconSize": "15,15", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "red" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/indoors/indoors.json b/assets/layers/indoors/indoors.json index c27481488..285b896b1 100644 --- a/assets/layers/indoors/indoors.json +++ b/assets/layers/indoors/indoors.json @@ -435,43 +435,47 @@ "point", "centroid" ], - "icon": { - "mappings": [ - { - "if": { - "or": [ - "room=administration", - "room=auditorium", - "room=bedroom", - "room=chapel", - "room=class", - "room=computer", - "room=conference", - "room=crypt", - "room=kitchen", - "room=laboratory", - "room=library", - "room=locker", - "room=nursery", - "room=office", - "room=prison_cell", - "room=restaurant", - "room=security_check", - "room=sport", - "room=storage", - "room=technical", - "room=toilets", - "room=waiting" - ] - }, - "then": "./assets/layers/indoors/room_{room}.svg" - }, - { - "if": "room=toilet", - "then": "./assets/layers/indoors/room_toilets.svg" + "marker": [ + { + "icon": { + "mappings": [ + { + "if": { + "or": [ + "room=administration", + "room=auditorium", + "room=bedroom", + "room=chapel", + "room=class", + "room=computer", + "room=conference", + "room=crypt", + "room=kitchen", + "room=laboratory", + "room=library", + "room=locker", + "room=nursery", + "room=office", + "room=prison_cell", + "room=restaurant", + "room=security_check", + "room=sport", + "room=storage", + "room=technical", + "room=toilets", + "room=waiting" + ] + }, + "then": "./assets/layers/indoors/room_{room}.svg" + }, + { + "if": "room=toilet", + "then": "./assets/layers/indoors/room_toilets.svg" + } + ] } - ] - }, + } + ], "iconSize": "15,15", "anchor": "bottom" } diff --git a/assets/layers/information_board/information_board.json b/assets/layers/information_board/information_board.json index b99e3bc70..692edc3c0 100644 --- a/assets/layers/information_board/information_board.json +++ b/assets/layers/information_board/information_board.json @@ -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": [ diff --git a/assets/layers/kerbs/kerbs.json b/assets/layers/kerbs/kerbs.json index cdabae3b7..4720c71fe 100644 --- a/assets/layers/kerbs/kerbs.json +++ b/assets/layers/kerbs/kerbs.json @@ -396,27 +396,31 @@ "location": [ "point" ], - "icon": { - "render": "./assets/layers/kerbs/KerbIcon.svg", - "mappings": [ - { - "if": "kerb=raised", - "then": "./assets/layers/kerbs/raised.svg" - }, - { - "if": "kerb=lowered", - "then": "./assets/layers/kerbs/lowered.svg" - }, - { - "if": "kerb=flush", - "then": "./assets/layers/kerbs/flush.svg" - }, - { - "if": "kerb=no", - "then": "./assets/layers/kerbs/no.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/kerbs/KerbIcon.svg", + "mappings": [ + { + "if": "kerb=raised", + "then": "./assets/layers/kerbs/raised.svg" + }, + { + "if": "kerb=lowered", + "then": "./assets/layers/kerbs/lowered.svg" + }, + { + "if": "kerb=flush", + "then": "./assets/layers/kerbs/flush.svg" + }, + { + "if": "kerb=no", + "then": "./assets/layers/kerbs/no.svg" + } + ] } - ] - } + } + ] } ], "lineRendering": [ diff --git a/assets/layers/kindergarten_childcare/kindergarten_childcare.json b/assets/layers/kindergarten_childcare/kindergarten_childcare.json index 9e1656578..01fa769aa 100644 --- a/assets/layers/kindergarten_childcare/kindergarten_childcare.json +++ b/assets/layers/kindergarten_childcare/kindergarten_childcare.json @@ -186,18 +186,22 @@ } ] }, - "icon": { - "mappings": [ - { - "if": "amenity=kindergarten", - "then": "circle:white;./assets/layers/kindergarten_childcare/kindergarten.svg" - }, - { - "if": "amenity=childcare", - "then": "circle:white;./assets/layers/kindergarten_childcare/childcare.svg" + "marker": [ + { + "icon": { + "mappings": [ + { + "if": "amenity=kindergarten", + "then": "circle:white;./assets/layers/kindergarten_childcare/kindergarten.svg" + }, + { + "if": "amenity=childcare", + "then": "circle:white;./assets/layers/kindergarten_childcare/childcare.svg" + } + ] } - ] - } + } + ] } ], "lineRendering": [ diff --git a/assets/layers/last_click/last_click.json b/assets/layers/last_click/last_click.json index 9013811d9..a00392325 100644 --- a/assets/layers/last_click/last_click.json +++ b/assets/layers/last_click/last_click.json @@ -88,24 +88,28 @@ ], "pointRendering": [ { - "icon": { - "mappings": [ - { - "if": { - "and": [ - "has_note_layer=yes", - "has_presets=no" - ] - }, - "then": "./assets/svg/note.svg" - }, - { - "if": "number_of_presets=1", - "then": "{first_preset}" + "marker": [ + { + "icon": { + "mappings": [ + { + "if": { + "and": [ + "has_note_layer=yes", + "has_presets=no" + ] + }, + "then": "./assets/svg/note.svg" + }, + { + "if": "number_of_presets=1", + "then": "{first_preset}" + } + ], + "render": "
{renderings}{first_preset}
" } - ], - "render": "
{renderings}{first_preset}
" - }, + } + ], "labelCssClasses": "text-sm min-w-min px-2 rounded-full text-white opacity-65 whitespace-nowrap block-ruby", "labelCss": "background: #00000088", "label": { diff --git a/assets/layers/map/map.json b/assets/layers/map/map.json index 43a717ebd..91ca870b3 100644 --- a/assets/layers/map/map.json +++ b/assets/layers/map/map.json @@ -350,37 +350,41 @@ }, "pointRendering": [ { - "icon": { - "render": "./assets/layers/map/map.svg", - "mappings": [ - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "map_source:attribution=sticker" - ] - }, - "then": "./assets/layers/map/map-stickered.svg" - }, - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "map_source:attribution=yes" - ] - }, - "then": "./assets/layers/map/osm-logo-white-bg.svg" - }, - { - "if": { - "and": [ - "map_source=OpenStreetMap" - ] - }, - "then": "./assets/layers/map/osm-logo-buggy-attr.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/map/map.svg", + "mappings": [ + { + "if": { + "and": [ + "map_source=OpenStreetMap", + "map_source:attribution=sticker" + ] + }, + "then": "./assets/layers/map/map-stickered.svg" + }, + { + "if": { + "and": [ + "map_source=OpenStreetMap", + "map_source:attribution=yes" + ] + }, + "then": "./assets/layers/map/osm-logo-white-bg.svg" + }, + { + "if": { + "and": [ + "map_source=OpenStreetMap" + ] + }, + "then": "./assets/layers/map/osm-logo-buggy-attr.svg" + } + ] } - ] - }, + } + ], "iconSize": "50,50", "location": [ "point", diff --git a/assets/layers/maproulette/maproulette.json b/assets/layers/maproulette/maproulette.json index 90009ffea..6d4ae2e6b 100644 --- a/assets/layers/maproulette/maproulette.json +++ b/assets/layers/maproulette/maproulette.json @@ -309,43 +309,48 @@ "point", "centroid" ], - "icon": { - "render": "./assets/layers/maproulette/logomark.svg", - "mappings": [ - { - "if": "status=0", - "then": "pin:#959DFF" - }, - { - "if": "status=1", - "then": "pin:#65D2DA" - }, - { - "if": "status=2", - "then": "pin:#F7BB59" - }, - { - "if": "status=3", - "then": "pin:#F7BB59" - }, - { - "if": "status=4", - "then": "pin:#737373" - }, - { - "if": "status=5", - "then": "pin:#CCB186" - }, - { - "if": "status=6", - "then": "pin:#FF5E63" - }, - { - "if": "status=9", - "then": "pin:#FF349C" + "marker": [ + { + "icon": "pin", + "color": { + "render": "#00", + "mappings": [ + { + "if": "status=0", + "then": "#959DFF" + }, + { + "if": "status=1", + "then": "#65D2DA" + }, + { + "if": "status=2", + "then": "#F7BB59" + }, + { + "if": "status=3", + "then": "#F7BB59" + }, + { + "if": "status=4", + "then": "#737373" + }, + { + "if": "status=5", + "then": "#CCB186" + }, + { + "if": "status=6", + "then": "#FF5E63" + }, + { + "if": "status=9", + "then": "#FF349C" + } + ] } - ] - }, + } + ], "iconSize": "40,40", "anchor": "bottom" } diff --git a/assets/layers/maproulette_challenge/maproulette_challenge.json b/assets/layers/maproulette_challenge/maproulette_challenge.json index ece99bac2..93482c1d5 100644 --- a/assets/layers/maproulette_challenge/maproulette_challenge.json +++ b/assets/layers/maproulette_challenge/maproulette_challenge.json @@ -204,43 +204,67 @@ "point", "centroid" ], - "icon": { - "render": "./assets/layers/maproulette/logomark.svg", - "mappings": [ - { - "if": "mr_taskStatus=Created", - "then": "pin:#959DFF" + "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" + } + ] }, - { - "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" + "icon": { + "render": "./assets/layers/maproulette/logomark.svg", + "mappings": [ + { + "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" } diff --git a/assets/layers/maxspeed/maxspeed.json b/assets/layers/maxspeed/maxspeed.json index 0b24f9c92..5851589ad 100644 --- a/assets/layers/maxspeed/maxspeed.json +++ b/assets/layers/maxspeed/maxspeed.json @@ -175,19 +175,23 @@ ], "pointRendering": [ { - "icon": { - "render": null, - "mappings": [ - { - "if": "maxspeed~[1-9]0|1[0-4]0", - "then": "./assets/themes/maxspeed/maxspeed_{maxspeed} mph.svg" - }, - { - "if": "maxspeed~[1-9]0|1[0-4]0 mph", - "then": "./assets/themes/maxspeed/maxspeed_{maxspeed}.svg" + "marker": [ + { + "icon": { + "render": null, + "mappings": [ + { + "if": "maxspeed~[1-9]0|1[0-4]0", + "then": "./assets/themes/maxspeed/maxspeed_{maxspeed} mph.svg" + }, + { + "if": "maxspeed~[1-9]0|1[0-4]0 mph", + "then": "./assets/themes/maxspeed/maxspeed_{maxspeed}.svg" + } + ] } - ] - }, + } + ], "iconSize": "32,32", "location": [ "point", diff --git a/assets/layers/memorial/memorial.json b/assets/layers/memorial/memorial.json index d9bdc1608..4b02ed5b0 100644 --- a/assets/layers/memorial/memorial.json +++ b/assets/layers/memorial/memorial.json @@ -41,7 +41,15 @@ "centroid", "point" ], - "icon": "circle:white;./assets/layers/memorial/plaque.svg" + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/memorial/plaque.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/nature_reserve/nature_reserve.json b/assets/layers/nature_reserve/nature_reserve.json index 5666ae100..ade46110f 100644 --- a/assets/layers/nature_reserve/nature_reserve.json +++ b/assets/layers/nature_reserve/nature_reserve.json @@ -537,13 +537,17 @@ ], "pointRendering": [ { - "icon": "./assets/layers/nature_reserve/nature_reserve.svg", "iconSize": "50,50", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/nature_reserve/nature_reserve.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/note/note.json b/assets/layers/note/note.json index 12b4ae873..ee848f297 100644 --- a/assets/layers/note/note.json +++ b/assets/layers/note/note.json @@ -339,15 +339,19 @@ "point", "centroid" ], - "icon": { - "render": "note", - "mappings": [ - { - "if": "closed_at~*", - "then": "resolved" + "marker": [ + { + "icon": { + "render": "note", + "mappings": [ + { + "if": "closed_at~*", + "then": "resolved" + } + ] } - ] - }, + } + ], "iconSize": "40,40", "iconBadges": [ { diff --git a/assets/layers/observation_tower/observation_tower.json b/assets/layers/observation_tower/observation_tower.json index a947a916a..5fc382c9d 100644 --- a/assets/layers/observation_tower/observation_tower.json +++ b/assets/layers/observation_tower/observation_tower.json @@ -346,13 +346,21 @@ }, "pointRendering": [ { - "icon": "circle:white;./assets/layers/observation_tower/Tower_observation.svg", "iconSize": "40,40", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/observation_tower/Tower_observation.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/osm_community_index/osm_community_index.json b/assets/layers/osm_community_index/osm_community_index.json index ed59f62f3..5f01e66ce 100644 --- a/assets/layers/osm_community_index/osm_community_index.json +++ b/assets/layers/osm_community_index/osm_community_index.json @@ -154,12 +154,20 @@ }, "pointRendering": [ { - "icon": "pin:#6BC4F7;./assets/layers/osm_community_index/osm.svg", "iconSize": "40,40", "location": [ "point" ], - "anchor": "bottom" + "anchor": "bottom", + "marker": [ + { + "icon": "pin", + "color": "#6BC4F7" + }, + { + "icon": "./assets/layers/osm_community_index/osm.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/parcel_lockers/parcel_lockers.json b/assets/layers/parcel_lockers/parcel_lockers.json index ae95cc9fc..86b462b24 100644 --- a/assets/layers/parcel_lockers/parcel_lockers.json +++ b/assets/layers/parcel_lockers/parcel_lockers.json @@ -304,7 +304,6 @@ "deletion": true, "pointRendering": [ { - "icon": "square:white;./assets/layers/parcel_lockers/parcel_lockers.svg", "iconBadges": [ { "if": "opening_hours~*", @@ -316,7 +315,16 @@ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "white" + }, + { + "icon": "./assets/layers/parcel_lockers/parcel_lockers.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index b14e74a35..755aadccf 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -280,7 +280,6 @@ }, "pointRendering": [ { - "icon": "./assets/layers/parking/parking.svg", "iconSize": "36,36", "location": [ "point", @@ -297,7 +296,12 @@ "then": "circle:white;./assets/layers/toilet/wheelchair.svg" } ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/parking/parking.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/parking_spaces/parking_spaces.json b/assets/layers/parking_spaces/parking_spaces.json index 02417b271..e6625ae0e 100644 --- a/assets/layers/parking_spaces/parking_spaces.json +++ b/assets/layers/parking_spaces/parking_spaces.json @@ -212,15 +212,19 @@ }, "pointRendering": [ { - "icon": { - "render": "./assets/layers/parking_spaces/parking_space.svg", - "mappings": [ - { - "if": "parking_space=disabled", - "then": "./assets/layers/toilet/wheelchair.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/parking_spaces/parking_space.svg", + "mappings": [ + { + "if": "parking_space=disabled", + "then": "./assets/layers/toilet/wheelchair.svg" + } + ] } - ] - }, + } + ], "iconSize": "20,20", "location": [ "point", diff --git a/assets/layers/parking_ticket_machine/parking_ticket_machine.json b/assets/layers/parking_ticket_machine/parking_ticket_machine.json index 71c32e2ca..9ffd43854 100644 --- a/assets/layers/parking_ticket_machine/parking_ticket_machine.json +++ b/assets/layers/parking_ticket_machine/parking_ticket_machine.json @@ -91,9 +91,17 @@ "point", "centroid" ], - "icon": "square:white;./assets/layers/parking_ticket_machine/parking_tickets.svg", "iconSize": "20,20", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "white" + }, + { + "icon": "./assets/layers/parking_ticket_machine/parking_tickets.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/pedestrian_path/pedestrian_path.json b/assets/layers/pedestrian_path/pedestrian_path.json index dcea3ee5a..f396064b1 100644 --- a/assets/layers/pedestrian_path/pedestrian_path.json +++ b/assets/layers/pedestrian_path/pedestrian_path.json @@ -27,9 +27,13 @@ }, "pointRendering": [ { - "icon": "./assets/svg/bug.svg", "location": [ "point" + ], + "marker": [ + { + "icon": "./assets/svg/bug.svg" + } ] } ], diff --git a/assets/layers/pharmacy/pharmacy.json b/assets/layers/pharmacy/pharmacy.json index 6d9570aca..5c22077f4 100644 --- a/assets/layers/pharmacy/pharmacy.json +++ b/assets/layers/pharmacy/pharmacy.json @@ -173,7 +173,6 @@ "allowMove": true, "pointRendering": [ { - "icon": "./assets/layers/pharmacy/pharmacy.svg", "iconSize": "40,40", "location": [ "point", @@ -193,7 +192,12 @@ } ] }, - "anchor": "bottom" + "anchor": "bottom", + "marker": [ + { + "icon": "./assets/layers/pharmacy/pharmacy.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/physiotherapist/physiotherapist.json b/assets/layers/physiotherapist/physiotherapist.json index 90f09f3c2..880ad759e 100644 --- a/assets/layers/physiotherapist/physiotherapist.json +++ b/assets/layers/physiotherapist/physiotherapist.json @@ -70,13 +70,21 @@ "allowMove": true, "pointRendering": [ { - "icon": "circle:white;./assets/layers/physiotherapist/doctors.svg", "iconSize": "40,40", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/physiotherapist/doctors.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json index cc068fac7..ea8210b34 100644 --- a/assets/layers/picnic_table/picnic_table.json +++ b/assets/layers/picnic_table/picnic_table.json @@ -137,13 +137,21 @@ }, "pointRendering": [ { - "icon": "circle:#e6cf39;./assets/layers/picnic_table/picnic_table.svg", "iconSize": "35,35", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "#e6cf39" + }, + { + "icon": "./assets/layers/picnic_table/picnic_table.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/play_forest/play_forest.json b/assets/layers/play_forest/play_forest.json index 1811170c5..7bc37de70 100644 --- a/assets/layers/play_forest/play_forest.json +++ b/assets/layers/play_forest/play_forest.json @@ -108,13 +108,17 @@ ], "pointRendering": [ { - "icon": "./assets/layers/play_forest/icon.svg", "iconSize": "40,40", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/play_forest/icon.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json index ca73a5dab..7c088e7d3 100644 --- a/assets/layers/playground/playground.json +++ b/assets/layers/playground/playground.json @@ -601,7 +601,6 @@ }, "pointRendering": [ { - "icon": "./assets/themes/playgrounds/playground.svg", "iconBadges": [ { "if": { @@ -637,6 +636,11 @@ "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": "./assets/themes/playgrounds/playground.svg" + } ] } ], diff --git a/assets/layers/postboxes/postboxes.json b/assets/layers/postboxes/postboxes.json index d525351e3..8a71aa585 100644 --- a/assets/layers/postboxes/postboxes.json +++ b/assets/layers/postboxes/postboxes.json @@ -79,13 +79,17 @@ }, "pointRendering": [ { - "icon": "./assets/layers/postboxes/postbox.svg", "iconSize": "40,40", "location": [ "point", "centroid" ], - "anchor": "bottom" + "anchor": "bottom", + "marker": [ + { + "icon": "./assets/layers/postboxes/postbox.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/postoffices/postoffices.json b/assets/layers/postoffices/postoffices.json index 89bae5a35..19cfe957f 100644 --- a/assets/layers/postoffices/postoffices.json +++ b/assets/layers/postoffices/postoffices.json @@ -480,7 +480,6 @@ ], "pointRendering": [ { - "icon": "square:white;./assets/layers/postoffices/post_office.svg", "iconBadges": [ { "if": "opening_hours~*", @@ -496,7 +495,16 @@ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "white" + }, + { + "icon": "./assets/layers/postoffices/post_office.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/public_bookcase/public_bookcase.json b/assets/layers/public_bookcase/public_bookcase.json index eda1913ea..e2b489581 100644 --- a/assets/layers/public_bookcase/public_bookcase.json +++ b/assets/layers/public_bookcase/public_bookcase.json @@ -571,7 +571,6 @@ ], "pointRendering": [ { - "icon": "circle:#ffffff;./assets/themes/bookcases/bookcase.svg", "label": { "mappings": [ { @@ -583,6 +582,15 @@ "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": "circle", + "color": "#ffffff" + }, + { + "icon": "./assets/themes/bookcases/bookcase.svg" + } ] } ], diff --git a/assets/layers/railway_platforms/railway_platforms.json b/assets/layers/railway_platforms/railway_platforms.json index 5d5d9a398..da790d15c 100644 --- a/assets/layers/railway_platforms/railway_platforms.json +++ b/assets/layers/railway_platforms/railway_platforms.json @@ -76,7 +76,6 @@ ], "pointRendering": [ { - "icon": "./assets/themes/stations/rail-light.svg", "location": [ "point", "centroid" @@ -88,7 +87,12 @@ "then": "
{ref}
" } ] - } + }, + "marker": [ + { + "icon": "./assets/themes/stations/rail-light.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/rainbow_crossings/rainbow_crossings.json b/assets/layers/rainbow_crossings/rainbow_crossings.json index d601f9de6..0620f49ea 100644 --- a/assets/layers/rainbow_crossings/rainbow_crossings.json +++ b/assets/layers/rainbow_crossings/rainbow_crossings.json @@ -113,15 +113,19 @@ ], "pointRendering": [ { - "icon": { - "render": "./assets/themes/rainbow_crossings/crossing.svg", - "mappings": [ - { - "if": "surface:colour=rainbow", - "then": "./assets/themes/rainbow_crossings/logo.svg" + "marker": [ + { + "icon": { + "render": "./assets/themes/rainbow_crossings/crossing.svg", + "mappings": [ + { + "if": "surface:colour=rainbow", + "then": "./assets/themes/rainbow_crossings/logo.svg" + } + ] } - ] - }, + } + ], "iconSize": "40,40", "location": [ "point", diff --git a/assets/layers/reception_desk/reception_desk.json b/assets/layers/reception_desk/reception_desk.json index 40e9c8a77..a121447fb 100644 --- a/assets/layers/reception_desk/reception_desk.json +++ b/assets/layers/reception_desk/reception_desk.json @@ -115,9 +115,17 @@ "point", "centroid" ], - "icon": "circle:white;./assets/layers/reception_desk/reception_desk.svg", "iconSize": "40,40", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/reception_desk/reception_desk.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/recycling/recycling.json b/assets/layers/recycling/recycling.json index ca680037d..343b6141c 100644 --- a/assets/layers/recycling/recycling.json +++ b/assets/layers/recycling/recycling.json @@ -1135,219 +1135,6 @@ "point", "centroid" ], - "icon": { - "render": "circle:white;./assets/layers/recycling/recycling-14.svg", - "mappings": [ - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:batteries=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/batteries.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:beverage_cartons=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/beverage_cartons.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:cans=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/cans.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:clothes=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/clothes.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:cooking_oil=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/cooking_oil.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:engine_oil=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/engine_oil.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:fluorescent_tubes=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/fluorescent_tubes.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:glass=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/glass.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:glass_bottles=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/glass_bottles.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - { - "or": [ - "recycling:green_waste=yes", - "recycling:organic=yes" - ] - } - ] - }, - "then": "circle:white;./assets/layers/recycling/garden_waste.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:light_bulbs=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/light_bulbs.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:newspaper=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/newspaper.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:paper=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/paper.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:plastic_bottles=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/plastic_bottles.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:plastic_packaging=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/plastic_packaging.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:plastic=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/plastic.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:printer_cartridges=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/printer_cartridges.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:scrap_metal=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/scrap_metal.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:shoes=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/shoes.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - { - "or": [ - "recycling:small_appliances=yes", - "recycling:small_electric_appliances=yes" - ] - } - ] - }, - "then": "circle:white;./assets/layers/recycling/small_electrical_appliances.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:waste=yes" - ] - }, - "then": "circle:white;./assets/layers/waste_disposal/waste_disposal.svg" - }, - { - "if": { - "and": [ - "_waste_amount=1", - "recycling:needles=yes" - ] - }, - "then": "circle:white;./assets/layers/recycling/needles.svg" - } - ] - }, "iconBadges": [ { "if": { @@ -1566,6 +1353,223 @@ }, "then": "circle:white;./assets/layers/recycling/bicycles.svg" } + ], + "marker": [ + { + "icon": { + "render": "circle:white;./assets/layers/recycling/recycling-14.svg", + "mappings": [ + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:batteries=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/batteries.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:beverage_cartons=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/beverage_cartons.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:cans=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/cans.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:clothes=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/clothes.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:cooking_oil=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/cooking_oil.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:engine_oil=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/engine_oil.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:fluorescent_tubes=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/fluorescent_tubes.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:glass=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/glass.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:glass_bottles=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/glass_bottles.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + { + "or": [ + "recycling:green_waste=yes", + "recycling:organic=yes" + ] + } + ] + }, + "then": "circle:white;./assets/layers/recycling/garden_waste.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:light_bulbs=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/light_bulbs.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:newspaper=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/newspaper.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:paper=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/paper.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:plastic_bottles=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/plastic_bottles.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:plastic_packaging=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/plastic_packaging.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:plastic=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/plastic.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:printer_cartridges=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/printer_cartridges.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:scrap_metal=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/scrap_metal.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:shoes=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/shoes.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + { + "or": [ + "recycling:small_appliances=yes", + "recycling:small_electric_appliances=yes" + ] + } + ] + }, + "then": "circle:white;./assets/layers/recycling/small_electrical_appliances.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:waste=yes" + ] + }, + "then": "circle:white;./assets/layers/waste_disposal/waste_disposal.svg" + }, + { + "if": { + "and": [ + "_waste_amount=1", + "recycling:needles=yes" + ] + }, + "then": "circle:white;./assets/layers/recycling/needles.svg" + } + ] + } + } ] } ], diff --git a/assets/layers/school/school.json b/assets/layers/school/school.json index 440295bd6..79f15b082 100644 --- a/assets/layers/school/school.json +++ b/assets/layers/school/school.json @@ -395,7 +395,6 @@ }, "pointRendering": [ { - "icon": "circle:white;./assets/layers/school/school.svg", "label": { "mappings": [ { @@ -409,7 +408,16 @@ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/school/school.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/selected_element/selected_element.json b/assets/layers/selected_element/selected_element.json index f88785088..11d95533b 100644 --- a/assets/layers/selected_element/selected_element.json +++ b/assets/layers/selected_element/selected_element.json @@ -10,7 +10,6 @@ "source": "special", "pointRendering": [ { - "icon": "circle:red", "iconSize": "1,1", "location": [ "point", @@ -18,7 +17,13 @@ ], "css": "box-shadow: red 0 0 20px 20px; z-index: -1; height: 1px; width: 1px;", "cssClasses": "block relative rounded-full", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "red" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/shelter/shelter.json b/assets/layers/shelter/shelter.json index cc636f448..691638449 100644 --- a/assets/layers/shelter/shelter.json +++ b/assets/layers/shelter/shelter.json @@ -102,7 +102,11 @@ "point", "centroid" ], - "icon": "./assets/layers/shelter/shelter.svg" + "marker": [ + { + "icon": "./assets/layers/shelter/shelter.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 894e9424d..caef96c84 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -392,37 +392,45 @@ ], "pointRendering": [ { - "icon": { - "builtin": "id_presets.shop_rendering", - "override": { - "render": "./assets/layers/id_presets/maki-shop.svg", - "+mappings": [ - { - "#": "Layer icon rendering", - "if": "id=", - "then": "circle:white;./assets/layers/id_presets/maki-shop.svg" - }, - { - "if": { - "or": [ - "shop=vacant", - "shop=disused", - "disused:shop=yes" - ] - }, - "then": "circle:white;./assets/layers/shops/shop-disused.svg" - }, - { - "if": "craft=shoemaker", - "then": "circle:white;./assets/layers/id_presets/temaki-hammer_shoe.svg" - }, - { - "if": "craft=key_cutter", - "then": "circle:white;./assets/layers/id_presets/fas-key.svg" + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": { + "builtin": "id_presets.shop_rendering", + "override": { + "render": "./assets/layers/id_presets/maki-shop.svg", + "+mappings": [ + { + "#": "Layer icon rendering", + "if": "id=", + "then": "./assets/layers/id_presets/maki-shop.svg" + }, + { + "if": { + "or": [ + "shop=vacant", + "shop=disused", + "disused:shop=yes" + ] + }, + "then": "./assets/layers/shops/shop-disused.svg" + }, + { + "if": "craft=shoemaker", + "then": "./assets/layers/id_presets/temaki-hammer_shoe.svg" + }, + { + "if": "craft=key_cutter", + "then": "./assets/layers/id_presets/fas-key.svg" + } + ] } - ] + } } - }, + ], "iconBadges": [ { "if": "opening_hours~*", diff --git a/assets/layers/shower/shower.json b/assets/layers/shower/shower.json index bf96872e0..b31041fc8 100644 --- a/assets/layers/shower/shower.json +++ b/assets/layers/shower/shower.json @@ -231,7 +231,6 @@ }, "pointRendering": [ { - "icon": "circle:white;./assets/layers/shower/shower.svg", "location": [ "point", "centroid" @@ -241,6 +240,15 @@ "if": "opening_hours~*", "then": "icons.isOpen" } + ], + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/shower/shower.svg" + } ] } ], diff --git a/assets/layers/slow_roads/slow_roads.json b/assets/layers/slow_roads/slow_roads.json index 26963953e..45511fcda 100644 --- a/assets/layers/slow_roads/slow_roads.json +++ b/assets/layers/slow_roads/slow_roads.json @@ -257,9 +257,13 @@ }, "pointRendering": [ { - "icon": "./assets/layers/slow_roads/slow_road.svg", "location": [ "point" + ], + "marker": [ + { + "icon": "./assets/layers/slow_roads/slow_road.svg" + } ] } ], diff --git a/assets/layers/speed_camera/speed_camera.json b/assets/layers/speed_camera/speed_camera.json index d8006ecbd..adeaf0ff3 100644 --- a/assets/layers/speed_camera/speed_camera.json +++ b/assets/layers/speed_camera/speed_camera.json @@ -148,10 +148,18 @@ ], "pointRendering": [ { - "icon": "square:white;./assets/layers/speed_camera/speed_camera.svg", "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": "square", + "color": "white" + }, + { + "icon": "./assets/layers/speed_camera/speed_camera.svg" + } ] } ], diff --git a/assets/layers/speed_display/speed_display.json b/assets/layers/speed_display/speed_display.json index 6df877b05..afd22bf43 100644 --- a/assets/layers/speed_display/speed_display.json +++ b/assets/layers/speed_display/speed_display.json @@ -153,7 +153,11 @@ "point", "centroid" ], - "icon": "./assets/layers/speed_display/speed_display.svg" + "marker": [ + { + "icon": "./assets/layers/speed_display/speed_display.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/split_point/split_point.json b/assets/layers/split_point/split_point.json index da3316cae..26927e552 100644 --- a/assets/layers/split_point/split_point.json +++ b/assets/layers/split_point/split_point.json @@ -11,9 +11,17 @@ "point", "centroid" ], - "icon": "circle:white;./assets/svg/scissors.svg", "iconSize": "30,30", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/svg/scissors.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/split_road/split_road.json b/assets/layers/split_road/split_road.json index 3f3f5bfaf..25c36b9ee 100644 --- a/assets/layers/split_road/split_road.json +++ b/assets/layers/split_road/split_road.json @@ -10,9 +10,13 @@ "location": [ "point" ], - "icon": "bug", "iconSize": "30,30", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "bug" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json index 74a062edd..901ee846d 100644 --- a/assets/layers/sport_pitch/sport_pitch.json +++ b/assets/layers/sport_pitch/sport_pitch.json @@ -649,28 +649,32 @@ ], "pointRendering": [ { - "icon": { - "render": "circle:white;./assets/layers/sport_pitch/sport_pitch.svg", - "mappings": [ - { - "if": { - "or": [ - "sport=baseball", - "sport=basketball", - "sport=beachvolleyball", - "sport=boules", - "sport=skateboard", - "sport=soccer", - "sport=table_tennis", - "sport=tennis", - "sport=volleyball", - "sport=equestrian" - ] - }, - "then": "circle:white;./assets/layers/sport_pitch/{sport}.svg" + "marker": [ + { + "icon": { + "render": "circle:white;./assets/layers/sport_pitch/sport_pitch.svg", + "mappings": [ + { + "if": { + "or": [ + "sport=baseball", + "sport=basketball", + "sport=beachvolleyball", + "sport=boules", + "sport=skateboard", + "sport=soccer", + "sport=table_tennis", + "sport=tennis", + "sport=volleyball", + "sport=equestrian" + ] + }, + "then": "circle:white;./assets/layers/sport_pitch/{sport}.svg" + } + ] } - ] - }, + } + ], "iconBadges": [ { "if": { diff --git a/assets/layers/sports_centre/sports_centre.json b/assets/layers/sports_centre/sports_centre.json index 676a218d3..db7cc8a9b 100644 --- a/assets/layers/sports_centre/sports_centre.json +++ b/assets/layers/sports_centre/sports_centre.json @@ -51,7 +51,6 @@ ], "pointRendering": [ { - "icon": "circle:white;./assets/layers/sports_centre/sports_centre.svg", "iconBadges": [ { "if": "opening_hours~*", @@ -61,6 +60,15 @@ "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/sports_centre/sports_centre.svg" + } ] } ], diff --git a/assets/layers/street_lamps/street_lamps.json b/assets/layers/street_lamps/street_lamps.json index d9542c829..c37022813 100644 --- a/assets/layers/street_lamps/street_lamps.json +++ b/assets/layers/street_lamps/street_lamps.json @@ -502,7 +502,6 @@ "point", "centroid" ], - "icon": "./assets/layers/street_lamps/street_lamp.svg", "iconBadges": [ { "if": "light:colour~*", @@ -510,7 +509,12 @@ } ], "iconSize": "40,40", - "anchor": "bottom" + "anchor": "bottom", + "marker": [ + { + "icon": "./assets/layers/street_lamps/street_lamp.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/surveillance_camera/surveillance_camera.json b/assets/layers/surveillance_camera/surveillance_camera.json index ced7d76e3..935abdf9f 100644 --- a/assets/layers/surveillance_camera/surveillance_camera.json +++ b/assets/layers/surveillance_camera/surveillance_camera.json @@ -682,27 +682,31 @@ }, "pointRendering": [ { - "icon": { - "render": "./assets/themes/surveillance/logo.svg", - "mappings": [ - { - "if": "surveillance:type=ALPR", - "then": "./assets/layers/surveillance_camera/ALPR.svg" - }, - { - "if": "camera:type=dome", - "then": "./assets/themes/surveillance/dome.svg" - }, - { - "if": "_direction:leftright=right", - "then": "./assets/themes/surveillance/cam_right.svg" - }, - { - "if": "_direction:leftright=left", - "then": "./assets/themes/surveillance/cam_left.svg" + "marker": [ + { + "icon": { + "render": "./assets/themes/surveillance/logo.svg", + "mappings": [ + { + "if": "surveillance:type=ALPR", + "then": "./assets/layers/surveillance_camera/ALPR.svg" + }, + { + "if": "camera:type=dome", + "then": "./assets/themes/surveillance/dome.svg" + }, + { + "if": "_direction:leftright=right", + "then": "./assets/themes/surveillance/cam_right.svg" + }, + { + "if": "_direction:leftright=left", + "then": "./assets/themes/surveillance/cam_left.svg" + } + ] } - ] - }, + } + ], "iconSize": { "mappings": [ { diff --git a/assets/layers/tertiary_education/tertiary_education.json b/assets/layers/tertiary_education/tertiary_education.json index 98980e843..d7b3f08f8 100644 --- a/assets/layers/tertiary_education/tertiary_education.json +++ b/assets/layers/tertiary_education/tertiary_education.json @@ -202,8 +202,16 @@ } ] }, - "icon": "circle:white;./assets/layers/school/college.svg", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/school/college.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/ticket_machine/ticket_machine.json b/assets/layers/ticket_machine/ticket_machine.json index 19efc9eb2..b2f73b85f 100644 --- a/assets/layers/ticket_machine/ticket_machine.json +++ b/assets/layers/ticket_machine/ticket_machine.json @@ -94,13 +94,21 @@ "deletion": true, "pointRendering": [ { - "icon": "square:lightblue;./assets/themes/stations/public_transport_tickets.svg", "iconSize": "20,20", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "lightblue" + }, + { + "icon": "./assets/themes/stations/public_transport_tickets.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/ticket_validator/ticket_validator.json b/assets/layers/ticket_validator/ticket_validator.json index 5d6a036b6..208bb1b11 100644 --- a/assets/layers/ticket_validator/ticket_validator.json +++ b/assets/layers/ticket_validator/ticket_validator.json @@ -130,13 +130,21 @@ "deletion": true, "pointRendering": [ { - "icon": "square:green;./assets/themes/stations/public_transport_tickets.svg", "iconSize": "20,20", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "square", + "color": "green" + }, + { + "icon": "./assets/themes/stations/public_transport_tickets.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index ec2c70f6c..412af2c17 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -787,29 +787,6 @@ ], "pointRendering": [ { - "icon": { - "render": "circle:#ffffff;./assets/layers/toilet/toilets.svg", - "mappings": [ - { - "if": { - "or": [ - "wheelchair=yes", - "wheelchair=designated" - ] - }, - "then": "circle:white;./assets/layers/toilet/wheelchair.svg" - }, - { - "if": { - "or": [ - "toilets:position=urinals", - "toilets:position=urinal" - ] - }, - "then": "./assets/layers/toilet/urinal.svg" - } - ] - }, "iconBadges": [ { "if": "opening_hours~*", @@ -819,6 +796,33 @@ "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": { + "render": "circle:#ffffff;./assets/layers/toilet/toilets.svg", + "mappings": [ + { + "if": { + "or": [ + "wheelchair=yes", + "wheelchair=designated" + ] + }, + "then": "circle:white;./assets/layers/toilet/wheelchair.svg" + }, + { + "if": { + "or": [ + "toilets:position=urinals", + "toilets:position=urinal" + ] + }, + "then": "./assets/layers/toilet/urinal.svg" + } + ] + } + } ] } ], diff --git a/assets/layers/toilet_at_amenity/toilet_at_amenity.json b/assets/layers/toilet_at_amenity/toilet_at_amenity.json index c5d471338..532aae9b1 100644 --- a/assets/layers/toilet_at_amenity/toilet_at_amenity.json +++ b/assets/layers/toilet_at_amenity/toilet_at_amenity.json @@ -398,29 +398,6 @@ ], "pointRendering": [ { - "icon": { - "render": "circle:white;./assets/layers/toilet/toilets.svg", - "mappings": [ - { - "if": { - "or": [ - "toilets:wheelchair=yes", - "toilets:wheelchair=designated" - ] - }, - "then": "circle:white;./assets/layers/toilet/wheelchair.svg" - }, - { - "if": { - "or": [ - "toilets:position=urinals", - "toilets:position=urinal" - ] - }, - "then": "./assets/layers/toilet/urinal.svg" - } - ] - }, "iconBadges": [ { "if": "opening_hours~*", @@ -474,6 +451,33 @@ "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": { + "render": "circle:white;./assets/layers/toilet/toilets.svg", + "mappings": [ + { + "if": { + "or": [ + "toilets:wheelchair=yes", + "toilets:wheelchair=designated" + ] + }, + "then": "circle:white;./assets/layers/toilet/wheelchair.svg" + }, + { + "if": { + "or": [ + "toilets:position=urinals", + "toilets:position=urinal" + ] + }, + "then": "./assets/layers/toilet/urinal.svg" + } + ] + } + } ] } ], diff --git a/assets/layers/trail/trail.json b/assets/layers/trail/trail.json index 28e29bf3e..f1289388b 100644 --- a/assets/layers/trail/trail.json +++ b/assets/layers/trail/trail.json @@ -214,19 +214,23 @@ }, "pointRendering": [ { - "icon": { - "render": "./assets/layers/trail/trail.svg", - "mappings": [ - { - "if": "wheelchair=yes", - "then": "./assets/layers/trail/wheelchair.svg" - }, - { - "if": "pushchair=yes", - "then": "./assets/layers/trail/pushchair.svg" + "marker": [ + { + "icon": { + "render": "./assets/layers/trail/trail.svg", + "mappings": [ + { + "if": "wheelchair=yes", + "then": "./assets/layers/trail/wheelchair.svg" + }, + { + "if": "pushchair=yes", + "then": "./assets/layers/trail/pushchair.svg" + } + ] } - ] - }, + } + ], "iconSize": "35,35", "location": [ "point" diff --git a/assets/layers/transit_stops/transit_stops.json b/assets/layers/transit_stops/transit_stops.json index 8ea0ed98e..b4c59b434 100644 --- a/assets/layers/transit_stops/transit_stops.json +++ b/assets/layers/transit_stops/transit_stops.json @@ -440,11 +440,15 @@ "point", "centroid" ], - "icon": { - "render": "./assets/layers/transit_stops/bus_stop.svg", - "mappings": [] - }, - "label": "
{name}
" + "label": "
{name}
", + "marker": [ + { + "icon": { + "render": "./assets/layers/transit_stops/bus_stop.svg", + "mappings": [] + } + } + ] } ], "lineRendering": [] diff --git a/assets/layers/tree_node/tree_node.json b/assets/layers/tree_node/tree_node.json index 4c36a4f7a..1ae5c68a2 100644 --- a/assets/layers/tree_node/tree_node.json +++ b/assets/layers/tree_node/tree_node.json @@ -867,27 +867,35 @@ }, "pointRendering": [ { - "icon": { - "render": "circle:#ffffff;./assets/layers/tree_node/unknown.svg", - "mappings": [ - { - "if": { - "and": [ - "leaf_type=broadleaved" - ] - }, - "then": "circle:#ffffff;./assets/layers/tree_node/broadleaved.svg" - }, - { - "if": { - "and": [ - "leaf_type=needleleaved" - ] - }, - "then": "circle:#ffffff;./assets/layers/tree_node/needleleaved.svg" + "marker": [ + { + "icon": "circle", + "color": "#ffffff" + }, + { + "icon": { + "render": "./assets/layers/tree_node/unknown.svg", + "mappings": [ + { + "if": { + "and": [ + "leaf_type=broadleaved" + ] + }, + "then": "./assets/layers/tree_node/broadleaved.svg" + }, + { + "if": { + "and": [ + "leaf_type=needleleaved" + ] + }, + "then": "./assets/layers/tree_node/needleleaved.svg" + } + ] } - ] - }, + } + ], "iconSize": "40,40", "location": [ "point", diff --git a/assets/layers/vending_machine/vending_machine.json b/assets/layers/vending_machine/vending_machine.json index c5494d116..a27dc8d3c 100644 --- a/assets/layers/vending_machine/vending_machine.json +++ b/assets/layers/vending_machine/vending_machine.json @@ -683,75 +683,6 @@ "deletion": true, "pointRendering": [ { - "icon": { - "render": "./assets/layers/vending_machine/vending_machine.svg", - "mappings": [ - { - "if": "vending=drinks", - "then": "circle:white;./assets/layers/id_presets/temaki-bottles.svg" - }, - { - "if": "vending=sweets", - "then": "circle:white;./assets/layers/id_presets/maki-confectionery.svg" - }, - { - "if": "vending=food", - "then": "circle:white;./assets/layers/vending_machine/utensils.svg" - }, - { - "if": "vending=cigarettes", - "then": "circle:white;./assets/layers/vending_machine/smoking.svg" - }, - { - "if": "vending=coffee", - "then": "circle:white;./assets/layers/vending_machine/mug-saucer.svg" - }, - { - "if": "vending=water", - "then": "circle:white;./assets/layers/id_presets/temaki-water_bottle.svg" - }, - { - "if": "vending=newspapers", - "then": "circle:white;./assets/layers/id_presets/fas-newspaper.svg" - }, - { - "if": "vending=milk", - "then": "circle:white;./assets/layers/vending_machine/cow.svg" - }, - { - "if": "vending=bread", - "then": "circle:white;./assets/layers/id_presets/maki-bakery.svg" - }, - { - "if": "vending=eggs", - "then": "circle:white;./assets/layers/vending_machine/egg.svg" - }, - { - "if": "vending=cheese", - "then": "circle:white;./assets/layers/id_presets/fas-cheese.svg" - }, - { - "if": "vending=honey", - "then": "circle:white;./assets/layers/vending_machine/honey.svg" - }, - { - "if": "vending=potatoes", - "then": "circle:white;./assets/layers/vending_machine/potato.svg" - }, - { - "if": "vending=meat", - "then": "./assets/layers/id_presets/temaki-meat.svg" - }, - { - "if": "vending=flowers", - "then": "circle:white;./assets/layers/id_presets/maki-florist.svg" - }, - { - "if": "vending=condoms", - "then": "circle:white;./assets/layers/vending_machine/condom.svg" - } - ] - }, "location": [ "point", "centroid" @@ -914,6 +845,79 @@ }, "then": "circle:white;./assets/themes/stations/public_transport_tickets.svg" } + ], + "marker": [ + { + "icon": { + "render": "./assets/layers/vending_machine/vending_machine.svg", + "mappings": [ + { + "if": "vending=drinks", + "then": "circle:white;./assets/layers/id_presets/temaki-bottles.svg" + }, + { + "if": "vending=sweets", + "then": "circle:white;./assets/layers/id_presets/maki-confectionery.svg" + }, + { + "if": "vending=food", + "then": "circle:white;./assets/layers/vending_machine/utensils.svg" + }, + { + "if": "vending=cigarettes", + "then": "circle:white;./assets/layers/vending_machine/smoking.svg" + }, + { + "if": "vending=coffee", + "then": "circle:white;./assets/layers/vending_machine/mug-saucer.svg" + }, + { + "if": "vending=water", + "then": "circle:white;./assets/layers/id_presets/temaki-water_bottle.svg" + }, + { + "if": "vending=newspapers", + "then": "circle:white;./assets/layers/id_presets/fas-newspaper.svg" + }, + { + "if": "vending=milk", + "then": "circle:white;./assets/layers/vending_machine/cow.svg" + }, + { + "if": "vending=bread", + "then": "circle:white;./assets/layers/id_presets/maki-bakery.svg" + }, + { + "if": "vending=eggs", + "then": "circle:white;./assets/layers/vending_machine/egg.svg" + }, + { + "if": "vending=cheese", + "then": "circle:white;./assets/layers/id_presets/fas-cheese.svg" + }, + { + "if": "vending=honey", + "then": "circle:white;./assets/layers/vending_machine/honey.svg" + }, + { + "if": "vending=potatoes", + "then": "circle:white;./assets/layers/vending_machine/potato.svg" + }, + { + "if": "vending=meat", + "then": "./assets/layers/id_presets/temaki-meat.svg" + }, + { + "if": "vending=flowers", + "then": "circle:white;./assets/layers/id_presets/maki-florist.svg" + }, + { + "if": "vending=condoms", + "then": "circle:white;./assets/layers/vending_machine/condom.svg" + } + ] + } + } ] } ], diff --git a/assets/layers/veterinary/veterinary.json b/assets/layers/veterinary/veterinary.json index 41ba67ef9..4a981f3f4 100644 --- a/assets/layers/veterinary/veterinary.json +++ b/assets/layers/veterinary/veterinary.json @@ -99,7 +99,6 @@ "point", "centroid" ], - "icon": "./assets/layers/veterinary/vet.svg", "iconSize": "30,40", "label": { "mappings": [ @@ -115,7 +114,12 @@ "then": "icons.isOpen" } ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/veterinary/vet.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/viewpoint/viewpoint.json b/assets/layers/viewpoint/viewpoint.json index 502c71918..52537655c 100644 --- a/assets/layers/viewpoint/viewpoint.json +++ b/assets/layers/viewpoint/viewpoint.json @@ -82,12 +82,16 @@ ], "pointRendering": [ { - "icon": "./assets/layers/viewpoint/viewpoint.svg", "iconSize": "20,20", "location": [ "point" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/viewpoint/viewpoint.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/village_green/village_green.json b/assets/layers/village_green/village_green.json index ccbc5d1b6..2faf54d16 100644 --- a/assets/layers/village_green/village_green.json +++ b/assets/layers/village_green/village_green.json @@ -39,13 +39,17 @@ }, "pointRendering": [ { - "icon": "./assets/themes/playgrounds/playground.svg", "iconSize": "40,40", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/themes/playgrounds/playground.svg" + } + ] } ], "lineRendering": [ diff --git a/assets/layers/visitor_information_centre/visitor_information_centre.json b/assets/layers/visitor_information_centre/visitor_information_centre.json index d6e47af52..3ee18a9b8 100644 --- a/assets/layers/visitor_information_centre/visitor_information_centre.json +++ b/assets/layers/visitor_information_centre/visitor_information_centre.json @@ -78,13 +78,17 @@ "presets": [], "pointRendering": [ { - "icon": "./assets/layers/visitor_information_centre/information.svg", "iconSize": "40,40", "location": [ "point", "centroid" ], - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": "./assets/layers/visitor_information_centre/information.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/waste_basket/waste_basket.json b/assets/layers/waste_basket/waste_basket.json index 1d2687ab9..883ee7f56 100644 --- a/assets/layers/waste_basket/waste_basket.json +++ b/assets/layers/waste_basket/waste_basket.json @@ -390,11 +390,15 @@ }, "pointRendering": [ { - "icon": "./assets/themes/waste_basket/waste_basket.svg", "iconSize": "40,40", "anchor": "center", "location": [ "point" + ], + "marker": [ + { + "icon": "./assets/themes/waste_basket/waste_basket.svg" + } ] } ], diff --git a/assets/layers/waste_disposal/waste_disposal.json b/assets/layers/waste_disposal/waste_disposal.json index 91d3b2075..384036cf6 100644 --- a/assets/layers/waste_disposal/waste_disposal.json +++ b/assets/layers/waste_disposal/waste_disposal.json @@ -237,8 +237,16 @@ "point", "centroid" ], - "icon": "circle:white;./assets/layers/waste_disposal/waste_disposal.svg", - "iconSize": "20,20" + "iconSize": "20,20", + "marker": [ + { + "icon": "circle", + "color": "white" + }, + { + "icon": "./assets/layers/waste_disposal/waste_disposal.svg" + } + ] } ], "lineRendering": [] diff --git a/assets/layers/windturbine/windturbine.json b/assets/layers/windturbine/windturbine.json index ad24e87ba..3891eed1e 100644 --- a/assets/layers/windturbine/windturbine.json +++ b/assets/layers/windturbine/windturbine.json @@ -377,7 +377,6 @@ ], "pointRendering": [ { - "icon": "./assets/themes/openwindpowermap/wind_turbine.svg", "label": { "mappings": [ { @@ -391,6 +390,11 @@ "location": [ "point", "centroid" + ], + "marker": [ + { + "icon": "./assets/themes/openwindpowermap/wind_turbine.svg" + } ] } ], diff --git a/assets/svg/add.svg b/assets/svg/add.svg index e0ec8b41a..6bde6716f 100644 --- a/assets/svg/add.svg +++ b/assets/svg/add.svg @@ -6,4 +6,4 @@ - \ No newline at end of file + diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index d6643c1c3..8b7c2a898 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -1201,18 +1201,6 @@ "authors": [], "sources": [] }, - { - "path": "star_outline_half.svg", - "license": "TRIVIAL", - "authors": [], - "sources": [] - }, - { - "path": "star_outline_half.svg", - "license": "TRIVIAL", - "authors": [], - "sources": [] - }, { "path": "statistics.svg", "license": "CC-BY-3.0", diff --git a/assets/svg/star_outline_half.svg b/assets/svg/star_outline_half.svg deleted file mode 100644 index 8c08c6cda..000000000 --- a/assets/svg/star_outline_half.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index b4ee0b9ba..92d1c45cb 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -184,317 +184,321 @@ "point", "centroid" ], - "icon": { - "render": "teardrop:#00cc00", - "mappings": [ - { - "if": "theme=advertising", - "then": "./assets/themes/advertising/icon.svg" - }, - { - "if": "theme=aed", - "then": "./assets/themes/aed/aed.svg" - }, - { - "if": "theme=artwork", - "then": "./assets/themes/artwork/artwork.svg" - }, - { - "if": "theme=atm", - "then": "./assets/themes/atm/logo.svg" - }, - { - "if": "theme=bag", - "then": "./assets/themes/bag/logo.svg" - }, - { - "if": "theme=benches", - "then": "./assets/themes/benches/bench_poi.svg" - }, - { - "if": "theme=bicycle_rental", - "then": "./assets/themes/bicycle_rental/logo.svg" - }, - { - "if": "theme=bicyclelib", - "then": "./assets/themes/bicyclelib/logo.svg" - }, - { - "if": "theme=binoculars", - "then": "./assets/layers/binocular/telescope.svg" - }, - { - "if": "theme=blind_osm", - "then": "./assets/themes/blind_osm/Blindicon.svg" - }, - { - "if": "theme=bookcases", - "then": "./assets/themes/bookcases/bookcase.svg" - }, - { - "if": "theme=buurtnatuur", - "then": "./assets/themes/buurtnatuur/logo.svg" - }, - { - "if": "theme=cafes_and_pubs", - "then": "./assets/layers/cafe_pub/pub.svg" - }, - { - "if": "theme=campersite", - "then": "./assets/themes/campersite/caravan.svg" - }, - { - "if": "theme=charging_stations", - "then": "./assets/themes/charging_stations/logo.svg" - }, - { - "if": "theme=climbing", - "then": "./assets/themes/climbing/climbing_icon.svg" - }, - { - "if": "theme=clock", - "then": "./assets/layers/clock/clock.svg" - }, - { - "if": "theme=cycle_highways", - "then": "./assets/themes/cycle_highways/fietssnelwegen-logo.svg" - }, - { - "if": "theme=cycle_infra", - "then": "./assets/themes/cycle_infra/cycle-infra.svg" - }, - { - "if": "theme=cyclenodes", - "then": "./assets/themes/cyclenodes/logo.svg" - }, - { - "if": "theme=cyclestreets", - "then": "./assets/themes/cyclestreets/logo.svg" - }, - { - "if": "theme=cyclofix", - "then": "./assets/themes/cyclofix/logo.svg" - }, - { - "if": "theme=drinking_water", - "then": "./assets/themes/drinking_water/logo.svg" - }, - { - "if": "theme=education", - "then": "./assets/layers/school/college.svg" - }, - { - "if": "theme=elongated_coin", - "then": "./assets/themes/elongated_coin/penny.svg" - }, - { - "if": "theme=etymology", - "then": "./assets/layers/etymology/logo.svg" - }, - { - "if": "theme=facadegardens", - "then": "./assets/themes/facadegardens/geveltuin.svg" - }, - { - "if": "theme=food", - "then": "./assets/layers/food/restaurant.svg" - }, - { - "if": "theme=fritures", - "then": "./assets/themes/fritures/logo.svg" - }, - { - "if": "theme=fruit_trees", - "then": "./assets/themes/fruit_trees/fruit_tree.svg" - }, - { - "if": "theme=ghostbikes", - "then": "./assets/themes/ghostbikes/logo.svg" - }, - { - "if": "theme=grb", - "then": "./assets/themes/grb/logo.svg" - }, - { - "if": "theme=grb_fixme", - "then": "./assets/svg/bug.svg" - }, - { - "if": "theme=hackerspaces", - "then": "./assets/themes/hackerspaces/glider.svg" - }, - { - "if": "theme=hailhydrant", - "then": "./assets/themes/hailhydrant/logo.svg" - }, - { - "if": "theme=healthcare", - "then": "./assets/layers/doctors/doctors.svg" - }, - { - "if": "theme=hotels", - "then": "./assets/layers/hotel/hotel.svg" - }, - { - "if": "theme=indoors", - "then": "./assets/layers/entrance/entrance.svg" - }, - { - "if": "theme=kerbs_and_crossings", - "then": "./assets/layers/kerbs/KerbIcon.svg" - }, - { - "if": "theme=maproulette", - "then": "./assets/layers/maproulette/logomark.svg" - }, - { - "if": "theme=maps", - "then": "./assets/themes/maps/logo.svg" - }, - { - "if": "theme=maxspeed", - "then": "./assets/themes/maxspeed/maxspeed_logo.svg" - }, - { - "if": "theme=nature", - "then": "./assets/themes/nature/logo.svg" - }, - { - "if": "theme=notes", - "then": "./assets/themes/notes/logo.svg" - }, - { - "if": "theme=observation_towers", - "then": "./assets/layers/observation_tower/Tower_observation.svg" - }, - { - "if": "theme=onwheels", - "then": "./assets/themes/onwheels/crest.svg" - }, - { - "if": "theme=openwindpowermap", - "then": "./assets/themes/openwindpowermap/logo.svg" - }, - { - "if": "theme=osm_community_index", - "then": "./assets/themes/osm_community_index/osm.svg" - }, - { - "if": "theme=parkings", - "then": "./assets/themes/parkings/parkings.svg" - }, - { - "if": "theme=personal", - "then": "./assets/svg/addSmall.svg" - }, - { - "if": "theme=pets", - "then": "./assets/layers/dogpark/dog-park.svg" - }, - { - "if": "theme=play_forests", - "then": "./assets/layers/play_forest/icon.svg" - }, - { - "if": "theme=playgrounds", - "then": "./assets/themes/playgrounds/playground.svg" - }, - { - "if": "theme=postal_codes", - "then": "./assets/themes/postal_codes/townhall.svg" - }, - { - "if": "theme=postboxes", - "then": "./assets/layers/postboxes/postbox.svg" - }, - { - "if": "theme=rainbow_crossings", - "then": "./assets/themes/rainbow_crossings/logo.svg" - }, - { - "if": "theme=shops", - "then": "./assets/themes/shops/shop.svg" - }, - { - "if": "theme=sidewalks", - "then": "./assets/svg/bug.svg" - }, - { - "if": "theme=speelplekken", - "then": "./assets/themes/speelplekken/logo.svg" - }, - { - "if": "theme=sport_pitches", - "then": "./assets/layers/sport_pitch/table_tennis.svg" - }, - { - "if": "theme=sports", - "then": "./assets/themes/sports/sport.svg" - }, - { - "if": "theme=stations", - "then": "./assets/themes/stations/rail-light.svg" - }, - { - "if": "theme=street_lighting", - "then": "./assets/layers/street_lamps/street_lamp.svg" - }, - { - "if": "theme=street_lighting_assen", - "then": "./assets/layers/street_lamps/street_lamp.svg" - }, - { - "if": "theme=surveillance", - "then": "./assets/themes/surveillance/logo.svg" - }, - { - "if": "theme=toerisme_vlaanderen", - "then": "./assets/themes/toerisme_vlaanderen/logo.svg" - }, - { - "if": "theme=toilets", - "then": "./assets/themes/toilets/toilets.svg" - }, - { - "if": "theme=transit", - "then": "./assets/layers/transit_stops/bus_stop.svg" - }, - { - "if": "theme=trees", - "then": "./assets/themes/trees/logo.svg" - }, - { - "if": "theme=uk_addresses", - "then": "./assets/themes/uk_addresses/housenumber_unknown.svg" - }, - { - "if": "theme=vending_machine", - "then": "./assets/layers/vending_machine/vending_machine.svg" - }, - { - "if": "theme=walls_and_buildings", - "then": "./assets/layers/walls_and_buildings/walls_and_buildings.png" - }, - { - "if": "theme=waste", - "then": "./assets/layers/recycling/recycling-14.svg" - }, - { - "if": "theme=waste_assen", - "then": "./assets/layers/recycling/recycling-14.svg" - }, - { - "if": "theme=waste_basket", - "then": "./assets/themes/waste_basket/waste_basket.svg" - }, - { - "if": "theme=width", - "then": "./assets/themes/width/icon.svg" - } - ] - }, "iconSize": "30,30", - "anchor": "center" + "anchor": "center", + "marker": [ + { + "icon": { + "render": "teardrop:#00cc00", + "mappings": [ + { + "if": "theme=advertising", + "then": "./assets/themes/advertising/icon.svg" + }, + { + "if": "theme=aed", + "then": "./assets/themes/aed/aed.svg" + }, + { + "if": "theme=artwork", + "then": "./assets/themes/artwork/artwork.svg" + }, + { + "if": "theme=atm", + "then": "./assets/themes/atm/logo.svg" + }, + { + "if": "theme=bag", + "then": "./assets/themes/bag/logo.svg" + }, + { + "if": "theme=benches", + "then": "./assets/themes/benches/bench_poi.svg" + }, + { + "if": "theme=bicycle_rental", + "then": "./assets/themes/bicycle_rental/logo.svg" + }, + { + "if": "theme=bicyclelib", + "then": "./assets/themes/bicyclelib/logo.svg" + }, + { + "if": "theme=binoculars", + "then": "./assets/layers/binocular/telescope.svg" + }, + { + "if": "theme=blind_osm", + "then": "./assets/themes/blind_osm/Blindicon.svg" + }, + { + "if": "theme=bookcases", + "then": "./assets/themes/bookcases/bookcase.svg" + }, + { + "if": "theme=buurtnatuur", + "then": "./assets/themes/buurtnatuur/logo.svg" + }, + { + "if": "theme=cafes_and_pubs", + "then": "./assets/layers/cafe_pub/pub.svg" + }, + { + "if": "theme=campersite", + "then": "./assets/themes/campersite/caravan.svg" + }, + { + "if": "theme=charging_stations", + "then": "./assets/themes/charging_stations/logo.svg" + }, + { + "if": "theme=climbing", + "then": "./assets/themes/climbing/climbing_icon.svg" + }, + { + "if": "theme=clock", + "then": "./assets/layers/clock/clock.svg" + }, + { + "if": "theme=cycle_highways", + "then": "./assets/themes/cycle_highways/fietssnelwegen-logo.svg" + }, + { + "if": "theme=cycle_infra", + "then": "./assets/themes/cycle_infra/cycle-infra.svg" + }, + { + "if": "theme=cyclenodes", + "then": "./assets/themes/cyclenodes/logo.svg" + }, + { + "if": "theme=cyclestreets", + "then": "./assets/themes/cyclestreets/logo.svg" + }, + { + "if": "theme=cyclofix", + "then": "./assets/themes/cyclofix/logo.svg" + }, + { + "if": "theme=drinking_water", + "then": "./assets/themes/drinking_water/logo.svg" + }, + { + "if": "theme=education", + "then": "./assets/layers/school/college.svg" + }, + { + "if": "theme=elongated_coin", + "then": "./assets/themes/elongated_coin/penny.svg" + }, + { + "if": "theme=etymology", + "then": "./assets/layers/etymology/logo.svg" + }, + { + "if": "theme=facadegardens", + "then": "./assets/themes/facadegardens/geveltuin.svg" + }, + { + "if": "theme=food", + "then": "./assets/layers/food/restaurant.svg" + }, + { + "if": "theme=fritures", + "then": "./assets/themes/fritures/logo.svg" + }, + { + "if": "theme=fruit_trees", + "then": "./assets/themes/fruit_trees/fruit_tree.svg" + }, + { + "if": "theme=ghostbikes", + "then": "./assets/themes/ghostbikes/logo.svg" + }, + { + "if": "theme=grb", + "then": "./assets/themes/grb/logo.svg" + }, + { + "if": "theme=grb_fixme", + "then": "./assets/svg/bug.svg" + }, + { + "if": "theme=hackerspaces", + "then": "./assets/themes/hackerspaces/glider.svg" + }, + { + "if": "theme=hailhydrant", + "then": "./assets/themes/hailhydrant/logo.svg" + }, + { + "if": "theme=healthcare", + "then": "./assets/layers/doctors/doctors.svg" + }, + { + "if": "theme=hotels", + "then": "./assets/layers/hotel/hotel.svg" + }, + { + "if": "theme=indoors", + "then": "./assets/layers/entrance/entrance.svg" + }, + { + "if": "theme=kerbs_and_crossings", + "then": "./assets/layers/kerbs/KerbIcon.svg" + }, + { + "if": "theme=maproulette", + "then": "./assets/layers/maproulette/logomark.svg" + }, + { + "if": "theme=maps", + "then": "./assets/themes/maps/logo.svg" + }, + { + "if": "theme=maxspeed", + "then": "./assets/themes/maxspeed/maxspeed_logo.svg" + }, + { + "if": "theme=nature", + "then": "./assets/themes/nature/logo.svg" + }, + { + "if": "theme=notes", + "then": "./assets/themes/notes/logo.svg" + }, + { + "if": "theme=observation_towers", + "then": "./assets/layers/observation_tower/Tower_observation.svg" + }, + { + "if": "theme=onwheels", + "then": "./assets/themes/onwheels/crest.svg" + }, + { + "if": "theme=openwindpowermap", + "then": "./assets/themes/openwindpowermap/logo.svg" + }, + { + "if": "theme=osm_community_index", + "then": "./assets/themes/osm_community_index/osm.svg" + }, + { + "if": "theme=parkings", + "then": "./assets/themes/parkings/parkings.svg" + }, + { + "if": "theme=personal", + "then": "./assets/svg/addSmall.svg" + }, + { + "if": "theme=pets", + "then": "./assets/layers/dogpark/dog-park.svg" + }, + { + "if": "theme=play_forests", + "then": "./assets/layers/play_forest/icon.svg" + }, + { + "if": "theme=playgrounds", + "then": "./assets/themes/playgrounds/playground.svg" + }, + { + "if": "theme=postal_codes", + "then": "./assets/themes/postal_codes/townhall.svg" + }, + { + "if": "theme=postboxes", + "then": "./assets/layers/postboxes/postbox.svg" + }, + { + "if": "theme=rainbow_crossings", + "then": "./assets/themes/rainbow_crossings/logo.svg" + }, + { + "if": "theme=shops", + "then": "./assets/themes/shops/shop.svg" + }, + { + "if": "theme=sidewalks", + "then": "./assets/svg/bug.svg" + }, + { + "if": "theme=speelplekken", + "then": "./assets/themes/speelplekken/logo.svg" + }, + { + "if": "theme=sport_pitches", + "then": "./assets/layers/sport_pitch/table_tennis.svg" + }, + { + "if": "theme=sports", + "then": "./assets/themes/sports/sport.svg" + }, + { + "if": "theme=stations", + "then": "./assets/themes/stations/rail-light.svg" + }, + { + "if": "theme=street_lighting", + "then": "./assets/layers/street_lamps/street_lamp.svg" + }, + { + "if": "theme=street_lighting_assen", + "then": "./assets/layers/street_lamps/street_lamp.svg" + }, + { + "if": "theme=surveillance", + "then": "./assets/themes/surveillance/logo.svg" + }, + { + "if": "theme=toerisme_vlaanderen", + "then": "./assets/themes/toerisme_vlaanderen/logo.svg" + }, + { + "if": "theme=toilets", + "then": "./assets/themes/toilets/toilets.svg" + }, + { + "if": "theme=transit", + "then": "./assets/layers/transit_stops/bus_stop.svg" + }, + { + "if": "theme=trees", + "then": "./assets/themes/trees/logo.svg" + }, + { + "if": "theme=uk_addresses", + "then": "./assets/themes/uk_addresses/housenumber_unknown.svg" + }, + { + "if": "theme=vending_machine", + "then": "./assets/layers/vending_machine/vending_machine.svg" + }, + { + "if": "theme=walls_and_buildings", + "then": "./assets/layers/walls_and_buildings/walls_and_buildings.png" + }, + { + "if": "theme=waste", + "then": "./assets/layers/recycling/recycling-14.svg" + }, + { + "if": "theme=waste_assen", + "then": "./assets/layers/recycling/recycling-14.svg" + }, + { + "if": "theme=waste_basket", + "then": "./assets/themes/waste_basket/waste_basket.svg" + }, + { + "if": "theme=width", + "then": "./assets/themes/width/icon.svg" + } + ] + } + } + ] } ], "filter": [ diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json index 11d3e3606..81e929aa9 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json @@ -283,12 +283,16 @@ "_embedded_cs:themes=feat.get('_embedded_cs').map(cs => cs.theme)", "_embedded_cs:users=feat.get('_embedded_cs').map(cs => cs['_last_edit:contributor'])" ], - "+mapRendering": [ + "+pointRendering": [ { "location": [ "point" ], - "icon": "statistics:black", + "marker": [ + { + "icon": "statistics:black" + } + ], "iconSize": "30,30", "anchor": "center" } diff --git a/assets/themes/surveillance/surveillance.json b/assets/themes/surveillance/surveillance.json index 4e616eb45..49bfca67a 100644 --- a/assets/themes/surveillance/surveillance.json +++ b/assets/themes/surveillance/surveillance.json @@ -58,4 +58,4 @@ "layers": [ "surveillance_camera" ] -} +} \ No newline at end of file diff --git a/package.json b/package.json index c2ec128f1..c42f4f3f5 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,8 @@ "generate:licenses": "vite-node scripts/generateLicenseInfo.ts -- --no-fail", "query:licenses": "vite-node scripts/generateLicenseInfo.ts -- --query", "generate:contributor-list": "vite-node scripts/generateContributors.ts", - "generate:schemas": "ts2json-schema -p src/Models/ThemeConfig/Json/ -o Docs/Schemas/ -t tsconfig.json -R . -m \".*ConfigJson\" && vite-node scripts/fixSchemas.ts ", + "generate:schemas": "ts2json-schema -p src/Models/ThemeConfig/Json/ -o Docs/Schemas/ -t tsconfig.json -R . -m \".*ConfigJson\" && echo 'tsjson is done' && vite-node scripts/fixSchemas.ts ", + "fix:schemas": "vite-node scripts/fixSchemas.ts ", "watch:schemas": "cd Models/ThemeConfig/Json & ls | entr -s 'npm run generate:schemas' ", "generate:service-worker": "tsc src/service-worker.ts --outFile public/service-worker.js && git_hash=$(git rev-parse HEAD) && sed -i \"s/GITHUB-COMMIT/$git_hash/\" public/service-worker.js", "optimize-images": "cd assets/generated/ && find -name '*.png' -exec optipng '{}' \\; && echo 'PNGs are optimized'", diff --git a/scripts/fixSchemas.ts b/scripts/fixSchemas.ts index 3a8244ba9..5cb53d876 100644 --- a/scripts/fixSchemas.ts +++ b/scripts/fixSchemas.ts @@ -1,11 +1,11 @@ import ScriptUtils from "./ScriptUtils" import { readFileSync, writeFileSync } from "fs" import { JsonSchema } from "../src/UI/Studio/jsonSchema" -import { AllSharedLayers } from "../src/Customizations/AllSharedLayers" -import { AllKnownLayouts } from "../src/Customizations/AllKnownLayouts" import { ConfigMeta } from "../src/UI/Studio/configMeta" import { Utils } from "../src/Utils" import Validators from "../src/UI/InputElement/Validators" +import { AllKnownLayouts } from "../src/Customizations/AllKnownLayouts" +import { AllSharedLayers } from "../src/Customizations/AllSharedLayers" const metainfo = { type: "One of the inputValidator types", @@ -19,7 +19,10 @@ const metainfo = { ifunset: "Only applicable if _not_ a required item. This will appear in the 'not set'-option as extra description", inline: "A text, containing `{value}`. This will be used as freeform rendering and will be included into the rendering", - suggestions: "a javascript expression generating mappings", + suggestions: + 'a javascript expression generating mappings; executed in an environment which has access to `layers: Map` and `themes: Map`. Should return an array of type `{if: \'value=*\', then: string}[]`. Example: `return Array.from(layers.keys()).map(key => ({if: "value="+key, then: key+" - "+layers.get(key).description}))`. This code is executed at compile time, so no CSP is needed ', + title: "a title that is given to a MultiType", + multianswer: "set to 'true' if multiple options should be selectable", } /** @@ -38,13 +41,13 @@ function WalkScheme( fullScheme: JsonSchema & { definitions?: any } = undefined, path: string[] = [], isHandlingReference = [], - required: string[] + required: string[], + skipRoot = false ): { path: string[]; required: boolean; t: T }[] { const results: { path: string[]; required: boolean; t: T }[] = [] if (scheme === undefined) { return [] } - if (scheme["$ref"] !== undefined) { const ref = scheme["$ref"] const prefix = "#/definitions/" @@ -68,42 +71,48 @@ function WalkScheme( fullScheme, path, [...isHandlingReference, definitionName], - required + required, + skipRoot ) } fullScheme = fullScheme ?? scheme - let t = onEach(scheme, path) - if (t !== undefined) { - const isRequired = required?.indexOf(path.at(-1)) >= 0 - results.push({ - path, - required: isRequired, - t, - }) + if (!skipRoot) { + let t = onEach(scheme, path) + if (t !== undefined) { + const isRequired = required?.indexOf(path.at(-1)) >= 0 + results.push({ + path, + required: isRequired, + t, + }) + } } - function walk(v: JsonSchema) { + function walk(v: JsonSchema, skipRoot = false) { if (v === undefined) { return } - results.push(...WalkScheme(onEach, v, fullScheme, path, isHandlingReference, v.required)) + results.push( + ...WalkScheme(onEach, v, fullScheme, path, isHandlingReference, v.required, skipRoot) + ) } - function walkEach(scheme: JsonSchema[]) { + function walkEach(scheme: JsonSchema[], skipRoot: boolean = false) { if (scheme === undefined) { return } - scheme.forEach((v) => walk(v)) + scheme.forEach((v) => walk(v, skipRoot)) } { walkEach(scheme.enum) - walkEach(scheme.anyOf) + walkEach(scheme.anyOf, true) walkEach(scheme.allOf) if (Array.isArray(scheme.items)) { + // walk and walkEach are local functions which push to the result array walkEach(scheme.items) } else { walk(scheme.items) @@ -222,7 +231,7 @@ function addMetafields(fieldnames: string[], fullSchema: JsonSchema): ConfigMeta return { hints, type, - description: cleanedDescription.join("\n"), + description: cleanedDescription.filter((l) => l !== "").join("\n"), } } @@ -240,6 +249,7 @@ function substituteReferences( if (!Array.isArray(path.type)) { continue } + for (let i = 0; i < path.type.length; i++) { const typeElement = path.type[i] const ref = typeElement["$ref"] @@ -261,7 +271,6 @@ function substituteReferences( throw "Cannot expand reference for type " + name + "; it does not exist " } path.type[i] = target - continue } } } @@ -271,7 +280,7 @@ function validateMeta(path: ConfigMeta): string | undefined { if (path.path.length == 0) { return } - const ctx = "Definition for field in " + path.path.join(".") + const ctx = "Definition for field '" + path.path.join(".") + "'" if (path.hints.group === undefined && path.path.length == 1) { return ( ctx + @@ -288,10 +297,10 @@ function validateMeta(path: ConfigMeta): string | undefined { return undefined } if (path.hints.question === undefined && !Array.isArray(path.type)) { - return ( - ctx + - " does not have a question set. As such, MapComplete-studio users will not be able to set this property" - ) //*/ + /* return ( + ctx + + " does not have a question set. As such, MapComplete-studio users will not be able to set this property" + ) //*/ } return undefined @@ -345,7 +354,7 @@ function main() { } const errs: string[] = [] errs.push(...extractMeta("LayerConfigJson", "layerconfigmeta", allDefinitions)) - // errs.push(...extractMeta("LayoutConfigJson", "layoutconfigmeta", allDefinitions)) + errs.push(...extractMeta("LayoutConfigJson", "layoutconfigmeta", allDefinitions)) errs.push(...extractMeta("TagRenderingConfigJson", "tagrenderingconfigmeta", allDefinitions)) errs.push( ...extractMeta( diff --git a/scripts/generateIncludedImages.ts b/scripts/generateIncludedImages.ts index 5d5295b0a..083440c1e 100644 --- a/scripts/generateIncludedImages.ts +++ b/scripts/generateIncludedImages.ts @@ -1,5 +1,4 @@ import * as fs from "fs" - function genImages(dryrun = false) { console.log("Generating images") const dir = fs.readdirSync("./assets/svg") @@ -45,6 +44,12 @@ function genImages(dryrun = false) { if (!dryrun) { allNames.push(`"${path}": Svg.${name}`) } + + const nameUC = name.toUpperCase().at(0) + name.substring(1) + const svelteCode = + '\n' + + svg.replace(/\\"/g, '"').replace(/(rgb\(0%,0%,0%\)|#000000|#000)/g, "{color}") + fs.writeFileSync("./src/assets/svg/" + nameUC + ".svelte", svelteCode, "utf8") } module += `public static All = {${allNames.join(",")}};` module += "}\n" diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index dfc2ad3a9..bc009972c 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -293,7 +293,7 @@ class LayerOverviewUtils extends Script { proto.layers.filter((l) => l["id"] === "mapcomplete-changes")[0] ) const rendering = protolayer.pointRendering[0] - rendering.icon["mappings"] = iconsPerTheme + rendering.marker[0].icon["mappings"] = iconsPerTheme writeFileSync( "./assets/themes/mapcomplete-changes/mapcomplete-changes.json", JSON.stringify(proto, null, " ") diff --git a/scripts/thieves/readIdPresets.ts b/scripts/thieves/readIdPresets.ts index 3ea0443d2..901dd5a5e 100644 --- a/scripts/thieves/readIdPresets.ts +++ b/scripts/thieves/readIdPresets.ts @@ -188,7 +188,7 @@ class IdThief { const mapping = { if: preset.parseTags(), - then: "circle:white;./assets/layers/id_presets/" + preset.icon + ".svg", + then: "./assets/layers/id_presets/" + preset.icon + ".svg", } mappings.push(mapping) } @@ -328,5 +328,5 @@ idPresets.tagRenderings = [ mappings: thief.readShopIcons(), }, ] - +console.log("Writing id presets to", id_presets_path) writeFileSync(id_presets_path, JSON.stringify(idPresets, null, " "), "utf8") diff --git a/src/Logic/DetermineLayout.ts b/src/Logic/DetermineLayout.ts index c9abdbaaa..9ad9f4550 100644 --- a/src/Logic/DetermineLayout.ts +++ b/src/Logic/DetermineLayout.ts @@ -24,8 +24,12 @@ import { ValidateThemeAndLayers, } from "../Models/ThemeConfig/Conversion/Validation" import { DesugaringContext } from "../Models/ThemeConfig/Conversion/Conversion" -import { TagRenderingConfigJson } from "../Models/ThemeConfig/Json/TagRenderingConfigJson" +import { + MinimalTagRenderingConfigJson, + TagRenderingConfigJson +} from "../Models/ThemeConfig/Json/TagRenderingConfigJson"; import Hash from "./Web/Hash" +import { QuestionableTagRenderingConfigJson } from "../Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson"; export default class DetermineLayout { private static readonly _knownImages = new Set(Array.from(licenses).map((l) => l.path)) @@ -151,8 +155,8 @@ export default class DetermineLayout { .AttachTo("maindiv") } - private static getSharedTagRenderings(): Map { - const dict = new Map() + private static getSharedTagRenderings(): Map { + const dict = new Map() for (const tagRendering of questions.tagRenderings) { dict.set(tagRendering.id, tagRendering) @@ -163,7 +167,9 @@ export default class DetermineLayout { private static prepCustomTheme(json: any, sourceUrl?: string, forceId?: string): LayoutConfig { if (json.layers === undefined && json.tagRenderings !== undefined) { - const iconTr = json.mapRendering.map((mr) => mr.icon).find((icon) => icon !== undefined) + // We got fed a layer instead of a theme + const layerConfig = json + const iconTr: string | TagRenderingConfigJson = layerConfig.pointRendering.map((mr) => mr.marker.find(icon => icon.icon !== undefined).icon).find((i) => i !== undefined) const icon = new TagRenderingConfig(iconTr).render.txt json = { id: json.id, diff --git a/src/Logic/FeatureSource/Sources/LastClickFeatureSource.ts b/src/Logic/FeatureSource/Sources/LastClickFeatureSource.ts index ecd8d8288..8ab1faecf 100644 --- a/src/Logic/FeatureSource/Sources/LastClickFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/LastClickFeatureSource.ts @@ -19,7 +19,7 @@ export class LastClickFeatureSource implements WritableFeatureSource { for (let i = 0; i < (layer.presets ?? []).length; i++) { const preset = layer.presets[i] const tags = new ImmutableStore(TagUtils.KVtoProperties(preset.tags)) - const { html } = layer.mapRendering[0].RenderIcon(tags, false, { + const { html } = layer.mapRendering[0].RenderIcon(tags, { noSize: true, includeBadges: false, }) diff --git a/src/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts b/src/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts index a62070e17..307312af3 100644 --- a/src/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts @@ -55,10 +55,9 @@ export class NewGeometryFromChangesFeatureSource implements WritableFeatureSourc * @private */ private handleChange(change: ChangeDescription): boolean { - const backend = this._backend const allElementStorage = this._allElementStorage - console.log("Handling pending change") + console.log("Handling pending change", change) if (change.id > 0) { // This is an already existing object // In _most_ of the cases, this means that this _isn't_ a new object diff --git a/src/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts b/src/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts index 0c2b53479..5824a72d7 100644 --- a/src/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts +++ b/src/Models/ThemeConfig/Conversion/CreateNoteImportLayer.ts @@ -94,8 +94,8 @@ export default class CreateNoteImportLayer extends Conversion { + const [iconPath, color] = i.split(":") + return { icon: iconPath, color } + }) + delete pr["icon"] + } catch (e) { + console.error("Could not handle icon in", json.id) + pr.marker = [{ icon: pr["icon"] }] + delete pr["icon"] + } + } + let iconSize = pr.iconSize if (!iconSize) { continue @@ -178,35 +198,36 @@ export class UpdateLegacyLayer extends DesugaringStep< } } - for (const rendering of config.pointRendering) { - for (const key in rendering) { - if (!rendering[key]) { - continue - } - if ( - typeof rendering[key]["render"] === "string" && - Object.keys(rendering[key]).length === 1 - ) { - console.log("Rewrite: ", rendering[key]) - rendering[key] = rendering[key]["render"] + if (config.pointRendering) + for (const rendering of config.pointRendering) { + for (const key in rendering) { + if (!rendering[key]) { + continue + } + if ( + typeof rendering[key]["render"] === "string" && + Object.keys(rendering[key]).length === 1 + ) { + console.log("Rewrite: ", rendering[key]) + rendering[key] = rendering[key]["render"] + } } } - } - - for (const rendering of config.lineRendering) { - for (const key in rendering) { - if (!rendering[key]) { - continue - } - if ( - typeof rendering[key]["render"] === "string" && - Object.keys(rendering[key]).length === 1 - ) { - console.log("Rewrite: ", rendering[key]) - rendering[key] = rendering[key]["render"] + if (config.lineRendering) + for (const rendering of config.lineRendering) { + for (const key in rendering) { + if (!rendering[key]) { + continue + } + if ( + typeof rendering[key]["render"] === "string" && + Object.keys(rendering[key]).length === 1 + ) { + console.log("Rewrite: ", rendering[key]) + rendering[key] = rendering[key]["render"] + } } } - } return { result: config, diff --git a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts index 8b17d0acd..ee469715a 100644 --- a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts +++ b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts @@ -21,8 +21,7 @@ import { AddContextToTranslations } from "./AddContextToTranslations" import FilterConfigJson from "../Json/FilterConfigJson" import predifined_filters from "../../../../assets/layers/filters/filters.json" import { TagConfigJson } from "../Json/TagConfigJson" -import PointRenderingConfigJson from "../Json/PointRenderingConfigJson" -import LineRenderingConfigJson from "../Json/LineRenderingConfigJson" +import PointRenderingConfigJson, { IconConfigJson } from "../Json/PointRenderingConfigJson" import ValidationUtils from "./ValidationUtils" import { RenderingSpecification } from "../../../UI/SpecialVisualization" import { QuestionableTagRenderingConfigJson } from "../Json/QuestionableTagRenderingConfigJson" @@ -127,6 +126,7 @@ class ExpandTagRendering extends Conversion< > { private readonly _state: DesugaringContext private readonly _tagRenderingsByLabel: Map + // Only used for self-reference private readonly _self: LayerConfigJson private readonly _options: { /* If true, will copy the 'osmSource'-tags into the condition */ @@ -224,7 +224,7 @@ class ExpandTagRendering extends Conversion< const spl = name.split(".") let layer = state.sharedLayers?.get(spl[0]) - if (spl[0] === this._self.id) { + if (spl[0] === this._self?.id) { layer = this._self } @@ -352,7 +352,7 @@ class ExpandTagRendering extends Conversion< if (name.indexOf(".") > 0) { const [layerName] = name.split(".") let layer = state.sharedLayers.get(layerName) - if (layerName === this._self.id) { + if (layerName === this._self?.id) { layer = this._self } if (layer === undefined) { @@ -1116,23 +1116,19 @@ export class RewriteSpecial extends DesugaringStep { } } -class ExpandIconBadges extends DesugaringStep { - private _state: DesugaringContext - private _layer: LayerConfigJson +class ExpandIconBadges extends DesugaringStep { private _expand: ExpandTagRendering constructor(state: DesugaringContext, layer: LayerConfigJson) { super("Expands shorthand properties on iconBadges", ["iconBadges"], "ExpandIconBadges") - this._state = state - this._layer = layer this._expand = new ExpandTagRendering(state, layer) } convert( - json: PointRenderingConfigJson | LineRenderingConfigJson, + json: PointRenderingConfigJson, context: string ): { - result: PointRenderingConfigJson | LineRenderingConfigJson + result: PointRenderingConfigJson errors?: string[] warnings?: string[] information?: string[] @@ -1140,7 +1136,7 @@ class ExpandIconBadges extends DesugaringStepjson).iconBadges + const badgesJson = json.iconBadges const iconBadges: { if: TagConfigJson; then: string | TagRenderingConfigJson }[] = [] @@ -1176,7 +1172,7 @@ class ExpandIconBadges extends DesugaringStep { +class PreparePointRendering extends Fuse { constructor(state: DesugaringContext, layer: LayerConfigJson) { super( "Prepares point renderings by expanding 'icon' and 'iconBadges'", @@ -1262,6 +1258,47 @@ export class AddMiniMap extends DesugaringStep { } } +class ExpandMarkerRenderings extends DesugaringStep { + private readonly _layer: LayerConfigJson + private readonly _state: DesugaringContext + + constructor(state: DesugaringContext, layer: LayerConfigJson) { + super( + "Expands tagRenderings in the icons, if needed", + ["icon", "color"], + "ExpandMarkerRenderings" + ) + this._layer = layer + this._state = state + } + + convert( + json: IconConfigJson, + context: string + ): { + result: IconConfigJson + errors?: string[] + warnings?: string[] + information?: string[] + } { + const expander = new ExpandTagRendering(this._state, this._layer) + const result: IconConfigJson = { icon: undefined, color: undefined } + const errors: string[] = [] + const warnings: string[] = [] + if (json.icon && json.icon["builtin"]) { + result.icon = expander.convertJoin(json.icon, context, errors, warnings)[0] + } else { + result.icon = json.icon + } + if (json.color && json.color["builtin"]) { + result.color = expander.convertJoin(json.color, context, errors, warnings)[0] + } else { + result.color = json.color + } + return { result, errors, warnings } + } +} + export class PrepareLayer extends Fuse { constructor(state: DesugaringContext) { super( @@ -1274,9 +1311,13 @@ export class PrepareLayer extends Fuse { new AddMiniMap(state), new AddEditingElements(state), new SetFullNodeDatabase(), - new On("mapRendering", new Concat(new ExpandRewrite()).andThenF(Utils.Flatten)), - new On<(PointRenderingConfigJson | LineRenderingConfigJson)[], LayerConfigJson>( - "mapRendering", + new On( + "pointRendering", + (layer) => + new Each(new On("marker", new Each(new ExpandMarkerRenderings(state, layer)))) + ), + new On( + "pointRendering", (layer) => new Each(new PreparePointRendering(state, layer)) ), new SetDefault("titleIcons", ["icons.defaults"]), diff --git a/src/Models/ThemeConfig/DeleteConfig.ts b/src/Models/ThemeConfig/DeleteConfig.ts index 0c7bfae69..81c5f07bd 100644 --- a/src/Models/ThemeConfig/DeleteConfig.ts +++ b/src/Models/ThemeConfig/DeleteConfig.ts @@ -115,6 +115,7 @@ export default class DeleteConfig { const config: QuestionableTagRenderingConfigJson = { question: t.whyDelete.translations, mappings, + id: "why-delete", } return new TagRenderingConfig(config) } diff --git a/src/Models/ThemeConfig/Json/LayerConfigJson.ts b/src/Models/ThemeConfig/Json/LayerConfigJson.ts index 21cc3de91..8643bdf46 100644 --- a/src/Models/ThemeConfig/Json/LayerConfigJson.ts +++ b/src/Models/ThemeConfig/Json/LayerConfigJson.ts @@ -9,10 +9,6 @@ import LineRenderingConfigJson from "./LineRenderingConfigJson" import { QuestionableTagRenderingConfigJson } from "./QuestionableTagRenderingConfigJson" import RewritableConfigJson from "./RewritableConfigJson" import { Translatable } from "./Translatable" -import { Point } from "geojson" -import PointRenderingConfig from "../PointRenderingConfig" - -type MapRendering = {} /** * Configuration for a single layer @@ -49,6 +45,7 @@ export interface LayerConfigJson { /** * * Question: Where should the data be fetched from? + * title: Data Source * * This determines where the data for the layer is fetched: from OSM or from an external geojson dataset. * @@ -242,12 +239,12 @@ export interface LayerConfigJson { /** * Creates points to render on the map. * This can render points for point-objects, lineobjects or areaobjects; use 'location' to indicate where it should be rendered - * group: maprendering + * group: pointrendering */ pointRendering: PointRenderingConfigJson[] /** * Creates lines and areas to render on the map - * group: maprendering + * group: linerendering */ lineRendering?: LineRenderingConfigJson[] diff --git a/src/Models/ThemeConfig/Json/LineRenderingConfigJson.ts b/src/Models/ThemeConfig/Json/LineRenderingConfigJson.ts index e234bdd11..b7d8b7788 100644 --- a/src/Models/ThemeConfig/Json/LineRenderingConfigJson.ts +++ b/src/Models/ThemeConfig/Json/LineRenderingConfigJson.ts @@ -1,4 +1,4 @@ -import { TagRenderingConfigJson } from "./TagRenderingConfigJson" +import { MinimalTagRenderingConfigJson } from "./TagRenderingConfigJson" /** * The LineRenderingConfig gives all details onto how to render a single line of a feature. @@ -10,40 +10,69 @@ import { TagRenderingConfigJson } from "./TagRenderingConfigJson" */ export default interface LineRenderingConfigJson { /** - * The color for way-elements and SVG-elements. + * question: What color should lines be drawn in? + * + * For an area, this will be the colour of the outside line. * If the value starts with "--", the style of the body element will be queried for the corresponding variable instead + * + * types: dynamic value ; string + * title: Line Colour + * inline: The line colour always is {value} + * ifunset: Round ending + * type: color + * */ - color?: string | TagRenderingConfigJson + color?: MinimalTagRenderingConfigJson | string /** + * question: How wide should the line be? * The stroke-width for way-elements + * + * types: dynamic value ; string + * title: Line width + * inline: The line width is {value} pixels + * type: pnat + * ifunset: Use the default-linewidth of 7 pixels */ - width?: string | number | TagRenderingConfigJson + width?: MinimalTagRenderingConfigJson | number | string /** - * A dasharray, e.g. "5 6" - * The dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap', - * Default value: "" (empty string == full line) + * question: Should a dasharray be used to render the lines? + * The 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. + * Cannot be a dynamic property due to a mapbox limitation + * ifunset: Ways are rendered with a full line */ - dashArray?: string | TagRenderingConfigJson + dashArray?: string /** - * The form at the end of a line - */ - lineCap?: "round" | "square" | "butt" | string | TagRenderingConfigJson + * question: What form should the line-ending have? + * suggestions: 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)"}] + * types: dynamic value ; string + * title: Line Cap + * ifunset: Use the default value (round ending) + **/ + lineCap?: "round" | "square" | "butt" | string | MinimalTagRenderingConfigJson /** - * The color to fill a polygon with. - * If undefined, this will be slightly more opaque version of the stroke line. - * Use '#00000000' to make the fill invisible + * question: What colour should be used as fill colour for polygons? + * ifunset: The polygon fill colour will be a more transparent version of the stroke colour + * suggestions: return [{if: "value=#00000000", then: "Use a transparent fill (only render the outline)"}] + * inline: The fill colour is {value} + * types: dynamic value ; string + * type: color */ - fillColor?: string | TagRenderingConfigJson + fillColor?: string | MinimalTagRenderingConfigJson /** + * question: Should the lines be moved (offsetted) with a number of pixels against the geographical lines? * The number of pixels this line should be moved. - * Use 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). + * Use 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). * * IMPORTANT: 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') * This simplifies programming. Refer to the CalculatedTags.md-documentation for more details + * ifunset: don't offset lines on the map + * inline: Pixel offset by {value} pixels + * types: dynamic value ; number + * type: int */ - offset?: number | TagRenderingConfigJson + offset?: number | MinimalTagRenderingConfigJson } diff --git a/src/Models/ThemeConfig/Json/PointRenderingConfigJson.ts b/src/Models/ThemeConfig/Json/PointRenderingConfigJson.ts index b0858bd86..63a094d8e 100644 --- a/src/Models/ThemeConfig/Json/PointRenderingConfigJson.ts +++ b/src/Models/ThemeConfig/Json/PointRenderingConfigJson.ts @@ -1,6 +1,11 @@ import { TagRenderingConfigJson } from "./TagRenderingConfigJson" import { TagConfigJson } from "./TagConfigJson" +export interface IconConfigJson { + icon: string | TagRenderingConfigJson | { builtin: string; override: any } + color?: string | TagRenderingConfigJson | { builtin: string; override: any } +} + /** * The PointRenderingConfig gives all details onto how to render a single point of a feature. * @@ -11,28 +16,26 @@ import { TagConfigJson } from "./TagConfigJson" */ export default interface PointRenderingConfigJson { /** - * All the locations that this point should be rendered at. - * Possible values are: - * - `point`: only renders points at their location - * - `centroid`: show a symbol at the centerpoint of a (multi)Linestring and (multi)polygon. Points will _not_ be rendered with this - * - `projected_centerpoint`: Only on (multi)linestrings: calculate the centerpoint and snap it to the way - * - `start` and `end`: only on linestrings: add a point to the first/last coordinate of the LineString + * question: At what location should this icon be shown? + * multianswer: true + * suggestions: 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"}] */ location: ("point" | "centroid" | "start" | "end" | "projected_centerpoint" | string)[] /** - * The icon for an element. - * Note that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets. - * - * The result of the icon is rendered as follows: - * the resulting string is interpreted as a _list_ of items, separated by ";". The bottommost layer is the first layer. - * As a result, on could use a generic pin, then overlay it with a specific icon. - * To make things even more practical, one can use all SVG's from the folder "assets/svg" and _substitute the color_ in it. - * E.g. to draw a red pin, use "pin:#f00", to have a green circle with your icon on top, use `circle:#0f0;` + * question: What marker should be used to + * The icon for an element. + * Note that this also doubles as the icon for this layer (rendered with the overpass-tags) ánd the icon in the presets. + * + * The result of the icon is rendered as follows: + * the resulting string is interpreted as a _list_ of items, separated by ";". The bottommost layer is the first layer. + * As a result, on could use a generic pin, then overlay it with a specific icon. + * To make things even more practical, one c an use all SVG's from the folder "assets/svg" and _substitute the color_ in it. + * E.g. to draw a red pin, use "pin:#f00", to have a green circle with your icon on top, use `circle:#0f0;` - * Type: icon - */ - icon?: string | TagRenderingConfigJson + * Type: icon + */ + marker?: IconConfigJson[] /** * A list of extra badges to show next to the icon as small badge @@ -59,8 +62,9 @@ export default interface PointRenderingConfigJson { * question: What is the anchorpoint of the icon? * * This matches the geographical point with a location on the icon. - * For example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location. * + * ifunset: Use MapComplete-default (center) + * suggestions: return [{if: "value=center", then: "Place the center of the icon on the geographical location"},{if: "value=top", then: "Place the top of the icon on the geographical location"},{if: "value=bottom", then: "Place the bottom of the icon on the geographical location"},{if: "value=left", then: "Place the left of the icon on the geographical location"},{if: "value=right", then: "Place the right of the icon on the geographical location"}] */ anchor?: "center" | "top" | "bottom" | "left" | "right" | string | TagRenderingConfigJson @@ -70,31 +74,52 @@ export default interface PointRenderingConfigJson { */ rotation?: string | TagRenderingConfigJson /** - * A HTML-fragment that is shown below the icon, for example: - *
{name}
+ * question: What label should be shown beneath the marker? + * For example:
{name}
* * If the icon is undefined, then the label is shown in the center of the feature. - * Note that, if the wayhandling hides the icon then no label is shown as well. + * types: Dynamic value | string + * inline: Always show label {value} beneath the marker */ label?: string | TagRenderingConfigJson /** - * A snippet of css code which is applied onto the container of the entire marker + * question: What CSS should be applied to the entire marker? + * You can set the css-properties here, e.g. `background: red; font-size: 12px; ` + * This will be applied to the _container_ containing both the marker and the label + * inline: Apply CSS-style {value} to the _entire marker_ + * types: Dynamic value ; string */ css?: string | TagRenderingConfigJson /** - * A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated + * question: Which CSS-classes should be applied to the entire marker? + * This will be applied to the _container_ containing both the marker and the label + * + * The classes should be separated by a space (` `) + * You can use most Tailwind-css classes, see https://tailwindcss.com/ for more information + * For example: `center bg-gray-500 mx-2 my-1 rounded-full` + * inline: Apply CSS-classes {value} to the entire container + * types: Dynamic value ; string */ cssClasses?: string | TagRenderingConfigJson /** - * Css that is applied onto the label + * question: What CSS should be applied to the label? + * You can set the css-properties here, e.g. `background: red; font-size: 12px; ` + * inline: Apply CSS-style {value} to the label + * types: Dynamic value ; string */ - labelCss?: string | TagRenderingConfigJson + labelCss?: TagRenderingConfigJson | string /** - * Css classes that are applied onto the label; can be space-separated + * question: Which CSS-classes should be applied to the label? + * + * The classes should be separated by a space (` `) + * You can use most Tailwind-css classes, see https://tailwindcss.com/ for more information + * For example: `center bg-gray-500 mx-2 my-1 rounded-full` + * inline: Apply CSS-classes {value} to the label + * types: Dynamic value ; string */ labelCssClasses?: string | TagRenderingConfigJson @@ -105,7 +130,9 @@ export default interface PointRenderingConfigJson { pitchAlignment?: "canvas" | "map" | TagRenderingConfigJson /** - * If the map is rotated, the icon will still point to the north if no rotation was applied + * question: Should the icon be rotated or tilted if the map is rotated or tilted? + * ifunset: Do not rotate or tilt icons. Always keep the icons straight + * suggestions: 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."}] */ rotationAlignment?: "map" | "canvas" | TagRenderingConfigJson } diff --git a/src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts b/src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts index 166ad0a3b..92e322a82 100644 --- a/src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts +++ b/src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson.ts @@ -1,6 +1,6 @@ import { TagConfigJson } from "./TagConfigJson" import { TagRenderingConfigJson } from "./TagRenderingConfigJson" -import { Translatable } from "./Translatable" +import type { Translatable } from "./Translatable" export interface MappingConfigJson { /** diff --git a/src/Models/ThemeConfig/Json/TagRenderingConfigJson.ts b/src/Models/ThemeConfig/Json/TagRenderingConfigJson.ts index 1f031dda2..795b43eed 100644 --- a/src/Models/ThemeConfig/Json/TagRenderingConfigJson.ts +++ b/src/Models/ThemeConfig/Json/TagRenderingConfigJson.ts @@ -1,6 +1,43 @@ import { TagConfigJson } from "./TagConfigJson" import { Translatable } from "./Translatable" +/** + * Mostly used for lineRendering and pointRendering + */ +export interface MinimalTagRenderingConfigJson { + /** + * question: What value should be rendered? + * + * This piece of text will be shown in the infobox. + * Note that "&LBRACEkey&RBRACE"-parts are substituted by the corresponding values of the element. + * + * This value will be used if there is no mapping which matches (or there are no matches) + * Note 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' />` + */ + render?: string + /** + * Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes + */ + mappings?: { + /** + * question: When should this single mapping match? + * + * If this condition is met, then the text under `then` will be shown. + * If no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM. + * + * For example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'} + * + * This can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'} + */ if: TagConfigJson + /** + * question: What text should be shown? + * + * If the condition `if` is met, the text `then` will be rendered. + * If not known yet, the user will be presented with `then` as an option + */ then: string + }[] +} + /** * A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet. * For an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one diff --git a/src/Models/ThemeConfig/LayerConfig.ts b/src/Models/ThemeConfig/LayerConfig.ts index df627f500..053c3e4bc 100644 --- a/src/Models/ThemeConfig/LayerConfig.ts +++ b/src/Models/ThemeConfig/LayerConfig.ts @@ -75,7 +75,6 @@ export default class LayerConfig extends WithContextLoader { const translationContext = "layers:" + json.id super(json, context) this.id = json.id - if (typeof json === "string") { throw `Not a valid layer: the layerConfig is a string. 'npm run generate:layeroverview' might be needed (at ${context})` } @@ -295,7 +294,9 @@ export default class LayerConfig extends WithContextLoader { throw ( "The layer " + this.id + - " does not have any maprenderings defined and will thus not show up on the map at all. If this is intentional, set `pointRendering` and `lineRendering` to 'null' instead of '[]'" + ` does not have any maprenderings defined and will thus not show up on the map at all: +\t ${this.lineRendering?.length} linerenderings and ${this.mapRendering?.length} pointRenderings. +\t If this is intentional, set \`pointRendering\` and \`lineRendering\` to 'null' instead of '[]'` ) } else if ( !hasCenterRendering && @@ -403,7 +404,7 @@ export default class LayerConfig extends WithContextLoader { if (mapRendering === undefined) { return undefined } - return mapRendering.GetBaseIcon(this.GetBaseTags(), { noFullWidth: true }) + return mapRendering.GetBaseIcon(this.GetBaseTags()) } public GetBaseTags(): Record { @@ -555,23 +556,12 @@ export default class LayerConfig extends WithContextLoader { let iconImg: BaseUIElement = new FixedUiElement("") - if (Utils.runningFromConsole) { - const icon = this.mapRendering - .filter((mr) => mr.location.has("point")) - .map((mr) => mr.icon?.render?.txt) - .find((i) => i !== undefined) - // This is for the documentation in a markdown-file, so we have to use raw HTML - if (icon !== undefined) { - iconImg = new FixedUiElement( - ` ` - ) - } - } else { + if (!Utils.runningFromConsole) { iconImg = this.mapRendering .filter((mr) => mr.location.has("point")) .map( (mr) => - mr.RenderIcon(new ImmutableStore({ id: "node/-1" }), false, { + mr.RenderIcon(new ImmutableStore({ id: "node/-1" }), { includeBadges: false, }).html ) diff --git a/src/Models/ThemeConfig/PointRenderingConfig.ts b/src/Models/ThemeConfig/PointRenderingConfig.ts index 10e59a4b2..3cefb94bf 100644 --- a/src/Models/ThemeConfig/PointRenderingConfig.ts +++ b/src/Models/ThemeConfig/PointRenderingConfig.ts @@ -11,6 +11,27 @@ import { FixedUiElement } from "../../UI/Base/FixedUiElement" import Img from "../../UI/Base/Img" import Combine from "../../UI/Base/Combine" import { VariableUiElement } from "../../UI/Base/VariableUIElement" +import { TagRenderingConfigJson } from "./Json/TagRenderingConfigJson" +import SvelteUIElement from "../../UI/Base/SvelteUIElement" +import Marker from "../../UI/Map/Marker.svelte" + +export class IconConfig extends WithContextLoader { + public readonly icon: TagRenderingConfig + public readonly color: TagRenderingConfig + + public static readonly defaultIcon = new IconConfig({ icon: "pin", color: "#ff9939" }) + constructor( + config: { + icon: string | TagRenderingConfigJson + color?: string | TagRenderingConfigJson + }, + context?: string + ) { + super(config, context) + this.icon = this.tr("icon") + this.color = this.tr("color") + } +} export default class PointRenderingConfig extends WithContextLoader { static readonly allowed_location_codes: ReadonlySet = new Set([ @@ -24,7 +45,8 @@ export default class PointRenderingConfig extends WithContextLoader { "point" | "centroid" | "start" | "end" | "projected_centerpoint" | string > - public readonly icon?: TagRenderingConfig + // public readonly icon?: TagRenderingConfig + private readonly marker: IconConfig[] public readonly iconBadges: { if: TagsFilter; then: TagRenderingConfig }[] public readonly iconSize: TagRenderingConfig public readonly anchor: TagRenderingConfig @@ -42,7 +64,7 @@ export default class PointRenderingConfig extends WithContextLoader { super(json, context) if (json === undefined || json === null) { - throw "Invalid PointRenderingConfig: undefined or null" + throw `At ${context}: Invalid PointRenderingConfig: undefined or null` } if (typeof json.location === "string") { @@ -60,8 +82,8 @@ export default class PointRenderingConfig extends WithContextLoader { } }) - if (json.icon === undefined && json.label === undefined) { - throw `A point rendering should define at least an icon or a label` + if (json.marker === undefined && json.label === undefined) { + throw `${context}: A point rendering should define at least an icon or a marker` } if (this.location.size == 0) { @@ -71,7 +93,7 @@ export default class PointRenderingConfig extends WithContextLoader { ".location)" ) } - this.icon = this.tr("icon", undefined) + this.marker = (json.marker ?? []).map((m) => new IconConfig(m)) if (json.css !== undefined) { this.cssDef = this.tr("css", undefined) } @@ -85,13 +107,6 @@ export default class PointRenderingConfig extends WithContextLoader { } }) - const iconPath = this.icon?.GetRenderValue({ id: "node/-1" })?.txt - if (iconPath !== undefined && iconPath.startsWith(Utils.assets_path)) { - const iconKey = iconPath.substr(Utils.assets_path.length) - if (Svg.All[iconKey] === undefined) { - throw context + ": builtin SVG asset not found: " + iconPath - } - } if (typeof json.iconSize === "string") { const s = json.iconSize if (["bottom", "top", "center"].some((e) => s.endsWith(e))) { @@ -176,49 +191,11 @@ export default class PointRenderingConfig extends WithContextLoader { } } - public GetBaseIcon( - tags?: Record, - options?: { - noFullWidth?: boolean - } - ): BaseUIElement { - tags = tags ?? { id: "node/-1" } - let defaultPin: BaseUIElement = undefined - if (this.label === undefined) { - defaultPin = Svg.teardrop_with_hole_green_svg() - } - if (this.icon === undefined) { - return defaultPin - } - const rotation = Utils.SubstituteKeys( - this.rotation?.GetRenderValue(tags)?.txt ?? "0deg", - tags - ) - const htmlDefs = Utils.SubstituteKeys(this.icon?.GetRenderValue(tags)?.txt, tags) - if (htmlDefs === undefined) { - // This layer doesn't want to show an icon right now - return undefined - } - if (htmlDefs.startsWith("<") && htmlDefs.endsWith(">")) { - // This is probably already prepared HTML - return new FixedUiElement(Utils.SubstituteKeys(htmlDefs, tags)) - } - return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation, false, defaultPin, options) + public GetBaseIcon(tags?: Record): BaseUIElement { + return new SvelteUIElement(Marker, { icons: this.marker, tags }) } - - public GetSimpleIcon(tags: Store>): BaseUIElement { - const self = this - if (this.icon === undefined) { - return undefined - } - return new VariableUiElement(tags.map((tags) => self.GetBaseIcon(tags))).SetClass( - "w-full h-full block" - ) - } - public RenderIcon( tags: Store>, - clickable: boolean, options?: { noSize?: false | boolean includeBadges?: true | boolean @@ -235,7 +212,7 @@ export default class PointRenderingConfig extends WithContextLoader { return n } - function render(tr: TagRenderingConfig, deflt?: string) { + function render(tr: TagRenderingConfig, deflt?: string): string { if (tags === undefined) { return deflt } @@ -267,7 +244,7 @@ export default class PointRenderingConfig extends WithContextLoader { anchorH = -iconH / 2 } - const icon = this.GetSimpleIcon(tags) + const icon = new SvelteUIElement(Marker, { config: this, tags }).SetClass("w-full h-full") let badges = undefined if (options?.includeBadges ?? true) { badges = this.GetBadges(tags) diff --git a/src/UI/InputElement/InputHelper.svelte b/src/UI/InputElement/InputHelper.svelte index 1db315e23..694fea612 100644 --- a/src/UI/InputElement/InputHelper.svelte +++ b/src/UI/InputElement/InputHelper.svelte @@ -52,11 +52,8 @@ {:else if $construct !== undefined} - {#if isBaseUIElement} - + new VariableUiElement(construct.mapD((construct) => construct(value, properties)))} - /> - - {/if} + /> {/if} diff --git a/src/UI/Map/Icon.svelte b/src/UI/Map/Icon.svelte new file mode 100644 index 000000000..9586e5c9c --- /dev/null +++ b/src/UI/Map/Icon.svelte @@ -0,0 +1,86 @@ + + +{#if iconItem} +
+ {#if iconItem === "pin"} + + {:else if iconItem === "square"} + + {:else if iconItem === "circle"} + + {:else if iconItem === "checkmark"} + + {:else if iconItem === "clock"} + + {:else if iconItem === "close"} + + {:else if iconItem === "crosshair"} + + {:else if iconItem === "help"} + + {:else if iconItem === "home"} + + {:else if iconItem === "invalid"} + + {:else if iconItem === "location"} + + {:else if iconItem === "location_empty"} + + {:else if iconItem === "location_locked"} + + {:else if iconItem === "note"} + + {:else if iconItem === "resolved"} + + {:else if iconItem === "ring"} + + {:else if iconItem === "scissors"} + + {:else if iconItem === "teardrop"} + + {:else if iconItem === "teardrop_with_hole_green"} + + {:else if iconItem === "triangle"} + + {:else} + + {/if} +
+{/if} diff --git a/src/UI/Map/Marker.svelte b/src/UI/Map/Marker.svelte new file mode 100644 index 000000000..ab941b62b --- /dev/null +++ b/src/UI/Map/Marker.svelte @@ -0,0 +1,20 @@ + + +
+ {#each icons as icon} + + {/each} +
diff --git a/src/UI/Map/ShowDataLayer.ts b/src/UI/Map/ShowDataLayer.ts index 4d2225b6e..0db309a90 100644 --- a/src/UI/Map/ShowDataLayer.ts +++ b/src/UI/Map/ShowDataLayer.ts @@ -142,7 +142,7 @@ class PointRenderingLayer { } else { store = new ImmutableStore(feature.properties) } - const { html, iconAnchor } = this._config.RenderIcon(store, true) + const { html, iconAnchor } = this._config.RenderIcon(store) html.SetClass("marker") if (this._onClick !== undefined) { html.SetClass("cursor-pointer") diff --git a/src/UI/Popup/AddNewPoint/PresetList.svelte b/src/UI/Popup/AddNewPoint/PresetList.svelte index 05c997370..fde464444 100644 --- a/src/UI/Popup/AddNewPoint/PresetList.svelte +++ b/src/UI/Popup/AddNewPoint/PresetList.svelte @@ -44,7 +44,7 @@ const tags = TagUtils.KVtoProperties(preset.tags ?? []) const icon: string = layer.mapRendering[0] - .RenderIcon(new ImmutableStore(tags), false) + .RenderIcon(new ImmutableStore(tags)) .html.SetClass("w-12 h-12 block relative") .ConstructElement().innerHTML diff --git a/src/UI/Studio/ArrayMultiAnswer.svelte b/src/UI/Studio/ArrayMultiAnswer.svelte new file mode 100644 index 000000000..374318b81 --- /dev/null +++ b/src/UI/Studio/ArrayMultiAnswer.svelte @@ -0,0 +1,43 @@ + + +
+ +
diff --git a/src/UI/Studio/EditLayer.svelte b/src/UI/Studio/EditLayer.svelte index 512c3748a..665f2a02c 100644 --- a/src/UI/Studio/EditLayer.svelte +++ b/src/UI/Studio/EditLayer.svelte @@ -58,7 +58,8 @@
Rendering on the map
- + +
Configuration file
diff --git a/src/UI/Studio/EditLayerState.ts b/src/UI/Studio/EditLayerState.ts index 6960311a4..2be152411 100644 --- a/src/UI/Studio/EditLayerState.ts +++ b/src/UI/Studio/EditLayerState.ts @@ -120,21 +120,20 @@ export default class EditLayerState { } public setValueAt(path: ReadonlyArray, v: any) { - { - let entry = this.configuration.data - for (let i = 0; i < path.length - 1; i++) { - const breadcrumb = path[i] - if (entry[breadcrumb] === undefined) { - entry[breadcrumb] = typeof path[i + 1] === "number" ? [] : {} - } - entry = entry[breadcrumb] + let entry = this.configuration.data + console.log("Setting value", v, "to", path, "in entry", entry) + for (let i = 0; i < path.length - 1; i++) { + const breadcrumb = path[i] + if (entry[breadcrumb] === undefined) { + entry[breadcrumb] = typeof path[i + 1] === "number" ? [] : {} } - if (v) { - entry[path.at(-1)] = v - } else if (entry) { - delete entry[path.at(-1)] - } - this.configuration.ping() + entry = entry[breadcrumb] } + if (v) { + entry[path.at(-1)] = v + } else if (entry) { + delete entry[path.at(-1)] + } + this.configuration.ping() } } diff --git a/src/UI/Studio/SchemaBasedArray.svelte b/src/UI/Studio/SchemaBasedArray.svelte index 122b5b6ec..9a8418f33 100644 --- a/src/UI/Studio/SchemaBasedArray.svelte +++ b/src/UI/Studio/SchemaBasedArray.svelte @@ -23,8 +23,10 @@ export let path: (string | number)[] = []; const isTagRenderingBlock = path.length === 1 && path[0] === "tagRenderings"; - const subparts = state.getSchemaStartingWith(schema.path); - + + const subparts: ConfigMeta = state.getSchemaStartingWith(schema.path) + .filter(part => part.path.length - 1 === schema.path.length); +console.log("For ", schema.path, "got subparts", subparts) /** * Store the _indices_ */ diff --git a/src/UI/Studio/SchemaBasedField.svelte b/src/UI/Studio/SchemaBasedField.svelte index b9cfefc81..ebb950961 100644 --- a/src/UI/Studio/SchemaBasedField.svelte +++ b/src/UI/Studio/SchemaBasedField.svelte @@ -100,28 +100,33 @@ startValue = JSON.stringify(startValue) } const tags = new UIEventSource>({value: startValue ?? ""}) - onDestroy(state.register(path, tags.map(tgs => { - const v = tgs["value"]; - if (schema.type === "boolan") { - return v === "true" || v === "yes" || v === "1" - } - if (schema.type === "number") { - return Number(v) - } - if(isTranslation) { - if(v === ""){ - return {} + try { + onDestroy(state.register(path, tags.map(tgs => { + const v = tgs["value"]; + if (schema.type === "boolan") { + return v === "true" || v === "yes" || v === "1" } - return JSON.parse(v) - } - return v - }), isTranslation)) + if (schema.type === "number") { + return Number(v) + } + if (isTranslation) { + if (v === "") { + return {} + } + return JSON.parse(v) + } + return v + }), isTranslation)) + }catch (e) { + console.error("Could not register", path,"due to",e) + } {#if err !== undefined} {err} {:else}
+ {path.join(".")}
{/if} diff --git a/src/UI/Studio/SchemaBasedInput.svelte b/src/UI/Studio/SchemaBasedInput.svelte index 3e33a0cd3..ab6a6dc09 100644 --- a/src/UI/Studio/SchemaBasedInput.svelte +++ b/src/UI/Studio/SchemaBasedInput.svelte @@ -6,6 +6,7 @@ import SchemaBasedMultiType from "./SchemaBasedMultiType.svelte"; import SchemaBasedTranslationInput from "./SchemaBasedTranslationInput.svelte"; import { ConfigMetaUtils } from "./configMeta.ts" + import ArrayMultiAnswer from "./ArrayMultiAnswer.svelte"; export let schema: ConfigMeta; export let state: EditLayerState; export let path: (string | number)[] = []; @@ -14,6 +15,8 @@ {#if schema.hints.typehint === "tagrendering[]"} + {:else if schema.type === "array" && schema.hints.multianswer === "true"} + {:else if schema.type === "array"} {:else if schema.hints.types} diff --git a/src/UI/Studio/SchemaBasedMultiType.svelte b/src/UI/Studio/SchemaBasedMultiType.svelte index 5df7213ae..ac9cb5c3f 100644 --- a/src/UI/Studio/SchemaBasedMultiType.svelte +++ b/src/UI/Studio/SchemaBasedMultiType.svelte @@ -29,49 +29,81 @@ types.splice(hasBooleanOption); } + let lastIsString = false; + { + const types: string | string[] = Array.isArray(schema.type) ? schema.type[schema.type.length - 1].type : []; + lastIsString = types === "string" || (Array.isArray(types) && types.some(i => i === "string")); + } + + if (lastIsString) { + types.splice(types.length - 1, 1); + } const configJson: QuestionableTagRenderingConfigJson = { id: "TYPE_OF:" + path.join("_"), - question: "Which subcategory is needed?", + question: "Which subcategory is needed for "+schema.path.at(-1)+"?", questionHint: nmd(schema.description), mappings: types.map(opt => opt.trim()).filter(opt => opt.length > 0).map((opt, i) => ({ - if: "value=" + i, - addExtraTags: ["direct="], + if: "chosen_type_index=" + i, + addExtraTags: ["value="], then: opt + (i === defaultOption ? " (Default)" : "") - })) + })), + render: !lastIsString ? undefined : (schema.hints.inline ?? "Use a hardcoded value: {value}"), + freeform: !lastIsString ? undefined : { + key: "value", + inline: true, + type: schema.hints.typehint, + addExtraTags: ["chosen_type_index="] + } }; let tags = new UIEventSource>({}); + if (schema.hints.ifunset) { + configJson.mappings.push( + { + if: { and: ["value=", "chosen_type_index="] }, + then: schema.hints.ifunset + } + ); + } + if (schema.hints.suggestions) { + configJson.mappings.push(...schema.hints.suggestions); + } + if (hasBooleanOption >= 0) { configJson.mappings.unshift( { - if: "direct=true", + if: "value=true", then: (schema.hints.iftrue ?? "Yes"), - addExtraTags: ["value="] + addExtraTags: ["chosen_type_index="] }, { - if: "direct=false", + if: "value=false", then: (schema.hints.iffalse ?? "No"), - addExtraTags: ["value="] + addExtraTags: ["chosen_type_index="] } ); } const config = new TagRenderingConfig(configJson, "config based on " + schema.path.join(".")); + let chosenOption: number = defaultOption; const existingValue = state.getCurrentValueFor(path); - console.log("Setting direct: ", hasBooleanOption, path.join("."), existingValue); + console.log("Initial value is", existingValue); if (hasBooleanOption >= 0 && (existingValue === true || existingValue === false)) { - tags.setData({ direct: "" + existingValue }); + tags.setData({ value: "" + existingValue }); + } else if (lastIsString && typeof existingValue === "string") { + tags.setData({ value: existingValue }); + chosenOption = undefined; } else if (existingValue) { // We found an existing value. Let's figure out what type it matches and select that one // We run over all possibilities and check what is required const possibleTypes: { index: number, matchingPropertiesCount: number, optionalMatches: number }[] = []; outer: for (let i = 0; i < (<[]>schema.type).length; i++) { const type = schema.type[i]; - let optionalMatches = 0 + let optionalMatches = 0; for (const key of Object.keys(type.properties ?? {})) { - if(!!existingValue[key]){ - optionalMatches++ + if (!!existingValue[key]) { + optionalMatches++; } } if (type.required) { @@ -85,51 +117,56 @@ } numberOfMatches++; } - possibleTypes.push({ index: i, matchingPropertiesCount: numberOfMatches , optionalMatches}); + possibleTypes.push({ index: i, matchingPropertiesCount: numberOfMatches, optionalMatches }); } else { possibleTypes.push({ index: i, matchingPropertiesCount: 0, optionalMatches }); } - } possibleTypes.sort((a, b) => b.optionalMatches - a.optionalMatches); possibleTypes.sort((a, b) => b.matchingPropertiesCount - a.matchingPropertiesCount); if (possibleTypes.length > 0) { - tags.setData({ value: "" + possibleTypes[0].index }); + tags.setData({ chosen_type_index: "" + possibleTypes[0].index }); } } else if (defaultOption !== undefined) { - tags.setData({ value: "" + defaultOption }); + tags.setData({ chosen_type_index: "" + defaultOption }); } - if (hasBooleanOption >= 0) { + if (hasBooleanOption >= 0 || lastIsString) { const directValue = tags.mapD(tags => { - if (tags["value"]) { - return undefined; + if (tags["chosen_type_index"]) { + return ""; } - return tags["direct"] === "true"; + if (lastIsString) { + return tags["value"]; + } + return tags["value"] === "true"; }); onDestroy(state.register(path, directValue, true)); } - let chosenOption: number = defaultOption; let subSchemas: ConfigMeta[] = []; let subpath = path; - + console.log("Initial chosen option is", chosenOption); onDestroy(tags.addCallbackAndRun(tags => { + if (tags["value"] !== "") { + chosenOption = undefined; + return; + } const oldOption = chosenOption; - chosenOption = tags["value"] ? Number(tags["value"]) : defaultOption; + chosenOption = tags["chosen_type_index"] ? Number(tags["chosen_type_index"]) : defaultOption; const type = schema.type[chosenOption]; if (chosenOption !== oldOption) { // Reset the values beneath subSchemas = []; - const o = state.getCurrentValueFor(path) ?? {} - console.log({o}) - for(const key of type?.required ?? []){ - console.log(key) - o[key] ??= {} + const o = state.getCurrentValueFor(path) ?? {}; + console.log({ o }); + for (const key of type?.required ?? []) { + console.log(key); + o[key] ??= {}; } state.setValueAt(path, o); } @@ -152,13 +189,16 @@ for (const crumble of Object.keys(type.properties)) { subSchemas.push(...(state.getSchema([...cleanPath, crumble]))); } - console.log("Got subschemas for", path, ":", subSchemas) })); -
+
+ {#if schema.hints.title !== undefined} +

{schema.hints.title}

+
{schema.description}
+ {/if}
diff --git a/src/UI/Studio/configMeta.ts b/src/UI/Studio/configMeta.ts index 1f1f12c52..0e92c2c99 100644 --- a/src/UI/Studio/configMeta.ts +++ b/src/UI/Studio/configMeta.ts @@ -18,6 +18,8 @@ export interface ConfigMeta { default?: string typesdefault?: string suggestions?: [] + title?: string + multianswer?: "true" | string } required: boolean description: string diff --git a/src/assets/schemas/layerconfigmeta.json b/src/assets/schemas/layerconfigmeta.json index a0ade2343..7cfbc4b27 100644 --- a/src/assets/schemas/layerconfigmeta.json +++ b/src/assets/schemas/layerconfigmeta.json @@ -16,7 +16,7 @@ "question": "What is the identifier of this layer?" }, "type": "string", - "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.\n" + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer." }, { "path": [ @@ -36,7 +36,7 @@ "type": "string" } ], - "description": "Used in the layer control panel to toggle a layer on and of.\n\n" + "description": "Used in the layer control panel to toggle a layer on and of." }, { "path": [ @@ -55,7 +55,7 @@ "type": "string" } ], - "description": "A description for the features shown in this layer.\nThis often resembles the introduction of the wiki.osm.org-page for this feature.\n" + "description": "A description for the features shown in this layer.\nThis often resembles the introduction of the wiki.osm.org-page for this feature." }, { "path": [ @@ -66,7 +66,8 @@ "types": "Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;", "typesdefault": "0", "group": "Basic", - "question": "Where should the data be fetched from?" + "question": "Where should the data be fetched from?", + "title": "Data Source" }, "type": [ { @@ -121,7 +122,7 @@ "type": "string" } ], - "description": "\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" + "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\nEvery source _must_ define which tags _must_ be present in order to be picked up.\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer" }, { "path": [ @@ -169,7 +170,7 @@ "question": "How long (in seconds) is the data allowed to remain cached until it must be refreshed?" }, "type": "number", - "description": "The maximum amount of seconds that a tile is allowed to linger in the cache\n" + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache" }, { "path": [ @@ -182,7 +183,7 @@ "question": "What is the URL of the geojson?" }, "type": "string", - "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\n" + "description": "The actual source of the data to load, if loaded via geojson.\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}" }, { "path": [ @@ -195,7 +196,7 @@ "ifunset": "This is not a tiled geojson" }, "type": "number", - "description": "To load a tiled geojson layer, set the zoomlevel of the tiles\n" + "description": "To load a tiled geojson layer, set the zoomlevel of the tiles" }, { "path": [ @@ -209,7 +210,7 @@ "ifunset": "This is not an OpenStreetMap cache" }, "type": "boolean", - "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache.\nThis also indicates that making changes on this data is possible\n" + "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache.\nThis also indicates that making changes on this data is possible" }, { "path": [ @@ -223,7 +224,7 @@ "ifunset": "This geojson uses WGS84 just like most geojson (default)" }, "type": "boolean", - "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n" + "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this" }, { "path": [ @@ -237,7 +238,7 @@ "inline": "This geojson uses {value} as attribute to set the id" }, "type": "string", - "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'\n" + "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'" }, { "path": [ @@ -249,7 +250,7 @@ "question": "What extra attributes should be calculated with javascript?" }, "type": "array", - "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]\n\nThe specified tags are evaluated lazily. E.g. if a calculated tag is only used in the popup (e.g. the number of nearby features),\nthe expensive calculation will only be performed then for that feature. This avoids clogging up the contributors PC when all features are loaded.\n\nIf a tag has to be evaluated strictly, use ':=' instead:\n\n[\n\"_some_key:=some_javascript_expression\"\n]\n\nSee the full documentation on [https://github.com/pietervdvn/MapComplete/blob/master/Docs/CalculatedTags.md]\n" + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]\nThe specified tags are evaluated lazily. E.g. if a calculated tag is only used in the popup (e.g. the number of nearby features),\nthe expensive calculation will only be performed then for that feature. This avoids clogging up the contributors PC when all features are loaded.\nIf a tag has to be evaluated strictly, use ':=' instead:\n[\n\"_some_key:=some_javascript_expression\"\n]\nSee the full documentation on [https://github.com/pietervdvn/MapComplete/blob/master/Docs/CalculatedTags.md]" }, { "path": [ @@ -272,7 +273,7 @@ "type": "string" } ], - "description": "If set, only features matching this extra tag will be shown.\nThis is useful to hide certain features from view based on a calculated tag or if the features are provided by a different layer.\n" + "description": "If set, only features matching this extra tag will be shown.\nThis is useful to hide certain features from view based on a calculated tag or if the features are provided by a different layer." }, { "path": [ @@ -305,7 +306,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -338,7 +339,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -353,7 +354,7 @@ "ifunset": "Always load this layer, even if the entire world is in view." }, "type": "number", - "description": "The minimum needed zoomlevel required to start loading and displaying the data.\nThis can be used to only show common features (e.g. a bicycle parking) only when the map is zoomed in very much (17).\nThis prevents cluttering the map with thousands of parkings if one is looking to an entire city.\n" + "description": "The minimum needed zoomlevel required to start loading and displaying the data.\nThis can be used to only show common features (e.g. a bicycle parking) only when the map is zoomed in very much (17).\nThis prevents cluttering the map with thousands of parkings if one is looking to an entire city." }, { "path": [ @@ -368,7 +369,7 @@ "iffalse": "the layer is hidden until the contributor enables it. (If the filter-popup is disabled, this might never get enabled nor loaded)" }, "type": "boolean", - "description": "Indicates if this layer is shown by default;\ncan be used to hide a layer from start, or to load the layer but only to show it when appropriate (e.g. for advanced users)\n" + "description": "Indicates if this layer is shown by default;\ncan be used to hide a layer from start, or to load the layer but only to show it when appropriate (e.g. for advanced users)" }, { "path": [ @@ -380,7 +381,7 @@ "default": "100 (thus: always visible" }, "type": "number", - "description": "The zoom level at which point the data is hidden again\n" + "description": "The zoom level at which point the data is hidden again" }, { "path": [ @@ -577,16 +578,7 @@ "type": "string" } ], - "description": "The title shown in a popup for elements of this layer.\n" - }, - { - "path": [ - "title" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" + "description": "The title shown in a popup for elements of this layer." }, { "path": [ @@ -632,7 +624,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -711,7 +703,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -745,7 +737,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -779,7 +771,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -801,7 +793,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -835,7 +827,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -869,7 +861,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -938,7 +930,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -959,7 +951,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -1049,7 +1041,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -1064,7 +1056,7 @@ "iffalse": "show the infobox in a sidebar on the right" }, "type": "boolean", - "description": "\nIf set, open the selectedElementView in a floatOver instead of on the right.\n" + "description": "If set, open the selectedElementView in a floatOver instead of on the right." }, { "path": [ @@ -1103,16 +1095,7 @@ "maxItems": 1 } ], - "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons (which are added automatically)\n" - }, - { - "path": [ - "titleIcons" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons (which are added automatically)" }, { "path": [ @@ -1158,7 +1141,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -1237,7 +1220,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -1271,7 +1254,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1305,7 +1288,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1327,7 +1310,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -1361,7 +1344,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1395,7 +1378,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1464,7 +1447,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -1485,7 +1468,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -1575,401 +1558,1282 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ - "mapRendering" + "pointRendering" + ], + "required": true, + "hints": { + "group": "pointrendering" + }, + "type": "array", + "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" + }, + { + "path": [ + "pointRendering" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\nThis can be used if:\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" + }, + { + "path": [ + "pointRendering", + "location" + ], + "required": true, + "hints": { + "question": "At what location should this icon be shown?", + "suggestions": [ + { + "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" + } + ], + "multianswer": "true" + }, + "type": "array", + "description": "" + }, + { + "path": [ + "pointRendering", + "marker" ], "required": false, "hints": { - "types": "PointRendering ; LineRendering ;", - "group": "maprendering" + "typehint": "icon", + "question": "What marker should be used to" + }, + "type": "array", + "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.\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": [ + "pointRendering", + "marker", + "icon", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" }, "type": [ { - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "$ref": "#/definitions/Record" + }, + { "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", - "type": "array", - "items": { - "type": "string" - } - }, - "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;`\n\nType: icon", - "anyOf": [ + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", "type": "object", "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": { "type": "string" } }, - "additionalProperties": false + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "marker", + "icon", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "marker", + "color", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "iconBadges" + ], + "required": false, + "hints": {}, + "type": "array", + "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.\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" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "if" + ], + "required": true, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] }, { "type": "string" } ] }, - "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", + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", "type": "array", "items": { "type": "object", "properties": { "if": { "$ref": "#/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" + "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": "Badge to show\nType: icon", + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", "anyOf": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", "type": "object", "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", "type": "string" } }, - "additionalProperties": false + "required": [ + "path" + ] }, { "type": "string" @@ -1983,3233 +2847,7392 @@ ] } }, - "iconSize": { - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", "anyOf": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false + "$ref": "#/definitions/Record" }, { "type": "string" } ] }, - "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.", - "anyOf": [ + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "Badge to show" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", "type": "object", "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": { "type": "string" } }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "rotation": { - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "label": { - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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.", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "css": { - "description": "A snippet of css code which is applied onto the container of the entire marker", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "cssClasses": { - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "labelCss": { - "description": "Css that is applied onto the label", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "labelCssClasses": { - "description": "Css classes that are applied onto the label; can be space-separated", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] - }, - "pitchAlignment": { - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ] - }, - "rotationAlignment": { - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" + "required": [ + "type" + ] } ] } }, "required": [ - "location" - ], - "additionalProperties": false + "special" + ] }, { - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { "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", - "anyOf": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ] + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" }, - "width": { - "description": "The stroke-width for way-elements", + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "iconBadges", + "then", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "iconSize" + ], + "required": false, + "hints": {}, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", "anyOf": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false + "$ref": "#/definitions/Record" }, { - "type": [ - "string", - "number" + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" ] - } - ] - }, - "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": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false }, { "type": "string" } ] }, - "lineCap": { - "description": "The form at the end of a line", + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", "anyOf": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", "type": "object", "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", "type": "string" } }, - "additionalProperties": false + "required": [ + "path" + ] }, { "type": "string" } ] }, - "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", + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", "anyOf": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" }, { "type": "string" } ] }, - "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", + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", "anyOf": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" }, - "required": [ - "key" - ] - }, - "mappings": { - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", - "type": "array", - "items": { + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { "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}'}" + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" } }, "required": [ - "if", - "then" + "path" ] + }, + { + "type": "string" } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" }, { - "type": "number" + "type": "string" } ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" } }, "additionalProperties": false }, { - "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": "string" + } + ], + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" + }, + { + "path": [ + "pointRendering", + "iconSize", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { "type": "object", "properties": { - "rewrite": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "iconSize", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "iconSize", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "iconSize", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "iconSize", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "iconSize", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconSize", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconSize", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "iconSize", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconSize", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "iconSize", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "iconSize", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "iconSize", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "iconSize", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "iconSize", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "iconSize", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "iconSize", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "iconSize", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "iconSize", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "iconSize", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "anchor" + ], + "required": false, + "hints": { + "question": "What is the anchorpoint of the icon?", + "ifunset": "Use MapComplete-default (center)", + "suggestions": [ + { + "if": "value=center", + "then": "Place the center of the icon on the geographical location" + }, + { + "if": "value=top", + "then": "Place the top of the icon on the geographical location" + }, + { + "if": "value=bottom", + "then": "Place the bottom of the icon on the geographical location" + }, + { + "if": "value=left", + "then": "Place the left of the icon on the geographical location" + }, + { + "if": "value=right", + "then": "Place the right of the icon on the geographical location" + } + ] + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", "type": "object", "properties": { - "sourceString": { - "type": "array", - "items": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "This matches the geographical point with a location on the icon." + }, + { + "path": [ + "pointRendering", + "anchor", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "anchor", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "anchor", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "anchor", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "anchor", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "anchor", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "anchor", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "anchor", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "anchor", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "anchor", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "anchor", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "anchor", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "anchor", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "anchor", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "anchor", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "anchor", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "anchor", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "anchor", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "anchor", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "anchor", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "rotation" + ], + "required": false, + "hints": {}, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" + }, + { + "path": [ + "pointRendering", + "rotation", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "rotation", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "rotation", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "rotation", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "rotation", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "rotation", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotation", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotation", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "rotation", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotation", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotation", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "rotation", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "rotation", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "rotation", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "rotation", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "rotation", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "rotation", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "rotation", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "rotation", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "rotation", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "label" + ], + "required": false, + "hints": { + "types": "Dynamic value | string", + "question": "What label should be shown beneath the marker?", + "inline": "Always show label {value} beneath the marker" + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "For example:
{name}
\nIf the icon is undefined, then the label is shown in the center of the feature." + }, + { + "path": [ + "pointRendering", + "label", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "label", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "label", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "label", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "label", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "label", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "label", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "label", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "label", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "label", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "label", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "label", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "label", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "label", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "label", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "label", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "label", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "label", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "label", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "label", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "css" + ], + "required": false, + "hints": { + "types": "Dynamic value ; string", + "question": "What CSS should be applied to the entire marker?", + "inline": "Apply CSS-style {value} to the _entire marker_" + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "You 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" + }, + { + "path": [ + "pointRendering", + "css", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "css", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "css", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "css", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "css", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "css", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "css", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "css", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "css", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "css", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "css", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "css", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "css", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "css", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "css", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "css", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "css", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "css", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "css", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "css", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "cssClasses" + ], + "required": false, + "hints": { + "types": "Dynamic value ; string", + "question": "Which CSS-classes should be applied to the entire marker?", + "inline": "Apply CSS-classes {value} to the entire container" + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "This will be applied to the _container_ containing both the marker and the label\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`" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "cssClasses", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "labelCss" + ], + "required": false, + "hints": { + "types": "Dynamic value ; string", + "question": "What CSS should be applied to the label?", + "inline": "Apply CSS-style {value} to the label" + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "You can set the css-properties here, e.g. `background: red; font-size: 12px; `" + }, + { + "path": [ + "pointRendering", + "labelCss", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "labelCss", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "labelCss", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "labelCss", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "labelCss", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "labelCss", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCss", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCss", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "labelCss", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCss", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCss", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "labelCss", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "labelCss", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "labelCss", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "labelCss", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "labelCss", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "labelCss", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "labelCss", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "labelCss", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "labelCss", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "labelCssClasses" + ], + "required": false, + "hints": { + "types": "Dynamic value ; string", + "question": "Which CSS-classes should be applied to the label?", + "inline": "Apply CSS-classes {value} to the label" + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "string" + } + ], + "description": "The 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`" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "labelCssClasses", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "pitchAlignment" + ], + "required": false, + "hints": {}, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "enum": [ + "canvas", + "map" + ], + "type": "string" + } + ], + "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "pitchAlignment", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "pointRendering", + "rotationAlignment" + ], + "required": false, + "hints": { + "question": "Should the icon be rotated or tilted if the map is rotated or tilted?", + "ifunset": "Do not rotate or tilt icons. Always keep the icons straight", + "suggestions": [ + { + "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." + } + ] + }, + "type": [ + { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "type": "object", + "properties": { + "render": { + "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + }, + "condition": { + "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "metacondition": { + "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", + "anyOf": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", + "type": "object", + "properties": { + "key": { + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "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\nType: rendered", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "icon": { + "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", + "anyOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "description": { + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", + "anyOf": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ] + }, + "classes": { + "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "enum": [ + "canvas", + "map" + ], + "type": "string" + } + ], + "description": "" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "pointRendering", + "rotationAlignment", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "lineRendering" + ], + "required": false, + "hints": { + "group": "linerendering" + }, + "type": "array", + "description": "Creates lines and areas to render on the map" + }, + { + "path": [ + "lineRendering" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\nThis can be used if:\n- The feature is a line\n- The feature is an area" + }, + { + "path": [ + "lineRendering", + "color" + ], + "required": false, + "hints": { + "typehint": "color", + "types": "dynamic value ; string", + "question": "What color should lines be drawn in?", + "ifunset": "Round ending", + "inline": "The line colour always is {value}", + "title": "Line Colour" + }, + "type": [ + { + "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" } }, - "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 - } - ], - "description": "Visualisation of the items on the map\nSet 'null' explicitly if you do not want a maprendering" - }, - { - "path": [ - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "mapRendering", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "mapRendering", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, "required": [ "if", "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -5218,8623 +10241,24 @@ "type": "string" } ], - "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;`\n" + "description": "For 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" }, { "path": [ - "mapRendering", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "mapRendering", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "mapRendering", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "mapRendering", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "mapRendering", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "mapRendering", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "mapRendering", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "mapRendering", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "mapRendering", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "mapRendering", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "mapRendering", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "mapRendering", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", + "lineRendering", "color", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ - "mapRendering", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", + "lineRendering", "color", "mappings" ], @@ -13845,7 +10269,7 @@ }, { "path": [ - "mapRendering", + "lineRendering", "color", "mappings", "if" @@ -13877,238 +10301,44 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ - "mapRendering", + "lineRendering", "color", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ - "mapRendering", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", + "lineRendering", "width" ], "required": false, - "hints": {}, + "hints": { + "typehint": "pnat", + "types": "dynamic value ; string", + "question": "How wide should the line be?", + "ifunset": "Use the default-linewidth of 7 pixels", + "inline": "The line width is {value} pixels", + "title": "Line width" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -14121,39 +10351,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -14161,21 +10360,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -14191,336 +10375,20 @@ }, { "path": [ - "mapRendering", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", + "lineRendering", "width", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ - "mapRendering", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", + "lineRendering", "width", "mappings" ], @@ -14531,7 +10399,7 @@ }, { "path": [ - "mapRendering", + "lineRendering", "width", "mappings", "if" @@ -14563,921 +10431,69 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ - "mapRendering", + "lineRendering", "width", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ - "mapRendering", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", + "lineRendering", "dashArray" ], "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "mapRendering", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "dashArray", - "render" - ], - "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "Should a dasharray be used to render the lines?", + "ifunset": "Ways are rendered with a full line" }, "type": "string", - "description": "The path to the icon" + "description": "The 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" }, { "path": [ - "mapRendering", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", + "lineRendering", "lineCap" ], "required": false, - "hints": {}, + "hints": { + "types": "dynamic value ; string", + "question": "What form should the line-ending have?", + "ifunset": "Use the default value (round ending)", + "suggestions": [ + { + "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)" + } + ], + "title": "Line Cap" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -15490,39 +10506,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -15530,21 +10515,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -15553,340 +10523,24 @@ "type": "string" } ], - "description": "The form at the end of a line" + "description": "" }, { "path": [ - "mapRendering", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", + "lineRendering", "lineCap", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ - "mapRendering", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", + "lineRendering", "lineCap", "mappings" ], @@ -15897,7 +10551,7 @@ }, { "path": [ - "mapRendering", + "lineRendering", "lineCap", "mappings", "if" @@ -15929,238 +10583,49 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ - "mapRendering", + "lineRendering", "lineCap", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ - "mapRendering", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", + "lineRendering", "fillColor" ], "required": false, - "hints": {}, + "hints": { + "typehint": "color", + "types": "dynamic value ; string", + "question": "What colour should be used as fill colour for polygons?", + "ifunset": "The polygon fill colour will be a more transparent version of the stroke colour", + "inline": "The fill colour is {value}", + "suggestions": [ + { + "if": "value=#00000000", + "then": "Use a transparent fill (only render the outline)" + } + ] + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -16173,39 +10638,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -16213,21 +10647,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -16236,340 +10655,24 @@ "type": "string" } ], - "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": "" }, { "path": [ - "mapRendering", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", + "lineRendering", "fillColor", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ - "mapRendering", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", + "lineRendering", "fillColor", "mappings" ], @@ -16580,7 +10683,7 @@ }, { "path": [ - "mapRendering", + "lineRendering", "fillColor", "mappings", "if" @@ -16612,238 +10715,43 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ - "mapRendering", + "lineRendering", "fillColor", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ - "mapRendering", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", + "lineRendering", "offset" ], "required": false, - "hints": {}, + "hints": { + "typehint": "int", + "types": "dynamic value ; number", + "question": "Should the lines be moved (offsetted) with a number of pixels against the geographical lines?", + "ifunset": "don't offset lines on the map", + "inline": "Pixel offset by {value} pixels" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -16856,39 +10764,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -16896,21 +10773,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -16919,340 +10781,24 @@ "type": "number" } ], - "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": "The 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).\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" }, { "path": [ - "mapRendering", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", + "lineRendering", "offset", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ - "mapRendering", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", + "lineRendering", "offset", "mappings" ], @@ -17263,7 +10809,7 @@ }, { "path": [ - "mapRendering", + "lineRendering", "offset", "mappings", "if" @@ -17295,25745 +10841,21 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ - "mapRendering", + "lineRendering", "offset", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "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]" - }, - { - "path": [ - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "mapRendering", - "renderings", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": [ - "string", - "number" - ] - } - ], - "description": "The stroke-width for way-elements" - }, - { - "path": [ - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The form at the end of a line" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "number" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": [ - "string", - "number" - ] - } - ], - "description": "The stroke-width for way-elements" - }, - { - "path": [ - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The form at the end of a line" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "number" - } - ], - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "mapRendering", - "renderings", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "mapRendering", - "renderings", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "If 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" }, { "path": [ @@ -43062,7 +10884,7 @@ "iffalse": "download the data as usual" }, "type": "boolean", - "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration\nThe opposite of `forceLoad`\n" + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration\nThe opposite of `forceLoad`" }, { "path": [ @@ -43076,7 +10898,7 @@ "iffalse": "only download data for this layer when needed (default)" }, "type": "boolean", - "description": "Advanced option - might be set by the theme compiler\n\nIf true, this data will _always_ be loaded, even if the theme is disabled by a filter or hidden.\nThe opposite of `doNotDownload`\n\nifftrue: always download this layer, even if it is disabled" + "description": "Advanced option - might be set by the theme compiler\nIf true, this data will _always_ be loaded, even if the theme is disabled by a filter or hidden.\nThe opposite of `doNotDownload`\nifftrue: always download this layer, even if it is disabled" }, { "path": [ @@ -43087,7 +10909,7 @@ "group": "presets" }, "type": "array", - "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all\n" + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all" }, { "path": [ @@ -43107,7 +10929,7 @@ "type": "string" } ], - "description": "The title - shown on the 'add-new'-button.\n\nThis should include the article of the noun, e.g. 'a hydrant', 'a bicycle pump'.\nThis text will be inserted into `Add {category} here`, becoming `Add a hydrant here`.\n\nDo _not_ indicate 'new': 'add a new shop here' is incorrect, as the shop might have existed forever, it could just be unmapped!\n" + "description": "The title - shown on the 'add-new'-button.\nThis should include the article of the noun, e.g. 'a hydrant', 'a bicycle pump'.\nThis text will be inserted into `Add {category} here`, becoming `Add a hydrant here`.\nDo _not_ indicate 'new': 'add a new shop here' is incorrect, as the shop might have existed forever, it could just be unmapped!" }, { "path": [ @@ -43120,7 +10942,7 @@ "question": "What tag should be added to the new object?" }, "type": "array", - "description": "A single tag (encoded as key=value) out of all the tags to add onto the newly created point.\nNote that the icon in the UI will be chosen automatically based on the tags provided here.\n" + "description": "A single tag (encoded as key=value) out of all the tags to add onto the newly created point.\nNote that the icon in the UI will be chosen automatically based on the tags provided here." }, { "path": [ @@ -43139,7 +10961,7 @@ "type": "string" } ], - "description": "An extra explanation of what the feature is, if it is not immediately clear from the title alone.\n\nThe _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)\n" + "description": "An extra explanation of what the feature is, if it is not immediately clear from the title alone.\nThe _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n(The first sentence is until the first '.'-character in the description)" }, { "path": [ @@ -43152,7 +10974,7 @@ "question": "What is the URL of an image showing such a feature?" }, "type": "array", - "description": "The URL of an example image which shows a real-life example of what such a feature might look like.\n" + "description": "The URL of an example image which shows a real-life example of what such a feature might look like." }, { "path": [ @@ -43698,7 +11520,7 @@ ] }, "type": "array", - "description": "\nIf specified, these layers will be shown in the precise location picker and the new point will be snapped towards it.\nFor example, this can be used to snap against `walls_and_buildings` (e.g. to attach a defibrillator, an entrance, an artwork, ... to the wall)\nor to snap an obstacle (such as a bollard) to the `cycleways_and_roads`.\n" + "description": "If specified, these layers will be shown in the precise location picker and the new point will be snapped towards it.\nFor example, this can be used to snap against `walls_and_buildings` (e.g. to attach a defibrillator, an entrance, an artwork, ... to the wall)\nor to snap an obstacle (such as a bollard) to the `cycleways_and_roads`." }, { "path": [ @@ -43712,7 +11534,7 @@ "inline": "a point is snapped if the location input is at most {value}m away from an object" }, "type": "number", - "description": "\n\nIf specified, a new point will only be snapped if it is within this range.\nIf further away, it'll be placed in the center of the location input\nDistance in meter\n" + "description": "If specified, a new point will only be snapped if it is within this range.\nIf further away, it'll be placed in the center of the location input\nDistance in meter" }, { "path": [ @@ -43972,7 +11794,2049 @@ "type": "string" } ], - "description": "\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\nFurthermore, _all_ the questions of another layer can be reused with `otherlayer.*`\nIf you need only a single of the tagRenderings, use `otherlayer.tagrenderingId`\nIf one or more questions have a 'group' or 'label' set, select all the entries with the corresponding group or label with `otherlayer.*group`\nRemark: if a tagRendering is 'lent' from another layer, the 'source'-tags are copied and added as condition.\nIf they are not wanted, remove them with an override\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together\n" + "description": "A tag rendering is a block that either shows the known value or asks a question.\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\nFurthermore, _all_ the questions of another layer can be reused with `otherlayer.*`\nIf you need only a single of the tagRenderings, use `otherlayer.tagrenderingId`\nIf one or more questions have a 'group' or 'label' set, select all the entries with the corresponding group or label with `otherlayer.*group`\nRemark: if a tagRendering is 'lent' from another layer, the 'source'-tags are copied and added as condition.\nIf they are not wanted, remove them with an override\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together" + }, + { + "path": [ + "tagRenderings", + "mappings" + ], + "required": false, + "hints": { + "question": "What are common options?" + }, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "tagRenderings", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "What tags should be matched to show this option?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + }, + { + "path": [ + "tagRenderings", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What corresponding text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "Shown if the `if` is fulfilled" + }, + { + "path": [ + "tagRenderings", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be shown next to this mapping?", + "ifunset": "Show no icon" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "Size of the image", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" + }, + { + "path": [ + "tagRenderings", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "tagRenderings", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "Size of the image" + }, + { + "path": [ + "tagRenderings", + "mappings", + "hideInAnswer" + ], + "required": false, + "hints": { + "typehint": "tag", + "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", + "iftrue": "Never show this mapping as option to pick", + "ifunset": "Always show this mapping as option to pick" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": [ + "string", + "boolean" + ] + } + ], + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + }, + { + "path": [ + "tagRenderings", + "mappings", + "hideInAnswer", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "mappings", + "hideInAnswer", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "mappings", + "ifnot" + ], + "required": false, + "hints": { + "question": "What tags should be applied if this mapping is _not_ chosen?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + }, + { + "path": [ + "tagRenderings", + "mappings", + "ifnot", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "mappings", + "ifnot", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "mappings", + "addExtraTags" + ], + "required": false, + "hints": { + "typehint": "simple_tag[]", + "question": "What extra tags should be added to the object if this object is chosen?" + }, + "type": "array", + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + }, + { + "path": [ + "tagRenderings", + "mappings", + "searchTerms" + ], + "required": false, + "hints": { + "group": "hidden", + "question": "If there are many options, what search terms match too?" + }, + "type": "object", + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" + }, + { + "path": [ + "tagRenderings", + "mappings", + "priorityIf" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" + }, + { + "path": [ + "tagRenderings", + "mappings", + "priorityIf", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "mappings", + "priorityIf", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "mappings", + "#" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": "string", + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + }, + { + "path": [ + "tagRenderings", + "multiAnswer" + ], + "required": false, + "hints": { + "question": "Should a contributor be allowed to select multiple mappings?", + "iftrue": "allow to select multiple mappigns", + "iffalse": "only allow to select a single mapping", + "ifunset": "only allow to select a single mapping" + }, + "type": "boolean", + "description": "If true, use checkboxes instead of radio buttons when asking the question" + }, + { + "path": [ + "tagRenderings", + "freeform" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "tagRenderings", + "freeform", + "key" + ], + "required": true, + "hints": { + "ifunset": "do not offer a freeform textfield as answer option" + }, + "type": "string", + "description": "question What is the name of the attribute that should be written to?" + }, + { + "path": [ + "tagRenderings", + "freeform", + "type" + ], + "required": false, + "hints": { + "question": "What is the input type?", + "suggestions": [ + { + "if": "value=string", + "then": "string A simple piece of text" + }, + { + "if": "value=text", + "then": "text A longer piece of text. Uses an textArea instead of a textField" + }, + { + "if": "value=date", + "then": "date A date with date picker" + }, + { + "if": "value=nat", + "then": "nat A whole, positive number or zero" + }, + { + "if": "value=int", + "then": "int A whole number, either positive, negative or zero" + }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, + { + "if": "value=direction", + "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." + }, + { + "if": "value=wikidata", + "then": "wikidata A wikidata identifier, e.g. Q42. " + }, + { + "if": "value=pnat", + "then": "pnat A strict positive number" + }, + { + "if": "value=float", + "then": "float A decimal number" + }, + { + "if": "value=pfloat", + "then": "pfloat A positive decimal number or zero" + }, + { + "if": "value=email", + "then": "email An email adress" + }, + { + "if": "value=url", + "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" + }, + { + "if": "value=phone", + "then": "phone A phone number" + }, + { + "if": "value=opening_hours", + "then": "opening_hours Has extra elements to easily input when a POI is opened. " + }, + { + "if": "value=color", + "then": "color Shows a color picker" + }, + { + "if": "value=icon", + "then": "icon Makes sure that a valid .svg-path is added" + }, + { + "if": "value=fediverse", + "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" + } + ] + }, + "type": "string", + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" + }, + { + "path": [ + "tagRenderings", + "freeform", + "placeholder" + ], + "required": false, + "hints": {}, + "description": "A (translated) text that is shown (as gray text) within the textfield" + }, + { + "path": [ + "tagRenderings", + "freeform", + "helperArgs" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" + }, + { + "path": [ + "tagRenderings", + "freeform", + "addExtraTags" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" + }, + { + "path": [ + "tagRenderings", + "freeform", + "inline" + ], + "required": false, + "hints": { + "question": "Show the freeform as box within the question?", + "iftrue": "show the freeform input field as a small field within the question", + "ifunset": "show the freeform input field full-width" + }, + "type": "boolean", + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." + }, + { + "path": [ + "tagRenderings", + "freeform", + "default" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" + }, + { + "path": [ + "tagRenderings", + "question" + ], + "required": false, + "hints": { + "question": "What question should be shown to the contributor?", + "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." + }, + { + "path": [ + "tagRenderings", + "questionHint" + ], + "required": false, + "hints": { + "question": "Should some extra information be shown to the contributor, alongside the question?", + "ifunset": "No extra hint is given" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" + }, + { + "path": [ + "tagRenderings", + "labels" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" + }, + { + "path": [ + "tagRenderings", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "tagRenderings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "tagRenderings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "tagRenderings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "tagRenderings", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "tagRenderings", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "tagRenderings", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "tagRenderings", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings" + ], + "required": false, + "hints": { + "question": "What are common options?" + }, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "What tags should be matched to show this option?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What corresponding text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "Shown if the `if` is fulfilled" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be shown next to this mapping?", + "ifunset": "Show no icon" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "Size of the image", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "Size of the image" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "hideInAnswer" + ], + "required": false, + "hints": { + "typehint": "tag", + "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", + "iftrue": "Never show this mapping as option to pick", + "ifunset": "Always show this mapping as option to pick" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": [ + "string", + "boolean" + ] + } + ], + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "hideInAnswer", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "hideInAnswer", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "ifnot" + ], + "required": false, + "hints": { + "question": "What tags should be applied if this mapping is _not_ chosen?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "ifnot", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "ifnot", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "addExtraTags" + ], + "required": false, + "hints": { + "typehint": "simple_tag[]", + "question": "What extra tags should be added to the object if this object is chosen?" + }, + "type": "array", + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "searchTerms" + ], + "required": false, + "hints": { + "group": "hidden", + "question": "If there are many options, what search terms match too?" + }, + "type": "object", + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "priorityIf" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "priorityIf", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "priorityIf", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "mappings", + "#" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": "string", + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + }, + { + "path": [ + "tagRenderings", + "override", + "multiAnswer" + ], + "required": false, + "hints": { + "question": "Should a contributor be allowed to select multiple mappings?", + "iftrue": "allow to select multiple mappigns", + "iffalse": "only allow to select a single mapping", + "ifunset": "only allow to select a single mapping" + }, + "type": "boolean", + "description": "If true, use checkboxes instead of radio buttons when asking the question" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "key" + ], + "required": true, + "hints": { + "ifunset": "do not offer a freeform textfield as answer option" + }, + "type": "string", + "description": "question What is the name of the attribute that should be written to?" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "type" + ], + "required": false, + "hints": { + "question": "What is the input type?", + "suggestions": [ + { + "if": "value=string", + "then": "string A simple piece of text" + }, + { + "if": "value=text", + "then": "text A longer piece of text. Uses an textArea instead of a textField" + }, + { + "if": "value=date", + "then": "date A date with date picker" + }, + { + "if": "value=nat", + "then": "nat A whole, positive number or zero" + }, + { + "if": "value=int", + "then": "int A whole number, either positive, negative or zero" + }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, + { + "if": "value=direction", + "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." + }, + { + "if": "value=wikidata", + "then": "wikidata A wikidata identifier, e.g. Q42. " + }, + { + "if": "value=pnat", + "then": "pnat A strict positive number" + }, + { + "if": "value=float", + "then": "float A decimal number" + }, + { + "if": "value=pfloat", + "then": "pfloat A positive decimal number or zero" + }, + { + "if": "value=email", + "then": "email An email adress" + }, + { + "if": "value=url", + "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" + }, + { + "if": "value=phone", + "then": "phone A phone number" + }, + { + "if": "value=opening_hours", + "then": "opening_hours Has extra elements to easily input when a POI is opened. " + }, + { + "if": "value=color", + "then": "color Shows a color picker" + }, + { + "if": "value=icon", + "then": "icon Makes sure that a valid .svg-path is added" + }, + { + "if": "value=fediverse", + "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" + } + ] + }, + "type": "string", + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "placeholder" + ], + "required": false, + "hints": {}, + "description": "A (translated) text that is shown (as gray text) within the textfield" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "helperArgs" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "addExtraTags" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "inline" + ], + "required": false, + "hints": { + "question": "Show the freeform as box within the question?", + "iftrue": "show the freeform input field as a small field within the question", + "ifunset": "show the freeform input field full-width" + }, + "type": "boolean", + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." + }, + { + "path": [ + "tagRenderings", + "override", + "freeform", + "default" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" + }, + { + "path": [ + "tagRenderings", + "override", + "question" + ], + "required": false, + "hints": { + "question": "What question should be shown to the contributor?", + "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." + }, + { + "path": [ + "tagRenderings", + "override", + "questionHint" + ], + "required": false, + "hints": { + "question": "Should some extra information be shown to the contributor, alongside the question?", + "ifunset": "No extra hint is given" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" + }, + { + "path": [ + "tagRenderings", + "override", + "labels" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" + }, + { + "path": [ + "tagRenderings", + "override", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "tagRenderings", + "override", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "tagRenderings", + "override", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "tagRenderings", + "override", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "tagRenderings", + "override", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "tagRenderings", + "override", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "tagRenderings", + "override", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "tagRenderings", + "override", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "tagRenderings", + "override", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -43981,2068 +13845,7 @@ "required": false, "hints": {}, "type": "object", - "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." - }, - { - "path": [ - "tagRenderings", - "mappings" - ], - "required": false, - "hints": { - "question": "What are common options?" - }, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "What tags should be matched to show this option?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" - }, - { - "path": [ - "tagRenderings", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What corresponding text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "Shown if the `if` is fulfilled" - }, - { - "path": [ - "tagRenderings", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be shown next to this mapping?", - "ifunset": "Show no icon" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "tagRenderings", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "Size of the image" - }, - { - "path": [ - "tagRenderings", - "mappings", - "hideInAnswer" - ], - "required": false, - "hints": { - "typehint": "tag", - "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", - "iftrue": "Never show this mapping as option to pick", - "ifunset": "Always show this mapping as option to pick" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" - }, - { - "path": [ - "tagRenderings", - "mappings", - "hideInAnswer", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "hideInAnswer", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "ifnot" - ], - "required": false, - "hints": { - "question": "What tags should be applied if this mapping is _not_ chosen?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" - }, - { - "path": [ - "tagRenderings", - "mappings", - "ifnot", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "ifnot", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "addExtraTags" - ], - "required": false, - "hints": { - "typehint": "simple_tag[]", - "question": "What extra tags should be added to the object if this object is chosen?" - }, - "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" - }, - { - "path": [ - "tagRenderings", - "mappings", - "searchTerms" - ], - "required": false, - "hints": { - "group": "hidden", - "question": "If there are many options, what search terms match too?" - }, - "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" - }, - { - "path": [ - "tagRenderings", - "mappings", - "priorityIf" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" - }, - { - "path": [ - "tagRenderings", - "mappings", - "priorityIf", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "priorityIf", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "mappings", - "#" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" - }, - { - "path": [ - "tagRenderings", - "multiAnswer" - ], - "required": false, - "hints": { - "question": "Should a contributor be allowed to select multiple mappings?", - "iftrue": "allow to select multiple mappigns", - "iffalse": "only allow to select a single mapping", - "ifunset": "only allow to select a single mapping" - }, - "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" - }, - { - "path": [ - "tagRenderings", - "freeform" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "tagRenderings", - "freeform", - "key" - ], - "required": true, - "hints": { - "ifunset": "do not offer a freeform textfield as answer option" - }, - "type": "string", - "description": "question What is the name of the attribute that should be written to?" - }, - { - "path": [ - "tagRenderings", - "freeform", - "type" - ], - "required": false, - "hints": { - "question": "What is the input type?", - "suggestions": [ - { - "if": "value=string", - "then": "string A simple piece of text" - }, - { - "if": "value=text", - "then": "text A longer piece of text. Uses an textArea instead of a textField" - }, - { - "if": "value=date", - "then": "date A date with date picker" - }, - { - "if": "value=nat", - "then": "nat A whole, positive number or zero" - }, - { - "if": "value=int", - "then": "int A whole number, either positive, negative or zero" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" - }, - { - "if": "value=direction", - "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." - }, - { - "if": "value=wikidata", - "then": "wikidata A wikidata identifier, e.g. Q42. " - }, - { - "if": "value=pnat", - "then": "pnat A strict positive number" - }, - { - "if": "value=float", - "then": "float A decimal number" - }, - { - "if": "value=pfloat", - "then": "pfloat A positive decimal number or zero" - }, - { - "if": "value=email", - "then": "email An email adress" - }, - { - "if": "value=url", - "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" - }, - { - "if": "value=phone", - "then": "phone A phone number" - }, - { - "if": "value=opening_hours", - "then": "opening_hours Has extra elements to easily input when a POI is opened. " - }, - { - "if": "value=color", - "then": "color Shows a color picker" - }, - { - "if": "value=icon", - "then": "icon Makes sure that a valid .svg-path is added" - }, - { - "if": "value=fediverse", - "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" - } - ] - }, - "type": "string", - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" - }, - { - "path": [ - "tagRenderings", - "freeform", - "placeholder" - ], - "required": false, - "hints": {}, - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - { - "path": [ - "tagRenderings", - "freeform", - "helperArgs" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" - }, - { - "path": [ - "tagRenderings", - "freeform", - "addExtraTags" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" - }, - { - "path": [ - "tagRenderings", - "freeform", - "inline" - ], - "required": false, - "hints": { - "question": "Show the freeform as box within the question?", - "iftrue": "show the freeform input field as a small field within the question", - "ifunset": "show the freeform input field full-width" - }, - "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." - }, - { - "path": [ - "tagRenderings", - "freeform", - "default" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" - }, - { - "path": [ - "tagRenderings", - "question" - ], - "required": false, - "hints": { - "question": "What question should be shown to the contributor?", - "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" - }, - { - "path": [ - "tagRenderings", - "questionHint" - ], - "required": false, - "hints": { - "question": "Should some extra information be shown to the contributor, alongside the question?", - "ifunset": "No extra hint is given" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" - }, - { - "path": [ - "tagRenderings", - "labels" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" - }, - { - "path": [ - "tagRenderings", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "tagRenderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "tagRenderings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "tagRenderings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "tagRenderings", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "tagRenderings", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "tagRenderings", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "tagRenderings", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings" - ], - "required": false, - "hints": { - "question": "What are common options?" - }, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "What tags should be matched to show this option?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What corresponding text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "Shown if the `if` is fulfilled" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be shown next to this mapping?", - "ifunset": "Show no icon" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "Size of the image" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "hideInAnswer" - ], - "required": false, - "hints": { - "typehint": "tag", - "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", - "iftrue": "Never show this mapping as option to pick", - "ifunset": "Always show this mapping as option to pick" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "hideInAnswer", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "hideInAnswer", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "ifnot" - ], - "required": false, - "hints": { - "question": "What tags should be applied if this mapping is _not_ chosen?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "ifnot", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "ifnot", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "addExtraTags" - ], - "required": false, - "hints": { - "typehint": "simple_tag[]", - "question": "What extra tags should be added to the object if this object is chosen?" - }, - "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "searchTerms" - ], - "required": false, - "hints": { - "group": "hidden", - "question": "If there are many options, what search terms match too?" - }, - "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "priorityIf" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "priorityIf", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "priorityIf", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "mappings", - "#" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" - }, - { - "path": [ - "tagRenderings", - "override", - "multiAnswer" - ], - "required": false, - "hints": { - "question": "Should a contributor be allowed to select multiple mappings?", - "iftrue": "allow to select multiple mappigns", - "iffalse": "only allow to select a single mapping", - "ifunset": "only allow to select a single mapping" - }, - "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "key" - ], - "required": true, - "hints": { - "ifunset": "do not offer a freeform textfield as answer option" - }, - "type": "string", - "description": "question What is the name of the attribute that should be written to?" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "type" - ], - "required": false, - "hints": { - "question": "What is the input type?", - "suggestions": [ - { - "if": "value=string", - "then": "string A simple piece of text" - }, - { - "if": "value=text", - "then": "text A longer piece of text. Uses an textArea instead of a textField" - }, - { - "if": "value=date", - "then": "date A date with date picker" - }, - { - "if": "value=nat", - "then": "nat A whole, positive number or zero" - }, - { - "if": "value=int", - "then": "int A whole number, either positive, negative or zero" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" - }, - { - "if": "value=direction", - "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." - }, - { - "if": "value=wikidata", - "then": "wikidata A wikidata identifier, e.g. Q42. " - }, - { - "if": "value=pnat", - "then": "pnat A strict positive number" - }, - { - "if": "value=float", - "then": "float A decimal number" - }, - { - "if": "value=pfloat", - "then": "pfloat A positive decimal number or zero" - }, - { - "if": "value=email", - "then": "email An email adress" - }, - { - "if": "value=url", - "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" - }, - { - "if": "value=phone", - "then": "phone A phone number" - }, - { - "if": "value=opening_hours", - "then": "opening_hours Has extra elements to easily input when a POI is opened. " - }, - { - "if": "value=color", - "then": "color Shows a color picker" - }, - { - "if": "value=icon", - "then": "icon Makes sure that a valid .svg-path is added" - }, - { - "if": "value=fediverse", - "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" - } - ] - }, - "type": "string", - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "placeholder" - ], - "required": false, - "hints": {}, - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "helperArgs" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "addExtraTags" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "inline" - ], - "required": false, - "hints": { - "question": "Show the freeform as box within the question?", - "iftrue": "show the freeform input field as a small field within the question", - "ifunset": "show the freeform input field full-width" - }, - "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." - }, - { - "path": [ - "tagRenderings", - "override", - "freeform", - "default" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" - }, - { - "path": [ - "tagRenderings", - "override", - "question" - ], - "required": false, - "hints": { - "question": "What question should be shown to the contributor?", - "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" - }, - { - "path": [ - "tagRenderings", - "override", - "questionHint" - ], - "required": false, - "hints": { - "question": "Should some extra information be shown to the contributor, alongside the question?", - "ifunset": "No extra hint is given" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" - }, - { - "path": [ - "tagRenderings", - "override", - "labels" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" - }, - { - "path": [ - "tagRenderings", - "override", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "tagRenderings", - "override", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "tagRenderings", - "override", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "tagRenderings", - "override", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "tagRenderings", - "override", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "tagRenderings", - "override", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "tagRenderings", - "override", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "tagRenderings", - "override", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "tagRenderings", - "override", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "tagRenderings" - ], - "required": false, - "hints": {}, - "type": "object", - "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]" - }, - { - "path": [ - "tagRenderings", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "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." + "description": "Rewrites and multiplies the given renderings of type T.\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\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)\nFor example:\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 # The first pair: key --> X, a|b|c --> 0\n \"X\": 0\n },\n {\n \"Y\": 1\n },\n {\n \"Z\": 2\n }\n]" }, { "path": [ @@ -46055,7 +13858,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -46091,7 +13894,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -46149,7 +13952,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -46207,7 +14010,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -46243,7 +14046,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46279,7 +14082,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46303,7 +14106,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -46339,7 +14142,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46375,7 +14178,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46390,7 +14193,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -46405,7 +14208,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -46465,7 +14268,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46501,7 +14304,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46515,7 +14318,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -46531,7 +14334,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -46695,7 +14498,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -46728,7 +14531,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -46807,7 +14610,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -46890,7 +14693,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -46925,7 +14728,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46960,7 +14763,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46983,7 +14786,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -47018,7 +14821,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47053,7 +14856,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47084,7 +14887,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -47098,7 +14901,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -47135,7 +14938,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -47195,7 +14998,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -47256,7 +15059,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -47293,7 +15096,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47330,7 +15133,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47355,7 +15158,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -47392,7 +15195,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47429,7 +15232,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47445,7 +15248,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -47461,7 +15264,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -47523,7 +15326,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47560,7 +15363,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47575,7 +15378,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -47592,7 +15395,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -47763,7 +15566,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -47798,7 +15601,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -47880,7 +15683,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -47967,7 +15770,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -48003,7 +15806,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48039,7 +15842,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48063,7 +15866,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -48099,7 +15902,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48135,7 +15938,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48168,7 +15971,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -48204,7 +16007,7 @@ ] } ], - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one\n" + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one" }, { "path": [ @@ -48224,7 +16027,7 @@ "required": true, "hints": {}, "type": "array", - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```" + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\nAn example which searches by name:\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```" }, { "path": [ @@ -48247,7 +16050,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48282,7 +16085,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48317,7 +16120,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48339,7 +16142,7 @@ "required": false, "hints": {}, "type": "string", - "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer" + "description": "Used for comments or to disable a check\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer" }, { "path": [ @@ -48425,7 +16228,7 @@ "type": "boolean" } ], - "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n### The delete dialog\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted fromOSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n##### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.\n" + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\nTo configure, the following values are possible:\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n### The delete dialog\n#### Hard deletion if enough experience\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\nIn all other cases, a 'soft deletion' is used.\n#### Soft deletion\nA 'soft deletion' is when the point isn't deleted fromOSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n##### No-delete options\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags." }, { "path": [ @@ -48438,7 +16241,7 @@ "question": "How many changesets must a contributor have before being allowed to delete a point?" }, "type": "number", - "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.\n" + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here." }, { "path": [ @@ -48448,7 +16251,7 @@ "required": false, "hints": {}, "type": "array", - "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from" + "description": "*\nBy default, three reasons to delete a point are shown:\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\nThese reasons can be stated here and will be shown in the list of options the user can choose from" }, { "path": [ @@ -48460,7 +16263,7 @@ "hints": { "question": "For what extra reason might this feature be removed in real-life?" }, - "description": "The text that will be shown to the user as option for why this point does not exist anymore.\nNote that the most common reasons (test point, does not exist anymore, cannot be found) are already offered by default\n" + "description": "The text that will be shown to the user as option for why this point does not exist anymore.\nNote that the most common reasons (test point, does not exist anymore, cannot be found) are already offered by default" }, { "path": [ @@ -48473,7 +16276,7 @@ "question": "What should be added to the changeset as delete reason?" }, "type": "string", - "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english\n" + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english" }, { "path": [ @@ -48483,7 +16286,7 @@ "required": false, "hints": {}, "type": "array", - "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!" + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!" }, { "path": [ @@ -48518,7 +16321,7 @@ "type": "string" } ], - "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore\n" + "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore" }, { "path": [ @@ -48530,7 +16333,7 @@ "hints": { "question": "What text should be shown to the contributor for this reason?" }, - "description": "The human explanation for the options\n" + "description": "The human explanation for the options" }, { "path": [ @@ -48553,7 +16356,7 @@ "type": "string" } ], - "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```\n" + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```" }, { "path": [ @@ -48587,7 +16390,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48621,7 +16424,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48636,7 +16439,7 @@ "ifunset": "Show the default delete reasons (default behaviour)" }, "type": "boolean", - "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping\n" + "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping" }, { "path": [ @@ -48670,7 +16473,7 @@ "type": "boolean" } ], - "description": "Indicates if a point can be moved and why.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n" + "description": "Indicates if a point can be moved and why.\nA feature can be moved by MapComplete if:\n- It is a point\n- The point is _not_ part of a way or a a relation." }, { "path": [ @@ -48700,7 +16503,7 @@ "ifunset": "(default) This type of point can be moved due to a relocation (and will remove address information when this is done)" }, "type": "boolean", - "description": "\nThis will erase the attributes `addr:street`, `addr:housenumber`, `addr:city` and `addr:postcode`\n" + "description": "This will erase the attributes `addr:street`, `addr:housenumber`, `addr:city` and `addr:postcode`" }, { "path": [ @@ -48715,7 +16518,7 @@ "ifunset": "don't enable the split-roads component" }, "type": "boolean", - "description": "If set, a 'split this way' button is shown on objects rendered as LineStrings, e.g. highways.\n\nIf the way is part of a relation, MapComplete will attempt to update this relation as well" + "description": "If set, a 'split this way' button is shown on objects rendered as LineStrings, e.g. highways.\nIf the way is part of a relation, MapComplete will attempt to update this relation as well" }, { "path": [ @@ -48726,7 +16529,7 @@ "default": "ult: true," }, "type": "object", - "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given" + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n# Rendering\nTo render a value with long (human) denomination, use {canonical(key)}\n# Usage\nFirst of all, you define which keys have units applied, for example:\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given" }, { "path": [ @@ -48736,7 +16539,7 @@ "required": true, "hints": {}, "type": "array", - "description": "Every key from this list will be normalized.\n\nTo render the value properly (with a human readable denomination), use `{canonical()}`" + "description": "Every key from this list will be normalized.\nTo render the value properly (with a human readable denomination), use `{canonical()}`" }, { "path": [ @@ -48777,7 +16580,7 @@ "type": "boolean" } ], - "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\n\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\n\nIf none of the units indicate that they are the default, the first denomination will be used instead" + "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\nIf none of the units indicate that they are the default, the first denomination will be used instead" }, { "path": [ @@ -48788,7 +16591,7 @@ "required": true, "hints": {}, "type": "string", - "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\n\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used" + "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used" }, { "path": [ @@ -48799,7 +16602,7 @@ "required": false, "hints": {}, "type": "string", - "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\n\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here" + "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here" }, { "path": [ @@ -48867,7 +16670,7 @@ "required": false, "hints": {}, "type": "string", - "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\n\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits" + "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits" }, { "path": [ @@ -48897,7 +16700,7 @@ ] }, "type": "string", - "description": "If set, synchronizes whether or not this layer is enabled.\n" + "description": "If set, synchronizes whether or not this layer is enabled." }, { "path": [ @@ -48908,7 +16711,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering\n" + "description": "Used for comments and/or to disable some checks\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering" }, { "path": [ @@ -48919,6 +16722,6 @@ "group": "hidden" }, "type": "boolean", - "description": "_Set automatically by MapComplete, please ignore_\n" + "description": "_Set automatically by MapComplete, please ignore_" } ] \ No newline at end of file diff --git a/src/assets/schemas/layoutconfigmeta.json b/src/assets/schemas/layoutconfigmeta.json index c9ef24bde..9a7df6e67 100644 --- a/src/assets/schemas/layoutconfigmeta.json +++ b/src/assets/schemas/layoutconfigmeta.json @@ -4,7 +4,7 @@ "required": false, "hints": {}, "type": "object", - "description": "Defines the entire theme.\n\nA theme is the collection of the layers that are shown; the intro text, the icon, ...\nIt more or less defines the entire experience.\n\nMost of the fields defined here are metadata about the theme, such as its name, description, supported languages, default starting location, ...\n\nThe main chunk of the json will however be the 'layers'-array, where the details of your layers are.\n\nGeneral remark: a type (string | any) indicates either a fixed or a translatable string." + "description": "Defines the entire theme.\nA theme is the collection of the layers that are shown; the intro text, the icon, ...\nIt more or less defines the entire experience.\nMost of the fields defined here are metadata about the theme, such as its name, description, supported languages, default starting location, ...\nThe main chunk of the json will however be the 'layers'-array, where the details of your layers are.\nGeneral remark: a type (string | any) indicates either a fixed or a translatable string." }, { "path": [ @@ -13,7 +13,7 @@ "required": true, "hints": {}, "type": "string", - "description": "The id of this layout.\n\nThis is used as hashtag in the changeset message, which will read something like \"Adding data with #mapcomplete for theme #\"\nMake sure it is something decent and descriptive, it should be a simple, lowercase string.\n\nOn official themes, it'll become the name of the page, e.g.\n'cyclestreets' which become 'cyclestreets.html'" + "description": "The id of this layout.\nThis is used as hashtag in the changeset message, which will read something like \"Adding data with #mapcomplete for theme #\"\nMake sure it is something decent and descriptive, it should be a simple, lowercase string.\nOn official themes, it'll become the name of the page, e.g.\n'cyclestreets' which become 'cyclestreets.html'" }, { "path": [ @@ -31,7 +31,7 @@ "required": false, "hints": {}, "type": "array", - "description": "Only used in 'generateLayerOverview': if present, every translation will be checked to make sure it is fully translated.\n\nThis must be a list of two-letter, lowercase codes which identifies the language, e.g. \"en\", \"nl\", ..." + "description": "Only used in 'generateLayerOverview': if present, every translation will be checked to make sure it is fully translated.\nThis must be a list of two-letter, lowercase codes which identifies the language, e.g. \"en\", \"nl\", ..." }, { "path": [ @@ -106,7 +106,7 @@ "typehint": "icon" }, "type": "string", - "description": "The icon representing this theme.\nUsed as logo in the more-screen and (for official themes) as favicon, webmanifest logo, ...\nEither a URL or a base64 encoded value (which should include 'data:image/svg+xml;base64)\n" + "description": "The icon representing this theme.\nUsed as logo in the more-screen and (for official themes) as favicon, webmanifest logo, ...\nEither a URL or a base64 encoded value (which should include 'data:image/svg+xml;base64)" }, { "path": [ @@ -117,7 +117,7 @@ "typehint": "image" }, "type": "string", - "description": "Link to a 'social image' which is included as og:image-tag on official themes.\nUseful to share the theme on social media.\nSee https://www.h3xed.com/web-and-internet/how-to-use-og-image-meta-tag-facebook-reddit for more information$\n" + "description": "Link to a 'social image' which is included as og:image-tag on official themes.\nUseful to share the theme on social media.\nSee https://www.h3xed.com/web-and-internet/how-to-use-og-image-meta-tag-facebook-reddit for more information$" }, { "path": [ @@ -135,7 +135,7 @@ "required": false, "hints": {}, "type": "number", - "description": "When a query is run, the data within bounds of the visible map is loaded.\nHowever, users tend to pan and zoom a lot. It is pretty annoying if every single pan means a reloading of the data.\nFor this, the bounds are widened in order to make a small pan still within bounds of the loaded data.\n\nIF widenfactor is 1, this feature is disabled. A recommended value is between 1 and 3" + "description": "When a query is run, the data within bounds of the visible map is loaded.\nHowever, users tend to pan and zoom a lot. It is pretty annoying if every single pan means a reloading of the data.\nFor this, the bounds are widened in order to make a small pan still within bounds of the loaded data.\nIF widenfactor is 1, this feature is disabled. A recommended value is between 1 and 3" }, { "path": [ @@ -164,7 +164,7 @@ "required": false, "hints": {}, "type": "object", - "description": "An override applied on all layers of the theme.\n\nE.g.: if there are two layers defined:\n```\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ...}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ...}}\n]\n```\n\nand overrideAll is specified:\n```\n\"overrideAll\": {\n \"osmSource\":{\"geoJsonSource\":\"xyz\"}\n}\nthen the result will be that all the layers will have these properties applied and result in:\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ..., \"geoJsonSource\":\"xyz\"}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ..., \"geoJsonSource\":\"xyz\"}}\n]\n```\n\nIf the overrideAll contains a list where the keys starts with a plus, the values will be appended (instead of discarding the old list), for example\n\n\"overrideAll\": {\n \"+tagRenderings\": [ { ... some tagrendering ... }]\n}\n\nIn the above scenario, `sometagrendering` will be added at the beginning of the tagrenderings of every layer" + "description": "An override applied on all layers of the theme.\nE.g.: if there are two layers defined:\n```\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ...}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ...}}\n]\n```\nand overrideAll is specified:\n```\n\"overrideAll\": {\n \"osmSource\":{\"geoJsonSource\":\"xyz\"}\n}\nthen the result will be that all the layers will have these properties applied and result in:\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ..., \"geoJsonSource\":\"xyz\"}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ..., \"geoJsonSource\":\"xyz\"}}\n]\n```\nIf the overrideAll contains a list where the keys starts with a plus, the values will be appended (instead of discarding the old list), for example\n\"overrideAll\": {\n \"+tagRenderings\": [ { ... some tagrendering ... }]\n}\nIn the above scenario, `sometagrendering` will be added at the beginning of the tagrenderings of every layer" }, { "path": [ @@ -239,7 +239,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", @@ -549,29 +549,19 @@ } ] }, - "mapRendering": { - "description": "Visualisation of the items on the map\n\ngroup: maprendering", - "anyOf": [ - { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/default_4" - }, - { - "$ref": "#/definitions/default_5" - }, - { - "$ref": "#/definitions/default" - } - ] - } - }, - { - "type": "null" - } - ] + "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": { + "$ref": "#/definitions/default_4" + } + }, + "lineRendering": { + "description": "Creates lines and areas to render on the map\ngroup: linerendering", + "type": "array", + "items": { + "$ref": "#/definitions/default_5" + } }, "passAllFeatures": { "description": "If set, this layer will pass all the features it receives onto the next layer.\nThis is ideal for decoration, e.g. directions on cameras\niftrue: Make the features from this layer also available to the other layer; might result in this object being rendered by multiple layers\niffalse: normal behaviour: don't pass features allong\nquestion: should this layer pass features to the next layers?\ngroup: expert", @@ -1057,7 +1047,7 @@ }, "required": [ "id", - "mapRendering", + "pointRendering", "source" ], "additionalProperties": false @@ -1098,16 +1088,7 @@ "type": "string" } ], - "description": "The layers to display.\n\nEvery layer contains a description of which feature to display - the overpassTags which are queried.\nInstead of running one query for every layer, the query is fused.\n\nAfterwards, every layer is given the list of features.\nEvery layer takes away the features that match with them*, and give the leftovers to the next layers.\n\nThis implies that the _order_ of the layers is important in the case of features with the same tags;\nas the later layers might never receive their feature.\n\n*layers can also remove 'leftover'-features if the leftovers overlap with a feature in the layer itself\n\nNote that builtin layers can be reused. Either put in the name of the layer to reuse, or use {builtin: \"layername\", override: ...}\n\nThe 'override'-object will be copied over the original values of the layer, which allows to change certain aspects of the layer\n\nFor example: If you would like to use layer nature reserves, but only from a specific operator (eg. Natuurpunt) you would use the following in your theme:\n\n```\n\"layer\": {\n \"builtin\": \"nature_reserve\",\n \"override\": {\"source\":\n {\"osmTags\": {\n \"+and\":[\"operator=Natuurpunt\"]\n }\n }\n }\n}\n```\n\nIt's also possible to load multiple layers at once, for example, if you would like for both drinking water and benches to start at the zoomlevel at 12, you would use the following:\n\n```\n\"layer\": {\n \"builtin\": [\"benches\", \"drinking_water\"],\n \"override\": {\"minzoom\": 12}\n}\n```" - }, - { - "path": [ - "layers" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Configuration for a single layer" + "description": "The layers to display.\nEvery layer contains a description of which feature to display - the overpassTags which are queried.\nInstead of running one query for every layer, the query is fused.\nAfterwards, every layer is given the list of features.\nEvery layer takes away the features that match with them*, and give the leftovers to the next layers.\nThis implies that the _order_ of the layers is important in the case of features with the same tags;\nas the later layers might never receive their feature.\n*layers can also remove 'leftover'-features if the leftovers overlap with a feature in the layer itself\nNote that builtin layers can be reused. Either put in the name of the layer to reuse, or use {builtin: \"layername\", override: ...}\nThe 'override'-object will be copied over the original values of the layer, which allows to change certain aspects of the layer\nFor example: If you would like to use layer nature reserves, but only from a specific operator (eg. Natuurpunt) you would use the following in your theme:\n```\n\"layer\": {\n \"builtin\": \"nature_reserve\",\n \"override\": {\"source\":\n {\"osmTags\": {\n \"+and\":[\"operator=Natuurpunt\"]\n }\n }\n }\n}\n```\nIt's also possible to load multiple layers at once, for example, if you would like for both drinking water and benches to start at the zoomlevel at 12, you would use the following:\n```\n\"layer\": {\n \"builtin\": [\"benches\", \"drinking_water\"],\n \"override\": {\"minzoom\": 12}\n}\n```" }, { "path": [ @@ -1120,7 +1101,7 @@ "question": "What is the identifier of this layer?" }, "type": "string", - "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.\n" + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer." }, { "path": [ @@ -1141,7 +1122,7 @@ "type": "string" } ], - "description": "Used in the layer control panel to toggle a layer on and of.\n\n" + "description": "Used in the layer control panel to toggle a layer on and of." }, { "path": [ @@ -1161,7 +1142,7 @@ "type": "string" } ], - "description": "A description for the features shown in this layer.\nThis often resembles the introduction of the wiki.osm.org-page for this feature.\n" + "description": "A description for the features shown in this layer.\nThis often resembles the introduction of the wiki.osm.org-page for this feature." }, { "path": [ @@ -1173,7 +1154,8 @@ "types": "Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;", "typesdefault": "0", "group": "Basic", - "question": "Where should the data be fetched from?" + "question": "Where should the data be fetched from?", + "title": "Data Source" }, "type": [ { @@ -1228,7 +1210,7 @@ "type": "string" } ], - "description": "\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" + "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\nEvery source _must_ define which tags _must_ be present in order to be picked up.\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer" }, { "path": [ @@ -1278,7 +1260,7 @@ "question": "How long (in seconds) is the data allowed to remain cached until it must be refreshed?" }, "type": "number", - "description": "The maximum amount of seconds that a tile is allowed to linger in the cache\n" + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache" }, { "path": [ @@ -1292,7 +1274,7 @@ "question": "What is the URL of the geojson?" }, "type": "string", - "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\n" + "description": "The actual source of the data to load, if loaded via geojson.\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}" }, { "path": [ @@ -1306,7 +1288,7 @@ "ifunset": "This is not a tiled geojson" }, "type": "number", - "description": "To load a tiled geojson layer, set the zoomlevel of the tiles\n" + "description": "To load a tiled geojson layer, set the zoomlevel of the tiles" }, { "path": [ @@ -1321,7 +1303,7 @@ "ifunset": "This is not an OpenStreetMap cache" }, "type": "boolean", - "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache.\nThis also indicates that making changes on this data is possible\n" + "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache.\nThis also indicates that making changes on this data is possible" }, { "path": [ @@ -1336,7 +1318,7 @@ "ifunset": "This geojson uses WGS84 just like most geojson (default)" }, "type": "boolean", - "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n" + "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this" }, { "path": [ @@ -1351,7 +1333,7 @@ "inline": "This geojson uses {value} as attribute to set the id" }, "type": "string", - "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'\n" + "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'" }, { "path": [ @@ -1364,7 +1346,7 @@ "question": "What extra attributes should be calculated with javascript?" }, "type": "array", - "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]\n\nThe specified tags are evaluated lazily. E.g. if a calculated tag is only used in the popup (e.g. the number of nearby features),\nthe expensive calculation will only be performed then for that feature. This avoids clogging up the contributors PC when all features are loaded.\n\nIf a tag has to be evaluated strictly, use ':=' instead:\n\n[\n\"_some_key:=some_javascript_expression\"\n]\n\nSee the full documentation on [https://github.com/pietervdvn/MapComplete/blob/master/Docs/CalculatedTags.md]\n" + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]\nThe specified tags are evaluated lazily. E.g. if a calculated tag is only used in the popup (e.g. the number of nearby features),\nthe expensive calculation will only be performed then for that feature. This avoids clogging up the contributors PC when all features are loaded.\nIf a tag has to be evaluated strictly, use ':=' instead:\n[\n\"_some_key:=some_javascript_expression\"\n]\nSee the full documentation on [https://github.com/pietervdvn/MapComplete/blob/master/Docs/CalculatedTags.md]" }, { "path": [ @@ -1388,7 +1370,7 @@ "type": "string" } ], - "description": "If set, only features matching this extra tag will be shown.\nThis is useful to hide certain features from view based on a calculated tag or if the features are provided by a different layer.\n" + "description": "If set, only features matching this extra tag will be shown.\nThis is useful to hide certain features from view based on a calculated tag or if the features are provided by a different layer." }, { "path": [ @@ -1422,7 +1404,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1456,7 +1438,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1472,7 +1454,7 @@ "ifunset": "Always load this layer, even if the entire world is in view." }, "type": "number", - "description": "The minimum needed zoomlevel required to start loading and displaying the data.\nThis can be used to only show common features (e.g. a bicycle parking) only when the map is zoomed in very much (17).\nThis prevents cluttering the map with thousands of parkings if one is looking to an entire city.\n" + "description": "The minimum needed zoomlevel required to start loading and displaying the data.\nThis can be used to only show common features (e.g. a bicycle parking) only when the map is zoomed in very much (17).\nThis prevents cluttering the map with thousands of parkings if one is looking to an entire city." }, { "path": [ @@ -1488,7 +1470,7 @@ "iffalse": "the layer is hidden until the contributor enables it. (If the filter-popup is disabled, this might never get enabled nor loaded)" }, "type": "boolean", - "description": "Indicates if this layer is shown by default;\ncan be used to hide a layer from start, or to load the layer but only to show it when appropriate (e.g. for advanced users)\n" + "description": "Indicates if this layer is shown by default;\ncan be used to hide a layer from start, or to load the layer but only to show it when appropriate (e.g. for advanced users)" }, { "path": [ @@ -1501,7 +1483,7 @@ "default": "100 (thus: always visible" }, "type": "number", - "description": "The zoom level at which point the data is hidden again\n" + "description": "The zoom level at which point the data is hidden again" }, { "path": [ @@ -1699,17 +1681,7 @@ "type": "string" } ], - "description": "The title shown in a popup for elements of this layer.\n" - }, - { - "path": [ - "layers", - "title" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" + "description": "The title shown in a popup for elements of this layer." }, { "path": [ @@ -1756,7 +1728,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -1839,7 +1811,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -1874,7 +1846,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1909,7 +1881,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -1932,7 +1904,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -1967,7 +1939,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -2002,7 +1974,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -2075,7 +2047,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -2097,7 +2069,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -2192,7 +2164,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -2208,7 +2180,7 @@ "iffalse": "show the infobox in a sidebar on the right" }, "type": "boolean", - "description": "\nIf set, open the selectedElementView in a floatOver instead of on the right.\n" + "description": "If set, open the selectedElementView in a floatOver instead of on the right." }, { "path": [ @@ -2248,17 +2220,7 @@ "maxItems": 1 } ], - "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons (which are added automatically)\n" - }, - { - "path": [ - "layers", - "titleIcons" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons (which are added automatically)" }, { "path": [ @@ -2305,7 +2267,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -2388,7 +2350,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -2423,7 +2385,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -2458,7 +2420,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -2481,7 +2443,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -2516,7 +2478,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -2551,7 +2513,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -2624,7 +2586,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -2646,7 +2608,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -2741,269 +2703,85 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering" + "pointRendering" ], "required": true, "hints": { - "group": "maprendering" + "group": "pointrendering" }, - "type": [ - { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/default_4" - }, - { - "$ref": "#/definitions/default_5" - }, - { - "$ref": "#/definitions/default" - } - ] + "type": "array", + "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" + }, + { + "path": [ + "layers", + "pointRendering" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\nThis can be used if:\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" + }, + { + "path": [ + "layers", + "pointRendering", + "location" + ], + "required": true, + "hints": { + "question": "At what location should this icon be shown?", + "suggestions": [ + { + "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": "null" - } - ], - "description": "Visualisation of the items on the map\n" - }, - { - "path": [ - "layers", - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "layers", - "mapRendering", - "location" - ], - "required": true, - "hints": {}, + ], + "multianswer": "true" + }, "type": "array", - "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": "" }, { "path": [ "layers", - "mapRendering", - "icon" + "pointRendering", + "marker" ], "required": false, "hints": { - "typehint": "icon" + "typehint": "icon", + "question": "What marker should be used to" }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" + "type": "array", + "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.\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": [ "layers", - "mapRendering", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "render" ], @@ -3046,12 +2824,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "icon" ], @@ -3086,7 +2865,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "icon", "path" @@ -3101,7 +2881,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "icon", "class" @@ -3114,7 +2895,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "condition" ], @@ -3133,12 +2915,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "condition", "and" @@ -3169,12 +2952,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "condition", "or" @@ -3205,12 +2989,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "metacondition" ], @@ -3229,12 +3014,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "metacondition", "and" @@ -3265,12 +3051,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "metacondition", "or" @@ -3301,12 +3088,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "freeform" ], @@ -3321,7 +3109,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "freeform", "key" @@ -3334,7 +3123,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings" ], @@ -3346,7 +3136,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "if" @@ -3378,12 +3169,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "then" @@ -3401,12 +3193,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "icon" @@ -3443,7 +3236,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "icon", @@ -3459,7 +3253,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "icon", @@ -3473,7 +3268,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "description" ], @@ -3492,7 +3288,8 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", "icon", "classes" ], @@ -3501,23 +3298,546 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", + "marker", + "color", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "layers", + "pointRendering", + "marker", + "color", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "layers", + "pointRendering", "iconBadges" ], "required": false, "hints": {}, "type": "array", - "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" + "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.\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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "if" ], @@ -3547,12 +3867,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then" ], @@ -3746,19 +4066,7 @@ { "path": [ "layers", - "mapRendering", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "render" @@ -3802,12 +4110,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "icon" @@ -3843,7 +4151,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "icon", @@ -3859,7 +4167,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "icon", @@ -3873,7 +4181,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "condition" @@ -3893,12 +4201,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "condition", @@ -3930,12 +4238,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "condition", @@ -3967,12 +4275,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "metacondition" @@ -3992,12 +4300,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "metacondition", @@ -4029,12 +4337,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "metacondition", @@ -4066,12 +4374,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "freeform" @@ -4087,7 +4395,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "freeform", @@ -4101,7 +4409,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings" @@ -4114,7 +4422,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -4147,12 +4455,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -4171,12 +4479,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -4214,7 +4522,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -4231,7 +4539,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -4246,7 +4554,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "description" @@ -4266,7 +4574,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconBadges", "then", "classes" @@ -4276,12 +4584,12 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize" ], "required": false, @@ -4472,18 +4780,7 @@ { "path": [ "layers", - "mapRendering", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "iconSize", "render" ], @@ -4526,12 +4823,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "icon" ], @@ -4566,7 +4863,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "icon", "path" @@ -4581,7 +4878,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "icon", "class" @@ -4594,7 +4891,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "condition" ], @@ -4613,12 +4910,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "condition", "and" @@ -4649,12 +4946,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "condition", "or" @@ -4685,12 +4982,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "metacondition" ], @@ -4709,12 +5006,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "metacondition", "and" @@ -4745,12 +5042,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "metacondition", "or" @@ -4781,12 +5078,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "freeform" ], @@ -4801,7 +5098,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "freeform", "key" @@ -4814,7 +5111,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "mappings" ], @@ -4826,7 +5123,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "mappings", "if" @@ -4858,12 +5155,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "mappings", "then" @@ -4881,12 +5178,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "mappings", "icon" @@ -4923,7 +5220,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "mappings", "icon", @@ -4939,7 +5236,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "mappings", "icon", @@ -4953,7 +5250,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "description" ], @@ -4972,7 +5269,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "iconSize", "classes" ], @@ -4981,17 +5278,40 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor" ], "required": false, "hints": { - "question": "What is the anchorpoint of the icon?" + "question": "What is the anchorpoint of the icon?", + "ifunset": "Use MapComplete-default (center)", + "suggestions": [ + { + "if": "value=center", + "then": "Place the center of the icon on the geographical location" + }, + { + "if": "value=top", + "then": "Place the top of the icon on the geographical location" + }, + { + "if": "value=bottom", + "then": "Place the bottom of the icon on the geographical location" + }, + { + "if": "value=left", + "then": "Place the left of the icon on the geographical location" + }, + { + "if": "value=right", + "then": "Place the right of the icon on the geographical location" + } + ] }, "type": [ { @@ -5174,23 +5494,12 @@ "type": "string" } ], - "description": "\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": "This matches the geographical point with a location on the icon." }, { "path": [ "layers", - "mapRendering", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "anchor", "render" ], @@ -5233,12 +5542,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "icon" ], @@ -5273,7 +5582,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "icon", "path" @@ -5288,7 +5597,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "icon", "class" @@ -5301,7 +5610,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "condition" ], @@ -5320,12 +5629,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "condition", "and" @@ -5356,12 +5665,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "condition", "or" @@ -5392,12 +5701,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "metacondition" ], @@ -5416,12 +5725,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "metacondition", "and" @@ -5452,12 +5761,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "metacondition", "or" @@ -5488,12 +5797,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "freeform" ], @@ -5508,7 +5817,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "freeform", "key" @@ -5521,7 +5830,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "mappings" ], @@ -5533,7 +5842,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "mappings", "if" @@ -5565,12 +5874,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "mappings", "then" @@ -5588,12 +5897,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "mappings", "icon" @@ -5630,7 +5939,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "mappings", "icon", @@ -5646,7 +5955,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "mappings", "icon", @@ -5660,7 +5969,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "description" ], @@ -5679,7 +5988,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "anchor", "classes" ], @@ -5688,12 +5997,12 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation" ], "required": false, @@ -5884,18 +6193,7 @@ { "path": [ "layers", - "mapRendering", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "rotation", "render" ], @@ -5938,12 +6236,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "icon" ], @@ -5978,7 +6276,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "icon", "path" @@ -5993,7 +6291,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "icon", "class" @@ -6006,7 +6304,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "condition" ], @@ -6025,12 +6323,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "condition", "and" @@ -6061,12 +6359,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "condition", "or" @@ -6097,12 +6395,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "metacondition" ], @@ -6121,12 +6419,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "metacondition", "and" @@ -6157,12 +6455,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "metacondition", "or" @@ -6193,12 +6491,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "freeform" ], @@ -6213,7 +6511,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "freeform", "key" @@ -6226,7 +6524,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "mappings" ], @@ -6238,7 +6536,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "mappings", "if" @@ -6270,12 +6568,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "mappings", "then" @@ -6293,12 +6591,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "mappings", "icon" @@ -6335,7 +6633,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "mappings", "icon", @@ -6351,7 +6649,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "mappings", "icon", @@ -6365,7 +6663,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "description" ], @@ -6384,7 +6682,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotation", "classes" ], @@ -6393,16 +6691,20 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value | string", + "question": "What label should be shown beneath the marker?", + "inline": "Always show label {value} beneath the marker" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -6584,23 +6886,12 @@ "type": "string" } ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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": "For example:
{name}
\nIf the icon is undefined, then the label is shown in the center of the feature." }, { "path": [ "layers", - "mapRendering", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "label", "render" ], @@ -6643,12 +6934,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "icon" ], @@ -6683,7 +6974,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "icon", "path" @@ -6698,7 +6989,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "icon", "class" @@ -6711,7 +7002,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "condition" ], @@ -6730,12 +7021,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "condition", "and" @@ -6766,12 +7057,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "condition", "or" @@ -6802,12 +7093,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "metacondition" ], @@ -6826,12 +7117,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "metacondition", "and" @@ -6862,12 +7153,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "metacondition", "or" @@ -6898,12 +7189,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "freeform" ], @@ -6918,7 +7209,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "freeform", "key" @@ -6931,7 +7222,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "mappings" ], @@ -6943,7 +7234,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "mappings", "if" @@ -6975,12 +7266,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "mappings", "then" @@ -6998,12 +7289,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "mappings", "icon" @@ -7040,7 +7331,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "mappings", "icon", @@ -7056,7 +7347,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "mappings", "icon", @@ -7070,7 +7361,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "description" ], @@ -7089,7 +7380,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "label", "classes" ], @@ -7098,16 +7389,20 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "What CSS should be applied to the entire marker?", + "inline": "Apply CSS-style {value} to the _entire marker_" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -7289,23 +7584,12 @@ "type": "string" } ], - "description": "A snippet of css code which is applied onto the container of the entire marker" + "description": "You 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" }, { "path": [ "layers", - "mapRendering", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "css", "render" ], @@ -7348,12 +7632,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "icon" ], @@ -7388,7 +7672,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "icon", "path" @@ -7403,7 +7687,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "icon", "class" @@ -7416,7 +7700,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "condition" ], @@ -7435,12 +7719,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "condition", "and" @@ -7471,12 +7755,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "condition", "or" @@ -7507,12 +7791,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "metacondition" ], @@ -7531,12 +7815,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "metacondition", "and" @@ -7567,12 +7851,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "metacondition", "or" @@ -7603,12 +7887,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "freeform" ], @@ -7623,7 +7907,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "freeform", "key" @@ -7636,7 +7920,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "mappings" ], @@ -7648,7 +7932,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "mappings", "if" @@ -7680,12 +7964,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "mappings", "then" @@ -7703,12 +7987,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "mappings", "icon" @@ -7745,7 +8029,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "mappings", "icon", @@ -7761,7 +8045,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "mappings", "icon", @@ -7775,7 +8059,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "description" ], @@ -7794,7 +8078,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "css", "classes" ], @@ -7803,16 +8087,20 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "Which CSS-classes should be applied to the entire marker?", + "inline": "Apply CSS-classes {value} to the entire container" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -7994,23 +8282,12 @@ "type": "string" } ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" + "description": "This will be applied to the _container_ containing both the marker and the label\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`" }, { "path": [ "layers", - "mapRendering", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "cssClasses", "render" ], @@ -8053,12 +8330,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "icon" ], @@ -8093,7 +8370,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "icon", "path" @@ -8108,7 +8385,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "icon", "class" @@ -8121,7 +8398,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "condition" ], @@ -8140,12 +8417,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "condition", "and" @@ -8176,12 +8453,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "condition", "or" @@ -8212,12 +8489,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "metacondition" ], @@ -8236,12 +8513,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "metacondition", "and" @@ -8272,12 +8549,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "metacondition", "or" @@ -8308,12 +8585,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "freeform" ], @@ -8328,7 +8605,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "freeform", "key" @@ -8341,7 +8618,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "mappings" ], @@ -8353,7 +8630,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "if" @@ -8385,12 +8662,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "then" @@ -8408,12 +8685,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "icon" @@ -8450,7 +8727,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "icon", @@ -8466,7 +8743,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "icon", @@ -8480,7 +8757,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "description" ], @@ -8499,7 +8776,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "cssClasses", "classes" ], @@ -8508,16 +8785,20 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "What CSS should be applied to the label?", + "inline": "Apply CSS-style {value} to the label" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -8699,23 +8980,12 @@ "type": "string" } ], - "description": "Css that is applied onto the label" + "description": "You can set the css-properties here, e.g. `background: red; font-size: 12px; `" }, { "path": [ "layers", - "mapRendering", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "labelCss", "render" ], @@ -8758,12 +9028,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "icon" ], @@ -8798,7 +9068,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "icon", "path" @@ -8813,7 +9083,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "icon", "class" @@ -8826,7 +9096,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "condition" ], @@ -8845,12 +9115,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "condition", "and" @@ -8881,12 +9151,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "condition", "or" @@ -8917,12 +9187,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "metacondition" ], @@ -8941,12 +9211,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "metacondition", "and" @@ -8977,12 +9247,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "metacondition", "or" @@ -9013,12 +9283,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "freeform" ], @@ -9033,7 +9303,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "freeform", "key" @@ -9046,7 +9316,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "mappings" ], @@ -9058,7 +9328,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "mappings", "if" @@ -9090,12 +9360,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "mappings", "then" @@ -9113,12 +9383,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "mappings", "icon" @@ -9155,7 +9425,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "mappings", "icon", @@ -9171,7 +9441,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "mappings", "icon", @@ -9185,7 +9455,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "description" ], @@ -9204,7 +9474,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCss", "classes" ], @@ -9213,16 +9483,20 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "Which CSS-classes should be applied to the label?", + "inline": "Apply CSS-classes {value} to the label" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -9404,23 +9678,12 @@ "type": "string" } ], - "description": "Css classes that are applied onto the label; can be space-separated" + "description": "The 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`" }, { "path": [ "layers", - "mapRendering", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "render" ], @@ -9463,12 +9726,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "icon" ], @@ -9503,7 +9766,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "icon", "path" @@ -9518,7 +9781,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "icon", "class" @@ -9531,7 +9794,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "condition" ], @@ -9550,12 +9813,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "condition", "and" @@ -9586,12 +9849,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "condition", "or" @@ -9622,12 +9885,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "metacondition" ], @@ -9646,12 +9909,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "metacondition", "and" @@ -9682,12 +9945,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "metacondition", "or" @@ -9718,12 +9981,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "freeform" ], @@ -9738,7 +10001,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "freeform", "key" @@ -9751,7 +10014,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings" ], @@ -9763,7 +10026,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "if" @@ -9795,12 +10058,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "then" @@ -9818,12 +10081,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "icon" @@ -9860,7 +10123,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "icon", @@ -9876,7 +10139,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "icon", @@ -9890,7 +10153,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "description" ], @@ -9909,7 +10172,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "labelCssClasses", "classes" ], @@ -9918,12 +10181,12 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment" ], "required": false, @@ -10118,18 +10381,7 @@ { "path": [ "layers", - "mapRendering", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "render" ], @@ -10172,12 +10424,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "icon" ], @@ -10212,7 +10464,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "icon", "path" @@ -10227,7 +10479,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "icon", "class" @@ -10240,7 +10492,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "condition" ], @@ -10259,12 +10511,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "condition", "and" @@ -10295,12 +10547,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "condition", "or" @@ -10331,12 +10583,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "metacondition" ], @@ -10355,12 +10607,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "metacondition", "and" @@ -10391,12 +10643,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "metacondition", "or" @@ -10427,12 +10679,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "freeform" ], @@ -10447,7 +10699,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "freeform", "key" @@ -10460,7 +10712,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings" ], @@ -10472,7 +10724,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "if" @@ -10504,12 +10756,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "then" @@ -10527,12 +10779,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "icon" @@ -10569,7 +10821,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "icon", @@ -10585,7 +10837,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "icon", @@ -10599,7 +10851,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "description" ], @@ -10618,7 +10870,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "pitchAlignment", "classes" ], @@ -10627,16 +10879,29 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment" ], "required": false, - "hints": {}, + "hints": { + "question": "Should the icon be rotated or tilted if the map is rotated or tilted?", + "ifunset": "Do not rotate or tilt icons. Always keep the icons straight", + "suggestions": [ + { + "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." + } + ] + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -10822,23 +11087,12 @@ "type": "string" } ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" + "description": "" }, { "path": [ "layers", - "mapRendering", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "render" ], @@ -10881,12 +11135,12 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "icon" ], @@ -10921,7 +11175,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "icon", "path" @@ -10936,7 +11190,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "icon", "class" @@ -10949,7 +11203,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "condition" ], @@ -10968,12 +11222,12 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "condition", "and" @@ -11004,12 +11258,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "condition", "or" @@ -11040,12 +11294,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "metacondition" ], @@ -11064,12 +11318,12 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "metacondition", "and" @@ -11100,12 +11354,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "metacondition", "or" @@ -11136,12 +11390,12 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "freeform" ], @@ -11156,7 +11410,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "freeform", "key" @@ -11169,7 +11423,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings" ], @@ -11181,7 +11435,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "if" @@ -11213,12 +11467,12 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "then" @@ -11236,12 +11490,12 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "icon" @@ -11278,7 +11532,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "icon", @@ -11294,7 +11548,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "icon", @@ -11308,7 +11562,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "description" ], @@ -11327,7 +11581,7 @@ { "path": [ "layers", - "mapRendering", + "pointRendering", "rotationAlignment", "classes" ], @@ -11336,132 +11590,53 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", - "mapRendering" + "lineRendering" + ], + "required": false, + "hints": { + "group": "linerendering" + }, + "type": "array", + "description": "Creates lines and areas to render on the map" + }, + { + "path": [ + "layers", + "lineRendering" ], "required": false, "hints": {}, "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\nThis can be used if:\n- The feature is a line\n- The feature is an area" }, { "path": [ "layers", - "mapRendering", + "lineRendering", "color" ], "required": false, - "hints": {}, + "hints": { + "typehint": "color", + "types": "dynamic value ; string", + "question": "What color should lines be drawn in?", + "ifunset": "Round ending", + "inline": "The line colour always is {value}", + "title": "Line Colour" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -11474,39 +11649,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -11514,21 +11658,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -11537,354 +11666,26 @@ "type": "string" } ], - "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": "For 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" }, { "path": [ "layers", - "mapRendering", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "color", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", - "mapRendering", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "color", "mappings" ], @@ -11896,7 +11697,7 @@ { "path": [ "layers", - "mapRendering", + "lineRendering", "color", "mappings", "if" @@ -11928,245 +11729,46 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "lineRendering", "color", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "width" ], "required": false, - "hints": {}, + "hints": { + "typehint": "pnat", + "types": "dynamic value ; string", + "question": "How wide should the line be?", + "ifunset": "Use the default-linewidth of 7 pixels", + "inline": "The line width is {value} pixels", + "title": "Line width" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -12179,39 +11781,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -12219,21 +11790,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -12250,349 +11806,21 @@ { "path": [ "layers", - "mapRendering", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "width", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", - "mapRendering", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "width", "mappings" ], @@ -12604,7 +11832,7 @@ { "path": [ "layers", - "mapRendering", + "lineRendering", "width", "mappings", "if" @@ -12636,950 +11864,72 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "lineRendering", "width", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "dashArray" ], "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "render" - ], - "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "Should a dasharray be used to render the lines?", + "ifunset": "Ways are rendered with a full line" }, "type": "string", - "description": "The path to the icon" + "description": "The 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" }, { "path": [ "layers", - "mapRendering", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "lineCap" ], "required": false, - "hints": {}, + "hints": { + "types": "dynamic value ; string", + "question": "What form should the line-ending have?", + "ifunset": "Use the default value (round ending)", + "suggestions": [ + { + "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)" + } + ], + "title": "Line Cap" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -13592,39 +11942,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -13632,21 +11951,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -13655,354 +11959,26 @@ "type": "string" } ], - "description": "The form at the end of a line" + "description": "" }, { "path": [ "layers", - "mapRendering", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "lineCap", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", - "mapRendering", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "lineCap", "mappings" ], @@ -14014,7 +11990,7 @@ { "path": [ "layers", - "mapRendering", + "lineRendering", "lineCap", "mappings", "if" @@ -14046,245 +12022,51 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "lineRendering", "lineCap", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "fillColor" ], "required": false, - "hints": {}, + "hints": { + "typehint": "color", + "types": "dynamic value ; string", + "question": "What colour should be used as fill colour for polygons?", + "ifunset": "The polygon fill colour will be a more transparent version of the stroke colour", + "inline": "The fill colour is {value}", + "suggestions": [ + { + "if": "value=#00000000", + "then": "Use a transparent fill (only render the outline)" + } + ] + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -14297,39 +12079,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -14337,21 +12088,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -14360,354 +12096,26 @@ "type": "string" } ], - "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": "" }, { "path": [ "layers", - "mapRendering", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "fillColor", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", - "mapRendering", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "fillColor", "mappings" ], @@ -14719,7 +12127,7 @@ { "path": [ "layers", - "mapRendering", + "lineRendering", "fillColor", "mappings", "if" @@ -14751,245 +12159,45 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "lineRendering", "fillColor", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", - "mapRendering", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "offset" ], "required": false, - "hints": {}, + "hints": { + "typehint": "int", + "types": "dynamic value ; number", + "question": "Should the lines be moved (offsetted) with a number of pixels against the geographical lines?", + "ifunset": "don't offset lines on the map", + "inline": "Pixel offset by {value} pixels" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -15002,39 +12210,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -15042,21 +12219,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -15065,354 +12227,26 @@ "type": "number" } ], - "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": "The 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).\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" }, { "path": [ "layers", - "mapRendering", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "offset", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", - "mapRendering", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", + "lineRendering", "offset", "mappings" ], @@ -15424,7 +12258,7 @@ { "path": [ "layers", - "mapRendering", + "lineRendering", "offset", "mappings", "if" @@ -15456,26554 +12290,22 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", - "mapRendering", + "lineRendering", "offset", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "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]" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": [ - "string", - "number" - ] - } - ], - "description": "The stroke-width for way-elements" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The form at the end of a line" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "number" - } - ], - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": [ - "string", - "number" - ] - } - ], - "description": "The stroke-width for way-elements" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The form at the end of a line" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "number" - } - ], - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "mapRendering", - "renderings", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "If 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" }, { "path": [ @@ -42034,7 +12336,7 @@ "iffalse": "download the data as usual" }, "type": "boolean", - "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration\nThe opposite of `forceLoad`\n" + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration\nThe opposite of `forceLoad`" }, { "path": [ @@ -42049,7 +12351,7 @@ "iffalse": "only download data for this layer when needed (default)" }, "type": "boolean", - "description": "Advanced option - might be set by the theme compiler\n\nIf true, this data will _always_ be loaded, even if the theme is disabled by a filter or hidden.\nThe opposite of `doNotDownload`\n\nifftrue: always download this layer, even if it is disabled" + "description": "Advanced option - might be set by the theme compiler\nIf true, this data will _always_ be loaded, even if the theme is disabled by a filter or hidden.\nThe opposite of `doNotDownload`\nifftrue: always download this layer, even if it is disabled" }, { "path": [ @@ -42061,7 +12363,7 @@ "group": "presets" }, "type": "array", - "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all\n" + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all" }, { "path": [ @@ -42082,7 +12384,7 @@ "type": "string" } ], - "description": "The title - shown on the 'add-new'-button.\n\nThis should include the article of the noun, e.g. 'a hydrant', 'a bicycle pump'.\nThis text will be inserted into `Add {category} here`, becoming `Add a hydrant here`.\n\nDo _not_ indicate 'new': 'add a new shop here' is incorrect, as the shop might have existed forever, it could just be unmapped!\n" + "description": "The title - shown on the 'add-new'-button.\nThis should include the article of the noun, e.g. 'a hydrant', 'a bicycle pump'.\nThis text will be inserted into `Add {category} here`, becoming `Add a hydrant here`.\nDo _not_ indicate 'new': 'add a new shop here' is incorrect, as the shop might have existed forever, it could just be unmapped!" }, { "path": [ @@ -42096,7 +12398,7 @@ "question": "What tag should be added to the new object?" }, "type": "array", - "description": "A single tag (encoded as key=value) out of all the tags to add onto the newly created point.\nNote that the icon in the UI will be chosen automatically based on the tags provided here.\n" + "description": "A single tag (encoded as key=value) out of all the tags to add onto the newly created point.\nNote that the icon in the UI will be chosen automatically based on the tags provided here." }, { "path": [ @@ -42116,7 +12418,7 @@ "type": "string" } ], - "description": "An extra explanation of what the feature is, if it is not immediately clear from the title alone.\n\nThe _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)\n" + "description": "An extra explanation of what the feature is, if it is not immediately clear from the title alone.\nThe _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n(The first sentence is until the first '.'-character in the description)" }, { "path": [ @@ -42130,7 +12432,7 @@ "question": "What is the URL of an image showing such a feature?" }, "type": "array", - "description": "The URL of an example image which shows a real-life example of what such a feature might look like.\n" + "description": "The URL of an example image which shows a real-life example of what such a feature might look like." }, { "path": [ @@ -42310,6 +12612,10 @@ "if": "value=elevator", "then": "elevator - This layer show elevators and asks for operational status and elevator dimensions. Useful for wheelchair accessibility information" }, + { + "if": "value=elongated_coin", + "then": "elongated_coin - Layer showing penny presses." + }, { "if": "value=entrance", "then": "entrance - A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, …)" @@ -42673,7 +12979,7 @@ ] }, "type": "array", - "description": "\nIf specified, these layers will be shown in the precise location picker and the new point will be snapped towards it.\nFor example, this can be used to snap against `walls_and_buildings` (e.g. to attach a defibrillator, an entrance, an artwork, ... to the wall)\nor to snap an obstacle (such as a bollard) to the `cycleways_and_roads`.\n" + "description": "If specified, these layers will be shown in the precise location picker and the new point will be snapped towards it.\nFor example, this can be used to snap against `walls_and_buildings` (e.g. to attach a defibrillator, an entrance, an artwork, ... to the wall)\nor to snap an obstacle (such as a bollard) to the `cycleways_and_roads`." }, { "path": [ @@ -42688,7 +12994,7 @@ "inline": "a point is snapped if the location input is at most {value}m away from an object" }, "type": "number", - "description": "\n\nIf specified, a new point will only be snapped if it is within this range.\nIf further away, it'll be placed in the center of the location input\nDistance in meter\n" + "description": "If specified, a new point will only be snapped if it is within this range.\nIf further away, it'll be placed in the center of the location input\nDistance in meter" }, { "path": [ @@ -42949,7 +13255,2133 @@ "type": "string" } ], - "description": "\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\nFurthermore, _all_ the questions of another layer can be reused with `otherlayer.*`\nIf you need only a single of the tagRenderings, use `otherlayer.tagrenderingId`\nIf one or more questions have a 'group' or 'label' set, select all the entries with the corresponding group or label with `otherlayer.*group`\nRemark: if a tagRendering is 'lent' from another layer, the 'source'-tags are copied and added as condition.\nIf they are not wanted, remove them with an override\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together\n" + "description": "A tag rendering is a block that either shows the known value or asks a question.\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\nFurthermore, _all_ the questions of another layer can be reused with `otherlayer.*`\nIf you need only a single of the tagRenderings, use `otherlayer.tagrenderingId`\nIf one or more questions have a 'group' or 'label' set, select all the entries with the corresponding group or label with `otherlayer.*group`\nRemark: if a tagRendering is 'lent' from another layer, the 'source'-tags are copied and added as condition.\nIf they are not wanted, remove them with an override\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings" + ], + "required": false, + "hints": { + "question": "What are common options?" + }, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "What tags should be matched to show this option?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What corresponding text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "Shown if the `if` is fulfilled" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be shown next to this mapping?", + "ifunset": "Show no icon" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "Size of the image", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "Size of the image" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "hideInAnswer" + ], + "required": false, + "hints": { + "typehint": "tag", + "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", + "iftrue": "Never show this mapping as option to pick", + "ifunset": "Always show this mapping as option to pick" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": [ + "string", + "boolean" + ] + } + ], + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "hideInAnswer", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "hideInAnswer", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "ifnot" + ], + "required": false, + "hints": { + "question": "What tags should be applied if this mapping is _not_ chosen?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "ifnot", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "ifnot", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "addExtraTags" + ], + "required": false, + "hints": { + "typehint": "simple_tag[]", + "question": "What extra tags should be added to the object if this object is chosen?" + }, + "type": "array", + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "searchTerms" + ], + "required": false, + "hints": { + "group": "hidden", + "question": "If there are many options, what search terms match too?" + }, + "type": "object", + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "priorityIf" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "priorityIf", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "priorityIf", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "mappings", + "#" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": "string", + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + }, + { + "path": [ + "layers", + "tagRenderings", + "multiAnswer" + ], + "required": false, + "hints": { + "question": "Should a contributor be allowed to select multiple mappings?", + "iftrue": "allow to select multiple mappigns", + "iffalse": "only allow to select a single mapping", + "ifunset": "only allow to select a single mapping" + }, + "type": "boolean", + "description": "If true, use checkboxes instead of radio buttons when asking the question" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "key" + ], + "required": true, + "hints": { + "ifunset": "do not offer a freeform textfield as answer option" + }, + "type": "string", + "description": "question What is the name of the attribute that should be written to?" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "type" + ], + "required": false, + "hints": { + "question": "What is the input type?", + "suggestions": [ + { + "if": "value=string", + "then": "string A simple piece of text" + }, + { + "if": "value=text", + "then": "text A longer piece of text. Uses an textArea instead of a textField" + }, + { + "if": "value=date", + "then": "date A date with date picker" + }, + { + "if": "value=nat", + "then": "nat A whole, positive number or zero" + }, + { + "if": "value=int", + "then": "int A whole number, either positive, negative or zero" + }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, + { + "if": "value=direction", + "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." + }, + { + "if": "value=wikidata", + "then": "wikidata A wikidata identifier, e.g. Q42. " + }, + { + "if": "value=pnat", + "then": "pnat A strict positive number" + }, + { + "if": "value=float", + "then": "float A decimal number" + }, + { + "if": "value=pfloat", + "then": "pfloat A positive decimal number or zero" + }, + { + "if": "value=email", + "then": "email An email adress" + }, + { + "if": "value=url", + "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" + }, + { + "if": "value=phone", + "then": "phone A phone number" + }, + { + "if": "value=opening_hours", + "then": "opening_hours Has extra elements to easily input when a POI is opened. " + }, + { + "if": "value=color", + "then": "color Shows a color picker" + }, + { + "if": "value=icon", + "then": "icon Makes sure that a valid .svg-path is added" + }, + { + "if": "value=fediverse", + "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" + } + ] + }, + "type": "string", + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "placeholder" + ], + "required": false, + "hints": {}, + "description": "A (translated) text that is shown (as gray text) within the textfield" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "helperArgs" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "addExtraTags" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "inline" + ], + "required": false, + "hints": { + "question": "Show the freeform as box within the question?", + "iftrue": "show the freeform input field as a small field within the question", + "ifunset": "show the freeform input field full-width" + }, + "type": "boolean", + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." + }, + { + "path": [ + "layers", + "tagRenderings", + "freeform", + "default" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" + }, + { + "path": [ + "layers", + "tagRenderings", + "question" + ], + "required": false, + "hints": { + "question": "What question should be shown to the contributor?", + "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." + }, + { + "path": [ + "layers", + "tagRenderings", + "questionHint" + ], + "required": false, + "hints": { + "question": "Should some extra information be shown to the contributor, alongside the question?", + "ifunset": "No extra hint is given" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" + }, + { + "path": [ + "layers", + "tagRenderings", + "labels" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" + }, + { + "path": [ + "layers", + "tagRenderings", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "layers", + "tagRenderings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "layers", + "tagRenderings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "tagRenderings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "tagRenderings", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "layers", + "tagRenderings", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "layers", + "tagRenderings", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "layers", + "tagRenderings", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings" + ], + "required": false, + "hints": { + "question": "What are common options?" + }, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "What tags should be matched to show this option?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What corresponding text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "Shown if the `if` is fulfilled" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be shown next to this mapping?", + "ifunset": "Show no icon" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "Size of the image", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "Size of the image" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "hideInAnswer" + ], + "required": false, + "hints": { + "typehint": "tag", + "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", + "iftrue": "Never show this mapping as option to pick", + "ifunset": "Always show this mapping as option to pick" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": [ + "string", + "boolean" + ] + } + ], + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "hideInAnswer", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "hideInAnswer", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "ifnot" + ], + "required": false, + "hints": { + "question": "What tags should be applied if this mapping is _not_ chosen?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "ifnot", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "ifnot", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "addExtraTags" + ], + "required": false, + "hints": { + "typehint": "simple_tag[]", + "question": "What extra tags should be added to the object if this object is chosen?" + }, + "type": "array", + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "searchTerms" + ], + "required": false, + "hints": { + "group": "hidden", + "question": "If there are many options, what search terms match too?" + }, + "type": "object", + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "priorityIf" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "priorityIf", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "priorityIf", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "mappings", + "#" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": "string", + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "multiAnswer" + ], + "required": false, + "hints": { + "question": "Should a contributor be allowed to select multiple mappings?", + "iftrue": "allow to select multiple mappigns", + "iffalse": "only allow to select a single mapping", + "ifunset": "only allow to select a single mapping" + }, + "type": "boolean", + "description": "If true, use checkboxes instead of radio buttons when asking the question" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "key" + ], + "required": true, + "hints": { + "ifunset": "do not offer a freeform textfield as answer option" + }, + "type": "string", + "description": "question What is the name of the attribute that should be written to?" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "type" + ], + "required": false, + "hints": { + "question": "What is the input type?", + "suggestions": [ + { + "if": "value=string", + "then": "string A simple piece of text" + }, + { + "if": "value=text", + "then": "text A longer piece of text. Uses an textArea instead of a textField" + }, + { + "if": "value=date", + "then": "date A date with date picker" + }, + { + "if": "value=nat", + "then": "nat A whole, positive number or zero" + }, + { + "if": "value=int", + "then": "int A whole number, either positive, negative or zero" + }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, + { + "if": "value=direction", + "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." + }, + { + "if": "value=wikidata", + "then": "wikidata A wikidata identifier, e.g. Q42. " + }, + { + "if": "value=pnat", + "then": "pnat A strict positive number" + }, + { + "if": "value=float", + "then": "float A decimal number" + }, + { + "if": "value=pfloat", + "then": "pfloat A positive decimal number or zero" + }, + { + "if": "value=email", + "then": "email An email adress" + }, + { + "if": "value=url", + "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" + }, + { + "if": "value=phone", + "then": "phone A phone number" + }, + { + "if": "value=opening_hours", + "then": "opening_hours Has extra elements to easily input when a POI is opened. " + }, + { + "if": "value=color", + "then": "color Shows a color picker" + }, + { + "if": "value=icon", + "then": "icon Makes sure that a valid .svg-path is added" + }, + { + "if": "value=fediverse", + "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" + } + ] + }, + "type": "string", + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "placeholder" + ], + "required": false, + "hints": {}, + "description": "A (translated) text that is shown (as gray text) within the textfield" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "helperArgs" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "addExtraTags" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "inline" + ], + "required": false, + "hints": { + "question": "Show the freeform as box within the question?", + "iftrue": "show the freeform input field as a small field within the question", + "ifunset": "show the freeform input field full-width" + }, + "type": "boolean", + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "freeform", + "default" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "question" + ], + "required": false, + "hints": { + "question": "What question should be shown to the contributor?", + "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "questionHint" + ], + "required": false, + "hints": { + "question": "Should some extra information be shown to the contributor, alongside the question?", + "ifunset": "No extra hint is given" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "labels" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "layers", + "tagRenderings", + "override", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -42959,2154 +15391,7 @@ "required": false, "hints": {}, "type": "object", - "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." - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings" - ], - "required": false, - "hints": { - "question": "What are common options?" - }, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "What tags should be matched to show this option?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What corresponding text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "Shown if the `if` is fulfilled" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be shown next to this mapping?", - "ifunset": "Show no icon" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "Size of the image" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "hideInAnswer" - ], - "required": false, - "hints": { - "typehint": "tag", - "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", - "iftrue": "Never show this mapping as option to pick", - "ifunset": "Always show this mapping as option to pick" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "hideInAnswer", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "hideInAnswer", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "ifnot" - ], - "required": false, - "hints": { - "question": "What tags should be applied if this mapping is _not_ chosen?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "ifnot", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "ifnot", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "addExtraTags" - ], - "required": false, - "hints": { - "typehint": "simple_tag[]", - "question": "What extra tags should be added to the object if this object is chosen?" - }, - "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "searchTerms" - ], - "required": false, - "hints": { - "group": "hidden", - "question": "If there are many options, what search terms match too?" - }, - "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "priorityIf" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "priorityIf", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "priorityIf", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "mappings", - "#" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" - }, - { - "path": [ - "layers", - "tagRenderings", - "multiAnswer" - ], - "required": false, - "hints": { - "question": "Should a contributor be allowed to select multiple mappings?", - "iftrue": "allow to select multiple mappigns", - "iffalse": "only allow to select a single mapping", - "ifunset": "only allow to select a single mapping" - }, - "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "key" - ], - "required": true, - "hints": { - "ifunset": "do not offer a freeform textfield as answer option" - }, - "type": "string", - "description": "question What is the name of the attribute that should be written to?" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "type" - ], - "required": false, - "hints": { - "question": "What is the input type?", - "suggestions": [ - { - "if": "value=string", - "then": "string A simple piece of text" - }, - { - "if": "value=text", - "then": "text A longer piece of text. Uses an textArea instead of a textField" - }, - { - "if": "value=date", - "then": "date A date with date picker" - }, - { - "if": "value=nat", - "then": "nat A whole, positive number or zero" - }, - { - "if": "value=int", - "then": "int A whole number, either positive, negative or zero" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" - }, - { - "if": "value=direction", - "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." - }, - { - "if": "value=wikidata", - "then": "wikidata A wikidata identifier, e.g. Q42. " - }, - { - "if": "value=pnat", - "then": "pnat A strict positive number" - }, - { - "if": "value=float", - "then": "float A decimal number" - }, - { - "if": "value=pfloat", - "then": "pfloat A positive decimal number or zero" - }, - { - "if": "value=email", - "then": "email An email adress" - }, - { - "if": "value=url", - "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" - }, - { - "if": "value=phone", - "then": "phone A phone number" - }, - { - "if": "value=opening_hours", - "then": "opening_hours Has extra elements to easily input when a POI is opened. " - }, - { - "if": "value=color", - "then": "color Shows a color picker" - }, - { - "if": "value=icon", - "then": "icon Makes sure that a valid .svg-path is added" - }, - { - "if": "value=fediverse", - "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" - } - ] - }, - "type": "string", - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "placeholder" - ], - "required": false, - "hints": {}, - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "helperArgs" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "addExtraTags" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "inline" - ], - "required": false, - "hints": { - "question": "Show the freeform as box within the question?", - "iftrue": "show the freeform input field as a small field within the question", - "ifunset": "show the freeform input field full-width" - }, - "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." - }, - { - "path": [ - "layers", - "tagRenderings", - "freeform", - "default" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" - }, - { - "path": [ - "layers", - "tagRenderings", - "question" - ], - "required": false, - "hints": { - "question": "What question should be shown to the contributor?", - "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "questionHint" - ], - "required": false, - "hints": { - "question": "Should some extra information be shown to the contributor, alongside the question?", - "ifunset": "No extra hint is given" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" - }, - { - "path": [ - "layers", - "tagRenderings", - "labels" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" - }, - { - "path": [ - "layers", - "tagRenderings", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "tagRenderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "tagRenderings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "tagRenderings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "tagRenderings", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "tagRenderings", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "tagRenderings", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "tagRenderings", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings" - ], - "required": false, - "hints": { - "question": "What are common options?" - }, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "What tags should be matched to show this option?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What corresponding text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "Shown if the `if` is fulfilled" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be shown next to this mapping?", - "ifunset": "Show no icon" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "Size of the image" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "hideInAnswer" - ], - "required": false, - "hints": { - "typehint": "tag", - "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", - "iftrue": "Never show this mapping as option to pick", - "ifunset": "Always show this mapping as option to pick" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "hideInAnswer", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "hideInAnswer", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "ifnot" - ], - "required": false, - "hints": { - "question": "What tags should be applied if this mapping is _not_ chosen?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "ifnot", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "ifnot", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "addExtraTags" - ], - "required": false, - "hints": { - "typehint": "simple_tag[]", - "question": "What extra tags should be added to the object if this object is chosen?" - }, - "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "searchTerms" - ], - "required": false, - "hints": { - "group": "hidden", - "question": "If there are many options, what search terms match too?" - }, - "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "priorityIf" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "priorityIf", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "priorityIf", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "mappings", - "#" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "multiAnswer" - ], - "required": false, - "hints": { - "question": "Should a contributor be allowed to select multiple mappings?", - "iftrue": "allow to select multiple mappigns", - "iffalse": "only allow to select a single mapping", - "ifunset": "only allow to select a single mapping" - }, - "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "key" - ], - "required": true, - "hints": { - "ifunset": "do not offer a freeform textfield as answer option" - }, - "type": "string", - "description": "question What is the name of the attribute that should be written to?" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "type" - ], - "required": false, - "hints": { - "question": "What is the input type?", - "suggestions": [ - { - "if": "value=string", - "then": "string A simple piece of text" - }, - { - "if": "value=text", - "then": "text A longer piece of text. Uses an textArea instead of a textField" - }, - { - "if": "value=date", - "then": "date A date with date picker" - }, - { - "if": "value=nat", - "then": "nat A whole, positive number or zero" - }, - { - "if": "value=int", - "then": "int A whole number, either positive, negative or zero" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" - }, - { - "if": "value=direction", - "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." - }, - { - "if": "value=wikidata", - "then": "wikidata A wikidata identifier, e.g. Q42. " - }, - { - "if": "value=pnat", - "then": "pnat A strict positive number" - }, - { - "if": "value=float", - "then": "float A decimal number" - }, - { - "if": "value=pfloat", - "then": "pfloat A positive decimal number or zero" - }, - { - "if": "value=email", - "then": "email An email adress" - }, - { - "if": "value=url", - "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" - }, - { - "if": "value=phone", - "then": "phone A phone number" - }, - { - "if": "value=opening_hours", - "then": "opening_hours Has extra elements to easily input when a POI is opened. " - }, - { - "if": "value=color", - "then": "color Shows a color picker" - }, - { - "if": "value=icon", - "then": "icon Makes sure that a valid .svg-path is added" - }, - { - "if": "value=fediverse", - "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" - } - ] - }, - "type": "string", - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "placeholder" - ], - "required": false, - "hints": {}, - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "helperArgs" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "addExtraTags" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "inline" - ], - "required": false, - "hints": { - "question": "Show the freeform as box within the question?", - "iftrue": "show the freeform input field as a small field within the question", - "ifunset": "show the freeform input field full-width" - }, - "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "freeform", - "default" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "question" - ], - "required": false, - "hints": { - "question": "What question should be shown to the contributor?", - "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "questionHint" - ], - "required": false, - "hints": { - "question": "Should some extra information be shown to the contributor, alongside the question?", - "ifunset": "No extra hint is given" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "labels" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "tagRenderings", - "override", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "tagRenderings" - ], - "required": false, - "hints": {}, - "type": "object", - "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]" - }, - { - "path": [ - "layers", - "tagRenderings", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "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." + "description": "Rewrites and multiplies the given renderings of type T.\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\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)\nFor example:\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 # The first pair: key --> X, a|b|c --> 0\n \"X\": 0\n },\n {\n \"Y\": 1\n },\n {\n \"Z\": 2\n }\n]" }, { "path": [ @@ -45120,7 +15405,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -45157,7 +15442,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -45217,7 +15502,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -45278,7 +15563,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -45315,7 +15600,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -45352,7 +15637,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -45377,7 +15662,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -45414,7 +15699,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -45451,7 +15736,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -45467,7 +15752,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -45483,7 +15768,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -45545,7 +15830,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -45582,7 +15867,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -45597,7 +15882,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -45614,7 +15899,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -45785,7 +16070,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -45820,7 +16105,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -45902,7 +16187,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -45989,7 +16274,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -46025,7 +16310,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46061,7 +16346,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46085,7 +16370,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -46121,7 +16406,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46157,7 +16442,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46190,7 +16475,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -46205,7 +16490,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -46243,7 +16528,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -46305,7 +16590,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -46369,7 +16654,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -46407,7 +16692,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46445,7 +16730,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46471,7 +16756,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -46509,7 +16794,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46547,7 +16832,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46564,7 +16849,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -46581,7 +16866,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -46645,7 +16930,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46683,7 +16968,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -46699,7 +16984,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -46717,7 +17002,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -46895,7 +17180,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -46932,7 +17217,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -47017,7 +17302,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -47108,7 +17393,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -47145,7 +17430,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47182,7 +17467,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47207,7 +17492,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -47244,7 +17529,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47281,7 +17566,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47316,7 +17601,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -47353,7 +17638,7 @@ ] } ], - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one\n" + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one" }, { "path": [ @@ -47375,7 +17660,7 @@ "required": true, "hints": {}, "type": "array", - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```" + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\nAn example which searches by name:\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```" }, { "path": [ @@ -47399,7 +17684,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47435,7 +17720,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47471,7 +17756,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47495,7 +17780,7 @@ "required": false, "hints": {}, "type": "string", - "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer" + "description": "Used for comments or to disable a check\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer" }, { "path": [ @@ -47582,7 +17867,7 @@ "type": "boolean" } ], - "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n### The delete dialog\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted fromOSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n##### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.\n" + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\nTo configure, the following values are possible:\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n### The delete dialog\n#### Hard deletion if enough experience\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\nIn all other cases, a 'soft deletion' is used.\n#### Soft deletion\nA 'soft deletion' is when the point isn't deleted fromOSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n##### No-delete options\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags." }, { "path": [ @@ -47596,7 +17881,7 @@ "question": "How many changesets must a contributor have before being allowed to delete a point?" }, "type": "number", - "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.\n" + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here." }, { "path": [ @@ -47607,7 +17892,7 @@ "required": false, "hints": {}, "type": "array", - "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from" + "description": "*\nBy default, three reasons to delete a point are shown:\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\nThese reasons can be stated here and will be shown in the list of options the user can choose from" }, { "path": [ @@ -47620,7 +17905,7 @@ "hints": { "question": "For what extra reason might this feature be removed in real-life?" }, - "description": "The text that will be shown to the user as option for why this point does not exist anymore.\nNote that the most common reasons (test point, does not exist anymore, cannot be found) are already offered by default\n" + "description": "The text that will be shown to the user as option for why this point does not exist anymore.\nNote that the most common reasons (test point, does not exist anymore, cannot be found) are already offered by default" }, { "path": [ @@ -47634,7 +17919,7 @@ "question": "What should be added to the changeset as delete reason?" }, "type": "string", - "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english\n" + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english" }, { "path": [ @@ -47645,7 +17930,7 @@ "required": false, "hints": {}, "type": "array", - "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!" + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!" }, { "path": [ @@ -47681,7 +17966,7 @@ "type": "string" } ], - "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore\n" + "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore" }, { "path": [ @@ -47694,7 +17979,7 @@ "hints": { "question": "What text should be shown to the contributor for this reason?" }, - "description": "The human explanation for the options\n" + "description": "The human explanation for the options" }, { "path": [ @@ -47718,7 +18003,7 @@ "type": "string" } ], - "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```\n" + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```" }, { "path": [ @@ -47753,7 +18038,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47788,7 +18073,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -47804,7 +18089,7 @@ "ifunset": "Show the default delete reasons (default behaviour)" }, "type": "boolean", - "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping\n" + "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping" }, { "path": [ @@ -47839,7 +18124,7 @@ "type": "boolean" } ], - "description": "Indicates if a point can be moved and why.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n" + "description": "Indicates if a point can be moved and why.\nA feature can be moved by MapComplete if:\n- It is a point\n- The point is _not_ part of a way or a a relation." }, { "path": [ @@ -47871,7 +18156,7 @@ "ifunset": "(default) This type of point can be moved due to a relocation (and will remove address information when this is done)" }, "type": "boolean", - "description": "\nThis will erase the attributes `addr:street`, `addr:housenumber`, `addr:city` and `addr:postcode`\n" + "description": "This will erase the attributes `addr:street`, `addr:housenumber`, `addr:city` and `addr:postcode`" }, { "path": [ @@ -47887,7 +18172,7 @@ "ifunset": "don't enable the split-roads component" }, "type": "boolean", - "description": "If set, a 'split this way' button is shown on objects rendered as LineStrings, e.g. highways.\n\nIf the way is part of a relation, MapComplete will attempt to update this relation as well" + "description": "If set, a 'split this way' button is shown on objects rendered as LineStrings, e.g. highways.\nIf the way is part of a relation, MapComplete will attempt to update this relation as well" }, { "path": [ @@ -47899,7 +18184,7 @@ "default": "ult: true," }, "type": "object", - "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given" + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n# Rendering\nTo render a value with long (human) denomination, use {canonical(key)}\n# Usage\nFirst of all, you define which keys have units applied, for example:\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given" }, { "path": [ @@ -47910,7 +18195,7 @@ "required": true, "hints": {}, "type": "array", - "description": "Every key from this list will be normalized.\n\nTo render the value properly (with a human readable denomination), use `{canonical()}`" + "description": "Every key from this list will be normalized.\nTo render the value properly (with a human readable denomination), use `{canonical()}`" }, { "path": [ @@ -47954,7 +18239,7 @@ "type": "boolean" } ], - "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\n\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\n\nIf none of the units indicate that they are the default, the first denomination will be used instead" + "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\nIf none of the units indicate that they are the default, the first denomination will be used instead" }, { "path": [ @@ -47966,7 +18251,7 @@ "required": true, "hints": {}, "type": "string", - "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\n\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used" + "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used" }, { "path": [ @@ -47978,7 +18263,7 @@ "required": false, "hints": {}, "type": "string", - "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\n\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here" + "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here" }, { "path": [ @@ -48051,7 +18336,7 @@ "required": false, "hints": {}, "type": "string", - "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\n\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits" + "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits" }, { "path": [ @@ -48082,7 +18367,7 @@ ] }, "type": "string", - "description": "If set, synchronizes whether or not this layer is enabled.\n" + "description": "If set, synchronizes whether or not this layer is enabled." }, { "path": [ @@ -48094,7 +18379,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering\n" + "description": "Used for comments and/or to disable some checks\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering" }, { "path": [ @@ -48106,7 +18391,7 @@ "group": "hidden" }, "type": "boolean", - "description": "_Set automatically by MapComplete, please ignore_\n" + "description": "_Set automatically by MapComplete, please ignore_" }, { "path": [ @@ -48120,7 +18405,7 @@ "question": "What is the identifier of this layer?" }, "type": "string", - "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.\n" + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer." }, { "path": [ @@ -48142,7 +18427,7 @@ "type": "string" } ], - "description": "Used in the layer control panel to toggle a layer on and of.\n\n" + "description": "Used in the layer control panel to toggle a layer on and of." }, { "path": [ @@ -48163,7 +18448,7 @@ "type": "string" } ], - "description": "A description for the features shown in this layer.\nThis often resembles the introduction of the wiki.osm.org-page for this feature.\n" + "description": "A description for the features shown in this layer.\nThis often resembles the introduction of the wiki.osm.org-page for this feature." }, { "path": [ @@ -48176,7 +18461,8 @@ "types": "Load data with specific tags from OpenStreetMap ; Load data from an external geojson source ;", "typesdefault": "0", "group": "Basic", - "question": "Where should the data be fetched from?" + "question": "Where should the data be fetched from?", + "title": "Data Source" }, "type": [ { @@ -48231,7 +18517,7 @@ "type": "string" } ], - "description": "\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" + "description": "This determines where the data for the layer is fetched: from OSM or from an external geojson dataset.\nIf no 'geojson' is defined, data will be fetched from overpass and the OSM-API.\nEvery source _must_ define which tags _must_ be present in order to be picked up.\nNote: a source must always be defined. 'special' is only allowed if this is a builtin-layer" }, { "path": [ @@ -48283,7 +18569,7 @@ "question": "How long (in seconds) is the data allowed to remain cached until it must be refreshed?" }, "type": "number", - "description": "The maximum amount of seconds that a tile is allowed to linger in the cache\n" + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache" }, { "path": [ @@ -48298,7 +18584,7 @@ "question": "What is the URL of the geojson?" }, "type": "string", - "description": "The actual source of the data to load, if loaded via geojson.\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\n" + "description": "The actual source of the data to load, if loaded via geojson.\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}" }, { "path": [ @@ -48313,7 +18599,7 @@ "ifunset": "This is not a tiled geojson" }, "type": "number", - "description": "To load a tiled geojson layer, set the zoomlevel of the tiles\n" + "description": "To load a tiled geojson layer, set the zoomlevel of the tiles" }, { "path": [ @@ -48329,7 +18615,7 @@ "ifunset": "This is not an OpenStreetMap cache" }, "type": "boolean", - "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache.\nThis also indicates that making changes on this data is possible\n" + "description": "Indicates that the upstream geojson data is OSM-derived.\nUseful for e.g. merging or for scripts generating this cache.\nThis also indicates that making changes on this data is possible" }, { "path": [ @@ -48345,7 +18631,7 @@ "ifunset": "This geojson uses WGS84 just like most geojson (default)" }, "type": "boolean", - "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n" + "description": "Some API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this" }, { "path": [ @@ -48361,7 +18647,7 @@ "inline": "This geojson uses {value} as attribute to set the id" }, "type": "string", - "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'\n" + "description": "Some API's have an id-field, but give it a different name.\nSetting this key will rename this field into 'id'" }, { "path": [ @@ -48375,7 +18661,7 @@ "question": "What extra attributes should be calculated with javascript?" }, "type": "array", - "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]\n\nThe specified tags are evaluated lazily. E.g. if a calculated tag is only used in the popup (e.g. the number of nearby features),\nthe expensive calculation will only be performed then for that feature. This avoids clogging up the contributors PC when all features are loaded.\n\nIf a tag has to be evaluated strictly, use ':=' instead:\n\n[\n\"_some_key:=some_javascript_expression\"\n]\n\nSee the full documentation on [https://github.com/pietervdvn/MapComplete/blob/master/Docs/CalculatedTags.md]\n" + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]\nThe specified tags are evaluated lazily. E.g. if a calculated tag is only used in the popup (e.g. the number of nearby features),\nthe expensive calculation will only be performed then for that feature. This avoids clogging up the contributors PC when all features are loaded.\nIf a tag has to be evaluated strictly, use ':=' instead:\n[\n\"_some_key:=some_javascript_expression\"\n]\nSee the full documentation on [https://github.com/pietervdvn/MapComplete/blob/master/Docs/CalculatedTags.md]" }, { "path": [ @@ -48400,7 +18686,7 @@ "type": "string" } ], - "description": "If set, only features matching this extra tag will be shown.\nThis is useful to hide certain features from view based on a calculated tag or if the features are provided by a different layer.\n" + "description": "If set, only features matching this extra tag will be shown.\nThis is useful to hide certain features from view based on a calculated tag or if the features are provided by a different layer." }, { "path": [ @@ -48435,7 +18721,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48470,7 +18756,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48487,7 +18773,7 @@ "ifunset": "Always load this layer, even if the entire world is in view." }, "type": "number", - "description": "The minimum needed zoomlevel required to start loading and displaying the data.\nThis can be used to only show common features (e.g. a bicycle parking) only when the map is zoomed in very much (17).\nThis prevents cluttering the map with thousands of parkings if one is looking to an entire city.\n" + "description": "The minimum needed zoomlevel required to start loading and displaying the data.\nThis can be used to only show common features (e.g. a bicycle parking) only when the map is zoomed in very much (17).\nThis prevents cluttering the map with thousands of parkings if one is looking to an entire city." }, { "path": [ @@ -48504,7 +18790,7 @@ "iffalse": "the layer is hidden until the contributor enables it. (If the filter-popup is disabled, this might never get enabled nor loaded)" }, "type": "boolean", - "description": "Indicates if this layer is shown by default;\ncan be used to hide a layer from start, or to load the layer but only to show it when appropriate (e.g. for advanced users)\n" + "description": "Indicates if this layer is shown by default;\ncan be used to hide a layer from start, or to load the layer but only to show it when appropriate (e.g. for advanced users)" }, { "path": [ @@ -48518,7 +18804,7 @@ "default": "100 (thus: always visible" }, "type": "number", - "description": "The zoom level at which point the data is hidden again\n" + "description": "The zoom level at which point the data is hidden again" }, { "path": [ @@ -48717,18 +19003,7 @@ "type": "string" } ], - "description": "The title shown in a popup for elements of this layer.\n" - }, - { - "path": [ - "layers", - "override", - "title" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" + "description": "The title shown in a popup for elements of this layer." }, { "path": [ @@ -48776,7 +19051,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -48863,7 +19138,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -48899,7 +19174,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48935,7 +19210,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -48959,7 +19234,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -48995,7 +19270,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -49031,7 +19306,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -49108,7 +19383,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -49131,7 +19406,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -49231,7 +19506,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -49248,7 +19523,7 @@ "iffalse": "show the infobox in a sidebar on the right" }, "type": "boolean", - "description": "\nIf set, open the selectedElementView in a floatOver instead of on the right.\n" + "description": "If set, open the selectedElementView in a floatOver instead of on the right." }, { "path": [ @@ -49289,18 +19564,7 @@ "maxItems": 1 } ], - "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons (which are added automatically)\n" - }, - { - "path": [ - "layers", - "override", - "titleIcons" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons (which are added automatically)" }, { "path": [ @@ -49348,7 +19612,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -49435,7 +19699,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -49471,7 +19735,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -49507,7 +19771,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -49531,7 +19795,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -49567,7 +19831,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -49603,7 +19867,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -49680,7 +19944,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -49703,7 +19967,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -49803,275 +20067,90 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering" + "pointRendering" ], "required": false, "hints": { - "group": "maprendering" + "group": "pointrendering" }, - "type": [ - { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/default_4" - }, - { - "$ref": "#/definitions/default_5" - }, - { - "$ref": "#/definitions/default" - } - ] + "type": "array", + "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" + }, + { + "path": [ + "layers", + "override", + "pointRendering" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\nThis can be used if:\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "location" + ], + "required": true, + "hints": { + "question": "At what location should this icon be shown?", + "suggestions": [ + { + "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": "null" - } - ], - "description": "Visualisation of the items on the map\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "location" - ], - "required": true, - "hints": {}, + ], + "multianswer": "true" + }, "type": "array", - "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": "" }, { "path": [ "layers", "override", - "mapRendering", - "icon" + "pointRendering", + "marker" ], "required": false, "hints": { - "typehint": "icon" + "typehint": "icon", + "question": "What marker should be used to" }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" + "type": "array", + "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.\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": [ "layers", "override", - "mapRendering", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", + "marker", "icon", "render" ], @@ -50114,13 +20193,14 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "icon" ], @@ -50156,7 +20236,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "icon", "path" @@ -50172,7 +20253,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "icon", "class" @@ -50186,7 +20268,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "condition" ], @@ -50205,13 +20288,14 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "condition", "and" @@ -50242,13 +20326,14 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "condition", "or" @@ -50279,13 +20364,14 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "metacondition" ], @@ -50304,13 +20390,14 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "metacondition", "and" @@ -50341,13 +20428,14 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "metacondition", "or" @@ -50378,13 +20466,14 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "freeform" ], @@ -50400,7 +20489,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "freeform", "key" @@ -50414,7 +20504,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings" ], @@ -50427,7 +20518,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "if" @@ -50459,13 +20551,14 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "then" @@ -50483,13 +20576,14 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "icon" @@ -50527,7 +20621,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "icon", @@ -50544,7 +20639,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "mappings", "icon", @@ -50559,7 +20655,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "description" ], @@ -50579,7 +20676,8 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", "icon", "classes" ], @@ -50588,25 +20686,568 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", + "marker", + "color", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "freeform" + ], + "required": false, + "hints": { + "question": "Should a freeform text field be shown?", + "ifunset": "Do not add a freeform text field" + }, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "freeform", + "key" + ], + "required": true, + "hints": {}, + "type": "string", + "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "mappings" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "When should this single mapping match?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "If 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" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be added to this mapping?", + "inline": " {icon}" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon supporting this mapping; typically shown pretty small" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "layers", + "override", + "pointRendering", + "marker", + "color", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "layers", + "override", + "pointRendering", "iconBadges" ], "required": false, "hints": {}, "type": "array", - "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" + "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.\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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "if" ], @@ -50636,13 +21277,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then" ], @@ -50837,20 +21478,7 @@ "path": [ "layers", "override", - "mapRendering", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "render" @@ -50894,13 +21522,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "icon" @@ -50937,7 +21565,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "icon", @@ -50954,7 +21582,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "icon", @@ -50969,7 +21597,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "condition" @@ -50989,13 +21617,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "condition", @@ -51027,13 +21655,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "condition", @@ -51065,13 +21693,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "metacondition" @@ -51091,13 +21719,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "metacondition", @@ -51129,13 +21757,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "metacondition", @@ -51167,13 +21795,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "freeform" @@ -51190,7 +21818,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "freeform", @@ -51205,7 +21833,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings" @@ -51219,7 +21847,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -51252,13 +21880,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -51277,13 +21905,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -51322,7 +21950,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -51340,7 +21968,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "mappings", @@ -51356,7 +21984,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "description" @@ -51377,7 +22005,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconBadges", "then", "classes" @@ -51387,13 +22015,13 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize" ], "required": false, @@ -51585,19 +22213,7 @@ "path": [ "layers", "override", - "mapRendering", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "iconSize", "render" ], @@ -51640,13 +22256,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "icon" ], @@ -51682,7 +22298,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "icon", "path" @@ -51698,7 +22314,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "icon", "class" @@ -51712,7 +22328,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "condition" ], @@ -51731,13 +22347,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "condition", "and" @@ -51768,13 +22384,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "condition", "or" @@ -51805,13 +22421,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "metacondition" ], @@ -51830,13 +22446,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "metacondition", "and" @@ -51867,13 +22483,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "metacondition", "or" @@ -51904,13 +22520,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "freeform" ], @@ -51926,7 +22542,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "freeform", "key" @@ -51940,7 +22556,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "mappings" ], @@ -51953,7 +22569,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "mappings", "if" @@ -51985,13 +22601,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "mappings", "then" @@ -52009,13 +22625,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "mappings", "icon" @@ -52053,7 +22669,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "mappings", "icon", @@ -52070,7 +22686,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "mappings", "icon", @@ -52085,7 +22701,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "description" ], @@ -52105,7 +22721,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "iconSize", "classes" ], @@ -52114,18 +22730,41 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor" ], "required": false, "hints": { - "question": "What is the anchorpoint of the icon?" + "question": "What is the anchorpoint of the icon?", + "ifunset": "Use MapComplete-default (center)", + "suggestions": [ + { + "if": "value=center", + "then": "Place the center of the icon on the geographical location" + }, + { + "if": "value=top", + "then": "Place the top of the icon on the geographical location" + }, + { + "if": "value=bottom", + "then": "Place the bottom of the icon on the geographical location" + }, + { + "if": "value=left", + "then": "Place the left of the icon on the geographical location" + }, + { + "if": "value=right", + "then": "Place the right of the icon on the geographical location" + } + ] }, "type": [ { @@ -52308,25 +22947,13 @@ "type": "string" } ], - "description": "\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": "This matches the geographical point with a location on the icon." }, { "path": [ "layers", "override", - "mapRendering", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "anchor", "render" ], @@ -52369,13 +22996,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "icon" ], @@ -52411,7 +23038,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "icon", "path" @@ -52427,7 +23054,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "icon", "class" @@ -52441,7 +23068,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "condition" ], @@ -52460,13 +23087,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "condition", "and" @@ -52497,13 +23124,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "condition", "or" @@ -52534,13 +23161,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "metacondition" ], @@ -52559,13 +23186,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "metacondition", "and" @@ -52596,13 +23223,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "metacondition", "or" @@ -52633,13 +23260,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "freeform" ], @@ -52655,7 +23282,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "freeform", "key" @@ -52669,7 +23296,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "mappings" ], @@ -52682,7 +23309,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "mappings", "if" @@ -52714,13 +23341,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "mappings", "then" @@ -52738,13 +23365,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "mappings", "icon" @@ -52782,7 +23409,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "mappings", "icon", @@ -52799,7 +23426,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "mappings", "icon", @@ -52814,7 +23441,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "description" ], @@ -52834,7 +23461,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "anchor", "classes" ], @@ -52843,13 +23470,13 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation" ], "required": false, @@ -53041,19 +23668,7 @@ "path": [ "layers", "override", - "mapRendering", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "rotation", "render" ], @@ -53096,13 +23711,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "icon" ], @@ -53138,7 +23753,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "icon", "path" @@ -53154,7 +23769,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "icon", "class" @@ -53168,7 +23783,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "condition" ], @@ -53187,13 +23802,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "condition", "and" @@ -53224,13 +23839,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "condition", "or" @@ -53261,13 +23876,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "metacondition" ], @@ -53286,13 +23901,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "metacondition", "and" @@ -53323,13 +23938,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "metacondition", "or" @@ -53360,13 +23975,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "freeform" ], @@ -53382,7 +23997,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "freeform", "key" @@ -53396,7 +24011,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "mappings" ], @@ -53409,7 +24024,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "mappings", "if" @@ -53441,13 +24056,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "mappings", "then" @@ -53465,13 +24080,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "mappings", "icon" @@ -53509,7 +24124,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "mappings", "icon", @@ -53526,7 +24141,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "mappings", "icon", @@ -53541,7 +24156,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "description" ], @@ -53561,7 +24176,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotation", "classes" ], @@ -53570,17 +24185,21 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value | string", + "question": "What label should be shown beneath the marker?", + "inline": "Always show label {value} beneath the marker" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -53762,25 +24381,13 @@ "type": "string" } ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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": "For example:
{name}
\nIf the icon is undefined, then the label is shown in the center of the feature." }, { "path": [ "layers", "override", - "mapRendering", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "label", "render" ], @@ -53823,13 +24430,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "icon" ], @@ -53865,7 +24472,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "icon", "path" @@ -53881,7 +24488,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "icon", "class" @@ -53895,7 +24502,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "condition" ], @@ -53914,13 +24521,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "condition", "and" @@ -53951,13 +24558,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "condition", "or" @@ -53988,13 +24595,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "metacondition" ], @@ -54013,13 +24620,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "metacondition", "and" @@ -54050,13 +24657,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "metacondition", "or" @@ -54087,13 +24694,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "freeform" ], @@ -54109,7 +24716,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "freeform", "key" @@ -54123,7 +24730,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "mappings" ], @@ -54136,7 +24743,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "mappings", "if" @@ -54168,13 +24775,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "mappings", "then" @@ -54192,13 +24799,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "mappings", "icon" @@ -54236,7 +24843,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "mappings", "icon", @@ -54253,7 +24860,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "mappings", "icon", @@ -54268,7 +24875,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "description" ], @@ -54288,7 +24895,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "label", "classes" ], @@ -54297,17 +24904,21 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "What CSS should be applied to the entire marker?", + "inline": "Apply CSS-style {value} to the _entire marker_" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -54489,25 +25100,13 @@ "type": "string" } ], - "description": "A snippet of css code which is applied onto the container of the entire marker" + "description": "You 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" }, { "path": [ "layers", "override", - "mapRendering", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "css", "render" ], @@ -54550,13 +25149,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "icon" ], @@ -54592,7 +25191,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "icon", "path" @@ -54608,7 +25207,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "icon", "class" @@ -54622,7 +25221,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "condition" ], @@ -54641,13 +25240,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "condition", "and" @@ -54678,13 +25277,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "condition", "or" @@ -54715,13 +25314,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "metacondition" ], @@ -54740,13 +25339,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "metacondition", "and" @@ -54777,13 +25376,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "metacondition", "or" @@ -54814,13 +25413,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "freeform" ], @@ -54836,7 +25435,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "freeform", "key" @@ -54850,7 +25449,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "mappings" ], @@ -54863,7 +25462,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "mappings", "if" @@ -54895,13 +25494,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "mappings", "then" @@ -54919,13 +25518,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "mappings", "icon" @@ -54963,7 +25562,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "mappings", "icon", @@ -54980,7 +25579,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "mappings", "icon", @@ -54995,7 +25594,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "description" ], @@ -55015,7 +25614,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "css", "classes" ], @@ -55024,17 +25623,21 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "Which CSS-classes should be applied to the entire marker?", + "inline": "Apply CSS-classes {value} to the entire container" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -55216,25 +25819,13 @@ "type": "string" } ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" + "description": "This will be applied to the _container_ containing both the marker and the label\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`" }, { "path": [ "layers", "override", - "mapRendering", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "cssClasses", "render" ], @@ -55277,13 +25868,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "icon" ], @@ -55319,7 +25910,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "icon", "path" @@ -55335,7 +25926,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "icon", "class" @@ -55349,7 +25940,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "condition" ], @@ -55368,13 +25959,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "condition", "and" @@ -55405,13 +25996,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "condition", "or" @@ -55442,13 +26033,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "metacondition" ], @@ -55467,13 +26058,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "metacondition", "and" @@ -55504,13 +26095,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "metacondition", "or" @@ -55541,13 +26132,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "freeform" ], @@ -55563,7 +26154,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "freeform", "key" @@ -55577,7 +26168,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "mappings" ], @@ -55590,7 +26181,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "if" @@ -55622,13 +26213,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "then" @@ -55646,13 +26237,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "icon" @@ -55690,7 +26281,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "icon", @@ -55707,7 +26298,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "mappings", "icon", @@ -55722,7 +26313,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "description" ], @@ -55742,7 +26333,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "cssClasses", "classes" ], @@ -55751,17 +26342,21 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "What CSS should be applied to the label?", + "inline": "Apply CSS-style {value} to the label" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -55943,25 +26538,13 @@ "type": "string" } ], - "description": "Css that is applied onto the label" + "description": "You can set the css-properties here, e.g. `background: red; font-size: 12px; `" }, { "path": [ "layers", "override", - "mapRendering", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "labelCss", "render" ], @@ -56004,13 +26587,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "icon" ], @@ -56046,7 +26629,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "icon", "path" @@ -56062,7 +26645,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "icon", "class" @@ -56076,7 +26659,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "condition" ], @@ -56095,13 +26678,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "condition", "and" @@ -56132,13 +26715,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "condition", "or" @@ -56169,13 +26752,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "metacondition" ], @@ -56194,13 +26777,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "metacondition", "and" @@ -56231,13 +26814,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "metacondition", "or" @@ -56268,13 +26851,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "freeform" ], @@ -56290,7 +26873,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "freeform", "key" @@ -56304,7 +26887,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "mappings" ], @@ -56317,7 +26900,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "mappings", "if" @@ -56349,13 +26932,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "mappings", "then" @@ -56373,13 +26956,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "mappings", "icon" @@ -56417,7 +27000,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "mappings", "icon", @@ -56434,7 +27017,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "mappings", "icon", @@ -56449,7 +27032,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "description" ], @@ -56469,7 +27052,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCss", "classes" ], @@ -56478,17 +27061,21 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses" ], "required": false, - "hints": {}, + "hints": { + "types": "Dynamic value ; string", + "question": "Which CSS-classes should be applied to the label?", + "inline": "Apply CSS-classes {value} to the label" + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -56670,25 +27257,13 @@ "type": "string" } ], - "description": "Css classes that are applied onto the label; can be space-separated" + "description": "The 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`" }, { "path": [ "layers", "override", - "mapRendering", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "labelCssClasses", "render" ], @@ -56731,13 +27306,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "icon" ], @@ -56773,7 +27348,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "icon", "path" @@ -56789,7 +27364,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "icon", "class" @@ -56803,7 +27378,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "condition" ], @@ -56822,13 +27397,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "condition", "and" @@ -56859,13 +27434,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "condition", "or" @@ -56896,13 +27471,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "metacondition" ], @@ -56921,13 +27496,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "metacondition", "and" @@ -56958,13 +27533,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "metacondition", "or" @@ -56995,13 +27570,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "freeform" ], @@ -57017,7 +27592,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "freeform", "key" @@ -57031,7 +27606,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings" ], @@ -57044,7 +27619,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "if" @@ -57076,13 +27651,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "then" @@ -57100,13 +27675,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "icon" @@ -57144,7 +27719,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "icon", @@ -57161,7 +27736,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "mappings", "icon", @@ -57176,7 +27751,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "description" ], @@ -57196,7 +27771,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "labelCssClasses", "classes" ], @@ -57205,13 +27780,13 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment" ], "required": false, @@ -57407,19 +27982,7 @@ "path": [ "layers", "override", - "mapRendering", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "pitchAlignment", "render" ], @@ -57462,13 +28025,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "icon" ], @@ -57504,7 +28067,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "icon", "path" @@ -57520,7 +28083,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "icon", "class" @@ -57534,7 +28097,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "condition" ], @@ -57553,13 +28116,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "condition", "and" @@ -57590,13 +28153,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "condition", "or" @@ -57627,13 +28190,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "metacondition" ], @@ -57652,13 +28215,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "metacondition", "and" @@ -57689,13 +28252,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "metacondition", "or" @@ -57726,13 +28289,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "freeform" ], @@ -57748,7 +28311,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "freeform", "key" @@ -57762,7 +28325,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings" ], @@ -57775,7 +28338,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "if" @@ -57807,13 +28370,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "then" @@ -57831,13 +28394,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "icon" @@ -57875,7 +28438,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "icon", @@ -57892,7 +28455,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "mappings", "icon", @@ -57907,7 +28470,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "description" ], @@ -57927,7 +28490,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "pitchAlignment", "classes" ], @@ -57936,17 +28499,30 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment" ], "required": false, - "hints": {}, + "hints": { + "question": "Should the icon be rotated or tilted if the map is rotated or tilted?", + "ifunset": "Do not rotate or tilt icons. Always keep the icons straight", + "suggestions": [ + { + "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." + } + ] + }, "type": [ { "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", @@ -58132,25 +28708,13 @@ "type": "string" } ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" + "description": "" }, { "path": [ "layers", "override", - "mapRendering", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "pointRendering", "rotationAlignment", "render" ], @@ -58193,13 +28757,13 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "icon" ], @@ -58235,7 +28799,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "icon", "path" @@ -58251,7 +28815,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "icon", "class" @@ -58265,7 +28829,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "condition" ], @@ -58284,13 +28848,13 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "condition", "and" @@ -58321,13 +28885,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "condition", "or" @@ -58358,13 +28922,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "metacondition" ], @@ -58383,13 +28947,13 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "metacondition", "and" @@ -58420,13 +28984,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "metacondition", "or" @@ -58457,13 +29021,13 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "freeform" ], @@ -58479,7 +29043,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "freeform", "key" @@ -58493,7 +29057,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings" ], @@ -58506,7 +29070,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "if" @@ -58538,13 +29102,13 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "then" @@ -58562,13 +29126,13 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "icon" @@ -58606,7 +29170,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "icon", @@ -58623,7 +29187,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "mappings", "icon", @@ -58638,7 +29202,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "description" ], @@ -58658,7 +29222,7 @@ "path": [ "layers", "override", - "mapRendering", + "pointRendering", "rotationAlignment", "classes" ], @@ -58667,134 +29231,56 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ "layers", "override", - "mapRendering" + "lineRendering" + ], + "required": false, + "hints": { + "group": "linerendering" + }, + "type": "array", + "description": "Creates lines and areas to render on the map" + }, + { + "path": [ + "layers", + "override", + "lineRendering" ], "required": false, "hints": {}, "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\nThis can be used if:\n- The feature is a line\n- The feature is an area" }, { "path": [ "layers", "override", - "mapRendering", + "lineRendering", "color" ], "required": false, - "hints": {}, + "hints": { + "typehint": "color", + "types": "dynamic value ; string", + "question": "What color should lines be drawn in?", + "ifunset": "Round ending", + "inline": "The line colour always is {value}", + "title": "Line Colour" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -58807,39 +29293,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -58847,21 +29302,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -58870,368 +29310,28 @@ "type": "string" } ], - "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": "For 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" }, { "path": [ "layers", "override", - "mapRendering", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "color", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", "override", - "mapRendering", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "color", "mappings" ], @@ -59244,7 +29344,7 @@ "path": [ "layers", "override", - "mapRendering", + "lineRendering", "color", "mappings", "if" @@ -59276,252 +29376,48 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "lineRendering", "color", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "width" ], "required": false, - "hints": {}, + "hints": { + "typehint": "pnat", + "types": "dynamic value ; string", + "question": "How wide should the line be?", + "ifunset": "Use the default-linewidth of 7 pixels", + "inline": "The line width is {value} pixels", + "title": "Line width" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -59534,39 +29430,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -59574,21 +29439,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -59606,362 +29456,22 @@ "path": [ "layers", "override", - "mapRendering", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "width", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", "override", - "mapRendering", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "width", "mappings" ], @@ -59974,7 +29484,7 @@ "path": [ "layers", "override", - "mapRendering", + "lineRendering", "width", "mappings", "if" @@ -60006,979 +29516,75 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "lineRendering", "width", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "dashArray" ], "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "render" - ], - "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "Should a dasharray be used to render the lines?", + "ifunset": "Ways are rendered with a full line" }, "type": "string", - "description": "The path to the icon" + "description": "The 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" }, { "path": [ "layers", "override", - "mapRendering", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "lineCap" ], "required": false, - "hints": {}, + "hints": { + "types": "dynamic value ; string", + "question": "What form should the line-ending have?", + "ifunset": "Use the default value (round ending)", + "suggestions": [ + { + "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)" + } + ], + "title": "Line Cap" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -60991,39 +29597,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -61031,21 +29606,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -61054,368 +29614,28 @@ "type": "string" } ], - "description": "The form at the end of a line" + "description": "" }, { "path": [ "layers", "override", - "mapRendering", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "lineCap", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", "override", - "mapRendering", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "lineCap", "mappings" ], @@ -61428,7 +29648,7 @@ "path": [ "layers", "override", - "mapRendering", + "lineRendering", "lineCap", "mappings", "if" @@ -61460,252 +29680,53 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "lineRendering", "lineCap", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "fillColor" ], "required": false, - "hints": {}, + "hints": { + "typehint": "color", + "types": "dynamic value ; string", + "question": "What colour should be used as fill colour for polygons?", + "ifunset": "The polygon fill colour will be a more transparent version of the stroke colour", + "inline": "The fill colour is {value}", + "suggestions": [ + { + "if": "value=#00000000", + "then": "Use a transparent fill (only render the outline)" + } + ] + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -61718,39 +29739,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -61758,21 +29748,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -61781,368 +29756,28 @@ "type": "string" } ], - "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": "" }, { "path": [ "layers", "override", - "mapRendering", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "fillColor", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", "override", - "mapRendering", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "fillColor", "mappings" ], @@ -62155,7 +29790,7 @@ "path": [ "layers", "override", - "mapRendering", + "lineRendering", "fillColor", "mappings", "if" @@ -62187,252 +29822,47 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "lineRendering", "fillColor", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" + "description": "If 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" }, { "path": [ "layers", "override", - "mapRendering", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "offset" ], "required": false, - "hints": {}, + "hints": { + "typehint": "int", + "types": "dynamic value ; number", + "question": "Should the lines be moved (offsetted) with a number of pixels against the geographical lines?", + "ifunset": "don't offset lines on the map", + "inline": "Pixel offset by {value} pixels" + }, "type": [ { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", + "description": "Mostly used for lineRendering and pointRendering", "type": "object", "properties": { "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] + "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", @@ -62445,39 +29875,8 @@ "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] + "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": [ @@ -62485,21 +29884,6 @@ "then" ] } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" } }, "additionalProperties": false @@ -62508,368 +29892,28 @@ "type": "number" } ], - "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": "The 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).\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" }, { "path": [ "layers", "override", - "mapRendering", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "offset", "render" ], "required": false, "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" + "question": "What value should be rendered?" }, "type": "string", - "description": "The path to the icon" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\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' />`" }, { "path": [ "layers", "override", - "mapRendering", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", + "lineRendering", "offset", "mappings" ], @@ -62882,7 +29926,7 @@ "path": [ "layers", "override", - "mapRendering", + "lineRendering", "offset", "mappings", "if" @@ -62914,27363 +29958,23 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ "layers", "override", - "mapRendering", + "lineRendering", "offset", "mappings", "then" ], "required": true, "hints": { - "typehint": "rendered", "question": "What text should be shown?" }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering" - ], - "required": false, - "hints": {}, - "type": "object", - "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]" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": [ - "string", - "number" - ] - } - ], - "description": "The stroke-width for way-elements" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The form at the end of a line" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "number" - } - ], - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "color", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": [ - "string", - "number" - ] - } - ], - "description": "The stroke-width for way-elements" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "width", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "dashArray", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The form at the end of a line" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "lineCap", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "fillColor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "number" - } - ], - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "offset", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "location" - ], - "required": true, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "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;`\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "icon", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges" - ], - "required": false, - "hints": {}, - "type": "array", - "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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "if" - ], - "required": true, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Badge to show" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconBadges", - "then", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "iconSize", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": { - "question": "What is the anchorpoint of the icon?" - }, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "\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." - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "anchor", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotation", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\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." - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "label", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css code which is applied onto the container of the entire marker" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "css", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "A snippet of css-classes which are applied onto the container of the entire marker. They can be space-separated" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "cssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css that is applied onto the label" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCss", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "string" - } - ], - "description": "Css classes that are applied onto the label; can be space-separated" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "labelCssClasses", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is pitched, the marker will stay parallel to the screen.\nSet to 'map' if you want to put it flattened on the map" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "pitchAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": [ - { - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one", - "type": "object", - "properties": { - "render": { - "description": "question: What text 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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`\ntype: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: what icon should be shown next to the 'render' value?\nAn icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - }, - "condition": { - "description": "question: When should this item be shown?\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "metacondition": { - "description": "question: When should this item be shown (including special conditions)?\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_", - "anyOf": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ] - }, - "freeform": { - "description": "question: Should a freeform text field be shown?\nAllow freeform text input from the user\nifunset: Do not add a freeform text field", - "type": "object", - "properties": { - "key": { - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", - "type": "string" - } - }, - "required": [ - "key" - ] - }, - "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\nType: rendered", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "icon": { - "description": "question: What icon should be added to this mapping?\nAn icon supporting this mapping; typically shown pretty small\ninline: {icon}\nType: icon", - "anyOf": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "if", - "then" - ] - } - }, - "description": { - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings", - "anyOf": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ] - }, - "classes": { - "description": "question: What css-classes should be applied to showing this attribute?\n\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "enum": [ - "canvas", - "map" - ], - "type": "string" - } - ], - "description": "If the map is rotated, the icon will still point to the north if no rotation was applied" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nFor an _editable_ tagRendering, use 'QuestionableTagRenderingConfigJson' instead, which extends this one" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform" - ], - "required": false, - "hints": { - "question": "Should a freeform text field be shown?", - "ifunset": "Do not add a freeform text field" - }, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "freeform", - "key" - ], - "required": true, - "hints": {}, - "type": "string", - "description": "What attribute should be filled out\nIf this key is present in the feature, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "When should this single mapping match?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\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}'}" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\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" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be added to this mapping?", - "inline": " {icon}" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon supporting this mapping; typically shown pretty small" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "mapRendering", - "renderings", - "rotationAlignment", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "If 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" }, { "path": [ @@ -90303,7 +30007,7 @@ "iffalse": "download the data as usual" }, "type": "boolean", - "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration\nThe opposite of `forceLoad`\n" + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration\nThe opposite of `forceLoad`" }, { "path": [ @@ -90319,7 +30023,7 @@ "iffalse": "only download data for this layer when needed (default)" }, "type": "boolean", - "description": "Advanced option - might be set by the theme compiler\n\nIf true, this data will _always_ be loaded, even if the theme is disabled by a filter or hidden.\nThe opposite of `doNotDownload`\n\nifftrue: always download this layer, even if it is disabled" + "description": "Advanced option - might be set by the theme compiler\nIf true, this data will _always_ be loaded, even if the theme is disabled by a filter or hidden.\nThe opposite of `doNotDownload`\nifftrue: always download this layer, even if it is disabled" }, { "path": [ @@ -90332,7 +30036,7 @@ "group": "presets" }, "type": "array", - "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all\n" + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all" }, { "path": [ @@ -90354,7 +30058,7 @@ "type": "string" } ], - "description": "The title - shown on the 'add-new'-button.\n\nThis should include the article of the noun, e.g. 'a hydrant', 'a bicycle pump'.\nThis text will be inserted into `Add {category} here`, becoming `Add a hydrant here`.\n\nDo _not_ indicate 'new': 'add a new shop here' is incorrect, as the shop might have existed forever, it could just be unmapped!\n" + "description": "The title - shown on the 'add-new'-button.\nThis should include the article of the noun, e.g. 'a hydrant', 'a bicycle pump'.\nThis text will be inserted into `Add {category} here`, becoming `Add a hydrant here`.\nDo _not_ indicate 'new': 'add a new shop here' is incorrect, as the shop might have existed forever, it could just be unmapped!" }, { "path": [ @@ -90369,7 +30073,7 @@ "question": "What tag should be added to the new object?" }, "type": "array", - "description": "A single tag (encoded as key=value) out of all the tags to add onto the newly created point.\nNote that the icon in the UI will be chosen automatically based on the tags provided here.\n" + "description": "A single tag (encoded as key=value) out of all the tags to add onto the newly created point.\nNote that the icon in the UI will be chosen automatically based on the tags provided here." }, { "path": [ @@ -90390,7 +30094,7 @@ "type": "string" } ], - "description": "An extra explanation of what the feature is, if it is not immediately clear from the title alone.\n\nThe _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)\n" + "description": "An extra explanation of what the feature is, if it is not immediately clear from the title alone.\nThe _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n(The first sentence is until the first '.'-character in the description)" }, { "path": [ @@ -90405,7 +30109,7 @@ "question": "What is the URL of an image showing such a feature?" }, "type": "array", - "description": "The URL of an example image which shows a real-life example of what such a feature might look like.\n" + "description": "The URL of an example image which shows a real-life example of what such a feature might look like." }, { "path": [ @@ -90586,6 +30290,10 @@ "if": "value=elevator", "then": "elevator - This layer show elevators and asks for operational status and elevator dimensions. Useful for wheelchair accessibility information" }, + { + "if": "value=elongated_coin", + "then": "elongated_coin - Layer showing penny presses." + }, { "if": "value=entrance", "then": "entrance - A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, …)" @@ -90949,7 +30657,7 @@ ] }, "type": "array", - "description": "\nIf specified, these layers will be shown in the precise location picker and the new point will be snapped towards it.\nFor example, this can be used to snap against `walls_and_buildings` (e.g. to attach a defibrillator, an entrance, an artwork, ... to the wall)\nor to snap an obstacle (such as a bollard) to the `cycleways_and_roads`.\n" + "description": "If specified, these layers will be shown in the precise location picker and the new point will be snapped towards it.\nFor example, this can be used to snap against `walls_and_buildings` (e.g. to attach a defibrillator, an entrance, an artwork, ... to the wall)\nor to snap an obstacle (such as a bollard) to the `cycleways_and_roads`." }, { "path": [ @@ -90965,7 +30673,7 @@ "inline": "a point is snapped if the location input is at most {value}m away from an object" }, "type": "number", - "description": "\n\nIf specified, a new point will only be snapped if it is within this range.\nIf further away, it'll be placed in the center of the location input\nDistance in meter\n" + "description": "If specified, a new point will only be snapped if it is within this range.\nIf further away, it'll be placed in the center of the location input\nDistance in meter" }, { "path": [ @@ -91227,7 +30935,2217 @@ "type": "string" } ], - "description": "\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\nFurthermore, _all_ the questions of another layer can be reused with `otherlayer.*`\nIf you need only a single of the tagRenderings, use `otherlayer.tagrenderingId`\nIf one or more questions have a 'group' or 'label' set, select all the entries with the corresponding group or label with `otherlayer.*group`\nRemark: if a tagRendering is 'lent' from another layer, the 'source'-tags are copied and added as condition.\nIf they are not wanted, remove them with an override\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together\n" + "description": "A tag rendering is a block that either shows the known value or asks a question.\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\nFurthermore, _all_ the questions of another layer can be reused with `otherlayer.*`\nIf you need only a single of the tagRenderings, use `otherlayer.tagrenderingId`\nIf one or more questions have a 'group' or 'label' set, select all the entries with the corresponding group or label with `otherlayer.*group`\nRemark: if a tagRendering is 'lent' from another layer, the 'source'-tags are copied and added as condition.\nIf they are not wanted, remove them with an override\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings" + ], + "required": false, + "hints": { + "question": "What are common options?" + }, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "What tags should be matched to show this option?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What corresponding text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "Shown if the `if` is fulfilled" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be shown next to this mapping?", + "ifunset": "Show no icon" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "Size of the image", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "Size of the image" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "hideInAnswer" + ], + "required": false, + "hints": { + "typehint": "tag", + "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", + "iftrue": "Never show this mapping as option to pick", + "ifunset": "Always show this mapping as option to pick" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": [ + "string", + "boolean" + ] + } + ], + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "hideInAnswer", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "hideInAnswer", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "ifnot" + ], + "required": false, + "hints": { + "question": "What tags should be applied if this mapping is _not_ chosen?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "ifnot", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "ifnot", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "addExtraTags" + ], + "required": false, + "hints": { + "typehint": "simple_tag[]", + "question": "What extra tags should be added to the object if this object is chosen?" + }, + "type": "array", + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "searchTerms" + ], + "required": false, + "hints": { + "group": "hidden", + "question": "If there are many options, what search terms match too?" + }, + "type": "object", + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "priorityIf" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "priorityIf", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "priorityIf", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "mappings", + "#" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": "string", + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "multiAnswer" + ], + "required": false, + "hints": { + "question": "Should a contributor be allowed to select multiple mappings?", + "iftrue": "allow to select multiple mappigns", + "iffalse": "only allow to select a single mapping", + "ifunset": "only allow to select a single mapping" + }, + "type": "boolean", + "description": "If true, use checkboxes instead of radio buttons when asking the question" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "key" + ], + "required": true, + "hints": { + "ifunset": "do not offer a freeform textfield as answer option" + }, + "type": "string", + "description": "question What is the name of the attribute that should be written to?" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "type" + ], + "required": false, + "hints": { + "question": "What is the input type?", + "suggestions": [ + { + "if": "value=string", + "then": "string A simple piece of text" + }, + { + "if": "value=text", + "then": "text A longer piece of text. Uses an textArea instead of a textField" + }, + { + "if": "value=date", + "then": "date A date with date picker" + }, + { + "if": "value=nat", + "then": "nat A whole, positive number or zero" + }, + { + "if": "value=int", + "then": "int A whole number, either positive, negative or zero" + }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, + { + "if": "value=direction", + "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." + }, + { + "if": "value=wikidata", + "then": "wikidata A wikidata identifier, e.g. Q42. " + }, + { + "if": "value=pnat", + "then": "pnat A strict positive number" + }, + { + "if": "value=float", + "then": "float A decimal number" + }, + { + "if": "value=pfloat", + "then": "pfloat A positive decimal number or zero" + }, + { + "if": "value=email", + "then": "email An email adress" + }, + { + "if": "value=url", + "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" + }, + { + "if": "value=phone", + "then": "phone A phone number" + }, + { + "if": "value=opening_hours", + "then": "opening_hours Has extra elements to easily input when a POI is opened. " + }, + { + "if": "value=color", + "then": "color Shows a color picker" + }, + { + "if": "value=icon", + "then": "icon Makes sure that a valid .svg-path is added" + }, + { + "if": "value=fediverse", + "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" + } + ] + }, + "type": "string", + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "placeholder" + ], + "required": false, + "hints": {}, + "description": "A (translated) text that is shown (as gray text) within the textfield" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "helperArgs" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "addExtraTags" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "inline" + ], + "required": false, + "hints": { + "question": "Show the freeform as box within the question?", + "iftrue": "show the freeform input field as a small field within the question", + "ifunset": "show the freeform input field full-width" + }, + "type": "boolean", + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "freeform", + "default" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "question" + ], + "required": false, + "hints": { + "question": "What question should be shown to the contributor?", + "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "questionHint" + ], + "required": false, + "hints": { + "question": "Should some extra information be shown to the contributor, alongside the question?", + "ifunset": "No extra hint is given" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "labels" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings" + ], + "required": false, + "hints": { + "question": "What are common options?" + }, + "type": "array", + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "if" + ], + "required": true, + "hints": { + "typehint": "tag", + "question": "What tags should be matched to show this option?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "then" + ], + "required": true, + "hints": { + "typehint": "rendered", + "question": "What corresponding text should be shown?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "Shown if the `if` is fulfilled" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "What icon should be shown next to this mapping?", + "ifunset": "Show no icon" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "Size of the image", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "Size of the image" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "hideInAnswer" + ], + "required": false, + "hints": { + "typehint": "tag", + "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", + "iftrue": "Never show this mapping as option to pick", + "ifunset": "Always show this mapping as option to pick" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": [ + "string", + "boolean" + ] + } + ], + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "hideInAnswer", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "hideInAnswer", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "ifnot" + ], + "required": false, + "hints": { + "question": "What tags should be applied if this mapping is _not_ chosen?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "ifnot", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "ifnot", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "addExtraTags" + ], + "required": false, + "hints": { + "typehint": "simple_tag[]", + "question": "What extra tags should be added to the object if this object is chosen?" + }, + "type": "array", + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "searchTerms" + ], + "required": false, + "hints": { + "group": "hidden", + "question": "If there are many options, what search terms match too?" + }, + "type": "object", + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "priorityIf" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "priorityIf", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "priorityIf", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "mappings", + "#" + ], + "required": false, + "hints": { + "group": "hidden" + }, + "type": "string", + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "multiAnswer" + ], + "required": false, + "hints": { + "question": "Should a contributor be allowed to select multiple mappings?", + "iftrue": "allow to select multiple mappigns", + "iffalse": "only allow to select a single mapping", + "ifunset": "only allow to select a single mapping" + }, + "type": "boolean", + "description": "If true, use checkboxes instead of radio buttons when asking the question" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform" + ], + "required": false, + "hints": {}, + "type": "object", + "description": "Allow freeform text input from the user" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "key" + ], + "required": true, + "hints": { + "ifunset": "do not offer a freeform textfield as answer option" + }, + "type": "string", + "description": "question What is the name of the attribute that should be written to?" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "type" + ], + "required": false, + "hints": { + "question": "What is the input type?", + "suggestions": [ + { + "if": "value=string", + "then": "string A simple piece of text" + }, + { + "if": "value=text", + "then": "text A longer piece of text. Uses an textArea instead of a textField" + }, + { + "if": "value=date", + "then": "date A date with date picker" + }, + { + "if": "value=nat", + "then": "nat A whole, positive number or zero" + }, + { + "if": "value=int", + "then": "int A whole number, either positive, negative or zero" + }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, + { + "if": "value=direction", + "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." + }, + { + "if": "value=wikidata", + "then": "wikidata A wikidata identifier, e.g. Q42. " + }, + { + "if": "value=pnat", + "then": "pnat A strict positive number" + }, + { + "if": "value=float", + "then": "float A decimal number" + }, + { + "if": "value=pfloat", + "then": "pfloat A positive decimal number or zero" + }, + { + "if": "value=email", + "then": "email An email adress" + }, + { + "if": "value=url", + "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" + }, + { + "if": "value=phone", + "then": "phone A phone number" + }, + { + "if": "value=opening_hours", + "then": "opening_hours Has extra elements to easily input when a POI is opened. " + }, + { + "if": "value=color", + "then": "color Shows a color picker" + }, + { + "if": "value=icon", + "then": "icon Makes sure that a valid .svg-path is added" + }, + { + "if": "value=fediverse", + "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" + } + ] + }, + "type": "string", + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "placeholder" + ], + "required": false, + "hints": {}, + "description": "A (translated) text that is shown (as gray text) within the textfield" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "helperArgs" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "addExtraTags" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "inline" + ], + "required": false, + "hints": { + "question": "Show the freeform as box within the question?", + "iftrue": "show the freeform input field as a small field within the question", + "ifunset": "show the freeform input field full-width" + }, + "type": "boolean", + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "freeform", + "default" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "question" + ], + "required": false, + "hints": { + "question": "What question should be shown to the contributor?", + "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "questionHint" + ], + "required": false, + "hints": { + "question": "Should some extra information be shown to the contributor, alongside the question?", + "ifunset": "No extra hint is given" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "labels" + ], + "required": false, + "hints": {}, + "type": "array", + "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "render" + ], + "required": false, + "hints": { + "typehint": "rendered", + "question": "What text should be rendered?" + }, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "object", + "properties": { + "special": { + "allOf": [ + { + "$ref": "#/definitions/Record>" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + ] + } + }, + "required": [ + "special" + ] + }, + { + "type": "string" + } + ], + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "icon" + ], + "required": false, + "hints": { + "typehint": "icon", + "question": "what icon should be shown next to the 'render' value?" + }, + "type": [ + { + "type": "object", + "properties": { + "path": { + "description": "The path to the icon\nType: icon", + "type": "string" + }, + "class": { + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + { + "type": "string" + } + ], + "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "icon", + "path" + ], + "required": true, + "hints": { + "typehint": "icon" + }, + "type": "string", + "description": "The path to the icon" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "icon", + "class" + ], + "required": false, + "hints": {}, + "type": "string", + "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "condition" + ], + "required": false, + "hints": { + "question": "When should this item be shown?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "condition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "condition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "metacondition" + ], + "required": false, + "hints": { + "question": "When should this item be shown (including special conditions)?" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "$ref": "#/definitions/{or:TagConfigJson[];}" + }, + { + "type": "string" + } + ], + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "metacondition", + "and" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "metacondition", + "or" + ], + "required": false, + "hints": { + "typehint": "tag" + }, + "type": [ + { + "$ref": "#/definitions/{and:TagConfigJson[];}" + }, + { + "type": "object", + "properties": { + "or": { + "type": "array", + "items": { + "$ref": "#/definitions/TagConfigJson" + } + } + }, + "required": [ + "or" + ] + }, + { + "type": "string" + } + ], + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "description" + ], + "required": false, + "hints": {}, + "type": [ + { + "$ref": "#/definitions/Record" + }, + { + "type": "string" + } + ], + "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" + }, + { + "path": [ + "layers", + "override", + "tagRenderings", + "override", + "classes" + ], + "required": false, + "hints": { + "question": "What css-classes should be applied to showing this attribute?" + }, + "type": "string", + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -91238,2240 +33156,7 @@ "required": false, "hints": {}, "type": "object", - "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." - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings" - ], - "required": false, - "hints": { - "question": "What are common options?" - }, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "What tags should be matched to show this option?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What corresponding text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "Shown if the `if` is fulfilled" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be shown next to this mapping?", - "ifunset": "Show no icon" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "Size of the image" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "hideInAnswer" - ], - "required": false, - "hints": { - "typehint": "tag", - "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", - "iftrue": "Never show this mapping as option to pick", - "ifunset": "Always show this mapping as option to pick" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "hideInAnswer", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "hideInAnswer", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "ifnot" - ], - "required": false, - "hints": { - "question": "What tags should be applied if this mapping is _not_ chosen?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "ifnot", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "ifnot", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "addExtraTags" - ], - "required": false, - "hints": { - "typehint": "simple_tag[]", - "question": "What extra tags should be added to the object if this object is chosen?" - }, - "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "searchTerms" - ], - "required": false, - "hints": { - "group": "hidden", - "question": "If there are many options, what search terms match too?" - }, - "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "priorityIf" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "priorityIf", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "priorityIf", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "mappings", - "#" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "multiAnswer" - ], - "required": false, - "hints": { - "question": "Should a contributor be allowed to select multiple mappings?", - "iftrue": "allow to select multiple mappigns", - "iffalse": "only allow to select a single mapping", - "ifunset": "only allow to select a single mapping" - }, - "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "key" - ], - "required": true, - "hints": { - "ifunset": "do not offer a freeform textfield as answer option" - }, - "type": "string", - "description": "question What is the name of the attribute that should be written to?" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "type" - ], - "required": false, - "hints": { - "question": "What is the input type?", - "suggestions": [ - { - "if": "value=string", - "then": "string A simple piece of text" - }, - { - "if": "value=text", - "then": "text A longer piece of text. Uses an textArea instead of a textField" - }, - { - "if": "value=date", - "then": "date A date with date picker" - }, - { - "if": "value=nat", - "then": "nat A whole, positive number or zero" - }, - { - "if": "value=int", - "then": "int A whole number, either positive, negative or zero" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" - }, - { - "if": "value=direction", - "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." - }, - { - "if": "value=wikidata", - "then": "wikidata A wikidata identifier, e.g. Q42. " - }, - { - "if": "value=pnat", - "then": "pnat A strict positive number" - }, - { - "if": "value=float", - "then": "float A decimal number" - }, - { - "if": "value=pfloat", - "then": "pfloat A positive decimal number or zero" - }, - { - "if": "value=email", - "then": "email An email adress" - }, - { - "if": "value=url", - "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" - }, - { - "if": "value=phone", - "then": "phone A phone number" - }, - { - "if": "value=opening_hours", - "then": "opening_hours Has extra elements to easily input when a POI is opened. " - }, - { - "if": "value=color", - "then": "color Shows a color picker" - }, - { - "if": "value=icon", - "then": "icon Makes sure that a valid .svg-path is added" - }, - { - "if": "value=fediverse", - "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" - } - ] - }, - "type": "string", - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "placeholder" - ], - "required": false, - "hints": {}, - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "helperArgs" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "addExtraTags" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "inline" - ], - "required": false, - "hints": { - "question": "Show the freeform as box within the question?", - "iftrue": "show the freeform input field as a small field within the question", - "ifunset": "show the freeform input field full-width" - }, - "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "freeform", - "default" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "question" - ], - "required": false, - "hints": { - "question": "What question should be shown to the contributor?", - "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "questionHint" - ], - "required": false, - "hints": { - "question": "Should some extra information be shown to the contributor, alongside the question?", - "ifunset": "No extra hint is given" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "labels" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings" - ], - "required": false, - "hints": { - "question": "What are common options?" - }, - "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "if" - ], - "required": true, - "hints": { - "typehint": "tag", - "question": "What tags should be matched to show this option?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "then" - ], - "required": true, - "hints": { - "typehint": "rendered", - "question": "What corresponding text should be shown?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "Shown if the `if` is fulfilled" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "What icon should be shown next to this mapping?", - "ifunset": "Show no icon" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "Size of the image", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "Size of the image" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "hideInAnswer" - ], - "required": false, - "hints": { - "typehint": "tag", - "question": "Under what circumstances should this mapping be hidden from the possibilities a contributor can pick?", - "iftrue": "Never show this mapping as option to pick", - "ifunset": "Always show this mapping as option to pick" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": [ - "string", - "boolean" - ] - } - ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "hideInAnswer", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "hideInAnswer", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "ifnot" - ], - "required": false, - "hints": { - "question": "What tags should be applied if this mapping is _not_ chosen?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "ifnot", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "ifnot", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "addExtraTags" - ], - "required": false, - "hints": { - "typehint": "simple_tag[]", - "question": "What extra tags should be added to the object if this object is chosen?" - }, - "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "searchTerms" - ], - "required": false, - "hints": { - "group": "hidden", - "question": "If there are many options, what search terms match too?" - }, - "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "priorityIf" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "If the searchable selector is picked, mappings with this item will have priority and show up even if the others are hidden\nUse this sparingly" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "priorityIf", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "priorityIf", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "mappings", - "#" - ], - "required": false, - "hints": { - "group": "hidden" - }, - "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "multiAnswer" - ], - "required": false, - "hints": { - "question": "Should a contributor be allowed to select multiple mappings?", - "iftrue": "allow to select multiple mappigns", - "iffalse": "only allow to select a single mapping", - "ifunset": "only allow to select a single mapping" - }, - "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform" - ], - "required": false, - "hints": {}, - "type": "object", - "description": "Allow freeform text input from the user" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "key" - ], - "required": true, - "hints": { - "ifunset": "do not offer a freeform textfield as answer option" - }, - "type": "string", - "description": "question What is the name of the attribute that should be written to?" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "type" - ], - "required": false, - "hints": { - "question": "What is the input type?", - "suggestions": [ - { - "if": "value=string", - "then": "string A simple piece of text" - }, - { - "if": "value=text", - "then": "text A longer piece of text. Uses an textArea instead of a textField" - }, - { - "if": "value=date", - "then": "date A date with date picker" - }, - { - "if": "value=nat", - "then": "nat A whole, positive number or zero" - }, - { - "if": "value=int", - "then": "int A whole number, either positive, negative or zero" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" - }, - { - "if": "value=direction", - "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." - }, - { - "if": "value=wikidata", - "then": "wikidata A wikidata identifier, e.g. Q42. " - }, - { - "if": "value=pnat", - "then": "pnat A strict positive number" - }, - { - "if": "value=float", - "then": "float A decimal number" - }, - { - "if": "value=pfloat", - "then": "pfloat A positive decimal number or zero" - }, - { - "if": "value=email", - "then": "email An email adress" - }, - { - "if": "value=url", - "then": "url The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed" - }, - { - "if": "value=phone", - "then": "phone A phone number" - }, - { - "if": "value=opening_hours", - "then": "opening_hours Has extra elements to easily input when a POI is opened. " - }, - { - "if": "value=color", - "then": "color Shows a color picker" - }, - { - "if": "value=icon", - "then": "icon Makes sure that a valid .svg-path is added" - }, - { - "if": "value=fediverse", - "then": "fediverse Validates fediverse addresses and normalizes them into `@username@server`-format" - } - ] - }, - "type": "string", - "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "placeholder" - ], - "required": false, - "hints": {}, - "description": "A (translated) text that is shown (as gray text) within the textfield" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "helperArgs" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "addExtraTags" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "inline" - ], - "required": false, - "hints": { - "question": "Show the freeform as box within the question?", - "iftrue": "show the freeform input field as a small field within the question", - "ifunset": "show the freeform input field full-width" - }, - "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "freeform", - "default" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "question" - ], - "required": false, - "hints": { - "question": "What question should be shown to the contributor?", - "ifunset": "This tagrendering will be shown if it is known, but cannot be edited by the contributor, effectively resutling in a read-only rendering" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "questionHint" - ], - "required": false, - "hints": { - "question": "Should some extra information be shown to the contributor, alongside the question?", - "ifunset": "No extra hint is given" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "This hint is shown in subtle text under the question.\nThis can give some extra information on what the answer should ook like" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "labels" - ], - "required": false, - "hints": {}, - "type": "array", - "description": "A list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "render" - ], - "required": false, - "hints": { - "typehint": "rendered", - "question": "What text should be rendered?" - }, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "object", - "properties": { - "special": { - "allOf": [ - { - "$ref": "#/definitions/Record>" - }, - { - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ] - } - ] - } - }, - "required": [ - "special" - ] - }, - { - "type": "string" - } - ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "icon" - ], - "required": false, - "hints": { - "typehint": "icon", - "question": "what icon should be shown next to the 'render' value?" - }, - "type": [ - { - "type": "object", - "properties": { - "path": { - "description": "The path to the icon\nType: icon", - "type": "string" - }, - "class": { - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)", - "type": "string" - } - }, - "required": [ - "path" - ] - }, - { - "type": "string" - } - ], - "description": "An icon shown next to the rendering; typically shown pretty small\nThis is only shown next to the \"render\" value" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "icon", - "path" - ], - "required": true, - "hints": { - "typehint": "icon" - }, - "type": "string", - "description": "The path to the icon" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "icon", - "class" - ], - "required": false, - "hints": {}, - "type": "string", - "description": "A hint to mapcomplete on how to render this icon within the mapping.\nThis is translated to 'mapping-icon-', so defining your own in combination with a custom CSS is possible (but discouraged)" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "condition" - ], - "required": false, - "hints": { - "question": "When should this item be shown?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "condition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "condition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "metacondition" - ], - "required": false, - "hints": { - "question": "When should this item be shown (including special conditions)?" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "$ref": "#/definitions/{or:TagConfigJson[];}" - }, - { - "type": "string" - } - ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "metacondition", - "and" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "metacondition", - "or" - ], - "required": false, - "hints": { - "typehint": "tag" - }, - "type": [ - { - "$ref": "#/definitions/{and:TagConfigJson[];}" - }, - { - "type": "object", - "properties": { - "or": { - "type": "array", - "items": { - "$ref": "#/definitions/TagConfigJson" - } - } - }, - "required": [ - "or" - ] - }, - { - "type": "string" - } - ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "description" - ], - "required": false, - "hints": {}, - "type": [ - { - "$ref": "#/definitions/Record" - }, - { - "type": "string" - } - ], - "description": "A human-readable text explaining what this tagRendering does.\nMostly used for the shared tagrenderings" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "override", - "classes" - ], - "required": false, - "hints": { - "question": "What css-classes should be applied to showing this attribute?" - }, - "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" - }, - { - "path": [ - "layers", - "override", - "tagRenderings" - ], - "required": false, - "hints": {}, - "type": "object", - "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]" - }, - { - "path": [ - "layers", - "override", - "tagRenderings", - "renderings" - ], - "required": false, - "hints": {}, - "type": "object", - "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." + "description": "Rewrites and multiplies the given renderings of type T.\nThis can be used for introducing many similar questions automatically,\nwhich also makes translations easier.\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)\nFor example:\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 # The first pair: key --> X, a|b|c --> 0\n \"X\": 0\n },\n {\n \"Y\": 1\n },\n {\n \"Z\": 2\n }\n]" }, { "path": [ @@ -93486,7 +33171,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -93524,7 +33209,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -93586,7 +33271,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -93650,7 +33335,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -93688,7 +33373,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -93726,7 +33411,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -93752,7 +33437,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -93790,7 +33475,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -93828,7 +33513,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -93845,7 +33530,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -93862,7 +33547,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -93926,7 +33611,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -93964,7 +33649,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -93980,7 +33665,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -93998,7 +33683,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -94176,7 +33861,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -94213,7 +33898,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -94298,7 +33983,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -94389,7 +34074,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -94426,7 +34111,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94463,7 +34148,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94488,7 +34173,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -94525,7 +34210,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94562,7 +34247,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94597,7 +34282,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -94613,7 +34298,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -94652,7 +34337,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -94716,7 +34401,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -94783,7 +34468,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -94822,7 +34507,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94861,7 +34546,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94888,7 +34573,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -94927,7 +34612,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94966,7 +34651,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -94984,7 +34669,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -95002,7 +34687,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -95068,7 +34753,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95107,7 +34792,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95124,7 +34809,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -95143,7 +34828,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -95328,7 +35013,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -95367,7 +35052,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -95455,7 +35140,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -95550,7 +35235,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -95588,7 +35273,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95626,7 +35311,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95652,7 +35337,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -95690,7 +35375,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95728,7 +35413,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95765,7 +35450,7 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" }, { "path": [ @@ -95803,7 +35488,7 @@ ] } ], - "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one\n" + "description": "All the extra questions for filtering.\nIf a string is given, mapComplete will search in 'filters.json' for the appropriate filter or will try to parse it as `layername.filterid` and us that one" }, { "path": [ @@ -95827,7 +35512,7 @@ "required": true, "hints": {}, "type": "array", - "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\n\nAn example which searches by name:\n\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```" + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.\nAn example which searches by name:\n```\n{\n \"id\": \"shop-name\",\n \"options\": [\n {\n \"fields\": [\n {\n \"name\": \"search\",\n \"type\": \"string\"\n }\n ],\n \"osmTags\": \"name~i~.*{search}.*\",\n \"question\": {\n \"en\": \"Only show shops with name {search}\",\n }\n }\n ]\n }\n ```" }, { "path": [ @@ -95852,7 +35537,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95889,7 +35574,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95926,7 +35611,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -95952,7 +35637,7 @@ "required": false, "hints": {}, "type": "string", - "description": "Used for comments or to disable a check\n\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer" + "description": "Used for comments or to disable a check\n\"ignore-possible-duplicate\": disables a check in `DetectDuplicateFilters` which complains that a filter can be replaced by a filter from the `filters`-library-layer" }, { "path": [ @@ -96040,7 +35725,7 @@ "type": "boolean" } ], - "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n### The delete dialog\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted fromOSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n##### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.\n" + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\nTo configure, the following values are possible:\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n### The delete dialog\n#### Hard deletion if enough experience\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\nIn all other cases, a 'soft deletion' is used.\n#### Soft deletion\nA 'soft deletion' is when the point isn't deleted fromOSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n##### No-delete options\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags." }, { "path": [ @@ -96055,7 +35740,7 @@ "question": "How many changesets must a contributor have before being allowed to delete a point?" }, "type": "number", - "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.\n" + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here." }, { "path": [ @@ -96067,7 +35752,7 @@ "required": false, "hints": {}, "type": "array", - "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from" + "description": "*\nBy default, three reasons to delete a point are shown:\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\nThese reasons can be stated here and will be shown in the list of options the user can choose from" }, { "path": [ @@ -96081,7 +35766,7 @@ "hints": { "question": "For what extra reason might this feature be removed in real-life?" }, - "description": "The text that will be shown to the user as option for why this point does not exist anymore.\nNote that the most common reasons (test point, does not exist anymore, cannot be found) are already offered by default\n" + "description": "The text that will be shown to the user as option for why this point does not exist anymore.\nNote that the most common reasons (test point, does not exist anymore, cannot be found) are already offered by default" }, { "path": [ @@ -96096,7 +35781,7 @@ "question": "What should be added to the changeset as delete reason?" }, "type": "string", - "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english\n" + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english" }, { "path": [ @@ -96108,7 +35793,7 @@ "required": false, "hints": {}, "type": "array", - "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!" + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!" }, { "path": [ @@ -96145,7 +35830,7 @@ "type": "string" } ], - "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore\n" + "description": "The tags that will be given to the object.\nThis must remove tags so that the 'source/osmTags' won't match anymore" }, { "path": [ @@ -96159,7 +35844,7 @@ "hints": { "question": "What text should be shown to the contributor for this reason?" }, - "description": "The human explanation for the options\n" + "description": "The human explanation for the options" }, { "path": [ @@ -96184,7 +35869,7 @@ "type": "string" } ], - "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```\n" + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```" }, { "path": [ @@ -96220,7 +35905,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -96256,7 +35941,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -96273,7 +35958,7 @@ "ifunset": "Show the default delete reasons (default behaviour)" }, "type": "boolean", - "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping\n" + "description": "Set this flag if the default delete reasons should be omitted from the dialog.\nThis requires at least one extraDeleteReason or nonDeleteMapping" }, { "path": [ @@ -96309,7 +35994,7 @@ "type": "boolean" } ], - "description": "Indicates if a point can be moved and why.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n" + "description": "Indicates if a point can be moved and why.\nA feature can be moved by MapComplete if:\n- It is a point\n- The point is _not_ part of a way or a a relation." }, { "path": [ @@ -96343,7 +36028,7 @@ "ifunset": "(default) This type of point can be moved due to a relocation (and will remove address information when this is done)" }, "type": "boolean", - "description": "\nThis will erase the attributes `addr:street`, `addr:housenumber`, `addr:city` and `addr:postcode`\n" + "description": "This will erase the attributes `addr:street`, `addr:housenumber`, `addr:city` and `addr:postcode`" }, { "path": [ @@ -96360,7 +36045,7 @@ "ifunset": "don't enable the split-roads component" }, "type": "boolean", - "description": "If set, a 'split this way' button is shown on objects rendered as LineStrings, e.g. highways.\n\nIf the way is part of a relation, MapComplete will attempt to update this relation as well" + "description": "If set, a 'split this way' button is shown on objects rendered as LineStrings, e.g. highways.\nIf the way is part of a relation, MapComplete will attempt to update this relation as well" }, { "path": [ @@ -96373,7 +36058,7 @@ "default": "ult: true," }, "type": "object", - "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given" + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n# Rendering\nTo render a value with long (human) denomination, use {canonical(key)}\n# Usage\nFirst of all, you define which keys have units applied, for example:\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given" }, { "path": [ @@ -96385,7 +36070,7 @@ "required": true, "hints": {}, "type": "array", - "description": "Every key from this list will be normalized.\n\nTo render the value properly (with a human readable denomination), use `{canonical()}`" + "description": "Every key from this list will be normalized.\nTo render the value properly (with a human readable denomination), use `{canonical()}`" }, { "path": [ @@ -96432,7 +36117,7 @@ "type": "boolean" } ], - "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\n\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\n\nIf none of the units indicate that they are the default, the first denomination will be used instead" + "description": "If this evaluates to true and the value to interpret has _no_ unit given, assumes that this unit is meant.\nAlternatively, a list of country codes can be given where this acts as the default interpretation\nE.g., a denomination using \"meter\" would probably set this flag to \"true\";\na denomination for \"mp/h\" will use the condition \"_country=gb\" to indicate that it is the default in the UK.\nIf none of the units indicate that they are the default, the first denomination will be used instead" }, { "path": [ @@ -96445,7 +36130,7 @@ "required": true, "hints": {}, "type": "string", - "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\n\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used" + "description": "The canonical value for this denomination which will be added to the value in OSM.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'.\nImportant: often, _no_ canonical values are expected, e.g. in the case of 'maxspeed' where 'km/h' is the default.\nIn this case, an empty string should be used" }, { "path": [ @@ -96458,7 +36143,7 @@ "required": false, "hints": {}, "type": "string", - "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\n\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here" + "description": "The canonical denomination in the case that the unit is precisely '1'.\nUsed for display purposes only.\nE.g.: for duration of something in minutes: `2 minutes` but `1 minute`; the `minute` goes here" }, { "path": [ @@ -96536,7 +36221,7 @@ "required": false, "hints": {}, "type": "string", - "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\n\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits" + "description": "In some cases, the default denomination is not the most user friendly to input.\nE.g., when measuring kerb heights, it is illogical to ask contributors to input an amount in meters.\nWhen a default input method should be used, this can be specified by setting the canonical denomination here, e.g.\n`defaultInput: \"cm\"`. This must be a denomination which appears in the applicableUnits" }, { "path": [ @@ -96568,7 +36253,7 @@ ] }, "type": "string", - "description": "If set, synchronizes whether or not this layer is enabled.\n" + "description": "If set, synchronizes whether or not this layer is enabled." }, { "path": [ @@ -96581,7 +36266,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments and/or to disable some checks\n\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering\n" + "description": "Used for comments and/or to disable some checks\nno-question-hint-check: disables a check in MiscTagRenderingChecks which complains about 'div', 'span' or 'class=subtle'-HTML elements in the tagRendering" }, { "path": [ @@ -96594,7 +36279,7 @@ "group": "hidden" }, "type": "boolean", - "description": "_Set automatically by MapComplete, please ignore_\n" + "description": "_Set automatically by MapComplete, please ignore_" }, { "path": [ @@ -96685,7 +36370,7 @@ "default": "{icon: \"./assets/svg/pop-out.svg\", href: 'https://mapcomplete.org/{theme}.html?lat={lat}&lon={lon}&z={zoom}, requirements: [\"iframe\",\"no-welcome-message]}," }, "type": "object", - "description": "Adds an additional button on the top-left of the application.\nThis can link to an arbitrary location.\n\nNote that {lat},{lon},{zoom}, {language} and {theme} will be replaced\n" + "description": "Adds an additional button on the top-left of the application.\nThis can link to an arbitrary location.\nNote that {lat},{lon},{zoom}, {language} and {theme} will be replaced" }, { "path": [ @@ -96793,7 +36478,7 @@ "required": false, "hints": {}, "type": "boolean", - "description": "If true, notes will be loaded and parsed. If a note is an import (as created by the import_helper.html-tool from mapcomplete),\nthese notes will be shown if a relevant layer is present.\n\nDefault is true for official layers and false for unofficial (sideloaded) layers" + "description": "If true, notes will be loaded and parsed. If a note is an import (as created by the import_helper.html-tool from mapcomplete),\nthese notes will be shown if a relevant layer is present.\nDefault is true for official layers and false for unofficial (sideloaded) layers" }, { "path": [ @@ -96830,6 +36515,6 @@ "required": false, "hints": {}, "type": "boolean", - "description": "Enables tracking of all nodes when data is loaded.\nThis is useful for the 'ImportWay' and 'ConflateWay'-buttons who need this database.\n\nNote: this flag will be automatically set." + "description": "Enables tracking of all nodes when data is loaded.\nThis is useful for the 'ImportWay' and 'ConflateWay'-buttons who need this database.\nNote: this flag will be automatically set." } ] \ No newline at end of file diff --git a/src/assets/schemas/questionabletagrenderingconfigmeta.json b/src/assets/schemas/questionabletagrenderingconfigmeta.json index 23ebeae39..503b39956 100644 --- a/src/assets/schemas/questionabletagrenderingconfigmeta.json +++ b/src/assets/schemas/questionabletagrenderingconfigmeta.json @@ -15,7 +15,7 @@ "question": "What are common options?" }, "type": "array", - "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes\n" + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes" }, { "path": [ @@ -49,7 +49,7 @@ "type": "string" } ], - "description": "\nIf in 'question'-mode and the contributor selects this option, these tags will be applied to the object" + "description": "If in 'question'-mode and the contributor selects this option, these tags will be applied to the object" }, { "path": [ @@ -103,7 +103,7 @@ "type": "string" } ], - "description": "\nThis icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)\n" + "description": "This icon will only be shown if the value is known, it is not displayed in the options (but might be in the future)" }, { "path": [ @@ -155,7 +155,7 @@ ] } ], - "description": "\nIn some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n\n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\nTo demonstrate an example making a default assumption:\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n ]\n}\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}" }, { "path": [ @@ -189,7 +189,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -223,7 +223,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -245,7 +245,7 @@ "type": "string" } ], - "description": "\nOnly applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`" }, { "path": [ @@ -279,7 +279,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -313,7 +313,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -326,7 +326,7 @@ "question": "What extra tags should be added to the object if this object is chosen?" }, "type": "array", - "description": "\nIf chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\n\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" + "description": "If chosen as answer, these tags will be applied onto the object, together with the tags from the `if`\nNot compatible with multiAnswer.\nThis can be used e.g. to erase other keys which indicate the 'not' value:\n```json\n{\n \"if\": \"crossing:marking=rainbow\",\n \"then\": \"This is a rainbow crossing\",\n \"addExtraTags\": [\"not:crossing:marking=\"]\n}\n```" }, { "path": [ @@ -339,7 +339,7 @@ "question": "If there are many options, what search terms match too?" }, "type": "object", - "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\n\nSearchterms (per language) allow to easily find an option if there are many options" + "description": "If there are many options, the mappings-radiobuttons will be replaced by an element with a searchfunction\nSearchterms (per language) allow to easily find an option if there are many options" }, { "path": [ @@ -395,7 +395,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -429,7 +429,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -441,7 +441,7 @@ "group": "hidden" }, "type": "string", - "description": "Used for comments or to disable a validation\n\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" + "description": "Used for comments or to disable a validation\nignore-image-in-then: normally, a `then`-clause is not allowed to have an `img`-html-element as icons are preferred. In some cases (most notably title-icons), this is allowed" }, { "path": [ @@ -455,7 +455,7 @@ "ifunset": "only allow to select a single mapping" }, "type": "boolean", - "description": "If true, use checkboxes instead of radio buttons when asking the question\n\n" + "description": "If true, use checkboxes instead of radio buttons when asking the question" }, { "path": [ @@ -605,7 +605,7 @@ "ifunset": "show the freeform input field full-width" }, "type": "boolean", - "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout." + "description": "Instead of showing a full-width text field, the text field will be shown within the rendering of the question.\nThis combines badly with special input elements, as it'll distort the layout." }, { "path": [ @@ -634,7 +634,7 @@ "type": "string" } ], - "description": "\nA question is presented ot the user if no mapping matches and the 'freeform' key is not set as well.\n" + "description": "A question is presented ot the user if no mapping matches and the 'freeform' key is not set as well." }, { "path": [ @@ -707,7 +707,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -782,7 +782,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -815,7 +815,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -848,7 +848,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -869,7 +869,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -902,7 +902,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -935,7 +935,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -962,6 +962,6 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" } ] \ No newline at end of file diff --git a/src/assets/schemas/tagrenderingconfigmeta.json b/src/assets/schemas/tagrenderingconfigmeta.json index 3041edb72..37378427a 100644 --- a/src/assets/schemas/tagrenderingconfigmeta.json +++ b/src/assets/schemas/tagrenderingconfigmeta.json @@ -49,7 +49,7 @@ "type": "string" } ], - "description": "\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 text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\n\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' />`" + "description": "This piece of text will be shown in the infobox.\nNote that \"&LBRACEkey&RBRACE\"-parts are substituted by the corresponding values of the element.\nThis text will be shown if:\n- there is no mapping which matches (or there are no matches)\n- no question, no mappings and no 'freeform' is set\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' />`" }, { "path": [ @@ -124,7 +124,7 @@ "type": "string" } ], - "description": "\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" + "description": "Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```" }, { "path": [ @@ -157,7 +157,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -190,7 +190,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -211,7 +211,7 @@ "type": "string" } ], - "description": "\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" + "description": "If set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_" }, { "path": [ @@ -244,7 +244,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -277,7 +277,7 @@ "type": "string" } ], - "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation\n" + "description": "The main representation of Tags.\nSee https://github.com/pietervdvn/MapComplete/blob/develop/Docs/Tags_format.md for more documentation" }, { "path": [ @@ -342,7 +342,7 @@ "type": "string" } ], - "description": "\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}'}" + "description": "If 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.\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}" }, { "path": [ @@ -362,7 +362,7 @@ "type": "string" } ], - "description": "\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" + "description": "If 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" }, { "path": [ @@ -447,6 +447,6 @@ "question": "What css-classes should be applied to showing this attribute?" }, "type": "string", - "description": "\nA list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\n\nValues are split on ` ` (space)" + "description": "A list of css-classes to apply to the entire tagRendering.\nThese classes are applied in 'answer'-mode, not in question mode\nThis is only for advanced users.\nValues are split on ` ` (space)" } ] \ No newline at end of file diff --git a/src/assets/svg/Add.svelte b/src/assets/svg/Add.svelte new file mode 100644 index 000000000..779eb755e --- /dev/null +++ b/src/assets/svg/Add.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/AddSmall.svelte b/src/assets/svg/AddSmall.svelte new file mode 100644 index 000000000..1008fce1a --- /dev/null +++ b/src/assets/svg/AddSmall.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Add_pin.svelte b/src/assets/svg/Add_pin.svelte new file mode 100644 index 000000000..719fb3295 --- /dev/null +++ b/src/assets/svg/Add_pin.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Back.svelte b/src/assets/svg/Back.svelte new file mode 100644 index 000000000..2624a3583 --- /dev/null +++ b/src/assets/svg/Back.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Blocked.svelte b/src/assets/svg/Blocked.svelte new file mode 100644 index 000000000..cea40778f --- /dev/null +++ b/src/assets/svg/Blocked.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Brick_wall_raw.svelte b/src/assets/svg/Brick_wall_raw.svelte new file mode 100644 index 000000000..01febb296 --- /dev/null +++ b/src/assets/svg/Brick_wall_raw.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Brick_wall_round.svelte b/src/assets/svg/Brick_wall_round.svelte new file mode 100644 index 000000000..359283093 --- /dev/null +++ b/src/assets/svg/Brick_wall_round.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Brick_wall_square.svelte b/src/assets/svg/Brick_wall_square.svelte new file mode 100644 index 000000000..06e842243 --- /dev/null +++ b/src/assets/svg/Brick_wall_square.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Bug.svelte b/src/assets/svg/Bug.svelte new file mode 100644 index 000000000..a35e139ac --- /dev/null +++ b/src/assets/svg/Bug.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Camera_plus.svelte b/src/assets/svg/Camera_plus.svelte new file mode 100644 index 000000000..071edb616 --- /dev/null +++ b/src/assets/svg/Camera_plus.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Checkmark.svelte b/src/assets/svg/Checkmark.svelte new file mode 100644 index 000000000..85bab4931 --- /dev/null +++ b/src/assets/svg/Checkmark.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Circle.svelte b/src/assets/svg/Circle.svelte new file mode 100644 index 000000000..30df6390c --- /dev/null +++ b/src/assets/svg/Circle.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Clock.svelte b/src/assets/svg/Clock.svelte new file mode 100644 index 000000000..5b27fbe16 --- /dev/null +++ b/src/assets/svg/Clock.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Close.svelte b/src/assets/svg/Close.svelte new file mode 100644 index 000000000..1a2d44822 --- /dev/null +++ b/src/assets/svg/Close.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Community.svelte b/src/assets/svg/Community.svelte new file mode 100644 index 000000000..362f84b92 --- /dev/null +++ b/src/assets/svg/Community.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Compass.svelte b/src/assets/svg/Compass.svelte new file mode 100644 index 000000000..c2b4be457 --- /dev/null +++ b/src/assets/svg/Compass.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Confirm.svelte b/src/assets/svg/Confirm.svelte new file mode 100644 index 000000000..af8ef46d8 --- /dev/null +++ b/src/assets/svg/Confirm.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Copyright.svelte b/src/assets/svg/Copyright.svelte new file mode 100644 index 000000000..2d4c7a58f --- /dev/null +++ b/src/assets/svg/Copyright.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Cross_bottom_right.svelte b/src/assets/svg/Cross_bottom_right.svelte new file mode 100644 index 000000000..56cd7c755 --- /dev/null +++ b/src/assets/svg/Cross_bottom_right.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Crosshair.svelte b/src/assets/svg/Crosshair.svelte new file mode 100644 index 000000000..f81eb4e10 --- /dev/null +++ b/src/assets/svg/Crosshair.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Crosshair_locked.svelte b/src/assets/svg/Crosshair_locked.svelte new file mode 100644 index 000000000..621106512 --- /dev/null +++ b/src/assets/svg/Crosshair_locked.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Delete_icon.svelte b/src/assets/svg/Delete_icon.svelte new file mode 100644 index 000000000..12a45f7ca --- /dev/null +++ b/src/assets/svg/Delete_icon.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Delete_not_allowed.svelte b/src/assets/svg/Delete_not_allowed.svelte new file mode 100644 index 000000000..66c5f5940 --- /dev/null +++ b/src/assets/svg/Delete_not_allowed.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Direction_gradient.svelte b/src/assets/svg/Direction_gradient.svelte new file mode 100644 index 000000000..c6be0d33d --- /dev/null +++ b/src/assets/svg/Direction_gradient.svelte @@ -0,0 +1,4 @@ + + Created by potrace 1.15, written by Peter Selinger 2001-2017 image/svg+xml \ No newline at end of file diff --git a/src/assets/svg/Direction_stroke.svelte b/src/assets/svg/Direction_stroke.svelte new file mode 100644 index 000000000..c9e8eb7e4 --- /dev/null +++ b/src/assets/svg/Direction_stroke.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Download.svelte b/src/assets/svg/Download.svelte new file mode 100644 index 000000000..dba3e8539 --- /dev/null +++ b/src/assets/svg/Download.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Duplicate.svelte b/src/assets/svg/Duplicate.svelte new file mode 100644 index 000000000..eed2aa506 --- /dev/null +++ b/src/assets/svg/Duplicate.svelte @@ -0,0 +1,4 @@ + + OpenStreetMap logo 2011 image/svg+xml OpenStreetMap logo 2011 Ken Vermette April 2011 OpenStreetMap.org Replacement logo for OpenStreetMap Foundation OSM openstreetmap logo http://wiki.openstreetmap.org/wiki/File:Public-images-osm_logo.svg \ No newline at end of file diff --git a/src/assets/svg/Elevator.svelte b/src/assets/svg/Elevator.svelte new file mode 100644 index 000000000..e8578d822 --- /dev/null +++ b/src/assets/svg/Elevator.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Elevator_wheelchair.svelte b/src/assets/svg/Elevator_wheelchair.svelte new file mode 100644 index 000000000..7c3cea14e --- /dev/null +++ b/src/assets/svg/Elevator_wheelchair.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Envelope.svelte b/src/assets/svg/Envelope.svelte new file mode 100644 index 000000000..2f18b12c3 --- /dev/null +++ b/src/assets/svg/Envelope.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Eye.svelte b/src/assets/svg/Eye.svelte new file mode 100644 index 000000000..48c47ff92 --- /dev/null +++ b/src/assets/svg/Eye.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Filter.svelte b/src/assets/svg/Filter.svelte new file mode 100644 index 000000000..f754ffa71 --- /dev/null +++ b/src/assets/svg/Filter.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Filter_disable.svelte b/src/assets/svg/Filter_disable.svelte new file mode 100644 index 000000000..e2674df60 --- /dev/null +++ b/src/assets/svg/Filter_disable.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Floppy.svelte b/src/assets/svg/Floppy.svelte new file mode 100644 index 000000000..d3339d749 --- /dev/null +++ b/src/assets/svg/Floppy.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gear.svelte b/src/assets/svg/Gear.svelte new file mode 100644 index 000000000..d2aa4c4ae --- /dev/null +++ b/src/assets/svg/Gear.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gender_bi.svelte b/src/assets/svg/Gender_bi.svelte new file mode 100644 index 000000000..d85bca52f --- /dev/null +++ b/src/assets/svg/Gender_bi.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gender_female.svelte b/src/assets/svg/Gender_female.svelte new file mode 100644 index 000000000..934c46d58 --- /dev/null +++ b/src/assets/svg/Gender_female.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gender_inter.svelte b/src/assets/svg/Gender_inter.svelte new file mode 100644 index 000000000..b4ba32269 --- /dev/null +++ b/src/assets/svg/Gender_inter.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gender_male.svelte b/src/assets/svg/Gender_male.svelte new file mode 100644 index 000000000..886f9bcd7 --- /dev/null +++ b/src/assets/svg/Gender_male.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gender_queer.svelte b/src/assets/svg/Gender_queer.svelte new file mode 100644 index 000000000..6e62144f4 --- /dev/null +++ b/src/assets/svg/Gender_queer.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gender_trans.svelte b/src/assets/svg/Gender_trans.svelte new file mode 100644 index 000000000..5daa545e6 --- /dev/null +++ b/src/assets/svg/Gender_trans.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Generic_map.svelte b/src/assets/svg/Generic_map.svelte new file mode 100644 index 000000000..57d67838a --- /dev/null +++ b/src/assets/svg/Generic_map.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Gps_arrow.svelte b/src/assets/svg/Gps_arrow.svelte new file mode 100644 index 000000000..6a318b8ce --- /dev/null +++ b/src/assets/svg/Gps_arrow.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Hand.svelte b/src/assets/svg/Hand.svelte new file mode 100644 index 000000000..9a88bf051 --- /dev/null +++ b/src/assets/svg/Hand.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Help.svelte b/src/assets/svg/Help.svelte new file mode 100644 index 000000000..56584c2b3 --- /dev/null +++ b/src/assets/svg/Help.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Home.svelte b/src/assets/svg/Home.svelte new file mode 100644 index 000000000..b38a54266 --- /dev/null +++ b/src/assets/svg/Home.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Invalid.svelte b/src/assets/svg/Invalid.svelte new file mode 100644 index 000000000..24dc360eb --- /dev/null +++ b/src/assets/svg/Invalid.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Josm_logo.svelte b/src/assets/svg/Josm_logo.svelte new file mode 100644 index 000000000..848fbea1b --- /dev/null +++ b/src/assets/svg/Josm_logo.svelte @@ -0,0 +1,4 @@ + + JOSM Logotype 2019 image/svg+xml JOSM Logotype 2019 2019-08-05 Diamond00744 Public Domain \ No newline at end of file diff --git a/src/assets/svg/Layers.svelte b/src/assets/svg/Layers.svelte new file mode 100644 index 000000000..770490dde --- /dev/null +++ b/src/assets/svg/Layers.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Length_crosshair.svelte b/src/assets/svg/Length_crosshair.svelte new file mode 100644 index 000000000..c5f385c89 --- /dev/null +++ b/src/assets/svg/Length_crosshair.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Liberapay.svelte b/src/assets/svg/Liberapay.svelte new file mode 100644 index 000000000..0543d84f3 --- /dev/null +++ b/src/assets/svg/Liberapay.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Loading.svelte b/src/assets/svg/Loading.svelte new file mode 100644 index 000000000..ea17db81b --- /dev/null +++ b/src/assets/svg/Loading.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Location.svelte b/src/assets/svg/Location.svelte new file mode 100644 index 000000000..0439612df --- /dev/null +++ b/src/assets/svg/Location.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Location_empty.svelte b/src/assets/svg/Location_empty.svelte new file mode 100644 index 000000000..4f59a2583 --- /dev/null +++ b/src/assets/svg/Location_empty.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Location_locked.svelte b/src/assets/svg/Location_locked.svelte new file mode 100644 index 000000000..df821e4ce --- /dev/null +++ b/src/assets/svg/Location_locked.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Location_refused.svelte b/src/assets/svg/Location_refused.svelte new file mode 100644 index 000000000..0396f3b97 --- /dev/null +++ b/src/assets/svg/Location_refused.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Location_unlocked.svelte b/src/assets/svg/Location_unlocked.svelte new file mode 100644 index 000000000..1ac4c9f0b --- /dev/null +++ b/src/assets/svg/Location_unlocked.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Login.svelte b/src/assets/svg/Login.svelte new file mode 100644 index 000000000..0565fa4d4 --- /dev/null +++ b/src/assets/svg/Login.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Logo.svelte b/src/assets/svg/Logo.svelte new file mode 100644 index 000000000..7d04561d0 --- /dev/null +++ b/src/assets/svg/Logo.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Logout.svelte b/src/assets/svg/Logout.svelte new file mode 100644 index 000000000..699dca95c --- /dev/null +++ b/src/assets/svg/Logout.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Mangrove_logo.svelte b/src/assets/svg/Mangrove_logo.svelte new file mode 100644 index 000000000..943d333d0 --- /dev/null +++ b/src/assets/svg/Mangrove_logo.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Mapcomplete_logo.svelte b/src/assets/svg/Mapcomplete_logo.svelte new file mode 100644 index 000000000..91becffbd --- /dev/null +++ b/src/assets/svg/Mapcomplete_logo.svelte @@ -0,0 +1,4 @@ + + OpenStreetMap logo 2011 image/svg+xml OpenStreetMap logo 2011 Ken Vermette April 2011 OpenStreetMap.org Replacement logo for OpenStreetMap Foundation OSM openstreetmap logo http://wiki.openstreetmap.org/wiki/File:Public-images-osm_logo.svg \ No newline at end of file diff --git a/src/assets/svg/Mapillary.svelte b/src/assets/svg/Mapillary.svelte new file mode 100644 index 000000000..c5ff0407d --- /dev/null +++ b/src/assets/svg/Mapillary.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Mapillary_black.svelte b/src/assets/svg/Mapillary_black.svelte new file mode 100644 index 000000000..72f8e1502 --- /dev/null +++ b/src/assets/svg/Mapillary_black.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Mastodon.svelte b/src/assets/svg/Mastodon.svelte new file mode 100644 index 000000000..b5c2de6ed --- /dev/null +++ b/src/assets/svg/Mastodon.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Min.svelte b/src/assets/svg/Min.svelte new file mode 100644 index 000000000..883320e56 --- /dev/null +++ b/src/assets/svg/Min.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Move.svelte b/src/assets/svg/Move.svelte new file mode 100644 index 000000000..16ed7d69d --- /dev/null +++ b/src/assets/svg/Move.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Move_arrows.svelte b/src/assets/svg/Move_arrows.svelte new file mode 100644 index 000000000..56da95969 --- /dev/null +++ b/src/assets/svg/Move_arrows.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Move_confirm.svelte b/src/assets/svg/Move_confirm.svelte new file mode 100644 index 000000000..2da623ec6 --- /dev/null +++ b/src/assets/svg/Move_confirm.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Move_not_allowed.svelte b/src/assets/svg/Move_not_allowed.svelte new file mode 100644 index 000000000..477ff0e27 --- /dev/null +++ b/src/assets/svg/Move_not_allowed.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/No_checkmark.svelte b/src/assets/svg/No_checkmark.svelte new file mode 100644 index 000000000..0008f84d2 --- /dev/null +++ b/src/assets/svg/No_checkmark.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/None.svelte b/src/assets/svg/None.svelte new file mode 100644 index 000000000..5efacd56c --- /dev/null +++ b/src/assets/svg/None.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Not_found.svelte b/src/assets/svg/Not_found.svelte new file mode 100644 index 000000000..d85c67f6f --- /dev/null +++ b/src/assets/svg/Not_found.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Note.svelte b/src/assets/svg/Note.svelte new file mode 100644 index 000000000..e4109a844 --- /dev/null +++ b/src/assets/svg/Note.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Osm_logo.svelte b/src/assets/svg/Osm_logo.svelte new file mode 100644 index 000000000..1a18a5e8e --- /dev/null +++ b/src/assets/svg/Osm_logo.svelte @@ -0,0 +1,4 @@ + + OpenStreetMap logo 2011 image/svg+xml OpenStreetMap logo 2011 Ken Vermette April 2011 OpenStreetMap.org Replacement logo for OpenStreetMap Foundation OSM openstreetmap logo http://wiki.openstreetmap.org/wiki/File:Public-images-osm_logo.svg 01011001 00110101 10010011 01011001 00110101 10010011 \ No newline at end of file diff --git a/src/assets/svg/Osm_logo_us.svelte b/src/assets/svg/Osm_logo_us.svelte new file mode 100644 index 000000000..c33b1732d --- /dev/null +++ b/src/assets/svg/Osm_logo_us.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Party.svelte b/src/assets/svg/Party.svelte new file mode 100644 index 000000000..11fdef7e5 --- /dev/null +++ b/src/assets/svg/Party.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Pencil.svelte b/src/assets/svg/Pencil.svelte new file mode 100644 index 000000000..216448884 --- /dev/null +++ b/src/assets/svg/Pencil.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Person.svelte b/src/assets/svg/Person.svelte new file mode 100644 index 000000000..2acafa3f8 --- /dev/null +++ b/src/assets/svg/Person.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Pin.svelte b/src/assets/svg/Pin.svelte new file mode 100644 index 000000000..d3bb2bb83 --- /dev/null +++ b/src/assets/svg/Pin.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Plantnet_logo.svelte b/src/assets/svg/Plantnet_logo.svelte new file mode 100644 index 000000000..e6d2fdbfe --- /dev/null +++ b/src/assets/svg/Plantnet_logo.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Plus.svelte b/src/assets/svg/Plus.svelte new file mode 100644 index 000000000..4f5058590 --- /dev/null +++ b/src/assets/svg/Plus.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Pop_out.svelte b/src/assets/svg/Pop_out.svelte new file mode 100644 index 000000000..05d006eff --- /dev/null +++ b/src/assets/svg/Pop_out.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Reload.svelte b/src/assets/svg/Reload.svelte new file mode 100644 index 000000000..b30882fd8 --- /dev/null +++ b/src/assets/svg/Reload.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Relocation.svelte b/src/assets/svg/Relocation.svelte new file mode 100644 index 000000000..eb13ee6cd --- /dev/null +++ b/src/assets/svg/Relocation.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Resolved.svelte b/src/assets/svg/Resolved.svelte new file mode 100644 index 000000000..6d7e1e5e6 --- /dev/null +++ b/src/assets/svg/Resolved.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Ring.svelte b/src/assets/svg/Ring.svelte new file mode 100644 index 000000000..6489b8773 --- /dev/null +++ b/src/assets/svg/Ring.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Robot.svelte b/src/assets/svg/Robot.svelte new file mode 100644 index 000000000..b9384cd3a --- /dev/null +++ b/src/assets/svg/Robot.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Satellite.svelte b/src/assets/svg/Satellite.svelte new file mode 100644 index 000000000..d8fd6bca9 --- /dev/null +++ b/src/assets/svg/Satellite.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Scissors.svelte b/src/assets/svg/Scissors.svelte new file mode 100644 index 000000000..ad54ea87c --- /dev/null +++ b/src/assets/svg/Scissors.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Search.svelte b/src/assets/svg/Search.svelte new file mode 100644 index 000000000..2c083c8f0 --- /dev/null +++ b/src/assets/svg/Search.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Search_disable.svelte b/src/assets/svg/Search_disable.svelte new file mode 100644 index 000000000..0ed5ad7a2 --- /dev/null +++ b/src/assets/svg/Search_disable.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Share.svelte b/src/assets/svg/Share.svelte new file mode 100644 index 000000000..50597b56f --- /dev/null +++ b/src/assets/svg/Share.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/SocialImageForeground.svelte b/src/assets/svg/SocialImageForeground.svelte new file mode 100644 index 000000000..98a239a0f --- /dev/null +++ b/src/assets/svg/SocialImageForeground.svelte @@ -0,0 +1,4 @@ + + image/svg+xml \ No newline at end of file diff --git a/src/assets/svg/Speech_bubble.svelte b/src/assets/svg/Speech_bubble.svelte new file mode 100644 index 000000000..cc20e6c1a --- /dev/null +++ b/src/assets/svg/Speech_bubble.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Speech_bubble_black_outline.svelte b/src/assets/svg/Speech_bubble_black_outline.svelte new file mode 100644 index 000000000..af58ee902 --- /dev/null +++ b/src/assets/svg/Speech_bubble_black_outline.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Square.svelte b/src/assets/svg/Square.svelte new file mode 100644 index 000000000..ce8e3bd9f --- /dev/null +++ b/src/assets/svg/Square.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Star.svelte b/src/assets/svg/Star.svelte new file mode 100644 index 000000000..2f1457b9b --- /dev/null +++ b/src/assets/svg/Star.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Star_half.svelte b/src/assets/svg/Star_half.svelte new file mode 100644 index 000000000..3b9e20dec --- /dev/null +++ b/src/assets/svg/Star_half.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Star_outline.svelte b/src/assets/svg/Star_outline.svelte new file mode 100644 index 000000000..b27fa13f9 --- /dev/null +++ b/src/assets/svg/Star_outline.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Star_outline_half.svelte b/src/assets/svg/Star_outline_half.svelte new file mode 100644 index 000000000..1c209b5e5 --- /dev/null +++ b/src/assets/svg/Star_outline_half.svelte @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/Statistics.svelte b/src/assets/svg/Statistics.svelte new file mode 100644 index 000000000..acb570043 --- /dev/null +++ b/src/assets/svg/Statistics.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Teardrop.svelte b/src/assets/svg/Teardrop.svelte new file mode 100644 index 000000000..151ab58e3 --- /dev/null +++ b/src/assets/svg/Teardrop.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Teardrop_with_hole_green.svelte b/src/assets/svg/Teardrop_with_hole_green.svelte new file mode 100644 index 000000000..157e6a1b5 --- /dev/null +++ b/src/assets/svg/Teardrop_with_hole_green.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Translate.svelte b/src/assets/svg/Translate.svelte new file mode 100644 index 000000000..1f9df47dd --- /dev/null +++ b/src/assets/svg/Translate.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Triangle.svelte b/src/assets/svg/Triangle.svelte new file mode 100644 index 000000000..07d8290e0 --- /dev/null +++ b/src/assets/svg/Triangle.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Up.svelte b/src/assets/svg/Up.svelte new file mode 100644 index 000000000..2575d1297 --- /dev/null +++ b/src/assets/svg/Up.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Upload.svelte b/src/assets/svg/Upload.svelte new file mode 100644 index 000000000..6bcb1e94c --- /dev/null +++ b/src/assets/svg/Upload.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Wikidata.svelte b/src/assets/svg/Wikidata.svelte new file mode 100644 index 000000000..0e4ba1ccc --- /dev/null +++ b/src/assets/svg/Wikidata.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Wikimedia_commons_white.svelte b/src/assets/svg/Wikimedia_commons_white.svelte new file mode 100644 index 000000000..5567ca586 --- /dev/null +++ b/src/assets/svg/Wikimedia_commons_white.svelte @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/assets/svg/Wikipedia.svelte b/src/assets/svg/Wikipedia.svelte new file mode 100644 index 000000000..4237cc15a --- /dev/null +++ b/src/assets/svg/Wikipedia.svelte @@ -0,0 +1,4 @@ + + Wikipedia logo version 2 \ No newline at end of file diff --git a/src/test.ts b/src/test.ts index 1c317cff0..2f3513167 100644 --- a/src/test.ts +++ b/src/test.ts @@ -1,4 +1,8 @@ import { Utils } from "./Utils" +import SvelteUIElement from "./UI/Base/SvelteUIElement" +import PointRenderingConfig from "./Models/ThemeConfig/PointRenderingConfig" +import { UIEventSource } from "./Logic/UIEventSource" +import Marker from "./UI/Map/Marker.svelte" class Test { public async test() { @@ -13,4 +17,30 @@ class Test { } } -new Test().test() +const tags = new UIEventSource({ + id: "node/13", + amenity: "public_bookcase", +}) + +const config = new PointRenderingConfig( + { + location: ["point"], + iconSize: "20,20", + marker: [ + { + icon: "circle", + color: "orange", + }, + { + icon: "./assets/layers/atm.atm.svg", + }, + ], + }, + "test" +) + +new SvelteUIElement(Marker, { + config, + tags, +}).AttachTo("maindiv") +// new Test().test()