diff --git a/Docs/BuiltinQuestions.md b/Docs/BuiltinQuestions.md index aff72f926..65dc34aed 100644 --- a/Docs/BuiltinQuestions.md +++ b/Docs/BuiltinQuestions.md @@ -1,16 +1,759 @@ [//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) - Builtin questions -=================== + questions +=========== + + + + + +Special library layer which does not need a '.questions'-prefix before being imported -The following items can be easily reused in your layers ## Table of contents -1. [Builtin questions](#builtin-questions) +1. [questions](#questions) + - [Basic tags for this layer](#basic-tags-for-this-layer) + - [Supported attributes](#supported-attributes) + + [questions](#questions) + + [images](#images) + + [mapillary](#mapillary) + + [export_as_gpx](#export_as_gpx) + + [export_as_geojson](#export_as_geojson) + + [wikipedia](#wikipedia) + + [reviews](#reviews) + + [minimap](#minimap) + + [phone](#phone) + + [osmlink](#osmlink) + + [email](#email) + + [website](#website) + + [wheelchair-access](#wheelchair-access) + + [dog-access](#dog-access) + + [description](#description) + + [opening_hours](#opening_hours) + + [opening_hours_24_7](#opening_hours_24_7) + + [opening_hours_by_appointment](#opening_hours_by_appointment) + + [service:electricity](#serviceelectricity) + + [payment-options](#payment-options) + + [payment-options-split](#payment-options-split) + + [payment-options-advanced](#payment-options-advanced) + + [denominations-coins](#denominations-coins) + + [denominations-notes](#denominations-notes) + + [last_edit](#last_edit) + + [all_tags](#all_tags) + + [just_created](#just_created) + + [multilevels](#multilevels) + + [level](#level) + + [smoking](#smoking) + + [induction-loop](#induction-loop) + + [internet](#internet) + + [internet-fee](#internet-fee) + + [internet-ssid](#internet-ssid) + + [luminous_or_lit](#luminous_or_lit) + + + + + - This layer is shown at zoomlevel **0** and higher + - Elements don't have a title set and cannot be toggled nor will they show up in the dashboard. If you import this layer in your theme, override `title` to make this toggleable. + - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` + - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` + + + + + Basic tags for this layer +--------------------------- + + + +Elements must have the all of following tags to be shown on this layer: + + + + + + + + + Supported attributes +---------------------- + + + +Warning: + +this quick overview is incomplete + + + +attribute | type | values which are supported by this layer +----------- | ------ | ------------------------------------------ +[](https://taginfo.openstreetmap.org/keys/wikidata#values) [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) | [wikidata](../SpecialInputElements.md#wikidata) | +[](https://taginfo.openstreetmap.org/keys/phone#values) [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | +[](https://taginfo.openstreetmap.org/keys/id#values) [id](https://wiki.openstreetmap.org/wiki/Key:id) | Multiple choice | +[](https://taginfo.openstreetmap.org/keys/email#values) [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | +[](https://taginfo.openstreetmap.org/keys/website#values) [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | +[](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) +[](https://taginfo.openstreetmap.org/keys/dog#values) [dog](https://wiki.openstreetmap.org/wiki/Key:dog) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dno) [leashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dleashed) [unleashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dunleashed) +[](https://taginfo.openstreetmap.org/keys/description#values) [description](https://wiki.openstreetmap.org/wiki/Key:description) | [string](../SpecialInputElements.md#string) | +[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | +[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | [24/7](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D24/7) +[](https://taginfo.openstreetmap.org/keys/opening_hours#values) [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | ["by appointment"](https://wiki.openstreetmap.org/wiki/Tag:opening_hours%3D"by appointment") +[](https://taginfo.openstreetmap.org/keys/service:electricity#values) [service:electricity](https://wiki.openstreetmap.org/wiki/Key:service:electricity) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dlimited) [ask](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dask) [no](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dno) +[](https://taginfo.openstreetmap.org/keys/payment:coins:denominations#values) [payment:coins:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:coins:denominations) | Multiple choice | [0.01 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.01 EUR) [0.02 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.02 EUR) [0.05 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.05 EUR) [0.10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.10 EUR) [0.20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.20 EUR) [0.50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D0.50 EUR) [1 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D1 EUR) [2 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:coins:denominations%3D2 EUR) +[](https://taginfo.openstreetmap.org/keys/payment:notes:denominations#values) [payment:notes:denominations](https://wiki.openstreetmap.org/wiki/Key:payment:notes:denominations) | Multiple choice | [5 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D5 EUR) [10 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D10 EUR) [20 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D20 EUR) [50 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D50 EUR) [100 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D100 EUR) [200 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D200 EUR) [500 EUR](https://wiki.openstreetmap.org/wiki/Tag:payment:notes:denominations%3D500 EUR) +[](https://taginfo.openstreetmap.org/keys/id#values) [id](https://wiki.openstreetmap.org/wiki/Key:id) | Multiple choice | +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [string](../SpecialInputElements.md#string) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) +[](https://taginfo.openstreetmap.org/keys/level#values) [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) +[](https://taginfo.openstreetmap.org/keys/smoking#values) [smoking](https://wiki.openstreetmap.org/wiki/Key:smoking) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dno) [outside](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Doutside) +[](https://taginfo.openstreetmap.org/keys/hearing_loop#values) [hearing_loop](https://wiki.openstreetmap.org/wiki/Key:hearing_loop) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:hearing_loop%3Dno) +[](https://taginfo.openstreetmap.org/keys/internet_access#values) [internet_access](https://wiki.openstreetmap.org/wiki/Key:internet_access) | Multiple choice | [wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwlan) [no](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dno) [terminal](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal) [wired](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwired) +[](https://taginfo.openstreetmap.org/keys/internet_access:fee#values) [internet_access:fee](https://wiki.openstreetmap.org/wiki/Key:internet_access:fee) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dno) [customers](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dcustomers) +[](https://taginfo.openstreetmap.org/keys/internet_access:ssid#values) [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) | [string](../SpecialInputElements.md#string) | [Telekom](https://wiki.openstreetmap.org/wiki/Tag:internet_access:ssid%3DTelekom) + + + + +### questions + + + +Show the questions block at this location + +This tagrendering has no question and is thus read-only + + + + + +### images + + + +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images + +This tagrendering has no question and is thus read-only + + + + + +### mapillary + + + +Shows a button to open Mapillary on this location + +This tagrendering has no question and is thus read-only + + + + + +### export_as_gpx + + + +Shows a button to export this feature as GPX. Especially useful for route relations + +This tagrendering has no question and is thus read-only + + + + + +### export_as_geojson + + + +Shows a button to export this feature as geojson. Especially useful for debugging or using this in other programs + +This tagrendering has no question and is thus read-only + + + + + +### wikipedia + + + +Shows a wikipedia box with the corresponding wikipedia article; the wikidata-item link can be changed by a contributor + +The question is *What is the corresponding Wikidata entity?* + +This rendering asks information about the property [wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata) + +This is rendered with `{wikipedia():max-height:25rem}` + + + + + + - *{wikipedia():max-height:25rem}* corresponds with `wikipedia~.+` + - This option cannot be chosen as answer + - *No Wikipedia page has been linked yet* corresponds with `` + - This option cannot be chosen as answer + + + + +### reviews + + + +Shows the reviews module (including the possibility to leave a review) + +This tagrendering has no question and is thus read-only + + + + + +### minimap + + + +Shows a small map with the feature. Added by default to every popup + +This tagrendering has no question and is thus read-only + + + + + +### phone + + + +The question is *What is the phone number of {title()}?* + +This rendering asks information about the property [phone](https://wiki.openstreetmap.org/wiki/Key:phone) + +This is rendered with `{phone}` + + + + + + - *{contact:phone}* corresponds with `contact:phone~.+` + - This option cannot be chosen as answer + + +This tagrendering has labels `contact` + + + +### osmlink + + + +This tagrendering has no question and is thus read-only + + + + + + - *Uploading...* corresponds with `id~^(=-)$` + + + + +### email + + + +The question is *What is the email address of {title()}?* + +This rendering asks information about the property [email](https://wiki.openstreetmap.org/wiki/Key:email) + +This is rendered with `{email}` + + + + + + - *{contact:email}* corresponds with `contact:email~.+` + - This option cannot be chosen as answer + + +This tagrendering has labels `contact` + + + +### website + + + +The question is *What is the website of {title()}?* + +This rendering asks information about the property [website](https://wiki.openstreetmap.org/wiki/Key:website) + +This is rendered with `{website}` + + + + + + - *{contact:website}* corresponds with `contact:website~.+` + - This option cannot be chosen as answer + + +This tagrendering has labels `contact` + + + +### wheelchair-access + + + +The question is *Is this place accessible with a wheelchair?* + + + + + + - *This place is specially adapted for wheelchair users* corresponds with `wheelchair=designated` + - *This place is easily reachable with a wheelchair* corresponds with `wheelchair=yes` + - *It is possible to reach this place in a wheelchair, but it is not easy* corresponds with `wheelchair=limited` + - *This place is not reachable with a wheelchair* corresponds with `wheelchair=no` + + + + +### dog-access + + + +The question is *Are dogs allowed in this business?* + + + + + + - *Dogs are allowed* corresponds with `dog=yes` + - *Dogs are not allowed* corresponds with `dog=no` + - *Dogs are allowed, but they have to be leashed* corresponds with `dog=leashed` + - *Dogs are allowed and can run around freely* corresponds with `dog=unleashed` + + + + +### description + + + +The question is *Is there still some relevant info that the previous questions did not cover? Feel free to add it here.* + +This rendering asks information about the property [description](https://wiki.openstreetmap.org/wiki/Key:description) + +This is rendered with `{description}` + + + + + +### opening_hours + + + +The question is *What are the opening hours of {title()}?* + +This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) + +This is rendered with `

Opening hours

{opening_hours_table(opening_hours)}` + + + + + +### opening_hours_24_7 + + + +The question is *What are the opening hours of {title()}?* + +This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) + +This is rendered with `

Opening hours

{opening_hours_table(opening_hours)}` + + + + + + - *24/7 opened (including holidays)* corresponds with `opening_hours=24/7` + + + + +### opening_hours_by_appointment + + + +The question is *What are the opening hours of {title()}?* + +This rendering asks information about the property [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) + +This is rendered with `

Opening hours

{opening_hours_table(opening_hours)}` + + + + + + - *Only by appointment* corresponds with `opening_hours="by appointment"` + - *Only by appointment* corresponds with `opening_hours~^("by appointment"|by appointment)$` + - This option cannot be chosen as answer + + + + +### service:electricity + + + +The question is *Does this amenity have electrical outlets, available to customers when they are inside?* + + + + + + - *There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics* corresponds with `service:electricity=yes` + - *There are a few domestic sockets available to customers seated indoors, where they can charge their electronics* corresponds with `service:electricity=limited` + - *There are no sockets available indoors to customers, but charging might be possible if the staff is asked* corresponds with `service:electricity=ask` + - *There are a no domestic sockets available to customers seated indoors* corresponds with `service:electricity=no` + + + + +### payment-options + + + +The question is *Which methods of payment are accepted here?* + + + + + + - *Cash is accepted here* corresponds with `payment:cash=yes` + - Unselecting this answer will add payment:cash=no + - *Payment cards are accepted here* corresponds with `payment:cards=yes` + - Unselecting this answer will add payment:cards=no + - *Payment by QR-code is possible here* corresponds with `payment:qr_code=yes` + - Unselecting this answer will add payment:qr_code=no + + + + +### payment-options-split + + + +The question is *Which methods of payment are accepted here?* + + + + + + - *Cash is accepted here* corresponds with `payment:cash=yes` + - This option cannot be chosen as answer + - Unselecting this answer will add + - *Payment cards are accepted here* corresponds with `payment:cards=yes` + - This option cannot be chosen as answer + - Unselecting this answer will add + - *Payment by QR-code is possible here* corresponds with `payment:qr_code=yes` + - Unselecting this answer will add payment:qr_code=no + - *Coins are accepted here* corresponds with `payment:coins=yes` + - Unselecting this answer will add payment:coins=no + - *Bank notes are accepted here* corresponds with `payment:notes=yes` + - Unselecting this answer will add payment:notes=no + - *Debit cards are accepted here* corresponds with `payment:debit_cards=yes` + - Unselecting this answer will add payment:debit_cards=no + - *Credit cards are accepted here* corresponds with `payment:credit_cards=yes` + - Unselecting this answer will add payment:credit_cards=no + + + + +### payment-options-advanced + + + +The question is *Which methods of payment are accepted here?* + + + + + + - *Cash is accepted here* corresponds with `payment:cash=yes` + - Unselecting this answer will add payment:cash=no + - *Payment cards are accepted here* corresponds with `payment:cards=yes` + - Unselecting this answer will add payment:cards=no + - *Payment by QR-code is possible here* corresponds with `payment:qr_code=yes` + - Unselecting this answer will add payment:qr_code=no + - *Payment is done using a dedicated app* corresponds with `payment:app=yes` + - Unselecting this answer will add payment:app=no + - *Payment is done using a membership card* corresponds with `payment:membership_card=yes` + - Unselecting this answer will add payment:membership_card=no + + + + +### denominations-coins + + + +The question is *What coins can you use to pay here?* + + + + + + - *1 cent coins are accepted* corresponds with `payment:coins:denominations=0.01 EUR` + - *2 cent coins are accepted* corresponds with `payment:coins:denominations=0.02 EUR` + - *5 cent coins are accepted* corresponds with `payment:coins:denominations=0.05 EUR` + - *10 cent coins are accepted* corresponds with `payment:coins:denominations=0.10 EUR` + - *20 cent coins are accepted* corresponds with `payment:coins:denominations=0.20 EUR` + - *50 cent coins are accepted* corresponds with `payment:coins:denominations=0.50 EUR` + - *1 euro coins are accepted* corresponds with `payment:coins:denominations=1 EUR` + - *2 euro coins are accepted* corresponds with `payment:coins:denominations=2 EUR` + + +This tagrendering is only visible in the popup if the following condition is met: `payment:coins=yes|payment:cash=yes&_currency=EUR` + + + +### denominations-notes + + + +The question is *what notes can you use to pay here?* + + + + + + - *5 euro notes are accepted* corresponds with `payment:notes:denominations=5 EUR` + - *10 euro notes are accepted* corresponds with `payment:notes:denominations=10 EUR` + - *20 euro notes are accepted* corresponds with `payment:notes:denominations=20 EUR` + - *50 euro notes are accepted* corresponds with `payment:notes:denominations=50 EUR` + - *100 euro notes are accepted* corresponds with `payment:notes:denominations=100 EUR` + - *200 euro notes are accepted* corresponds with `payment:notes:denominations=200 EUR` + - *500 euro notes are accepted* corresponds with `payment:notes:denominations=500 EUR` + + +This tagrendering is only visible in the popup if the following condition is met: `payment:notes=yes|payment:cash=yes&_currency=EUR` + + + +### last_edit + + + +Gives some metainfo about the last edit and who did edit it - rendering only + +This tagrendering has no question and is thus read-only + + + +This tagrendering is only visible in the popup if the following condition is met: `_last_edit:contributor~.+&_last_edit:changeset~.+` + + + +### all_tags + + + +Shows a table with all the tags of the feature + +This tagrendering has no question and is thus read-only + + + + + +### just_created + + + +This element shows a 'thank you' that the contributor has recently created this element + +This tagrendering has no question and is thus read-only + + + + + + - *You just created this element! Thanks for sharing this info with the world and helping people worldwide.* corresponds with `id~.+` + + +This tagrendering is only visible in the popup if the following condition is met: `_backend~.+&_last_edit:passed_time<300&|_version_number=1` + + + +### multilevels + + + +The question is *What levels does this elevator go to?* + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with `This elevator goes to floors {level}` + + + + + + - *Located underground* corresponds with `location=underground` + - This option cannot be chosen as answer + - *Located on the ground floor* corresponds with `level=0` + - *Located on the ground floor* corresponds with `` + - This option cannot be chosen as answer + - *Located on the first floor* corresponds with `level=1` + - *Located on the first basement level* corresponds with `level=-1` + + + + +### level + + + +The question is *On what level is this feature located?* + +This rendering asks information about the property [level](https://wiki.openstreetmap.org/wiki/Key:level) + +This is rendered with `Located on the {level}th floor` + + + + + + - *Located underground* corresponds with `location=underground` + - This option cannot be chosen as answer + - *Located on the ground floor* corresponds with `level=0` + - *Located on the ground floor* corresponds with `` + - This option cannot be chosen as answer + - *Located on the first floor* corresponds with `level=1` + - *Located on the first basement level* corresponds with `level=-1` + + + + +### smoking + + + +The question is *Is smoking allowed at {title()}?* + + + + + + - *Smoking is allowed* corresponds with `smoking=yes` + - *Smoking is not allowed* corresponds with `smoking=no` + - *Smoking is allowed outside.* corresponds with `smoking=outside` + + + + +### induction-loop + + + +An accessibility feature: induction loops are for hard-hearing persons which have an FM-receiver. + +The question is *Does this place have an audio induction loop for people with reduced hearing?* + + + + + + - *This place has an audio induction loop* corresponds with `hearing_loop=yes` + - *This place does not have an audio induction loop* corresponds with `hearing_loop=no` + + + + +### internet + + + +The question is *Does this place offer internet access?* + + + + + + - *This place offers wireless internet access* corresponds with `internet_access=wlan` + - *This place does not offer internet access* corresponds with `internet_access=no` + - *This place offers internet access* corresponds with `internet_access=yes` + - This option cannot be chosen as answer + - *This place offers internet access via a terminal or computer* corresponds with `internet_access=terminal` + - *This place offers wired internet access* corresponds with `internet_access=wired` + + + + +### internet-fee + + + +The question is *Is there a fee for internet access?* + + + + + + - *There is a fee for the internet access at this place* corresponds with `internet_access:fee=yes` + - *Internet access is free at this place* corresponds with `internet_access:fee=no` + - *Internet access is free at this place, for customers only* corresponds with `internet_access:fee=customers` + + +This tagrendering is only visible in the popup if the following condition is met: `internet_access!=no&internet_access~.+` + + + +### internet-ssid + + + +The question is *What is the network name for the wireless internet access?* + +This rendering asks information about the property [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) + +This is rendered with `The network name is {internet_access:ssid}` + + + + + + - *Telekom* corresponds with `internet_access:ssid=Telekom` + + +This tagrendering is only visible in the popup if the following condition is met: `internet_access=wlan` + + + +### luminous_or_lit + + + +The question is *Is this object lit or does it emit light?* + + + + + + - *This object both emits light and is lighted by an external light source* corresponds with `lit=yes&luminous=yes` + - *This object emits light* corresponds with `luminous=yes` + - *This object is lit externally, e.g. by a spotlight or other lights* corresponds with `lit=yes` + - *This object does not emit light and is not lighted by externally* corresponds with `lit=no&luminous=no` -This document is autogenerated from [src/Customizations/SharedTagRenderings.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/Customizations/SharedTagRenderings.ts), [assets/layers/questions/questions.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/questions/questions.json) +This document is autogenerated from [assets/layers/questions/questions.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/questions/questions.json) diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md index 78a4cf329..6bc4020e2 100644 --- a/Docs/URL_Parameters.md +++ b/Docs/URL_Parameters.md @@ -77,174 +77,274 @@ The user display language is determined in the following order: Note that this URL-parameter is not added to the URL-bar by default. Note that the _loading_ screen will always use the navigator language. -Translations are never complete. If a translation in a certain language is missing, English is used as fallback. No default value set +Translations are never complete. If a translation in a certain language is missing, English is used as fallback. + +This documentation is defined in the source code at [Locale.ts](/UI/i18n/Locale.ts#L35) + + No default value set fs-translation-mode --------------------- - If set, will show a translation button next to every string. The default value is _false_ + If set, will show a translation button next to every string. + +This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) + + The default value is _false_ backend --------- - The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default value is _osm_ + The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L29) + + The default value is _osm_ fake-user ----------- - If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_ + If true, 'dryrun' mode is activated and a fake user account is loaded + +This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) + + The default value is _false_ fs-userbadge -------------- - Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_ + Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-search ----------- - Disables/Enables the search bar The default value is _true_ + Disables/Enables the search bar + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-background --------------- - Disables/Enables the background layer control The default value is _true_ + Disables/Enables the background layer control + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-filter ----------- - Disables/Enables the filter view The default value is _true_ + Disables/Enables the filter view + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-add-new ------------ - Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default value is _true_ + Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-welcome-message -------------------- - Disables/enables the help menu or welcome message The default value is _true_ + Disables/enables the help menu or welcome message + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-community-index -------------------- - Disables/enables the button to get in touch with the community The default value is _true_ + Disables/enables the button to get in touch with the community + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-iframe-popout ------------------ - Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled) The default value is _true_ + Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled) + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-more-quests ---------------- - Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_ + Disables/Enables the 'More Quests'-tab in the welcome message + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-share-screen ----------------- - Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_ + Disables/Enables the 'Share-screen'-tab in the welcome message + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-geolocation ---------------- - Disables/Enables the geolocation button The default value is _true_ + Disables/Enables the geolocation button + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ fs-all-questions ------------------ - Always show all questions The default value is _false_ + Always show all questions + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _false_ fs-export ----------- - Enable the export as GeoJSON and CSV button The default value is _true_ + Enable the export as GeoJSON and CSV button + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L13) + + The default value is _true_ test ------ - If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org The default value is _false_ + If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org + +This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) + + The default value is _false_ debug ------- - If true, shows some extra debugging help such as all the available tags on every object The default value is _false_ + If true, shows some extra debugging help such as all the available tags on every object + +This documentation is defined in the source code at [QueryParameters.ts](/Logic/Web/QueryParameters.ts#L66) + + The default value is _false_ overpassUrl ------------- - Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter The default value is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_ + Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L165) + + The default value is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_ overpassTimeout ----------------- - Set a different timeout (in seconds) for queries in overpass The default value is _30_ + Set a different timeout (in seconds) for queries in overpass + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L176) + + The default value is _30_ overpassMaxZoom ----------------- - point to switch between OSM-api and overpass The default value is _16_ + point to switch between OSM-api and overpass + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L184) + + The default value is _16_ osmApiTileSize ---------------- - Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _17_ + Tilesize when the OSM-API is used to fetch data within a BBOX + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L192) + + The default value is _17_ background ------------ - The id of the background layer to start with The default value is _osm_ + The id of the background layer to start with + +This documentation is defined in the source code at [FeatureSwitchState.ts](/Logic/State/FeatureSwitchState.ts#L205) + + The default value is _osm_ layer-<layer-id> ------------------------ - Wether or not the layer with id is shown The default value is _true_ + Wether or not the layer with id is shown + +This documentation is defined in the source code at [QueryParameterDocumentation.ts](/UI/QueryParameterDocumentation.ts#L52) + + The default value is _true_ This document is autogenerated from [src/Logic/Web/QueryParameters.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/Logic/Web/QueryParameters.ts), [src/UI/QueryParameterDocumentation.ts](https://github.com/pietervdvn/MapComplete/blob/develop/src/UI/QueryParameterDocumentation.ts) diff --git a/src/Logic/Web/QueryParameters.ts b/src/Logic/Web/QueryParameters.ts index 32053243b..62158ae9f 100644 --- a/src/Logic/Web/QueryParameters.ts +++ b/src/Logic/Web/QueryParameters.ts @@ -4,6 +4,7 @@ import { UIEventSource } from "../UIEventSource" import Hash from "./Hash" import { Utils } from "../../Utils" +import doc = Mocha.reporters.doc export class QueryParameters { static defaults: Record = {} @@ -21,6 +22,19 @@ export class QueryParameters { if (!this.initialized) { this.init() } + + if (Utils.runningFromConsole) { + const location = Utils.getLocationInCode(-1) + + documentation += + "\n\nThis documentation is defined in the source code at [" + + location.filename + + "](" + + location.markdownLocation + + ")" + + "\n\n" + } + QueryParameters.documentation.set(key, documentation) if (deflt !== undefined) { QueryParameters.defaults[key] = deflt @@ -131,5 +145,4 @@ export class QueryParameters { QueryParameters._wasInitialized.clear() QueryParameters.order = [] } - } diff --git a/src/Utils.ts b/src/Utils.ts index 3ff3c59bb..daed05fe7 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -1,5 +1,5 @@ import colors from "./assets/colors.json" -import {HTMLElement} from "node-html-parser" +import { HTMLElement } from "node-html-parser" export class Utils { /** @@ -459,7 +459,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be let match = txt.match(regex) - if(!match){ + if (!match) { return txt } let result = "" @@ -502,7 +502,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be result += normal + v match = leftover.match(regex) - if(!match){ + if (!match) { result += leftover } } @@ -699,10 +699,10 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be if (Array.isArray(leaf)) { for (let i = 0; i < (leaf).length; i++) { const l = (leaf)[i] - collectedList.push({leaf: l, path: [...travelledPath, "" + i]}) + collectedList.push({ leaf: l, path: [...travelledPath, "" + i] }) } } else { - collectedList.push({leaf, path: travelledPath}) + collectedList.push({ leaf, path: travelledPath }) } return collectedList } @@ -780,7 +780,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be }) } - const cp = {...json} + const cp = { ...json } for (const key in json) { cp[key] = Utils.WalkJson(json[key], f, isLeaf, [...path, key]) } @@ -910,11 +910,11 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be const xhr = new XMLHttpRequest() xhr.onload = () => { if (xhr.status == 200) { - resolve({content: xhr.response}) + resolve({ content: xhr.response }) } else if (xhr.status === 302) { - resolve({redirect: xhr.getResponseHeader("location")}) + resolve({ redirect: xhr.getResponseHeader("location") }) } else if (xhr.status === 509 || xhr.status === 429) { - resolve({error: "rate limited", url, statuscode: xhr.status}) + resolve({ error: "rate limited", url, statuscode: xhr.status }) } else { resolve({ error: "other error: " + xhr.statusText, @@ -984,10 +984,10 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be } const promise = /*NO AWAIT as we work with the promise directly */ Utils.downloadJsonAdvanced( - url, - headers - ) - Utils._download_cache.set(url, {promise, timestamp: new Date().getTime()}) + url, + headers + ) + Utils._download_cache.set(url, { promise, timestamp: new Date().getTime() }) return await promise } @@ -1006,11 +1006,11 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be const injected = Utils.injectedDownloads[url] if (injected !== undefined) { console.log("Using injected resource for test for URL", url) - return new Promise((resolve, _) => resolve({content: injected})) + return new Promise((resolve, _) => resolve({ content: injected })) } const result = await Utils.downloadAdvanced( url, - Utils.Merge({accept: "application/json"}, headers ?? {}) + Utils.Merge({ accept: "application/json" }, headers ?? {}) ) if (result["error"] !== undefined) { return <{ error: string; url: string; statuscode?: number }>result @@ -1018,12 +1018,12 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be const data = result["content"] try { if (typeof data === "string") { - return {content: JSON.parse(data)} + return { content: JSON.parse(data) } } - return {content: data} + return { content: data } } catch (e) { console.error("Could not parse ", data, "due to", e, "\n", e.stack) - return {error: "malformed", url} + return { error: "malformed", url } } } @@ -1047,7 +1047,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be const element = document.createElement("a") let file if (typeof contents === "string") { - file = new Blob([contents], {type: options?.mimetype ?? "text/plain"}) + file = new Blob([contents], { type: options?.mimetype ?? "text/plain" }) } else { file = contents } @@ -1318,7 +1318,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be if (match == undefined) { return undefined } - return {r: Number(match[1]), g: Number(match[2]), b: Number(match[3])} + return { r: Number(match[1]), g: Number(match[2]), b: Number(match[3]) } } if (!hex.startsWith("#")) { @@ -1378,7 +1378,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be if (inView) { return } - element.scrollIntoView({behavior: "smooth", block: "nearest"}) + element.scrollIntoView({ behavior: "smooth", block: "nearest" }) } public static findParentWithScrolling(element: HTMLBaseElement): HTMLBaseElement { @@ -1470,18 +1470,60 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be const postParts = prepart.split("}") if (postParts.length === 1) { // This was a normal part - spec.push({message: postParts[0]}) + spec.push({ message: postParts[0] }) } else { const [subs, message] = postParts - spec.push({subs}) + spec.push({ subs }) if (message !== "") { - spec.push({message}) + spec.push({ message }) } } } return spec } + /** + * Returns the file and line number of the code calling this + */ + public static getLocationInCode(offset: number = 0): { + path: string + line: number + column: number + markdownLocation: string + filename: string + functionName: string + } { + const error = new Error("No error") + const stack = error.stack.split("\n") + stack.shift() // Remove "Error: No error" + const regex = /at (.*) \(([a-zA-Z0-9/.]+):([0-9]+):([0-9]+)\)/ + const stackItem = stack[Math.abs(offset) + 1] + console.log("Matching", stackItem, "with", regex, "gave", stackItem.match(regex)) + + let functionName: string + let path: string + let line: string + let column: string + let _: string + const matchWithFuncName = stackItem.match(regex) + if (matchWithFuncName) { + ;[_, functionName, path, line, column] = matchWithFuncName + } else { + let regexNoFuncName: RegExp = new RegExp("at ([a-zA-Z0-9/.]+):([0-9]+):([0-9]+)") + ;[_, path, line, column] = stackItem.match(regexNoFuncName) + } + + const markdownLocation = path.substring(path.indexOf("MapComplete/src") + 15) + "#L" + line + return { + path, + functionName, + line: Number(line), + column: Number(column), + markdownLocation, + filename: path.substring(path.lastIndexOf("/") + 1), + } + } + private static colorDiff( c0: { r: number; g: number; b: number }, c1: { r: number; g: number; b: number }