From b9b504aebc25dd9e20e6a70bc0b92a462dc91077 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Mon, 21 Jun 2021 03:37:00 +0200 Subject: [PATCH] Better table export as MD, regenerate of the documentation --- Docs/SpecialRenderings.md | 100 +++++++- Docs/TagInfo/mapcomplete_climbing.json | 303 ++++++++++++++++++++++++- UI/Base/Table.ts | 6 +- 3 files changed, 403 insertions(+), 6 deletions(-) diff --git a/Docs/SpecialRenderings.md b/Docs/SpecialRenderings.md index 4f301afcd4..2b60a8112b 100644 --- a/Docs/SpecialRenderings.md +++ b/Docs/SpecialRenderings.md @@ -1 +1,99 @@ -

Special tag renderings

In a tagrendering, some special values are substituted by an advanced UI-element. This allows advanced features and visualizations to be reused by custom themes or even to query third-party API's. General usage is {func_name()} or {func_name(arg, someotherarg)}. Note that you do not need to use quotes around your arguments, the comma is enough to seperate them. This also implies you cannot use a comma in your args

all_tags

Prints all key-value pairs of the object - used for debugging
Example usage: {all_tags()}

image_carousel

Creates an image carousel for the given sources. An attempt will be made to guess what source is used. Supported: Wikidata identifiers, Wikipedia pages, Wikimedia categories, IMGUR (with attribution, direct links)
  1. image key/prefix: The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc... Default: image
  2. smart search: Also include images given via 'Wikidata', 'wikimedia_commons' and 'mapillary Default: true
Example usage: {image_carousel(image,true)}

image_upload

Creates a button where a user can upload an image to IMGUR
  1. image-key: Image tag to add the URL to (or image-tag:0, image-tag:1 when multiple images are added) Default: image
Example usage: {image_upload(image)}

reviews

Adds an overview of the mangrove-reviews of this object. Mangrove.Reviews needs - in order to identify the reviewed object - a coordinate and a name. By default, the name of the object is given, but this can be overwritten
  1. subjectKey: The key to use to determine the subject. If specified, the subject will be tags[subjectKey] Default: name
  2. fallback: The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value
Example usage: {reviews()} for a vanilla review, {reviews(name, play_forest)} to review a play forest. If a name is known, the name will be used as identifier, otherwise 'play_forest' is used

opening_hours_table

Creates an opening-hours table. Usage: {opening_hours_table(opening_hours)} to create a table of the tag 'opening_hours'.
  1. key: The tagkey from which the table is constructed. Default: opening_hours
Example usage: {opening_hours_table(opening_hours)}

live

Downloads a JSON from the given URL, e.g. '{live(example.org/data.json, shorthand:x.y.z, other:a.b.c, shorthand)}' will download the given file, will create an object {shorthand: json[x][y][z], other: json[a][b][c] out of it and will return 'other' or 'json[a][b][c]. This is made to use in combination with tags, e.g. {live({url}, {url:format}, needed_value)}
  1. Url: The URL to load
  2. Shorthands: A list of shorthands, of the format 'shorthandname:path.path.path'. Seperated by ;
  3. path: The path (or shorthand) that should be returned
Example usage: {live({url},{url:format},hour)} {live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)}

share_link

Creates a link that (attempts to) open the native 'share'-screen
  1. url: The url to share (default: current URL)
Example usage: {share_link()} to share the current page, {share_link()} to share the given url Generated from UI/SpecialVisualisations.ts \ No newline at end of file + +### Special tag renderings + + In a tagrendering, some special values are substituted by an advanced UI-element. This allows advanced features and visualizations to be reused by custom themes or even to query third-party API's. General usage is {func_name()} or {func_name(arg, someotherarg)}. Note that you do not need to use quotes around your arguments, the comma is enough to seperate them. This also implies you cannot use a comma in your args +### all_tags + + Prints all key-value pairs of the object - used for debugging + +name | default | description +------ | --------- | ------------- + + +#### Example usage + + {all_tags()} +### image_carousel + + Creates an image carousel for the given sources. An attempt will be made to guess what source is used. Supported: Wikidata identifiers, Wikipedia pages, Wikimedia categories, IMGUR (with attribution, direct links) + +name | default | description +------ | --------- | ------------- +image key/prefix | image | The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc... +smart search | true | Also include images given via 'Wikidata', 'wikimedia_commons' and 'mapillary + +#### Example usage + + {image_carousel(image,true)} +### image_upload + + Creates a button where a user can upload an image to IMGUR + +name | default | description +------ | --------- | ------------- +image-key | image | Image tag to add the URL to (or image-tag:0, image-tag:1 when multiple images are added) + +#### Example usage + + {image_upload(image)} +### reviews + + Adds an overview of the mangrove-reviews of this object. Mangrove.Reviews needs - in order to identify the reviewed object - a coordinate and a name. By default, the name of the object is given, but this can be overwritten + +name | default | description +------ | --------- | ------------- +subjectKey | name | The key to use to determine the subject. If specified, the subject will be tags[subjectKey] +fallback | undefined | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value + +#### Example usage + + {reviews()} for a vanilla review, {reviews(name, play_forest)} to review a play forest. If a name is known, the name will be used as identifier, otherwise 'play_forest' is used +### opening_hours_table + + Creates an opening-hours table. Usage: {opening_hours_table(opening_hours)} to create a table of the tag 'opening_hours'. + +name | default | description +------ | --------- | ------------- +key | opening_hours | The tagkey from which the table is constructed. + +#### Example usage + + {opening_hours_table(opening_hours)} +### live + + Downloads a JSON from the given URL, e.g. '{live(example.org/data.json, shorthand:x.y.z, other:a.b.c, shorthand)}' will download the given file, will create an object {shorthand: json[x][y][z], other: json[a][b][c] out of it and will return 'other' or 'json[a][b][c]. This is made to use in combination with tags, e.g. {live({url}, {url:format}, needed_value)} + +name | default | description +------ | --------- | ------------- +Url | undefined | The URL to load +Shorthands | undefined | A list of shorthands, of the format 'shorthandname:path.path.path'. Seperated by ; +path | undefined | The path (or shorthand) that should be returned + +#### Example usage + + {live({url},{url:format},hour)} {live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)} +### histogram + + Create a histogram for a list of given values, read from the properties. + +name | default | description +------ | --------- | ------------- +key | undefined | The key to be read and to generate a histogram from +title | | The text to put above the given values column +countHeader | | The text to put above the counts +colors | undefined | (Matches all resting arguments - optional) Matches a regex onto a color value, e.g. `3[a-zA-Z+-]*:#33cc33` + +#### Example usage + + `{histogram('some_key')}` with properties being `{some_key: ['a','b','a','c']} to create a histogram +### share_link + + Creates a link that (attempts to) open the native 'share'-screen + +name | default | description +------ | --------- | ------------- +url | undefined | The url to share (default: current URL) + +#### Example usage + + {share_link()} to share the current page, {share_link()} to share the given url Generated from UI/SpecialVisualisations.ts \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_climbing.json b/Docs/TagInfo/mapcomplete_climbing.json index daaa3ff0b2..00febbc358 100644 --- a/Docs/TagInfo/mapcomplete_climbing.json +++ b/Docs/TagInfo/mapcomplete_climbing.json @@ -52,6 +52,60 @@ "key": "url", "description": "Layer 'Climbing club' shows and asks freeform values for key 'url' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing club' shows _embedding_feature:access=yes with a fixed text, namely 'The containing feature states that this is publicly accessible
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing club' shows _embedding_feature:access=permit with a fixed text, namely 'The containing feature states that a permit is needed to access
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing club' shows _embedding_feature:access=customers with a fixed text, namely 'The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing club' shows _embedding_feature:access=members with a fixed text, namely 'The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing club' shows _embedding_feature:access=no with a fixed text, namely 'Not accessible as stated by the containing feature' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access", + "description": "Layer 'Climbing club' shows access=yes with a fixed text, namely 'Publicly accessible to anyone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Climbing club' shows access=permit with a fixed text, namely 'You need a permit to access here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "access", + "description": "Layer 'Climbing club' shows access=customers with a fixed text, namely 'Only custumers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "access", + "description": "Layer 'Climbing club' shows access=members with a fixed text, namely 'Only club members' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "access", + "description": "Layer 'Climbing club' shows access=no with a fixed text, namely 'Not accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access:description", + "description": "Layer 'Climbing club' shows values with key 'access:description' (in the MapComplete.osm.be theme 'Open Climbing Map')" + }, { "key": "climbing:length", "description": "Layer 'Climbing club' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" @@ -169,6 +223,60 @@ "key": "url", "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'url' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing gyms' shows _embedding_feature:access=yes with a fixed text, namely 'The containing feature states that this is publicly accessible
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing gyms' shows _embedding_feature:access=permit with a fixed text, namely 'The containing feature states that a permit is needed to access
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing gyms' shows _embedding_feature:access=customers with a fixed text, namely 'The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing gyms' shows _embedding_feature:access=members with a fixed text, namely 'The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing gyms' shows _embedding_feature:access=no with a fixed text, namely 'Not accessible as stated by the containing feature' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access", + "description": "Layer 'Climbing gyms' shows access=yes with a fixed text, namely 'Publicly accessible to anyone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Climbing gyms' shows access=permit with a fixed text, namely 'You need a permit to access here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "access", + "description": "Layer 'Climbing gyms' shows access=customers with a fixed text, namely 'Only custumers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "access", + "description": "Layer 'Climbing gyms' shows access=members with a fixed text, namely 'Only club members' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "access", + "description": "Layer 'Climbing gyms' shows access=no with a fixed text, namely 'Not accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access:description", + "description": "Layer 'Climbing gyms' shows values with key 'access:description' (in the MapComplete.osm.be theme 'Open Climbing Map')" + }, { "key": "climbing:length", "description": "Layer 'Climbing gyms' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" @@ -301,6 +409,60 @@ "key": "url", "description": "Layer 'Climbing routes' shows and asks freeform values for key 'url' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing routes' shows _embedding_feature:access=yes with a fixed text, namely 'The containing feature states that this is publicly accessible
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing routes' shows _embedding_feature:access=permit with a fixed text, namely 'The containing feature states that a permit is needed to access
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing routes' shows _embedding_feature:access=customers with a fixed text, namely 'The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing routes' shows _embedding_feature:access=members with a fixed text, namely 'The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing routes' shows _embedding_feature:access=no with a fixed text, namely 'Not accessible as stated by the containing feature' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access", + "description": "Layer 'Climbing routes' shows access=yes with a fixed text, namely 'Publicly accessible to anyone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Climbing routes' shows access=permit with a fixed text, namely 'You need a permit to access here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "access", + "description": "Layer 'Climbing routes' shows access=customers with a fixed text, namely 'Only custumers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "access", + "description": "Layer 'Climbing routes' shows access=members with a fixed text, namely 'Only club members' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "access", + "description": "Layer 'Climbing routes' shows access=no with a fixed text, namely 'Not accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access:description", + "description": "Layer 'Climbing routes' shows values with key 'access:description' (in the MapComplete.osm.be theme 'Open Climbing Map')" + }, { "key": "climbing:length", "description": "Layer 'Climbing routes' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" @@ -404,11 +566,15 @@ }, { "key": "climbing:length", - "description": "Layer 'Climbing routes' shows values with key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" + "description": "Layer 'Climbing routes' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, { "key": "climbing:grade:french", - "description": "Layer 'Climbing routes' shows values with key 'climbing:grade:french' (in the MapComplete.osm.be theme 'Open Climbing Map')" + "description": "Layer 'Climbing routes' shows and asks freeform values for key 'climbing:grade:french' (in the MapComplete.osm.be theme 'Open Climbing Map')" + }, + { + "key": "description", + "description": "Layer 'Climbing routes' shows and asks freeform values for key 'description' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, { "key": "sport", @@ -435,6 +601,60 @@ "key": "url", "description": "Layer 'Climbing opportunities' shows and asks freeform values for key 'url' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities' shows _embedding_feature:access=yes with a fixed text, namely 'The containing feature states that this is publicly accessible
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities' shows _embedding_feature:access=permit with a fixed text, namely 'The containing feature states that a permit is needed to access
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities' shows _embedding_feature:access=customers with a fixed text, namely 'The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities' shows _embedding_feature:access=members with a fixed text, namely 'The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities' shows _embedding_feature:access=no with a fixed text, namely 'Not accessible as stated by the containing feature' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities' shows access=yes with a fixed text, namely 'Publicly accessible to anyone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities' shows access=permit with a fixed text, namely 'You need a permit to access here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities' shows access=customers with a fixed text, namely 'Only custumers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities' shows access=members with a fixed text, namely 'Only club members' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities' shows access=no with a fixed text, namely 'Not accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access:description", + "description": "Layer 'Climbing opportunities' shows values with key 'access:description' (in the MapComplete.osm.be theme 'Open Climbing Map')" + }, { "key": "climbing:length", "description": "Layer 'Climbing opportunities' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" @@ -536,6 +756,21 @@ "description": "Layer 'Climbing opportunities' shows noname=yes&name= with a fixed text, namely 'This climbing opportunity doesn't have a name' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map') Picking this answer will delete the key name.", "value": "" }, + { + "key": "climbing", + "description": "Layer 'Climbing opportunities' shows climbing=boulder with a fixed text, namely 'A climbing boulder - a single rock or cliff with one or a few climbing routes which can be climbed safely without rope' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "boulder" + }, + { + "key": "climbing", + "description": "Layer 'Climbing opportunities' shows climbing=crag with a fixed text, namely 'A climbing crag - a single rock or cliff with at least a few climbing routes' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "crag" + }, + { + "key": "climbing", + "description": "Layer 'Climbing opportunities' shows climbing=area with a fixed text, namely 'A climbing area with one or more climbing crags and/or boulders' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "area" + }, { "key": "leisure", "description": "The MapComplete theme Open Climbing Map has a layer Climbing opportunities? showing features with this tag", @@ -566,15 +801,79 @@ "description": "The MapComplete theme Open Climbing Map has a layer Climbing opportunities? showing features with this tag", "value": "stone" }, + { + "key": "climbing", + "description": "The MapComplete theme Open Climbing Map has a layer Climbing opportunities? showing features with this tag", + "value": "" + }, { "key": "sport", "description": "Layer 'Climbing opportunities?' shows sport=climbing with a fixed text, namely 'Climbing is possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", "value": "climbing" }, + { + "key": "climbing", + "description": "Layer 'Climbing opportunities?' shows climbing=no with a fixed text, namely 'Climbing is not possible here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, { "key": "url", "description": "Layer 'Climbing opportunities?' shows and asks freeform values for key 'url' (in the MapComplete.osm.be theme 'Open Climbing Map')" }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities?' shows _embedding_feature:access=yes with a fixed text, namely 'The containing feature states that this is publicly accessible
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities?' shows _embedding_feature:access=permit with a fixed text, namely 'The containing feature states that a permit is needed to access
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities?' shows _embedding_feature:access=customers with a fixed text, namely 'The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities?' shows _embedding_feature:access=members with a fixed text, namely 'The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "_embedding_feature:access", + "description": "Layer 'Climbing opportunities?' shows _embedding_feature:access=no with a fixed text, namely 'Not accessible as stated by the containing feature' (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities?' shows access=yes with a fixed text, namely 'Publicly accessible to anyone' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "yes" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities?' shows access=permit with a fixed text, namely 'You need a permit to access here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "permit" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities?' shows access=customers with a fixed text, namely 'Only custumers' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "customers" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities?' shows access=members with a fixed text, namely 'Only club members' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "members" + }, + { + "key": "access", + "description": "Layer 'Climbing opportunities?' shows access=no with a fixed text, namely 'Not accessible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Climbing Map')", + "value": "no" + }, + { + "key": "access:description", + "description": "Layer 'Climbing opportunities?' shows values with key 'access:description' (in the MapComplete.osm.be theme 'Open Climbing Map')" + }, { "key": "climbing:length", "description": "Layer 'Climbing opportunities?' shows and asks freeform values for key 'climbing:length' (in the MapComplete.osm.be theme 'Open Climbing Map')" diff --git a/UI/Base/Table.ts b/UI/Base/Table.ts index 0e5b03f3cf..a901e17f75 100644 --- a/UI/Base/Table.ts +++ b/UI/Base/Table.ts @@ -21,10 +21,10 @@ export default class Table extends BaseUIElement { const headerMarkdownParts = this._header.map(hel => hel?.AsMarkdown() ?? " ") const header = headerMarkdownParts.join(" | "); - const headerSep = headerMarkdownParts.map(part => '-'.repeat(part.length + 2)).join("|") - const table = this._contents.map(row => row.map(el => el.AsMarkdown() ?? " ").join("|")).join("\n") + const headerSep = headerMarkdownParts.map(part => '-'.repeat(part.length + 2)).join(" | ") + const table = this._contents.map(row => row.map(el => el.AsMarkdown() ?? " ").join(" | ")).join("\n") - return [header, headerSep, table, ""].join("\n") + return "\n\n" + [header, headerSep, table, ""].join("\n") } protected InnerConstructElement(): HTMLElement {