Housekeeping: formatting
This commit is contained in:
parent
9d53a45f9a
commit
1528dfaae1
168 changed files with 3332 additions and 4560 deletions
|
@ -72,6 +72,8 @@
|
||||||
+ [toilet.toilet-changing_table:location](#toilettoilet-changing_table:location)
|
+ [toilet.toilet-changing_table:location](#toilettoilet-changing_table:location)
|
||||||
+ [toilet.toilet-handwashing](#toilettoilet-handwashing)
|
+ [toilet.toilet-handwashing](#toilettoilet-handwashing)
|
||||||
+ [toilet.toilet-has-paper](#toilettoilet-has-paper)
|
+ [toilet.toilet-has-paper](#toilettoilet-has-paper)
|
||||||
|
+ [toilet.menstrual_products](#toiletmenstrual_products)
|
||||||
|
+ [toilet.menstrual_products_location](#toiletmenstrual_products_location)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1099,6 +1101,28 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- toilet_at_amenity
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### toilet.menstrual_products
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- toilet_at_amenity
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### toilet.menstrual_products_location
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- toilet_at_amenity
|
- toilet_at_amenity
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ A financial institution to deposit money
|
||||||
|
|
||||||
|
|
||||||
- This layer is shown at zoomlevel **14** and higher
|
- This layer is shown at zoomlevel **14** and higher
|
||||||
- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ Bicycle rental stations
|
||||||
|
|
||||||
|
|
||||||
- This layer is shown at zoomlevel **14** and higher
|
- This layer is shown at zoomlevel **14** and higher
|
||||||
- Not visible in the layer selection by default. If you want to make this layer toggable, override `name`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -154,6 +154,18 @@ This rendering asks information about the property [start_date](https://wiki.op
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### wikidata
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This tagrendering has no question and is thus read-only
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This tagrendering is only visible in the popup if the following condition is met: `subject:wikidata~.+`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### leftover-questions
|
### leftover-questions
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,9 @@ attribute | type | values which are supported by this layer
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/wheelchair#values) [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) [designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/door:width#values) [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) |
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/door:width#values) [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) |
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:position#values) [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:position#values) [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal)
|
||||||
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/gender_segregated#values) [gender_segregated](https://wiki.openstreetmap.org/wiki/Key:gender_segregated) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:gender_segregated%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:gender_segregated%3Dno)
|
||||||
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:menstrual_products#values) [toilets:menstrual_products](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dno)
|
||||||
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:menstrual_products:location#values) [toilets:menstrual_products:location](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dwheelchair_toilet)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/changing_table#values) [changing_table](https://wiki.openstreetmap.org/wiki/Key:changing_table) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dno)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/changing_table#values) [changing_table](https://wiki.openstreetmap.org/wiki/Key:changing_table) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dno)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:handwashing#values) [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:handwashing#values) [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno)
|
||||||
|
@ -305,6 +308,58 @@ This tagrendering has labels `relevant-questions`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### gender_segregated
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The question is *Are these toilets gender-segregated?*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- *There is a separate, signposted area for men and women* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:gender_segregated' target='_blank'>gender_segregated</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:gender_segregated%3Dyes' target='_blank'>yes</a>
|
||||||
|
- *There is no separate, signposted area for men and women* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:gender_segregated' target='_blank'>gender_segregated</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:gender_segregated%3Dno' target='_blank'>no</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### menstrual_products
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The question is *Are free, menstrual products distributed here?*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- *Free menstrual products are available to all visitors of these toilets* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dyes' target='_blank'>yes</a>
|
||||||
|
- *Free menstrual products are available to some visitors of these toilets* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited' target='_blank'>limited</a>
|
||||||
|
- *No free menstrual products are available here* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dno' target='_blank'>no</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### menstrual_products_location
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The question is *Where are the free menstrual products located?*
|
||||||
|
|
||||||
|
This rendering asks information about the property [toilets:menstrual_products:location](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location) This is rendered with `The menstrual products are located in {toilets:menstrual_products:location}`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- *The free, menstrual products are located in the toilet for women* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location' target='_blank'>toilets:menstrual_products:location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dfemale_toilet' target='_blank'>female_toilet</a>
|
||||||
|
- *The free, menstrual products are located in the toilet for men* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location' target='_blank'>toilets:menstrual_products:location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dmale_toilet' target='_blank'>male_toilet</a>
|
||||||
|
- *The free, menstrual products are located in the toilet for wheelchair users* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location' target='_blank'>toilets:menstrual_products:location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dwheelchair_toilet' target='_blank'>wheelchair_toilet</a>
|
||||||
|
|
||||||
|
|
||||||
|
This tagrendering is only visible in the popup if the following condition is met: `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited' target='_blank'>limited</a> | toilets:menstrual_products:location~.+`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### toilets-changing-table
|
### toilets-changing-table
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,8 @@ attribute | type | values which are supported by this layer
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/changing_table:location#values) [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:handwashing#values) [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:handwashing#values) [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:paper_supplied#values) [toilets:paper_supplied](https://wiki.openstreetmap.org/wiki/Key:toilets:paper_supplied) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dno)
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:paper_supplied#values) [toilets:paper_supplied](https://wiki.openstreetmap.org/wiki/Key:toilets:paper_supplied) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dyes) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dno)
|
||||||
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:menstrual_products#values) [toilets:menstrual_products](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products) | Multiple choice | [yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dyes) [limited](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited) [no](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dno)
|
||||||
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:menstrual_products:location#values) [toilets:menstrual_products:location](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location) | [string](../SpecialInputElements.md#string) | [female_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dfemale_toilet) [male_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dmale_toilet) [wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dwheelchair_toilet)
|
||||||
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:description#values) [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description) | [string](../SpecialInputElements.md#string) |
|
[<img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'>](https://taginfo.openstreetmap.org/keys/toilets:description#values) [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description) | [string](../SpecialInputElements.md#string) |
|
||||||
|
|
||||||
|
|
||||||
|
@ -326,6 +328,42 @@ This tagrendering has labels `relevant-questions`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### menstrual_products
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The question is *Are free, menstrual products distributed here?*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- *Free menstrual products are available to all visitors of these toilets* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dyes' target='_blank'>yes</a>
|
||||||
|
- *Free menstrual products are available to some visitors of these toilets* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited' target='_blank'>limited</a>
|
||||||
|
- *No free menstrual products are available here* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dno' target='_blank'>no</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### menstrual_products_location
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The question is *Where are the free menstrual products located?*
|
||||||
|
|
||||||
|
This rendering asks information about the property [toilets:menstrual_products:location](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location) This is rendered with `The menstrual products are located in {toilets:menstrual_products:location}`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- *The free, menstrual products are located in the toilet for women* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location' target='_blank'>toilets:menstrual_products:location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dfemale_toilet' target='_blank'>female_toilet</a>
|
||||||
|
- *The free, menstrual products are located in the toilet for men* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location' target='_blank'>toilets:menstrual_products:location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dmale_toilet' target='_blank'>male_toilet</a>
|
||||||
|
- *The free, menstrual products are located in the toilet for wheelchair users* corresponds with <a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location' target='_blank'>toilets:menstrual_products:location</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dwheelchair_toilet' target='_blank'>wheelchair_toilet</a>
|
||||||
|
|
||||||
|
|
||||||
|
This tagrendering is only visible in the popup if the following condition is met: `<a href='https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products' target='_blank'>toilets:menstrual_products</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited' target='_blank'>limited</a> | toilets:menstrual_products:location~.+`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### description
|
### description
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -172,6 +172,8 @@ In other words: use `{ "before": ..., "after": ..., "special": {"type": ..., "ar
|
||||||
* [Example usage of direction_absolute](#example-usage-of-direction_absolute)
|
* [Example usage of direction_absolute](#example-usage-of-direction_absolute)
|
||||||
+ [compare_data](#compare_data)
|
+ [compare_data](#compare_data)
|
||||||
* [Example usage of compare_data](#example-usage-of-compare_data)
|
* [Example usage of compare_data](#example-usage-of-compare_data)
|
||||||
|
+ [login_button](#login_button)
|
||||||
|
* [Example usage of login_button](#example-usage-of-login_button)
|
||||||
+ [auto_apply](#auto_apply)
|
+ [auto_apply](#auto_apply)
|
||||||
* [Example usage of auto_apply](#example-usage-of-auto_apply)
|
* [Example usage of auto_apply](#example-usage-of-auto_apply)
|
||||||
|
|
||||||
|
@ -982,6 +984,7 @@ image | confirm | Image to show
|
||||||
message_confirm | _undefined_ | What to show when the task is closed, either by the user or was already closed.
|
message_confirm | _undefined_ | What to show when the task is closed, either by the user or was already closed.
|
||||||
status | 1 | A statuscode to apply when the button is clicked. 1 = `close`, 2 = `false_positive`, 3 = `skip`, 4 = `deleted`, 5 = `already fixed` (on the map, e.g. for duplicates), 6 = `too hard`
|
status | 1 | A statuscode to apply when the button is clicked. 1 = `close`, 2 = `false_positive`, 3 = `skip`, 4 = `deleted`, 5 = `already fixed` (on the map, e.g. for duplicates), 6 = `too hard`
|
||||||
maproulette_id | mr_taskId | The property name containing the maproulette id
|
maproulette_id | mr_taskId | The property name containing the maproulette id
|
||||||
|
ask_feedback | _empty string_ | If not an empty string, this will be used as question to ask some additional feedback. A text field will be added
|
||||||
|
|
||||||
|
|
||||||
#### Example usage of maproulette_set_status
|
#### Example usage of maproulette_set_status
|
||||||
|
@ -1041,9 +1044,9 @@ button_text | _undefined_ | The text shown on the button in the UI
|
||||||
name | default | description
|
name | default | description
|
||||||
------ | --------- | -------------
|
------ | --------- | -------------
|
||||||
text | _undefined_ | Text to be shown
|
text | _undefined_ | Text to be shown
|
||||||
href | _undefined_ | The URL to link to
|
href | _undefined_ | The URL to link to. Note that this will be URI-encoded before
|
||||||
class | _undefined_ | CSS-classes to add to the element
|
class | _undefined_ | CSS-classes to add to the element
|
||||||
download | _undefined_ | If set, this link will act as a download-button. The contents of `href` will be offered for download; this parameter will act as the proposed filename
|
download | _undefined_ | Expects a string which denotes the filename to download the contents of `href` into. If set, this link will act as a download-button.
|
||||||
arialabel | _undefined_ | If set, this text will be used as aria-label
|
arialabel | _undefined_ | If set, this text will be used as aria-label
|
||||||
|
|
||||||
|
|
||||||
|
@ -1240,6 +1243,16 @@ readonly | _undefined_ | If 'yes', will not show 'apply'-buttons
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### login_button
|
||||||
|
|
||||||
|
Show a login button
|
||||||
|
|
||||||
|
#### Example usage of login_button
|
||||||
|
|
||||||
|
`{login_button()}`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### auto_apply
|
### auto_apply
|
||||||
|
|
||||||
A button to run many actions for many features at once. To effectively use this button, you'll need some ingredients:
|
A button to run many actions for many features at once. To effectively use this button, you'll need some ingredients:
|
||||||
|
|
|
@ -132,6 +132,11 @@
|
||||||
"description": "The MapComplete theme ATM Machines has a layer Banks showing features with this tag",
|
"description": "The MapComplete theme ATM Machines has a layer Banks showing features with this tag",
|
||||||
"value": "bank"
|
"value": "bank"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "atm",
|
||||||
|
"description": "The MapComplete theme ATM Machines has a layer Banks showing features with this tag",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "id",
|
"key": "id",
|
||||||
"description": "Layer 'Banks' shows id~.+ with a fixed text, namely 'You just created this element! Thanks for sharing this info with the world and helping people worldwide.' (in the mapcomplete.org theme 'ATM Machines') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
|
"description": "Layer 'Banks' shows id~.+ with a fixed text, namely 'You just created this element! Thanks for sharing this info with the world and helping people worldwide.' (in the mapcomplete.org theme 'ATM Machines') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
|
||||||
|
@ -340,179 +345,6 @@
|
||||||
"description": "Layer 'Post offices' shows atm=no with a fixed text, namely 'This post office does <b>not</b> have an ATM' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
"description": "Layer 'Post offices' shows atm=no with a fixed text, namely 'This post office does <b>not</b> have an ATM' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
||||||
"value": "no"
|
"value": "no"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "atm",
|
|
||||||
"description": "Layer 'Post offices' shows atm=separate with a fixed text, namely 'This post office does have an ATM, but it is mapped as a different icon' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "separate"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "amenity",
|
|
||||||
"description": "The MapComplete theme ATM Machines has a layer Post offices showing features with this tag",
|
|
||||||
"value": "post_office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office",
|
|
||||||
"description": "The MapComplete theme ATM Machines has a layer Post offices showing features with this tag",
|
|
||||||
"value": "post_partner"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "id",
|
|
||||||
"description": "Layer 'Post offices' shows id~.+ with a fixed text, namely 'You just created this element! Thanks for sharing this info with the world and helping people worldwide.' (in the mapcomplete.org theme 'ATM Machines') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "image",
|
|
||||||
"description": "The layer 'Post offices allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "mapillary",
|
|
||||||
"description": "The layer 'Post offices allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "wikidata",
|
|
||||||
"description": "The layer 'Post offices allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "wikipedia",
|
|
||||||
"description": "The layer 'Post offices allows to upload images and adds them under the 'image'-tag (and image:0, image:1, ... for multiple images). Furhtermore, this layer shows images based on the keys image, wikidata, wikipedia, wikimedia_commons and mapillary"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "opening_hours",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'opening_hours' (in the mapcomplete.org theme 'ATM Machines')"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office",
|
|
||||||
"description": "Layer 'Post offices' shows post_office=post_partner with a fixed text, namely 'This shop is a post partner' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "post_partner"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office",
|
|
||||||
"description": "Layer 'Post offices' shows post_office= with a fixed text, namely 'This shop is not a post partner' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') Picking this answer will delete the key post_office. (This is only shown if post_office=post_partner)",
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:brand' (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=DHL with a fixed text, namely 'This location offers services for DHL' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "DHL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=DPD with a fixed text, namely 'This location offers services for DPD' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "DPD"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=GLS with a fixed text, namely 'This location offers services for GLS' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "GLS"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=UPS with a fixed text, namely 'This location offers services for UPS' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "UPS"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=DHL Paketshop with a fixed text, namely 'This location is a DHL Paketshop' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "DHL Paketshop"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=Hermes PaketShop with a fixed text, namely 'This location is a Hermes PaketShop' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "Hermes PaketShop"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=PostNL with a fixed text, namely 'This location is a PostNL-point' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "PostNL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:brand",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:brand=bpost with a fixed text, namely 'This location offers services for bpost' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines') (This is only shown if post_office=post_partner)",
|
|
||||||
"value": "bpost"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:letter_from",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:letter_from' (in the mapcomplete.org theme 'ATM Machines')"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:letter_from",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:letter_from=yes with a fixed text, namely 'You can post letters here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "yes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:letter_from",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:letter_from=no with a fixed text, namely 'You can't post letters here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "no"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_from",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:parcel_from' (in the mapcomplete.org theme 'ATM Machines')"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_from",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:parcel_from=yes with a fixed text, namely 'You can send parcels here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "yes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_from",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:parcel_from=no with a fixed text, namely 'You can't send parcels here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "no"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_pickup",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:parcel_pickup' (in the mapcomplete.org theme 'ATM Machines')"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_pickup",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:parcel_pickup=yes with a fixed text, namely 'You can pick up missed parcels here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "yes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_pickup",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:parcel_pickup=no with a fixed text, namely 'You can't pick up missed parcels here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "no"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_to",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:parcel_to' (in the mapcomplete.org theme 'ATM Machines')"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_to",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:parcel_to=yes with a fixed text, namely 'You can send parcels to here for pickup' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "yes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:parcel_to",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:parcel_to=no with a fixed text, namely 'You can't send parcels to here for pickup' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "no"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:stamps",
|
|
||||||
"description": "Layer 'Post offices' shows and asks freeform values for key 'post_office:stamps' (in the mapcomplete.org theme 'ATM Machines')"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:stamps",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:stamps=yes with a fixed text, namely 'You can buy stamps here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "yes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "post_office:stamps",
|
|
||||||
"description": "Layer 'Post offices' shows post_office:stamps=no with a fixed text, namely 'You can't buy stamps here' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "no"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "atm",
|
|
||||||
"description": "Layer 'Post offices' shows atm=yes with a fixed text, namely 'This post office has an ATM' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "yes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "atm",
|
|
||||||
"description": "Layer 'Post offices' shows atm=no with a fixed text, namely 'This post office does <b>not</b> have an ATM' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
|
||||||
"value": "no"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "atm",
|
"key": "atm",
|
||||||
"description": "Layer 'Post offices' shows atm=separate with a fixed text, namely 'This post office does have an ATM, but it is mapped as a different icon' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
"description": "Layer 'Post offices' shows atm=separate with a fixed text, namely 'This post office does have an ATM, but it is mapped as a different icon' and allows to pick this as a default answer (in the mapcomplete.org theme 'ATM Machines')",
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1189,6 +1189,50 @@
|
||||||
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
||||||
"value": "seated;urinal"
|
"value": "seated;urinal"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=yes with a fixed text, namely 'There is a separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=no with a fixed text, namely 'There is no separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'Into nature') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "changing_table",
|
"key": "changing_table",
|
||||||
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Into nature')",
|
||||||
|
|
|
@ -2608,6 +2608,50 @@
|
||||||
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
||||||
"value": "seated;urinal"
|
"value": "seated;urinal"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=yes with a fixed text, namely 'There is a separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=no with a fixed text, namely 'There is no separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'OnWheels') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "changing_table",
|
"key": "changing_table",
|
||||||
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
|
||||||
|
|
|
@ -14828,6 +14828,50 @@
|
||||||
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
"value": "seated;urinal"
|
"value": "seated;urinal"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=yes with a fixed text, namely 'There is a separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=no with a fixed text, namely 'There is no separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "changing_table",
|
"key": "changing_table",
|
||||||
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
@ -15080,6 +15124,40 @@
|
||||||
"description": "Layer 'Toilets at other amenities' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:position!=urinal)",
|
"description": "Layer 'Toilets at other amenities' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:position!=urinal)",
|
||||||
"value": "no"
|
"value": "no"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "toilets:description",
|
"key": "toilets:description",
|
||||||
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:description' (in the mapcomplete.org theme 'Personal theme')"
|
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:description' (in the mapcomplete.org theme 'Personal theme')"
|
||||||
|
|
|
@ -565,6 +565,50 @@
|
||||||
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
||||||
"value": "seated;urinal"
|
"value": "seated;urinal"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=yes with a fixed text, namely 'There is a separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=no with a fixed text, namely 'There is no separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'Ski pistes and aerialways') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "changing_table",
|
"key": "changing_table",
|
||||||
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Ski pistes and aerialways')",
|
||||||
|
|
|
@ -190,6 +190,50 @@
|
||||||
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
"description": "Layer 'Toilets' shows toilets:position=seated;urinal with a fixed text, namely 'Both seated toilets and urinals are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
"value": "seated;urinal"
|
"value": "seated;urinal"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=yes with a fixed text, namely 'There is a separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "gender_segregated",
|
||||||
|
"description": "Layer 'Toilets' shows gender_segregated=no with a fixed text, namely 'There is no separate, signposted area for men and women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:position!=urinal)",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "changing_table",
|
"key": "changing_table",
|
||||||
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
"description": "Layer 'Toilets' shows changing_table=yes with a fixed text, namely 'A changing table is available' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
@ -442,6 +486,40 @@
|
||||||
"description": "Layer 'Toilets at other amenities' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:position!=urinal)",
|
"description": "Layer 'Toilets at other amenities' shows toilets:paper_supplied=no with a fixed text, namely 'You have to bring your own toilet paper to this toilet' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:position!=urinal)",
|
||||||
"value": "no"
|
"value": "no"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products=yes with a fixed text, namely 'Free menstrual products are available to all visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products=limited with a fixed text, namely 'Free menstrual products are available to some visitors of these toilets' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
"value": "limited"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products=no with a fixed text, namely 'No free menstrual products are available here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets')",
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:menstrual_products:location' (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products:location=female_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for women' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "female_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products:location=male_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for men' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "male_toilet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "toilets:menstrual_products:location",
|
||||||
|
"description": "Layer 'Toilets at other amenities' shows toilets:menstrual_products:location=wheelchair_toilet with a fixed text, namely 'The free, menstrual products are located in the toilet for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Public toilets') (This is only shown if toilets:menstrual_products=limited | toilets:menstrual_products:location~.+)",
|
||||||
|
"value": "wheelchair_toilet"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "toilets:description",
|
"key": "toilets:description",
|
||||||
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:description' (in the mapcomplete.org theme 'Public toilets')"
|
"description": "Layer 'Toilets at other amenities' shows and asks freeform values for key 'toilets:description' (in the mapcomplete.org theme 'Public toilets')"
|
||||||
|
|
|
@ -30,6 +30,8 @@ Available languages:
|
||||||
|
|
||||||
- en
|
- en
|
||||||
- it
|
- it
|
||||||
|
- de
|
||||||
|
- es
|
||||||
|
|
||||||
|
|
||||||
This document is autogenerated from [assets/themes/disaster_response/disaster_response.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/disaster_response/disaster_response.json)
|
This document is autogenerated from [assets/themes/disaster_response/disaster_response.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/disaster_response/disaster_response.json)
|
||||||
|
|
|
@ -28,6 +28,8 @@ Available languages:
|
||||||
|
|
||||||
|
|
||||||
- en
|
- en
|
||||||
|
- de
|
||||||
|
- es
|
||||||
|
|
||||||
|
|
||||||
This document is autogenerated from [assets/themes/mapcomplete-changes/mapcomplete-changes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/mapcomplete-changes/mapcomplete-changes.json)
|
This document is autogenerated from [assets/themes/mapcomplete-changes/mapcomplete-changes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/mapcomplete-changes/mapcomplete-changes.json)
|
||||||
|
|
|
@ -36,6 +36,8 @@ Available languages:
|
||||||
|
|
||||||
|
|
||||||
- en
|
- en
|
||||||
|
- de
|
||||||
|
- es
|
||||||
|
|
||||||
|
|
||||||
This document is autogenerated from [assets/themes/openlovemap/openlovemap.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/openlovemap/openlovemap.json)
|
This document is autogenerated from [assets/themes/openlovemap/openlovemap.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/openlovemap/openlovemap.json)
|
||||||
|
|
|
@ -37,6 +37,8 @@ Available languages:
|
||||||
|
|
||||||
|
|
||||||
- en
|
- en
|
||||||
|
- de
|
||||||
|
- es
|
||||||
|
|
||||||
|
|
||||||
This document is autogenerated from [assets/themes/ski/ski.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ski/ski.json)
|
This document is autogenerated from [assets/themes/ski/ski.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ski/ski.json)
|
||||||
|
|
|
@ -33,6 +33,7 @@ Available languages:
|
||||||
- en
|
- en
|
||||||
- nl
|
- nl
|
||||||
- de
|
- de
|
||||||
|
- es
|
||||||
|
|
||||||
|
|
||||||
This document is autogenerated from [assets/themes/walkingnodes/walkingnodes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/walkingnodes/walkingnodes.json)
|
This document is autogenerated from [assets/themes/walkingnodes/walkingnodes.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/walkingnodes/walkingnodes.json)
|
||||||
|
|
|
@ -464,7 +464,7 @@ This documentation is defined in the source code at [FilteredLayer.ts](/src/Mode
|
||||||
|
|
||||||
The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics'
|
The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics'
|
||||||
|
|
||||||
This documentation is defined in the source code at [generateDocs.ts](ervdvn/git2/MapComplete/scripts/generateDocs.ts#L420)
|
This documentation is defined in the source code at [generateDocs.ts](ervdvn/git/MapComplete/scripts/generateDocs.ts#L420)
|
||||||
|
|
||||||
The default value is _map_
|
The default value is _map_
|
||||||
|
|
||||||
|
|
|
@ -238,7 +238,7 @@
|
||||||
{{service_item
|
{{service_item
|
||||||
|name= [https://mapcomplete.org/disaster_response disaster_response]
|
|name= [https://mapcomplete.org/disaster_response disaster_response]
|
||||||
|region= Worldwide
|
|region= Worldwide
|
||||||
|lang= {{#language:en|en}}, {{#language:it|en}}
|
|lang= {{#language:en|en}}, {{#language:it|en}}, {{#language:de|en}}, {{#language:es|en}}
|
||||||
|descr= A MapComplete theme: This map contains elements meant for disaster preparedness and response
|
|descr= A MapComplete theme: This map contains elements meant for disaster preparedness and response
|
||||||
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|
||||||
|image= MapComplete_Screenshot.png
|
|image= MapComplete_Screenshot.png
|
||||||
|
@ -474,7 +474,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
|
||||||
{{service_item
|
{{service_item
|
||||||
|name= [https://mapcomplete.org/ski ski]
|
|name= [https://mapcomplete.org/ski ski]
|
||||||
|region= Worldwide
|
|region= Worldwide
|
||||||
|lang= {{#language:en|en}}
|
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}
|
||||||
|descr= A MapComplete theme: Everything you need to go skiing
|
|descr= A MapComplete theme: Everything you need to go skiing
|
||||||
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|
||||||
|image= MapComplete_Screenshot.png
|
|image= MapComplete_Screenshot.png
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
"zgh": "ⴰⵏⵙⵉⵡⵏ ⵉⵜⵜⵡⴰⵙⵙⵏⵏ ⴳ OSM",
|
"zgh": "ⴰⵏⵙⵉⵡⵏ ⵉⵜⵜⵡⴰⵙⵙⵏⵏ ⴳ OSM",
|
||||||
"pt_BR": "Endereços conhecidos no OSM",
|
"pt_BR": "Endereços conhecidos no OSM",
|
||||||
"eu": "OSMko helbide ezagunak",
|
"eu": "OSMko helbide ezagunak",
|
||||||
"pl": "Znane adresy w OSM"
|
"pl": "Znane adresy w OSM",
|
||||||
|
"it": "Indirizzo presente su OSM"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Addresses",
|
"en": "Addresses",
|
||||||
|
@ -45,7 +46,8 @@
|
||||||
"zgh": "ⴰⵏⵙⵉⵡⵏ",
|
"zgh": "ⴰⵏⵙⵉⵡⵏ",
|
||||||
"pt_BR": "Endereços",
|
"pt_BR": "Endereços",
|
||||||
"he": "כתובות",
|
"he": "כתובות",
|
||||||
"eu": "Helbideak"
|
"eu": "Helbideak",
|
||||||
|
"it": "Indirizzi"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": {
|
"osmTags": {
|
||||||
|
@ -81,7 +83,8 @@
|
||||||
"pt": "Endereço conhecido",
|
"pt": "Endereço conhecido",
|
||||||
"pt_BR": "Endereço conhecido",
|
"pt_BR": "Endereço conhecido",
|
||||||
"he": "כתובת ידועה",
|
"he": "כתובת ידועה",
|
||||||
"eu": "Helbide ezaguna"
|
"eu": "Helbide ezaguna",
|
||||||
|
"it": "Indirizzo conosciuto"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pointRendering": [
|
"pointRendering": [
|
||||||
|
@ -166,7 +169,8 @@
|
||||||
"ca": "El número de porta és <b>{addr:housenumber}</b>",
|
"ca": "El número de porta és <b>{addr:housenumber}</b>",
|
||||||
"pt_BR": "O número da casa é <b>{addr:housenumber}</b>",
|
"pt_BR": "O número da casa é <b>{addr:housenumber}</b>",
|
||||||
"he": "מספר הבית הוא <b>{addr:housenumber}</b>",
|
"he": "מספר הבית הוא <b>{addr:housenumber}</b>",
|
||||||
"eu": "Etxearen zenbakia <b>{addr:housenumber}</b> da"
|
"eu": "Etxearen zenbakia <b>{addr:housenumber}</b> da",
|
||||||
|
"it": "Il numero civico della casa è <b>{addr:housenumber}</b>"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the number of this house?",
|
"en": "What is the number of this house?",
|
||||||
|
@ -186,7 +190,8 @@
|
||||||
"ca": "Quin és el número d'aquesta casa?",
|
"ca": "Quin és el número d'aquesta casa?",
|
||||||
"pt_BR": "Qual é o número desta casa?",
|
"pt_BR": "Qual é o número desta casa?",
|
||||||
"he": "מה המספר של הבית הזה?",
|
"he": "מה המספר של הבית הזה?",
|
||||||
"eu": "Zein da etxe honen zenbakia?"
|
"eu": "Zein da etxe honen zenbakia?",
|
||||||
|
"it": "Qual è il numero civico di questa casa?"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "addr:housenumber",
|
"key": "addr:housenumber",
|
||||||
|
@ -223,7 +228,8 @@
|
||||||
"ca": "Aquest edifici no té número",
|
"ca": "Aquest edifici no té número",
|
||||||
"pt_BR": "Este prédio não tem número",
|
"pt_BR": "Este prédio não tem número",
|
||||||
"he": "למבנה זה אין מספר בית",
|
"he": "למבנה זה אין מספר בית",
|
||||||
"eu": "Eraikin honek ez du etxe zenbakirik"
|
"eu": "Eraikin honek ez du etxe zenbakirik",
|
||||||
|
"it": "Questo edificio non ha indirizzo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -246,7 +252,8 @@
|
||||||
"pt": "Este endereço é na rua <b>{addr:street}</b>",
|
"pt": "Este endereço é na rua <b>{addr:street}</b>",
|
||||||
"pt_BR": "Este endereço fica na rua <b>{addr:street}</b>",
|
"pt_BR": "Este endereço fica na rua <b>{addr:street}</b>",
|
||||||
"he": "כתובת זו נמצאת ברחוב <b>{addr:street}</b>",
|
"he": "כתובת זו נמצאת ברחוב <b>{addr:street}</b>",
|
||||||
"eu": "Helbide hau <b>{addr:street}</b> kalean dago"
|
"eu": "Helbide hau <b>{addr:street}</b> kalean dago",
|
||||||
|
"it": "L’indirizzo è in via <b>{addr:street}</b>"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What street is this address located in?",
|
"en": "What street is this address located in?",
|
||||||
|
@ -265,7 +272,8 @@
|
||||||
"pt": "Em que rua fica esse endereço?",
|
"pt": "Em que rua fica esse endereço?",
|
||||||
"pt_BR": "Em que rua fica esse endereço?",
|
"pt_BR": "Em que rua fica esse endereço?",
|
||||||
"he": "באיזה רחוב נמצאת הכתובת הזו?",
|
"he": "באיזה רחוב נמצאת הכתובת הזו?",
|
||||||
"eu": "Zein kaletan dago helbide hori?"
|
"eu": "Zein kaletan dago helbide hori?",
|
||||||
|
"it": "Qual è la via in cui si trova?"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "addr:street"
|
"key": "addr:street"
|
||||||
|
@ -314,7 +322,8 @@
|
||||||
"ca": "Què s’hauria de corregir aquí? Exposa-ho",
|
"ca": "Què s’hauria de corregir aquí? Exposa-ho",
|
||||||
"pt_BR": "O que deve ser corrigido aqui? Explique",
|
"pt_BR": "O que deve ser corrigido aqui? Explique",
|
||||||
"he": "מה צריך לתקן כאן? אנא הסבר",
|
"he": "מה צריך לתקן כאן? אנא הסבר",
|
||||||
"eu": "Zer konpondu behar da hemen? Azaldu mesedez"
|
"eu": "Zer konpondu behar da hemen? Azaldu mesedez",
|
||||||
|
"it": "Indica cosa deve essere corretto qui"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "fixme"
|
"key": "fixme"
|
||||||
|
|
|
@ -12,7 +12,8 @@
|
||||||
"eu": "Iragarri",
|
"eu": "Iragarri",
|
||||||
"pl": "Reklama",
|
"pl": "Reklama",
|
||||||
"pt_BR": "Anunciar",
|
"pt_BR": "Anunciar",
|
||||||
"zh_Hans": "广告"
|
"zh_Hans": "广告",
|
||||||
|
"it": "Pubblicità"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"ca": "Completarem les dades dels elements publicitaris amb referència, operador i il·luminació",
|
"ca": "Completarem les dades dels elements publicitaris amb referència, operador i il·luminació",
|
||||||
|
@ -23,7 +24,8 @@
|
||||||
"pt": "Iremos completar os dados das funcionalidades publicitárias com referência, operador e iluminado",
|
"pt": "Iremos completar os dados das funcionalidades publicitárias com referência, operador e iluminado",
|
||||||
"eu": "Publizitate-ezaugarrien datuak osatuko ditugu erreferentziarekin, operadorearekin eta argiztatuarekin.",
|
"eu": "Publizitate-ezaugarrien datuak osatuko ditugu erreferentziarekin, operadorearekin eta argiztatuarekin.",
|
||||||
"pl": "Uzupełnimy dane z obiektów reklamowych o referencję, operatora i oświetlenie",
|
"pl": "Uzupełnimy dane z obiektów reklamowych o referencję, operatora i oświetlenie",
|
||||||
"pt_BR": "Completaremos os dados das características de publicidade com referência, operador e iluminação"
|
"pt_BR": "Completaremos os dados das características de publicidade com referência, operador e iluminação",
|
||||||
|
"it": "Completeremo i dati da caratteristiche pubblicitarie, con referenza, operatore e illuminazione"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "advertising~*"
|
"osmTags": "advertising~*"
|
||||||
|
@ -395,7 +397,8 @@
|
||||||
"eu": "iragarki panela",
|
"eu": "iragarki panela",
|
||||||
"pl": "bilbord",
|
"pl": "bilbord",
|
||||||
"pt_BR": "um outdoor",
|
"pt_BR": "um outdoor",
|
||||||
"zh_Hans": "一块广告牌"
|
"zh_Hans": "一块广告牌",
|
||||||
|
"it": "un cartellone"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A large outdoor advertising structure, typically found in high-traffic areas such as alongside busy roads",
|
"en": "A large outdoor advertising structure, typically found in high-traffic areas such as alongside busy roads",
|
||||||
|
@ -408,7 +411,8 @@
|
||||||
"he": "מבנה פרסום חוצות גדול, שנמצא בדרך כלל באזורים עתירי תנועה כמו לצד כבישים סואנים",
|
"he": "מבנה פרסום חוצות גדול, שנמצא בדרך כלל באזורים עתירי תנועה כמו לצד כבישים סואנים",
|
||||||
"eu": "Atari zabaleko publizitate-egitura handia, trafiko handiko eremuetan egon ohi dena, adibidez errepideen ondoan",
|
"eu": "Atari zabaleko publizitate-egitura handia, trafiko handiko eremuetan egon ohi dena, adibidez errepideen ondoan",
|
||||||
"pl": "Duża struktura reklamowa na dworze, zwykle znajdująca się w obszarach z dużym ruchem, np. w pobliżu ruchliwych dróg",
|
"pl": "Duża struktura reklamowa na dworze, zwykle znajdująca się w obszarach z dużym ruchem, np. w pobliżu ruchliwych dróg",
|
||||||
"pt_BR": "Uma grande estrutura de publicidade outdoor, geralmente encontrada em áreas com alto tráfego, como ao longo de estradas movimentadas"
|
"pt_BR": "Uma grande estrutura de publicidade outdoor, geralmente encontrada em áreas com alto tráfego, como ao longo de estradas movimentadas",
|
||||||
|
"it": "Grande struttura pubblicitaria all'aperto, trovata normalmente in aree ad alto traffico come accanto a strade molto trafficate"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/KFC_Billboard.jpg",
|
"./assets/themes/advertising/KFC_Billboard.jpg",
|
||||||
|
@ -429,7 +433,8 @@
|
||||||
"pt": "uma caixa de pôster independente",
|
"pt": "uma caixa de pôster independente",
|
||||||
"fr": "un panneau à affiches scellé au sol",
|
"fr": "un panneau à affiches scellé au sol",
|
||||||
"pl": "wolnostojąca skrzynka plakatowa",
|
"pl": "wolnostojąca skrzynka plakatowa",
|
||||||
"pt_BR": "uma caixa expositora independente"
|
"pt_BR": "uma caixa expositora independente",
|
||||||
|
"it": "un cartellone pubblicitario fissato a terra"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Mupi_spain.jpg",
|
"./assets/themes/advertising/Mupi_spain.jpg",
|
||||||
|
@ -450,7 +455,8 @@
|
||||||
"fr": "un panneau à affiches monté sur un mur",
|
"fr": "un panneau à affiches monté sur un mur",
|
||||||
"pl": "skrzynka plakatowa montowana na ścianie",
|
"pl": "skrzynka plakatowa montowana na ścianie",
|
||||||
"pt_BR": "uma caixa de pôster montada em uma parede",
|
"pt_BR": "uma caixa de pôster montada em uma parede",
|
||||||
"zh_Hans": "安装在墙上的海报盒子"
|
"zh_Hans": "安装在墙上的海报盒子",
|
||||||
|
"it": "un cartellone pubblicitario fissato al muro"
|
||||||
},
|
},
|
||||||
"snapToLayer": [
|
"snapToLayer": [
|
||||||
"walls_and_buildings"
|
"walls_and_buildings"
|
||||||
|
@ -470,7 +476,8 @@
|
||||||
"fr": "un petit panneau",
|
"fr": "un petit panneau",
|
||||||
"pt": "a bordo",
|
"pt": "a bordo",
|
||||||
"pl": "tablica",
|
"pl": "tablica",
|
||||||
"pt_BR": "um painel publicitário"
|
"pt_BR": "um painel publicitário",
|
||||||
|
"it": "un piccolo pannello"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Small billboard for neighbourhood advertising, generally intended for pedestrians",
|
"en": "Small billboard for neighbourhood advertising, generally intended for pedestrians",
|
||||||
|
@ -482,7 +489,8 @@
|
||||||
"nl": "Een klein uithangbord voor buurtadvertenties, meestal gericht op voetgangers",
|
"nl": "Een klein uithangbord voor buurtadvertenties, meestal gericht op voetgangers",
|
||||||
"pt": "Pequeno outdoor para publicidade de bairro, geralmente destinado a pedestres",
|
"pt": "Pequeno outdoor para publicidade de bairro, geralmente destinado a pedestres",
|
||||||
"pl": "Mały bilbord dla reklam lokalnych, przeznaczony głównie dla pieszych",
|
"pl": "Mały bilbord dla reklam lokalnych, przeznaczony głównie dla pieszych",
|
||||||
"pt_BR": "Pequeno outdoor para publicidade local, geralmente destinado a pedestres"
|
"pt_BR": "Pequeno outdoor para publicidade local, geralmente destinado a pedestres",
|
||||||
|
"it": "PIccolo pannello per la pubblicità di vicinanza, generalmente destinato ai pedoni"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/local_Board.jpg",
|
"./assets/themes/advertising/local_Board.jpg",
|
||||||
|
@ -504,7 +512,8 @@
|
||||||
"fr": "une colonne",
|
"fr": "une colonne",
|
||||||
"pt": "uma coluna",
|
"pt": "uma coluna",
|
||||||
"pl": "kolumna",
|
"pl": "kolumna",
|
||||||
"pt_BR": "uma coluna"
|
"pt_BR": "uma coluna",
|
||||||
|
"it": "una colonna"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A cylindrical outdoor structure which shows advertisements",
|
"en": "A cylindrical outdoor structure which shows advertisements",
|
||||||
|
@ -516,7 +525,8 @@
|
||||||
"nl": "Een cylindervormige structuur die buiten staat waarop advertenties staan",
|
"nl": "Een cylindervormige structuur die buiten staat waarop advertenties staan",
|
||||||
"pt": "Uma estrutura exterior cilíndrica que mostra anúncios",
|
"pt": "Uma estrutura exterior cilíndrica que mostra anúncios",
|
||||||
"pl": "Cylindryczna konstrukcja zewnętrzna, na której pokazywane są reklamy",
|
"pl": "Cylindryczna konstrukcja zewnętrzna, na której pokazywane są reklamy",
|
||||||
"pt_BR": "Uma estrutura cilíndrica ao ar livre que exibe anúncios"
|
"pt_BR": "Uma estrutura cilíndrica ao ar livre que exibe anúncios",
|
||||||
|
"it": "Una struttura cilindrica all'esterno con affissa della pubblicità"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/AdvertisingColumn_001.jpg",
|
"./assets/themes/advertising/AdvertisingColumn_001.jpg",
|
||||||
|
@ -539,7 +549,8 @@
|
||||||
"pt": "uma bandeira",
|
"pt": "uma bandeira",
|
||||||
"pl": "flaga",
|
"pl": "flaga",
|
||||||
"pt_BR": "uma bandeira",
|
"pt_BR": "uma bandeira",
|
||||||
"zh_Hans": "一个旗子"
|
"zh_Hans": "一个旗子",
|
||||||
|
"it": "una bandiera"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Advertising_flag.jpg",
|
"./assets/themes/advertising/Advertising_flag.jpg",
|
||||||
|
@ -561,7 +572,8 @@
|
||||||
"pt": "uma tela",
|
"pt": "uma tela",
|
||||||
"pl": "ekran",
|
"pl": "ekran",
|
||||||
"pt_BR": "uma tela",
|
"pt_BR": "uma tela",
|
||||||
"zh_Hans": "一块屏幕"
|
"zh_Hans": "一块屏幕",
|
||||||
|
"it": "uno schermo"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Screen_poster_box.jpg",
|
"./assets/themes/advertising/Screen_poster_box.jpg",
|
||||||
|
@ -583,7 +595,8 @@
|
||||||
"pt": "uma tela montada em uma parede",
|
"pt": "uma tela montada em uma parede",
|
||||||
"pl": "ekran zamontowany na ścianie",
|
"pl": "ekran zamontowany na ścianie",
|
||||||
"pt_BR": "uma tela montada em uma parede",
|
"pt_BR": "uma tela montada em uma parede",
|
||||||
"zh_Hans": "一块挂在墙上的屏幕"
|
"zh_Hans": "一块挂在墙上的屏幕",
|
||||||
|
"it": "uno schermo fissato al muro"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Subway_screen.jpg",
|
"./assets/themes/advertising/Subway_screen.jpg",
|
||||||
|
@ -610,7 +623,8 @@
|
||||||
"pt": "uma lona",
|
"pt": "uma lona",
|
||||||
"pl": "plandeka",
|
"pl": "plandeka",
|
||||||
"pt_BR": "uma lona",
|
"pt_BR": "uma lona",
|
||||||
"zh_Hans": "防水布"
|
"zh_Hans": "防水布",
|
||||||
|
"it": "un telone"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A piece of waterproof textile with a printed message, permanently anchored on a wall",
|
"en": "A piece of waterproof textile with a printed message, permanently anchored on a wall",
|
||||||
|
@ -622,7 +636,8 @@
|
||||||
"pt": "Uma peça de tecido impermeável com uma mensagem impressa, permanentemente ancorada na parede",
|
"pt": "Uma peça de tecido impermeável com uma mensagem impressa, permanentemente ancorada na parede",
|
||||||
"fr": "Une pièce de textile imperméable avec un message imprimé, ancrée de façon permanente sur un mur.",
|
"fr": "Une pièce de textile imperméable avec un message imprimé, ancrée de façon permanente sur un mur.",
|
||||||
"pl": "Kawałek wodoodpornej tkaniny z nadrukowanym przesłaniem, trwale przymocowany do ściany",
|
"pl": "Kawałek wodoodpornej tkaniny z nadrukowanym przesłaniem, trwale przymocowany do ściany",
|
||||||
"pt_BR": "Um pedaço de tecido impermeável com uma mensagem impressa, permanentemente fixado a uma parede"
|
"pt_BR": "Um pedaço de tecido impermeável com uma mensagem impressa, permanentemente fixado a uma parede",
|
||||||
|
"it": "Un telo impermeabile con un messaggio stampato, fissato in modo permanente al muro"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/tarp_feder.jpg",
|
"./assets/themes/advertising/tarp_feder.jpg",
|
||||||
|
@ -647,7 +662,8 @@
|
||||||
"pt": "um totem",
|
"pt": "um totem",
|
||||||
"pl": "totem",
|
"pl": "totem",
|
||||||
"pt_BR": "um totem",
|
"pt_BR": "um totem",
|
||||||
"zh_Hans": "图腾"
|
"zh_Hans": "图腾",
|
||||||
|
"it": "un totem"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/AdvertisingTotem_004.jpg",
|
"./assets/themes/advertising/AdvertisingTotem_004.jpg",
|
||||||
|
@ -670,7 +686,8 @@
|
||||||
"pt_BR": "uma placa",
|
"pt_BR": "uma placa",
|
||||||
"eu": "letrero bat",
|
"eu": "letrero bat",
|
||||||
"pl": "znak",
|
"pl": "znak",
|
||||||
"zh_Hans": "标志"
|
"zh_Hans": "标志",
|
||||||
|
"it": "un'insegna"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Used for advertising signs, neon signs, logos & institutional entrance signs",
|
"en": "Used for advertising signs, neon signs, logos & institutional entrance signs",
|
||||||
|
@ -682,7 +699,8 @@
|
||||||
"pt": "Usado para sinais publicitários, sinais de néon, logotipos e sinais de entrada institucionais",
|
"pt": "Usado para sinais publicitários, sinais de néon, logotipos e sinais de entrada institucionais",
|
||||||
"eu": "Iragarki publizitarioetarako, neon-karteletarako, logotipoetarako eta erakundeen sarrera-seinaleetarako erabiltzen da",
|
"eu": "Iragarki publizitarioetarako, neon-karteletarako, logotipoetarako eta erakundeen sarrera-seinaleetarako erabiltzen da",
|
||||||
"pl": "Używany do znaków reklamowych, neonów, logo i znaków wejściowych do instytucji",
|
"pl": "Używany do znaków reklamowych, neonów, logo i znaków wejściowych do instytucji",
|
||||||
"pt_BR": "Usado para placas de publicidade, letreiros de neon, logotipos e placas de entrada institucionais"
|
"pt_BR": "Usado para placas de publicidade, letreiros de neon, logotipos e placas de entrada institucionais",
|
||||||
|
"it": "Utilizzato per insegna pubblicitaria, un'insegna al neon, i loghi o le indicazioni d'entrata"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Waitrose_sign.jpg",
|
"./assets/themes/advertising/Waitrose_sign.jpg",
|
||||||
|
@ -709,7 +727,8 @@
|
||||||
"eu": "eskultura bat",
|
"eu": "eskultura bat",
|
||||||
"pl": "rzeźba",
|
"pl": "rzeźba",
|
||||||
"pt_BR": "uma escultura",
|
"pt_BR": "uma escultura",
|
||||||
"zh_Hans": "雕像"
|
"zh_Hans": "雕像",
|
||||||
|
"it": "una scultura"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Aircraft_Sculpture.jpg",
|
"./assets/themes/advertising/Aircraft_Sculpture.jpg",
|
||||||
|
@ -733,7 +752,8 @@
|
||||||
"eu": "pareta margotu bat",
|
"eu": "pareta margotu bat",
|
||||||
"pl": "mural ścienny",
|
"pl": "mural ścienny",
|
||||||
"pt_BR": "uma pintura mural",
|
"pt_BR": "uma pintura mural",
|
||||||
"zh_Hans": "墙上的画"
|
"zh_Hans": "墙上的画",
|
||||||
|
"it": "un murales"
|
||||||
},
|
},
|
||||||
"exampleImages": [
|
"exampleImages": [
|
||||||
"./assets/themes/advertising/Capitol_wall.jpg",
|
"./assets/themes/advertising/Capitol_wall.jpg",
|
||||||
|
@ -1490,7 +1510,8 @@
|
||||||
"eu": "Objektu honek iragarkiak ditu alde bakar batean",
|
"eu": "Objektu honek iragarkiak ditu alde bakar batean",
|
||||||
"pl": "Ten obiekt ma reklamy po jednej stronie",
|
"pl": "Ten obiekt ma reklamy po jednej stronie",
|
||||||
"pt_BR": "Este objeto tem anúncios em um único lado",
|
"pt_BR": "Este objeto tem anúncios em um único lado",
|
||||||
"zh_Hans": "该物体单面有广告"
|
"zh_Hans": "该物体单面有广告",
|
||||||
|
"it": "Questo oggetto ha la pubblicità solo da un lato"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,8 @@
|
||||||
],
|
],
|
||||||
"label": {
|
"label": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "{name}"
|
"en": "{name}",
|
||||||
|
"de": "{name}"
|
||||||
},
|
},
|
||||||
"condition": "name~*",
|
"condition": "name~*",
|
||||||
"classes": "bg-white p-1 px-2 rounded"
|
"classes": "bg-white p-1 px-2 rounded"
|
||||||
|
@ -30,78 +31,90 @@
|
||||||
"images",
|
"images",
|
||||||
{
|
{
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What type of aerialway is this?"
|
"en": "What type of aerialway is this?",
|
||||||
|
"de": "Um welchen Seilbahntyp handelt es sich?"
|
||||||
},
|
},
|
||||||
"id": "type",
|
"id": "type",
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
"if": "aerialway=cable_car",
|
"if": "aerialway=cable_car",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "This is a cable car where the car goes up and down again on the same cable."
|
"en": "This is a cable car where the car goes up and down again on the same cable.",
|
||||||
|
"de": "Es handelt sich um eine Seilbahn, bei der die Kabine auf demselben Seil nach oben und wieder nach unten fährt."
|
||||||
},
|
},
|
||||||
"icon": "./assets/layers/aerialway/cable_car.svg"
|
"icon": "./assets/layers/aerialway/cable_car.svg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=gondola",
|
"if": "aerialway=gondola",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "This is a gondola where the cars go around in continuous circles"
|
"en": "This is a gondola where the cars go around in continuous circles",
|
||||||
|
"de": "Es handelt sich um eine Seilbahn, bei der die Kabinen in ständigen Kreisen fahren"
|
||||||
},
|
},
|
||||||
"icon": "./assets/layers/aerialway/gondola_lift.svg"
|
"icon": "./assets/layers/aerialway/gondola_lift.svg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=chair_lift",
|
"if": "aerialway=chair_lift",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "An open chairlift with seats to sit on and open to the outside air."
|
"en": "An open chairlift with seats to sit on and open to the outside air.",
|
||||||
|
"de": "Ein offener Sessellift mit Sitzgelegenheiten und Zugang zur Außenluft."
|
||||||
},
|
},
|
||||||
"icon": "./assets/layers/aerialway/chair_lift.svg"
|
"icon": "./assets/layers/aerialway/chair_lift.svg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=mixed",
|
"if": "aerialway=mixed",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "An aerialway which has both chairs and gondolas in the same continuous track"
|
"en": "An aerialway which has both chairs and gondolas in the same continuous track",
|
||||||
|
"de": "Eine Seilbahn, die sowohl offene Sessel als auch geschlossene Gondeln auf einer durchgehenden Bahn hat"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=drag_lift",
|
"if": "aerialway=drag_lift",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A drag lift"
|
"en": "A drag lift",
|
||||||
|
"de": "Ein Schlepplift"
|
||||||
},
|
},
|
||||||
"hideInAnswer": true
|
"hideInAnswer": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=t-bar",
|
"if": "aerialway=t-bar",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A drag lift with T-shaped carriers for two passengers at a time"
|
"en": "A drag lift with T-shaped carriers for two passengers at a time",
|
||||||
|
"de": "Ein Schlepplift mit T-förmigen Trägern für jeweils zwei Passagiere"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=j-bar",
|
"if": "aerialway=j-bar",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A drag lift with L-shaped bars for a single passenger at a time"
|
"en": "A drag lift with L-shaped bars for a single passenger at a time",
|
||||||
|
"de": "Ein Schlepplift mit L-förmigen Trägern für jeweils einen Passagier"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=platter",
|
"if": "aerialway=platter",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A drag lift with a platter to drag a single passenger at a time"
|
"en": "A drag lift with a platter to drag a single passenger at a time",
|
||||||
|
"de": "Ein Schlepplift mit einem Teller für jeweils einen Passagier"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=rope_tow",
|
"if": "aerialway=rope_tow",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A tow line which which drags skieers"
|
"en": "A tow line which which drags skieers",
|
||||||
|
"de": "Eine Schleppleine, die Skifahrer mit sich zieht"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=magic_carpet",
|
"if": "aerialway=magic_carpet",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A magic carpet (a conveyor belt on the ground)"
|
"en": "A magic carpet (a conveyor belt on the ground)",
|
||||||
|
"de": "Ein magic carpet (ein Förderband auf dem Boden)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "aerialway=zip_line",
|
"if": "aerialway=zip_line",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "A zip line. (A touristical attraction where adventurous people go down at high speeds) "
|
"en": "A zip line. (A touristical attraction where adventurous people go down at high speeds) ",
|
||||||
|
"de": "Eine Seilrutsche. (Eine Touristenattraktion, bei der abenteuerlustige Menschen mit hoher Geschwindigkeit hinunterfahren) "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -109,16 +122,19 @@
|
||||||
{
|
{
|
||||||
"id": "duration",
|
"id": "duration",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "How long takes a single journey with this elevator?"
|
"en": "How long takes a single journey with this elevator?",
|
||||||
|
"de": "Wie lange dauert eine Fahrt mit diesem Aufzug?"
|
||||||
},
|
},
|
||||||
"questionHint": {
|
"questionHint": {
|
||||||
"en": "This excludes the waiting time."
|
"en": "This excludes the waiting time.",
|
||||||
|
"de": "Dies schließt die Wartezeit aus."
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "duration"
|
"key": "duration"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "A single journey takes {duration} minutes"
|
"en": "A single journey takes {duration} minutes",
|
||||||
|
"de": "Eine Fahrt dauert {duration} Minuten"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -127,10 +143,12 @@
|
||||||
"key": "aerialway:occupancy"
|
"key": "aerialway:occupancy"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "How many people fit a single carriage?"
|
"en": "How many people fit a single carriage?",
|
||||||
|
"de": "Wie viele Leute passen in eine Kabine?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "{aerialway:occupancy} people fit a single carriage"
|
"en": "{aerialway:occupancy} people fit a single carriage",
|
||||||
|
"de": "{aerialway:occupancy} Leute passen in eine Kabine"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"opening_hours",
|
"opening_hours",
|
||||||
|
@ -158,7 +176,8 @@
|
||||||
{
|
{
|
||||||
"id": "length",
|
"id": "length",
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This aerialway is {_length:km} kilometer long"
|
"en": "This aerialway is {_length:km} kilometer long",
|
||||||
|
"de": "Die Seilbahn hat eine Länge von {_length:km} km"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -166,10 +185,12 @@
|
||||||
{
|
{
|
||||||
"width": "4",
|
"width": "4",
|
||||||
"color": "black",
|
"color": "black",
|
||||||
"imageAlongWay": [ {
|
"imageAlongWay": [
|
||||||
|
{
|
||||||
"if": "oneway=no",
|
"if": "oneway=no",
|
||||||
"then": "./assets/png/twoway.png"
|
"then": "./assets/png/twoway.png"
|
||||||
},{
|
},
|
||||||
|
{
|
||||||
"if": {
|
"if": {
|
||||||
"or": [
|
"or": [
|
||||||
"oneway=yes",
|
"oneway=yes",
|
||||||
|
@ -183,10 +204,12 @@
|
||||||
],
|
],
|
||||||
"id": "aerialway",
|
"id": "aerialway",
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Aerialways"
|
"en": "Aerialways",
|
||||||
|
"de": "Seilbahnen"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Various forms of transport for passengers and goods that use wires, including cable cars, gondolas, chair lifts, drag lifts, and zip lines. "
|
"en": "Various forms of transport for passengers and goods that use wires, including cable cars, gondolas, chair lifts, drag lifts, and zip lines. ",
|
||||||
|
"de": "Alle Arten von seil- oder drahtgestütztem Personen- oder Gütertransport, wie Seilbahnen, Gondeln, Sessellifte, Schlepplifte. "
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": {
|
"osmTags": {
|
||||||
|
@ -199,7 +222,8 @@
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Aerialway {name}"
|
"en": "Aerialway {name}",
|
||||||
|
"de": "Seilbahn {name}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,13 @@
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Emergency assembly points",
|
"en": "Emergency assembly points",
|
||||||
"it": "Punti di raccolta per emergenze"
|
"it": "Punti di raccolta per emergenze",
|
||||||
|
"de": "Notfallsammelplätze"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "This layer contains assembly points and waiting areas where all employees, passengers or a large crowd assemble in case of an emergency.",
|
"en": "This layer contains assembly points and waiting areas where all employees, passengers or a large crowd assemble in case of an emergency.",
|
||||||
"it": "Questo livello contiene punti di raccolta e aree di attesa in cui tutti i dipendenti, i passeggeri o una grande folla si riuniscono in caso di emergenza."
|
"it": "Questo livello contiene punti di raccolta e aree di attesa in cui tutti i dipendenti, i passeggeri o una grande folla si riuniscono in caso di emergenza.",
|
||||||
|
"de": "Diese Ebene enthält Sammelplätze und Wartebereiche, in denen sich alle Mitarbeiter, Fahrgäste oder eine große Menschenmenge im Notfall versammeln."
|
||||||
},
|
},
|
||||||
"docs": "https://wiki.openstreetmap.org/wiki/Tag:emergency%3Dassembly_point",
|
"docs": "https://wiki.openstreetmap.org/wiki/Tag:emergency%3Dassembly_point",
|
||||||
"id": "assembly_point",
|
"id": "assembly_point",
|
||||||
|
@ -40,7 +42,8 @@
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "an assembly point",
|
"en": "an assembly point",
|
||||||
"it": "un punto di raccolta"
|
"it": "un punto di raccolta",
|
||||||
|
"de": "ein Sammelplatz"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"emergency=assembly_point"
|
"emergency=assembly_point"
|
||||||
|
@ -49,7 +52,8 @@
|
||||||
],
|
],
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Assembly point during emergencies"
|
"en": "Assembly point during emergencies",
|
||||||
|
"de": "Sammelplatz bei Notfällen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tagRenderings": [
|
"tagRenderings": [
|
||||||
|
@ -61,22 +65,26 @@
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the name of this assembly point?",
|
"en": "What is the name of this assembly point?",
|
||||||
"it": "Qual è il nome di questo punto di raccolta?"
|
"it": "Qual è il nome di questo punto di raccolta?",
|
||||||
|
"de": "Wie lautet der Name dieser Sammelstelle?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This assembly point is named <b>{name}</b>",
|
"en": "This assembly point is named <b>{name}</b>",
|
||||||
"it": "Questo punto di raccolta si chiama <b>{name}</b>"
|
"it": "Questo punto di raccolta si chiama <b>{name}</b>",
|
||||||
|
"de": "Diese Sammelstelle hat den Namen <b>{name}</b>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "assembly_point_operator",
|
"id": "assembly_point_operator",
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This assembly point is operated by <b>{operator}</b>",
|
"en": "This assembly point is operated by <b>{operator}</b>",
|
||||||
"it": "Questo punto di raccolta è gestita da <b>{operator}</b>"
|
"it": "Questo punto di raccolta è gestita da <b>{operator}</b>",
|
||||||
|
"de": "Diese Sammelstelle wird von <b>{operator}</b> betrieben"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What organization operates this assembly point?",
|
"en": "What organization operates this assembly point?",
|
||||||
"it": "Quale organizzazione gestisce questo punto di raccolta?"
|
"it": "Quale organizzazione gestisce questo punto di raccolta?",
|
||||||
|
"de": "Welche Organisation betreibt diese Sammelstelle?"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "operator",
|
"key": "operator",
|
||||||
|
@ -87,7 +95,8 @@
|
||||||
"id": "disaster_type",
|
"id": "disaster_type",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "For which disaster type is this assembly point meant?",
|
"en": "For which disaster type is this assembly point meant?",
|
||||||
"it": "Per quali tipi di disastro è pensato questo punto di raccolta?"
|
"it": "Per quali tipi di disastro è pensato questo punto di raccolta?",
|
||||||
|
"de": "Für welche Art von Katastrophe ist diese Sammelstelle gedacht?"
|
||||||
},
|
},
|
||||||
"multiAnswer": true,
|
"multiAnswer": true,
|
||||||
"mappings": [
|
"mappings": [
|
||||||
|
@ -96,7 +105,8 @@
|
||||||
"ifnot": "assembly_point:earthquake=",
|
"ifnot": "assembly_point:earthquake=",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Earthquake",
|
"en": "Earthquake",
|
||||||
"it": "Terremoto"
|
"it": "Terremoto",
|
||||||
|
"de": "Erdbeben"
|
||||||
},
|
},
|
||||||
"icon": {
|
"icon": {
|
||||||
"path": "./assets/layers/assembly_point/earthquake.svg",
|
"path": "./assets/layers/assembly_point/earthquake.svg",
|
||||||
|
@ -108,7 +118,8 @@
|
||||||
"ifnot": "assembly_point:flood=",
|
"ifnot": "assembly_point:flood=",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Flood",
|
"en": "Flood",
|
||||||
"it": "Alluvione"
|
"it": "Alluvione",
|
||||||
|
"de": "Flut"
|
||||||
},
|
},
|
||||||
"icon": {
|
"icon": {
|
||||||
"path": "./assets/layers/assembly_point/flood.svg",
|
"path": "./assets/layers/assembly_point/flood.svg",
|
||||||
|
@ -120,7 +131,8 @@
|
||||||
"ifnot": "assembly_point:fire=",
|
"ifnot": "assembly_point:fire=",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Fire",
|
"en": "Fire",
|
||||||
"it": "Incendio"
|
"it": "Incendio",
|
||||||
|
"de": "Feuer"
|
||||||
},
|
},
|
||||||
"icon": {
|
"icon": {
|
||||||
"path": "./assets/layers/assembly_point/fire.svg",
|
"path": "./assets/layers/assembly_point/fire.svg",
|
||||||
|
@ -132,7 +144,8 @@
|
||||||
"ifnot": "assembly_point:landslide=",
|
"ifnot": "assembly_point:landslide=",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Landslide",
|
"en": "Landslide",
|
||||||
"it": "Frana"
|
"it": "Frana",
|
||||||
|
"de": "Erdrutsch"
|
||||||
},
|
},
|
||||||
"icon": {
|
"icon": {
|
||||||
"path": "./assets/layers/assembly_point/landslide.svg",
|
"path": "./assets/layers/assembly_point/landslide.svg",
|
||||||
|
|
|
@ -639,14 +639,16 @@
|
||||||
"id": "fee",
|
"id": "fee",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "Are these bicycle parkings free to use?",
|
"en": "Are these bicycle parkings free to use?",
|
||||||
"nl": "Is deze fietsenstalling gratis te gebruiken?"
|
"nl": "Is deze fietsenstalling gratis te gebruiken?",
|
||||||
|
"de": "Sind die Fahrradparkplätze kostenlos zu benutzen?"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
"if": "fee=yes",
|
"if": "fee=yes",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "One has to <b>pay</b> to use this bicycle parking",
|
"en": "One has to <b>pay</b> to use this bicycle parking",
|
||||||
"nl": "<b>Betalende</b> fietsparking"
|
"nl": "<b>Betalende</b> fietsparking",
|
||||||
|
"de": "Man muss <b>zahlen</b>, um den Fahrradparkplatz zu nutzen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -654,7 +656,8 @@
|
||||||
"alsoShowIf": "fee=",
|
"alsoShowIf": "fee=",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Free to use",
|
"en": "Free to use",
|
||||||
"nl": "Gratis te gebruiken"
|
"nl": "Gratis te gebruiken",
|
||||||
|
"de": "Die Nutzung ist kostenlos"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -673,11 +676,13 @@
|
||||||
"id": "operator_phone",
|
"id": "operator_phone",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the phone number of the operator of this bicycle parking?",
|
"en": "What is the phone number of the operator of this bicycle parking?",
|
||||||
"nl": "Wat is het telefoonnummer van de operator van deze fietsenstalling?"
|
"nl": "Wat is het telefoonnummer van de operator van deze fietsenstalling?",
|
||||||
|
"de": "Wie lautet die Telefonnummer des Betreibers dieses Fahrradparkplatzes?"
|
||||||
},
|
},
|
||||||
"questionHint": {
|
"questionHint": {
|
||||||
"en": "One might be able to call this number in case of problems, e.g. to remove unmaintained bicycles",
|
"en": "One might be able to call this number in case of problems, e.g. to remove unmaintained bicycles",
|
||||||
"nl": "Men kan dit nummer bellen om bv. fietswrakken of defecten te melden"
|
"nl": "Men kan dit nummer bellen om bv. fietswrakken of defecten te melden",
|
||||||
|
"de": "Man könnte diese Nummer anrufen, wenn es Probleme gibt, z. B. um nicht gewartete Fahrräder zu entfernen"
|
||||||
},
|
},
|
||||||
"icon": "./assets/layers/questions/phone.svg",
|
"icon": "./assets/layers/questions/phone.svg",
|
||||||
"freeform": {
|
"freeform": {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
{
|
{
|
||||||
"id": "brothel",
|
"id": "brothel",
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Brothels"
|
"en": "Brothels",
|
||||||
|
"de": "Bordelle"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "An establishment specifically dedicated to prostitution. "
|
"en": "An establishment specifically dedicated to prostitution. ",
|
||||||
|
"de": "Eine Einrichtung, die speziell der Prostitution gewidmet ist. "
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "amenity=brothel"
|
"osmTags": "amenity=brothel"
|
||||||
|
@ -12,7 +14,8 @@
|
||||||
"minzoom": 6,
|
"minzoom": 6,
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Brothel"
|
"en": "Brothel",
|
||||||
|
"de": "Bordell"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -57,7 +60,8 @@
|
||||||
"presets": [
|
"presets": [
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a brothel"
|
"en": "a brothel",
|
||||||
|
"de": "ein Bordell"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"amenity=brothel"
|
"amenity=brothel"
|
||||||
|
@ -75,10 +79,12 @@
|
||||||
"key": "name"
|
"key": "name"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the name of this brothel?"
|
"en": "What is the name of this brothel?",
|
||||||
|
"de": "Wie lautet der Name des Bordells?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This brothel is named <b>{name}</b>"
|
"en": "This brothel is named <b>{name}</b>",
|
||||||
|
"de": "Der Name des Bordells lautet <b>{name}</b>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"opening_hours",
|
"opening_hours",
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
{
|
{
|
||||||
"id": "cinema",
|
"id": "cinema",
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Cinema"
|
"en": "Cinema",
|
||||||
|
"de": "Kino"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": " A place showing movies (films), generally open to the public for a fee. Commonly referred to as a movie theater in the US"
|
"en": " A place showing movies (films), generally open to the public for a fee. Commonly referred to as a movie theater in the US",
|
||||||
|
"de": " Ein Ort, an dem Filme gezeigt werden, die der Öffentlichkeit gegen Gebühr zugänglich sind"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "amenity=cinema"
|
"osmTags": "amenity=cinema"
|
||||||
|
@ -20,7 +22,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Cinema"
|
"en": "Cinema",
|
||||||
|
"de": "Kino"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pointRendering": [
|
"pointRendering": [
|
||||||
|
@ -49,19 +52,22 @@
|
||||||
{
|
{
|
||||||
"id": "cinema_type",
|
"id": "cinema_type",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What type of cinema is this?"
|
"en": "What type of cinema is this?",
|
||||||
|
"de": "Um welche Art von Kino handelt es sich?"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
"if": "cinema=",
|
"if": "cinema=",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "This is a normal cinema showing movies for all ages"
|
"en": "This is a normal cinema showing movies for all ages",
|
||||||
|
"de": "Dies ist ein normales Kino, das Filme für alle Altersgruppen zeigt"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "cinema=erotic",
|
"if": "cinema=erotic",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "This is an erotic cinema showing adult movies"
|
"en": "This is an erotic cinema showing adult movies",
|
||||||
|
"de": "Dies ist ein Sex-Kino, das Erwachsenenfilme zeigt"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -15,7 +15,8 @@
|
||||||
"ca": "Capa amb rellotges públics",
|
"ca": "Capa amb rellotges públics",
|
||||||
"fr": "Couche avec les horloges publiques",
|
"fr": "Couche avec les horloges publiques",
|
||||||
"cs": "Vrstva s veřejnými hodinami",
|
"cs": "Vrstva s veřejnými hodinami",
|
||||||
"pl": "Warstwa z zegarami publicznymi"
|
"pl": "Warstwa z zegarami publicznymi",
|
||||||
|
"es": "Capa con relojes públicos"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "amenity=clock"
|
"osmTags": "amenity=clock"
|
||||||
|
|
|
@ -343,7 +343,7 @@
|
||||||
"then": {
|
"then": {
|
||||||
"en": "There is a lane next to the road (separated with paint)",
|
"en": "There is a lane next to the road (separated with paint)",
|
||||||
"nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)",
|
"nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)",
|
||||||
"de": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)",
|
"de": "Es gibt einen Radfahrstreifen neben der Straße (getrennt durch eine Straßenmarkierung)",
|
||||||
"es": "Hay un carril a lado de la carretera (separado con pintura)",
|
"es": "Hay un carril a lado de la carretera (separado con pintura)",
|
||||||
"fr": "Il y a une piste cyclable separée de la route",
|
"fr": "Il y a une piste cyclable separée de la route",
|
||||||
"ca": "Hi ha un carril al costat de la carretera (separat amb pintura)",
|
"ca": "Hi ha un carril al costat de la carretera (separat amb pintura)",
|
||||||
|
|
|
@ -3,15 +3,18 @@
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Disaster response organization",
|
"en": "Disaster response organization",
|
||||||
"it": "Organizzazione per la risposta ai disastri"
|
"it": "Organizzazione per la risposta ai disastri",
|
||||||
|
"de": "Katastrophenschutzorganisation"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Disaster response organizations"
|
"en": "Disaster response organizations",
|
||||||
|
"de": "Katastrophenschutzorganisationen"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "This layer contains organizations that have the main objective to help the civil population during and after natural or anthropogenic disasters by working in the affected area.",
|
"en": "This layer contains organizations that have the main objective to help the civil population during and after natural or anthropogenic disasters by working in the affected area.",
|
||||||
"it": "Questo livello contiene organizzazioni che hanno come obiettivo principale quello di aiutare la popolazione civile durante e dopo disastri naturali o antropogenici, lavorando nell'area colpita."
|
"it": "Questo livello contiene organizzazioni che hanno come obiettivo principale quello di aiutare la popolazione civile durante e dopo disastri naturali o antropogenici, lavorando nell'area colpita.",
|
||||||
|
"de": "Diese Ebene umfasst Organisationen, deren Hauptziel es ist, der Zivilbevölkerung während und nach Natur- oder anthropogenen Katastrophen zu helfen, indem sie in dem betroffenen Gebiet tätig sind."
|
||||||
},
|
},
|
||||||
"docs": "https://wiki.openstreetmap.org/wiki/Tag:emergency%3Ddisaster_response",
|
"docs": "https://wiki.openstreetmap.org/wiki/Tag:emergency%3Ddisaster_response",
|
||||||
"minzoom": 10,
|
"minzoom": 10,
|
||||||
|
@ -25,7 +28,8 @@
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a disaster response organization",
|
"en": "a disaster response organization",
|
||||||
"it": "un'organizzazione per la risposta ai disastri"
|
"it": "un'organizzazione per la risposta ai disastri",
|
||||||
|
"de": "eine Katastrophenschutzorganisation"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"emergency=disaster_response"
|
"emergency=disaster_response"
|
||||||
|
@ -64,11 +68,13 @@
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the name of this organization?",
|
"en": "What is the name of this organization?",
|
||||||
"it": "Qual è il nome di questa organizzazione?"
|
"it": "Qual è il nome di questa organizzazione?",
|
||||||
|
"de": "Wie lautet der Name dieser Organisation?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This organization is named <b>{name}</b>",
|
"en": "This organization is named <b>{name}</b>",
|
||||||
"it": "Questa organizzazione si chiama <b>{name}</b>"
|
"it": "Questa organizzazione si chiama <b>{name}</b>",
|
||||||
|
"de": "Diese Organisation heißt <b>{name}</b>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -433,7 +433,8 @@
|
||||||
"if": "service:device-key=limited",
|
"if": "service:device-key=limited",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "There is a limited {negative-name} available at this hackerspace",
|
"en": "There is a limited {negative-name} available at this hackerspace",
|
||||||
"nl": "Er is een beperkte {negative-name} beschikbaar in deze hackerspace"
|
"nl": "Er is een beperkte {negative-name} beschikbaar in deze hackerspace",
|
||||||
|
"de": "Es gibt einen limitierten {negative-name} in diesem Hackerspace"
|
||||||
},
|
},
|
||||||
"hideInAnswer": "{hide_limited}"
|
"hideInAnswer": "{hide_limited}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,8 @@
|
||||||
"nl": "Een basis voor indoor-navigatie: toont binnenruimtes",
|
"nl": "Een basis voor indoor-navigatie: toont binnenruimtes",
|
||||||
"cs": "Základní mapování interiérů: zobrazuje obrysy místností",
|
"cs": "Základní mapování interiérů: zobrazuje obrysy místností",
|
||||||
"ca": "Mapeig interior bàsic: mostra els contorns de les habitacions",
|
"ca": "Mapeig interior bàsic: mostra els contorns de les habitacions",
|
||||||
"pl": "Podstawowe mapowanie wnętrz: pokazuje kontury pomieszczeń"
|
"pl": "Podstawowe mapowanie wnętrz: pokazuje kontury pomieszczeń",
|
||||||
|
"es": "Cartografía básica en interiores: muestra esquemas de espacio"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": {
|
"osmTags": {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
{
|
{
|
||||||
"id": "love_hotel",
|
"id": "love_hotel",
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Love hotels"
|
"en": "Love hotels",
|
||||||
|
"de": "Love Hotels"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A love hotel is a type of short-stay hotel found around the world operated primarily for the purpose of allowing guests privacy for sexual activities"
|
"en": "A love hotel is a type of short-stay hotel found around the world operated primarily for the purpose of allowing guests privacy for sexual activities",
|
||||||
|
"de": "Ein Love Hotel ist eine Art Kurzzeithotel, das in erster Linie zu dem Zweck betrieben wird, den Gästen Privatsphäre für sexuelle Aktivitäten zu bieten"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "amenity=love_hotel"
|
"osmTags": "amenity=love_hotel"
|
||||||
|
@ -12,7 +14,8 @@
|
||||||
"minzoom": 10,
|
"minzoom": 10,
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Love Hotel <i>{name}</i>"
|
"en": "Love Hotel <i>{name}</i>",
|
||||||
|
"de": "Love Hotel <i>{name}</i>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pointRendering": [
|
"pointRendering": [
|
||||||
|
@ -49,10 +52,12 @@
|
||||||
"presets": [
|
"presets": [
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a love hotel"
|
"en": "a love hotel",
|
||||||
|
"de": "ein Love Hotel"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A love hotel is a type of short-stay hotel found around the world operated primarily for the purpose of allowing guests privacy for sexual activities."
|
"en": "A love hotel is a type of short-stay hotel found around the world operated primarily for the purpose of allowing guests privacy for sexual activities.",
|
||||||
|
"de": "Ein Love Hotel ist eine Art Kurzzeithotel, das in erster Linie zu dem Zweck betrieben wird, den Gästen Privatsphäre für sexuelle Aktivitäten zu bieten"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"amenity=love_hotel"
|
"amenity=love_hotel"
|
||||||
|
@ -65,10 +70,12 @@
|
||||||
{
|
{
|
||||||
"id": "name",
|
"id": "name",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the name of this love hotel?"
|
"en": "What is the name of this love hotel?",
|
||||||
|
"de": "Wie lautet der Name des Love Hotels?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This love hotel is named <b>{name}</b>"
|
"en": "This love hotel is named <b>{name}</b>",
|
||||||
|
"de": "Der Name des Love Hotels lautet <b>{name}</b>"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "name"
|
"key": "name"
|
||||||
|
|
|
@ -14,7 +14,8 @@
|
||||||
"nl": "Laag met alle taken uit MapRoulette",
|
"nl": "Laag met alle taken uit MapRoulette",
|
||||||
"ca": "Capa que mostra totes les tasques de MapRoulette",
|
"ca": "Capa que mostra totes les tasques de MapRoulette",
|
||||||
"pl": "Warstwa pokazująca wszystkie zadania w MapRoulette",
|
"pl": "Warstwa pokazująca wszystkie zadania w MapRoulette",
|
||||||
"cs": "Vrstva zobrazující všechny úlohy v MapRoulette"
|
"cs": "Vrstva zobrazující všechny úlohy v MapRoulette",
|
||||||
|
"es": "Capa mostrando todas las tareas en MapRoulette"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"geoJson": "https://maproulette.org/api/v2/tasks/box/{x_min}/{y_min}/{x_max}/{y_max}",
|
"geoJson": "https://maproulette.org/api/v2/tasks/box/{x_min}/{y_min}/{x_max}/{y_max}",
|
||||||
|
|
|
@ -17,7 +17,8 @@
|
||||||
"cs": "Zobrazuje povolenou rychlost pro každou silnici",
|
"cs": "Zobrazuje povolenou rychlost pro každou silnici",
|
||||||
"ca": "Mostra la velocitat permesa per a cada carretera",
|
"ca": "Mostra la velocitat permesa per a cada carretera",
|
||||||
"fr": "Affiche les vitesses autorisées sur toutes les routes",
|
"fr": "Affiche les vitesses autorisées sur toutes les routes",
|
||||||
"pl": "Pokazuje dozwoloną prędkość na każdej drodze"
|
"pl": "Pokazuje dozwoloną prędkość na każdej drodze",
|
||||||
|
"es": "Muestra la velocidad permitida para cada carretera"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": {
|
"osmTags": {
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
"id": "Layer yang memperlihatkan kotak pos.",
|
"id": "Layer yang memperlihatkan kotak pos.",
|
||||||
"hu": "Postaládákat megjelenítő réteg.",
|
"hu": "Postaládákat megjelenítő réteg.",
|
||||||
"nl": "Deze laag toont brievenbussen.",
|
"nl": "Deze laag toont brievenbussen.",
|
||||||
"es": "La capa que mostrando buzones de correo.",
|
"es": "La capa muestra buzones de correo.",
|
||||||
"fr": "Le calque montrant les boîtes à lettres.",
|
"fr": "Le calque montrant les boîtes à lettres.",
|
||||||
"ca": "La capa que mostra bústies de correus.",
|
"ca": "La capa que mostra bústies de correus.",
|
||||||
"cs": "Vrstva zobrazující poštovní schránky.",
|
"cs": "Vrstva zobrazující poštovní schránky.",
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
"fr": "Une couche affichant les passages piétons avec des peintures arc-en-ciel",
|
"fr": "Une couche affichant les passages piétons avec des peintures arc-en-ciel",
|
||||||
"ca": "Una capa que mostra els passos de vianants pintats amb de l'arc de Sant Martí",
|
"ca": "Una capa que mostra els passos de vianants pintats amb de l'arc de Sant Martí",
|
||||||
"cs": "Vrstva zobrazující přechody pro chodce s duhovými malbami",
|
"cs": "Vrstva zobrazující přechody pro chodce s duhovými malbami",
|
||||||
"pl": "Warstwa przedstawiająca przejścia dla pieszych z tęczowym malowaniem"
|
"pl": "Warstwa przedstawiająca przejścia dla pieszych z tęczowym malowaniem",
|
||||||
|
"es": "Una capa que muestra cruces peatonales con pinturas arco iris"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": {
|
"osmTags": {
|
||||||
|
|
|
@ -218,7 +218,7 @@
|
||||||
"cs": "Přidat nový obchod",
|
"cs": "Přidat nový obchod",
|
||||||
"de": "Sie können später angeben, was das Geschäft verkauft.",
|
"de": "Sie können später angeben, was das Geschäft verkauft.",
|
||||||
"eo": "Enmeti novan butikon",
|
"eo": "Enmeti novan butikon",
|
||||||
"es": "Añadir una nueva tienda",
|
"es": "Puedes especificar más adelante lo que vende esta tienda.",
|
||||||
"fr": "Ajouter un nouveau magasin",
|
"fr": "Ajouter un nouveau magasin",
|
||||||
"ja": "新しい店を追加する",
|
"ja": "新しい店を追加する",
|
||||||
"nl": "Voeg een nieuwe winkel toe",
|
"nl": "Voeg een nieuwe winkel toe",
|
||||||
|
|
|
@ -16,7 +16,8 @@
|
||||||
"images",
|
"images",
|
||||||
{
|
{
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the difficulty of this piste?"
|
"en": "What is the difficulty of this piste?",
|
||||||
|
"de": "Was ist der Schwierigkeitsgrad der Piste?"
|
||||||
},
|
},
|
||||||
"id": "piste_difficulty",
|
"id": "piste_difficulty",
|
||||||
"condition": "piste:type!=connection",
|
"condition": "piste:type!=connection",
|
||||||
|
@ -24,37 +25,43 @@
|
||||||
{
|
{
|
||||||
"if": "piste:difficulty=novice",
|
"if": "piste:difficulty=novice",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Novice (green)"
|
"en": "Novice (green)",
|
||||||
|
"de": "Anfänger (grün)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "piste:difficulty=easy",
|
"if": "piste:difficulty=easy",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Easy (blue)"
|
"en": "Easy (blue)",
|
||||||
|
"de": "Einfach (blau)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "piste:difficulty=intermediate",
|
"if": "piste:difficulty=intermediate",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Intermediate (red)"
|
"en": "Intermediate (red)",
|
||||||
|
"de": "Mittel (rot)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "piste:difficulty=advanced",
|
"if": "piste:difficulty=advanced",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Advanced (black)"
|
"en": "Advanced (black)",
|
||||||
|
"de": "Fortgeschritten (schwarz)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "piste:difficulty=expert",
|
"if": "piste:difficulty=expert",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Expert (orange/double black)"
|
"en": "Expert (orange/double black)",
|
||||||
|
"de": "Experte (orange/doppel schwarz)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"if": "piste:difficulty=freeride",
|
"if": "piste:difficulty=freeride",
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Freeride"
|
"en": "Freeride",
|
||||||
|
"de": "Freeride"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -62,7 +69,8 @@
|
||||||
{
|
{
|
||||||
"id": "length",
|
"id": "length",
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This part of the ski piste is {_length:km} kilometer long"
|
"en": "This part of the ski piste is {_length:km} kilometer long",
|
||||||
|
"de": "Dieser Teil der Skipiste hat eine Länge von {_length:km} km"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -102,10 +110,12 @@
|
||||||
],
|
],
|
||||||
"id": "ski_piste",
|
"id": "ski_piste",
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Ski and snowboard pistes"
|
"en": "Ski and snowboard pistes",
|
||||||
|
"de": "Ski- und Snowboardpisten"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Ski and snowboard pistes"
|
"en": "Ski and snowboard pistes",
|
||||||
|
"de": "Ski- und Snowboardpisten"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": {
|
"osmTags": {
|
||||||
|
@ -122,7 +132,8 @@
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Ski piste {name}"
|
"en": "Ski piste {name}",
|
||||||
|
"de": "Skipiste {name}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
"en": "Sports centre",
|
"en": "Sports centre",
|
||||||
"de": "Sportzentrum",
|
"de": "Sportzentrum",
|
||||||
"ca": "Centre esportiu",
|
"ca": "Centre esportiu",
|
||||||
"cs": "Sportovní centrum"
|
"cs": "Sportovní centrum",
|
||||||
|
"id": "Pusat olahraga"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -65,7 +66,8 @@
|
||||||
"en": "a sports centre",
|
"en": "a sports centre",
|
||||||
"de": "ein Sportzentrum",
|
"de": "ein Sportzentrum",
|
||||||
"ca": "un centre esportiu",
|
"ca": "un centre esportiu",
|
||||||
"cs": "sportovní centra"
|
"cs": "sportovní centra",
|
||||||
|
"id": "pusat olahraga"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"leisure=sports_centre"
|
"leisure=sports_centre"
|
||||||
|
|
|
@ -5,14 +5,16 @@
|
||||||
"nl": "Trappen",
|
"nl": "Trappen",
|
||||||
"de": "Treppen",
|
"de": "Treppen",
|
||||||
"ca": "Escales",
|
"ca": "Escales",
|
||||||
"cs": "Schody"
|
"cs": "Schody",
|
||||||
|
"id": "Tangga"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Layer showing stairs and escalators",
|
"en": "Layer showing stairs and escalators",
|
||||||
"de": "Ebene mit Treppen und Rolltreppen",
|
"de": "Ebene mit Treppen und Rolltreppen",
|
||||||
"nl": "Laag met trappen en roltrappen",
|
"nl": "Laag met trappen en roltrappen",
|
||||||
"ca": "Capa que mostra escales i escales mecàniques",
|
"ca": "Capa que mostra escales i escales mecàniques",
|
||||||
"cs": "Vrstva zobrazující schody a eskalátory"
|
"cs": "Vrstva zobrazující schody a eskalátory",
|
||||||
|
"id": "Lapisan ini menunjukkan tangga dan eskalator"
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "highway=steps"
|
"osmTags": "highway=steps"
|
||||||
|
@ -93,7 +95,8 @@
|
||||||
"nl": "Dit is een roltrap",
|
"nl": "Dit is een roltrap",
|
||||||
"de": "Das ist eine Rolltreppe",
|
"de": "Das ist eine Rolltreppe",
|
||||||
"ca": "Açò és una escala mecànica",
|
"ca": "Açò és una escala mecànica",
|
||||||
"cs": "Jedná se o eskalátor"
|
"cs": "Jedná se o eskalátor",
|
||||||
|
"id": "Ini adalah eskalator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -103,7 +106,8 @@
|
||||||
"nl": "Dit is geen roltrap",
|
"nl": "Dit is geen roltrap",
|
||||||
"de": "Das ist keine Rolltreppe",
|
"de": "Das ist keine Rolltreppe",
|
||||||
"ca": "Açò no és una escala mecànica",
|
"ca": "Açò no és una escala mecànica",
|
||||||
"cs": "Nejedná se o eskalátor"
|
"cs": "Nejedná se o eskalátor",
|
||||||
|
"id": "Ini bukan eskalator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -113,7 +117,8 @@
|
||||||
"nl": "Dit is geen roltrap",
|
"nl": "Dit is geen roltrap",
|
||||||
"de": "Das ist keine Rolltreppe",
|
"de": "Das ist keine Rolltreppe",
|
||||||
"ca": "Això no és una escala mecànica",
|
"ca": "Això no és una escala mecànica",
|
||||||
"cs": "Nejedná se o eskalátor"
|
"cs": "Nejedná se o eskalátor",
|
||||||
|
"id": "Ini bukan eskalator"
|
||||||
},
|
},
|
||||||
"hideInAnswer": true
|
"hideInAnswer": true
|
||||||
}
|
}
|
||||||
|
@ -126,7 +131,8 @@
|
||||||
"nl": "Heeft deze trap een leuning?",
|
"nl": "Heeft deze trap een leuning?",
|
||||||
"de": "Hat die Treppe einen Handlauf?",
|
"de": "Hat die Treppe einen Handlauf?",
|
||||||
"ca": "Aquestes escales tenen un passamà?",
|
"ca": "Aquestes escales tenen un passamà?",
|
||||||
"cs": "Má toto schodiště zábradlí?"
|
"cs": "Má toto schodiště zábradlí?",
|
||||||
|
"id": "Apakah tangga ini memiliki pegangan?"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -136,7 +142,8 @@
|
||||||
"nl": "Deze trap heeft een leuning",
|
"nl": "Deze trap heeft een leuning",
|
||||||
"de": "Die Treppe hat einen Handlauf",
|
"de": "Die Treppe hat einen Handlauf",
|
||||||
"ca": "Aquestes escales tenen barana",
|
"ca": "Aquestes escales tenen barana",
|
||||||
"cs": "Tyto schody mají zábradlí"
|
"cs": "Tyto schody mají zábradlí",
|
||||||
|
"id": "Tangga ini memiliki pegangan tangan"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -146,7 +153,8 @@
|
||||||
"nl": "Deze trap heeft <b>geen</b> leuning",
|
"nl": "Deze trap heeft <b>geen</b> leuning",
|
||||||
"de": "Die Treppe hat <b>keinen</b> Handlauf",
|
"de": "Die Treppe hat <b>keinen</b> Handlauf",
|
||||||
"ca": "Aquestes escales <b>no</b> tenen un passamà",
|
"ca": "Aquestes escales <b>no</b> tenen un passamà",
|
||||||
"cs": "Tyto schody <b>nemají</b> zábradlí"
|
"cs": "Tyto schody <b>nemají</b> zábradlí",
|
||||||
|
"id": "Tangga ini <b>tidak </b>memiliki pegangan tangan"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -295,7 +303,8 @@
|
||||||
"render": {
|
"render": {
|
||||||
"en": "These stairs have an incline of {incline}",
|
"en": "These stairs have an incline of {incline}",
|
||||||
"ca": "Aquestes escales tenen una inclinació de {incline}",
|
"ca": "Aquestes escales tenen una inclinació de {incline}",
|
||||||
"de": "Die Treppe hat eine Steigung von {incline}"
|
"de": "Die Treppe hat eine Steigung von {incline}",
|
||||||
|
"id": "Tangga ini memiliki kemiringan sebesar {incline}"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "incline",
|
"key": "incline",
|
||||||
|
@ -304,7 +313,8 @@
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the incline of these stairs?",
|
"en": "What is the incline of these stairs?",
|
||||||
"ca": "Quina és la inclinació d'aquestes escales?",
|
"ca": "Quina és la inclinació d'aquestes escales?",
|
||||||
"de": "Welche Steigung hat die Treppe?"
|
"de": "Welche Steigung hat die Treppe?",
|
||||||
|
"id": "Berapa kemiringan tangga ini?"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -312,7 +322,8 @@
|
||||||
"then": {
|
"then": {
|
||||||
"en": "The upward direction is {direction_absolute()}",
|
"en": "The upward direction is {direction_absolute()}",
|
||||||
"ca": "La direcció ascendent és {direction_absolute()}",
|
"ca": "La direcció ascendent és {direction_absolute()}",
|
||||||
"de": "Die Aufwärtsrichtung ist {direction_absolute()}"
|
"de": "Die Aufwärtsrichtung ist {direction_absolute()}",
|
||||||
|
"id": "Arah ke atas adalah {direction_absolute()}"
|
||||||
},
|
},
|
||||||
"hideInAnswer": true
|
"hideInAnswer": true
|
||||||
},
|
},
|
||||||
|
@ -321,7 +332,8 @@
|
||||||
"then": {
|
"then": {
|
||||||
"en": "The downward direction is {direction_absolute()}",
|
"en": "The downward direction is {direction_absolute()}",
|
||||||
"ca": "La direcció descendent és {direction_absolute()}",
|
"ca": "La direcció descendent és {direction_absolute()}",
|
||||||
"de": "Die Abwärtsrichtung ist {direction_absolute()}"
|
"de": "Die Abwärtsrichtung ist {direction_absolute()}",
|
||||||
|
"id": "Arah ke bawah adalah {direction_absolute()}"
|
||||||
},
|
},
|
||||||
"hideInAnswer": true
|
"hideInAnswer": true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
{
|
{
|
||||||
"id": "stripclub",
|
"id": "stripclub",
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Stripclubs"
|
"en": "Stripclubs",
|
||||||
|
"de": "Stripclubs"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "A venue where erotic dance, striptease, or lap dances are performed commercially. "
|
"en": "A venue where erotic dance, striptease, or lap dances are performed commercially. ",
|
||||||
|
"de": "Ein Ort, an dem erotische Tanz-, Striptease- oder Lapdances kommerziell durchgeführt werden. "
|
||||||
},
|
},
|
||||||
"source": {
|
"source": {
|
||||||
"osmTags": "amenity=stripclub",
|
"osmTags": "amenity=stripclub",
|
||||||
|
@ -13,7 +15,8 @@
|
||||||
"minzoom": 6,
|
"minzoom": 6,
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Stripclub"
|
"en": "Stripclub",
|
||||||
|
"de": "Stripclub"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -56,7 +59,8 @@
|
||||||
"presets": [
|
"presets": [
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a stripclub"
|
"en": "a stripclub",
|
||||||
|
"de": "ein Stripclub"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"amenity=stripclub"
|
"amenity=stripclub"
|
||||||
|
@ -74,10 +78,12 @@
|
||||||
"key": "name"
|
"key": "name"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What is the name of this stripclub?"
|
"en": "What is the name of this stripclub?",
|
||||||
|
"de": "Wie lautet der Name des Stripclubs?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This stripclub is named <b>{name}</b>"
|
"en": "This stripclub is named <b>{name}</b>",
|
||||||
|
"de": "Der Name des Stripclubs lautet <b>{name}</b>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"opening_hours",
|
"opening_hours",
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
SPDX-FileCopyrightText: Pieter Vander Vennet
|
SPDX-FileCopyrightText: Pieter Vander Vennet
|
||||||
SPDX-License-Identifier: CC0
|
SPDX-License-Identifier: CC0-1.0
|
|
@ -1,2 +1,2 @@
|
||||||
SPDX-FileCopyrightText: Pieter Vander Vennet
|
SPDX-FileCopyrightText: Pieter Vander Vennet
|
||||||
SPDX-License-Identifier: CC0
|
SPDX-License-Identifier: CC0-1.0
|
|
@ -1,7 +1,9 @@
|
||||||
{
|
{
|
||||||
"description": {
|
"description": {
|
||||||
"en": "This map contains elements meant for disaster preparedness and response.",
|
"en": "This map contains elements meant for disaster preparedness and response.",
|
||||||
"it": "Questa mappa contiene elementi pensati per la preparazione e risposta ai disastri."
|
"it": "Questa mappa contiene elementi pensati per la preparazione e risposta ai disastri.",
|
||||||
|
"de": "Diese Karte enthält Elemente, die der Katastrophenvorsorge und dem Katastrophenschutz dienen.",
|
||||||
|
"es": "Este mapa contiene elementos destinados a la preparación y respuesta ante desastres."
|
||||||
},
|
},
|
||||||
"docs": "https://wiki.openstreetmap.org/wiki/Emergency_facilities_and_amenities",
|
"docs": "https://wiki.openstreetmap.org/wiki/Emergency_facilities_and_amenities",
|
||||||
"icon": "./assets/themes/disaster_response/CivilDefence.svg",
|
"icon": "./assets/themes/disaster_response/CivilDefence.svg",
|
||||||
|
@ -9,7 +11,9 @@
|
||||||
"socialImage": "./assets/themes/disaster_response/social.svg",
|
"socialImage": "./assets/themes/disaster_response/social.svg",
|
||||||
"title": {
|
"title": {
|
||||||
"en": "Disaster response",
|
"en": "Disaster response",
|
||||||
"it": "Risposta ai disastri"
|
"it": "Risposta ai disastri",
|
||||||
|
"de": "Katastrophenschutz",
|
||||||
|
"es": "Respuesta ante desastres"
|
||||||
},
|
},
|
||||||
"layers": [
|
"layers": [
|
||||||
"hospital",
|
"hospital",
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
"ca": "Espai per a hackers",
|
"ca": "Espai per a hackers",
|
||||||
"pa_PK": "ہیکر دے تھاں",
|
"pa_PK": "ہیکر دے تھاں",
|
||||||
"cs": "Hackerspaces",
|
"cs": "Hackerspaces",
|
||||||
"es": "Hackerspaces and makerspaces",
|
"es": "Hackerspaces y makerspaces",
|
||||||
"eu": "Hackerspace",
|
"eu": "Hackerspace",
|
||||||
"pl": "Hackerspace'y"
|
"pl": "Hackerspace'y"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{
|
{
|
||||||
"id": "openlovemap",
|
"id": "openlovemap",
|
||||||
"title": {
|
"title": {
|
||||||
"en": "Open Love Map"
|
"en": "Open Love Map",
|
||||||
|
"de": "Open Love Map",
|
||||||
|
"es": "Open Love Map"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "<p><i>Love in the palm of your hand</i></p>Open Love Map lists various adult entries, such as brothels, erotic stores and stripclubs."
|
"en": "<p><i>Love in the palm of your hand</i></p>Open Love Map lists various adult entries, such as brothels, erotic stores and stripclubs.",
|
||||||
|
"de": "<p><i>Liebe in der Hand</i></p>Open Love Map listet verschiedene Einträge für Erwachsene, wie Bordelle, Erotikshops und Stripclubs.",
|
||||||
|
"es": "<p><i>Amor en la palma de tu mano</i></p>Open Love Map lista varias entradas para adultos, como burdeles, tiendas eróticas y clubs de striptease."
|
||||||
},
|
},
|
||||||
"icon": "./assets/layers/stripclub/stripclub.svg",
|
"icon": "./assets/layers/stripclub/stripclub.svg",
|
||||||
"hideFromOverview": true,
|
"hideFromOverview": true,
|
||||||
|
@ -23,12 +27,16 @@
|
||||||
"open_now"
|
"open_now"
|
||||||
],
|
],
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Erotic shops"
|
"en": "Erotic shops",
|
||||||
|
"de": "Erotikgeschäfte",
|
||||||
|
"es": "Tiendas eróticas"
|
||||||
},
|
},
|
||||||
"=presets": [
|
"=presets": [
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "an erotic shop"
|
"en": "an erotic shop",
|
||||||
|
"de": "ein Erotikgeschäft",
|
||||||
|
"es": "una tienda erótica"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"shop=erotic"
|
"shop=erotic"
|
||||||
|
@ -100,7 +108,9 @@
|
||||||
"=presets": [
|
"=presets": [
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a condom vending machine"
|
"en": "a condom vending machine",
|
||||||
|
"de": "ein Kondomautomat",
|
||||||
|
"es": "una máquina de venta de condones"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"amenity=vending_machine",
|
"amenity=vending_machine",
|
||||||
|
@ -176,7 +186,9 @@
|
||||||
"=presets": [
|
"=presets": [
|
||||||
{
|
{
|
||||||
"title": {
|
"title": {
|
||||||
"en": "an erotic cinema"
|
"en": "an erotic cinema",
|
||||||
|
"de": "Ein Sex-Kino",
|
||||||
|
"es": "un cine erótico"
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
"amenity=cinema",
|
"amenity=cinema",
|
||||||
|
@ -203,7 +215,9 @@
|
||||||
{
|
{
|
||||||
"id": "hotel-type",
|
"id": "hotel-type",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "What type of hotel is this?"
|
"en": "What type of hotel is this?",
|
||||||
|
"de": "Welche Art von Hotel ist das?",
|
||||||
|
"es": "¿Qué tipo de hotel es este?"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -232,10 +246,14 @@
|
||||||
{
|
{
|
||||||
"id": "has_video_booth",
|
"id": "has_video_booth",
|
||||||
"question": {
|
"question": {
|
||||||
"en": "Does {title()} have a private video booth?"
|
"en": "Does {title()} have a private video booth?",
|
||||||
|
"de": "Hat {title()} eine private Videokabine?",
|
||||||
|
"es": "¿Este {título()} tiene una cabina de video privada?"
|
||||||
},
|
},
|
||||||
"questionHint": {
|
"questionHint": {
|
||||||
"en": "This is for use by a single person."
|
"en": "This is for use by a single person.",
|
||||||
|
"de": "Dies ist für die Nutzung durch eine einzelne Person vorgesehen.",
|
||||||
|
"es": "Esto es para uso de una sola persona."
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{
|
{
|
||||||
"id": "ski",
|
"id": "ski",
|
||||||
"title": {
|
"title": {
|
||||||
"en": "Ski pistes and aerialways"
|
"en": "Ski pistes and aerialways",
|
||||||
|
"de": "Skipisten und Seilbahnen",
|
||||||
|
"es": "Pistas de esquí y vías aéreas"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "Everything you need to go skiing"
|
"en": "Everything you need to go skiing",
|
||||||
|
"de": "Alles, was Sie zum Skifahren brauchen",
|
||||||
|
"es": "Todo lo que necesitas para esquiar"
|
||||||
},
|
},
|
||||||
"icon": "./assets/layers/aerialway/chair_lift.svg",
|
"icon": "./assets/layers/aerialway/chair_lift.svg",
|
||||||
"enableTerrain": true,
|
"enableTerrain": true,
|
||||||
|
|
|
@ -169,7 +169,6 @@
|
||||||
"ask_feedback": {
|
"ask_feedback": {
|
||||||
"en": "Is this point incorrect or is it difficult to solve? Please provide some feedback below",
|
"en": "Is this point incorrect or is it difficult to solve? Please provide some feedback below",
|
||||||
"nl": "Is dit punt foutief of te moeilijk? Gelieve wat feedback te geven"
|
"nl": "Is dit punt foutief of te moeilijk? Gelieve wat feedback te geven"
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,15 @@
|
||||||
"title": {
|
"title": {
|
||||||
"en": "Walking Node Networks",
|
"en": "Walking Node Networks",
|
||||||
"nl": "Wandelknooppuntnetwerken",
|
"nl": "Wandelknooppuntnetwerken",
|
||||||
"de": "Netzwerke von Wanderknoten"
|
"de": "Netzwerke von Wanderknoten",
|
||||||
|
"es": "Redes de nodos de senderismo"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"en": "This map shows walking node networks and allows you to add new nodes easily",
|
"en": "This map shows walking node networks and allows you to add new nodes easily",
|
||||||
"nl": "Deze kaart toont wandelknooppunten en laat je toe om eenvoudigweg nieuwe knooppunten toe te voegen",
|
"nl": "Deze kaart toont wandelknooppunten en laat je toe om eenvoudigweg nieuwe knooppunten toe te voegen",
|
||||||
"de": "Diese Karte zeigt Wandernetzwerke und ermöglicht es Ihnen, einfach neue Knoten hinzuzufügen",
|
"de": "Diese Karte zeigt Wandernetzwerke und ermöglicht es Ihnen, einfach neue Knoten hinzuzufügen",
|
||||||
"cs": "Tato mapa zobrazuje sítě uzlových bodů a umožňuje snadné přidávání nových uzlů"
|
"cs": "Tato mapa zobrazuje sítě uzlových bodů a umožňuje snadné přidávání nových uzlů",
|
||||||
|
"es": "Este mapa muestra las redes de nodos de senderismo y le permite añadir nuevos nodos fácilmente"
|
||||||
},
|
},
|
||||||
"icon": "./assets/themes/walkingnodes/logo.svg",
|
"icon": "./assets/themes/walkingnodes/logo.svg",
|
||||||
"startZoom": 11,
|
"startZoom": 11,
|
||||||
|
@ -168,7 +170,8 @@
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Walking node",
|
"en": "Walking node",
|
||||||
"nl": "Wandelknooppunt",
|
"nl": "Wandelknooppunt",
|
||||||
"de": "Wanderknoten"
|
"de": "Wanderknoten",
|
||||||
|
"es": "Nodo de senderismo"
|
||||||
},
|
},
|
||||||
"mappings": [
|
"mappings": [
|
||||||
{
|
{
|
||||||
|
@ -176,7 +179,8 @@
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Walking node <strong>{rwn_ref}</strong>",
|
"en": "Walking node <strong>{rwn_ref}</strong>",
|
||||||
"nl": "Wandelknooppunt <strong>{rwn_ref}</strong>",
|
"nl": "Wandelknooppunt <strong>{rwn_ref}</strong>",
|
||||||
"de": "Wanderknoten <strong>{rwn_ref}</strong>"
|
"de": "Wanderknoten <strong>{rwn_ref}</strong>",
|
||||||
|
"es": "Nodo de senderismo <strong>{rwn_ref}</strong>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -184,7 +188,8 @@
|
||||||
"then": {
|
"then": {
|
||||||
"en": "Proposed walking node <strong>{proposed:rwn_ref}</strong>",
|
"en": "Proposed walking node <strong>{proposed:rwn_ref}</strong>",
|
||||||
"nl": "Voorgesteld wandelknooppunt <strong>{proposed:rwn_ref}</strong>",
|
"nl": "Voorgesteld wandelknooppunt <strong>{proposed:rwn_ref}</strong>",
|
||||||
"de": "Vorgeschlagener Wanderknoten <strong>{proposed:rwn_ref}</strong>"
|
"de": "Vorgeschlagener Wanderknoten <strong>{proposed:rwn_ref}</strong>",
|
||||||
|
"es": "Nodo de senderismo propuesto <strong>{proposed:rwn_ref}</strong>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -196,7 +201,8 @@
|
||||||
"en": "What is the reference number of this walking node?",
|
"en": "What is the reference number of this walking node?",
|
||||||
"nl": "Wat is het referentienummer van dit wandelknooppunt?",
|
"nl": "Wat is het referentienummer van dit wandelknooppunt?",
|
||||||
"de": "Was ist die Referenznummer dieses Wanderknotens?",
|
"de": "Was ist die Referenznummer dieses Wanderknotens?",
|
||||||
"cs": "Jaké je referenční číslo tohoto pěšího uzlu?"
|
"cs": "Jaké je referenční číslo tohoto pěšího uzlu?",
|
||||||
|
"es": "¿Cuál es el número de referencia de este nodo de senderismo?"
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "rwn_ref",
|
"key": "rwn_ref",
|
||||||
|
@ -205,13 +211,15 @@
|
||||||
"en": "e.g. 1",
|
"en": "e.g. 1",
|
||||||
"nl": "bijv. 1",
|
"nl": "bijv. 1",
|
||||||
"de": "z.B. 1",
|
"de": "z.B. 1",
|
||||||
"cs": "e.g. 1"
|
"cs": "e.g. 1",
|
||||||
|
"es": "Por ejemplo, 1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This walking node has reference number {rwn_ref}",
|
"en": "This walking node has reference number {rwn_ref}",
|
||||||
"nl": "Dit wandelknooppunt heeft referentienummer {rwn_ref}",
|
"nl": "Dit wandelknooppunt heeft referentienummer {rwn_ref}",
|
||||||
"de": "Dieser Wanderknoten hat die Referenznummer {rwn_ref}"
|
"de": "Dieser Wanderknoten hat die Referenznummer {rwn_ref}",
|
||||||
|
"es": "Este nodo de senderismo tiene la referencia número {rwn_ref}"
|
||||||
},
|
},
|
||||||
"condition": "rwn_ref~*"
|
"condition": "rwn_ref~*"
|
||||||
},
|
},
|
||||||
|
@ -221,12 +229,14 @@
|
||||||
"question": {
|
"question": {
|
||||||
"en": "When was this walking node last surveyed?",
|
"en": "When was this walking node last surveyed?",
|
||||||
"nl": "Wanneer is dit wandelknooppunt het laatst gesurveyed?",
|
"nl": "Wanneer is dit wandelknooppunt het laatst gesurveyed?",
|
||||||
"de": "Wann wurde dieser Wanderknoten zuletzt überprüft?"
|
"de": "Wann wurde dieser Wanderknoten zuletzt überprüft?",
|
||||||
|
"es": "¿Cuándo fue la última revisión de este nodo de senderismo?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This walking node was last surveyed on {survey:date}",
|
"en": "This walking node was last surveyed on {survey:date}",
|
||||||
"nl": "Dit wandelknooppunt werd het laatst gesurveyed op {survey:date}",
|
"nl": "Dit wandelknooppunt werd het laatst gesurveyed op {survey:date}",
|
||||||
"de": "Dieser Wanderknoten wurde zuletzt am {survey:date} überprüft"
|
"de": "Dieser Wanderknoten wurde zuletzt am {survey:date} überprüft",
|
||||||
|
"es": "Este nodo de senderismo fue revisado por última vez en {survey:date}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -235,12 +245,14 @@
|
||||||
"en": "How many other walking nodes does this node link to?",
|
"en": "How many other walking nodes does this node link to?",
|
||||||
"nl": "Met hoeveel andere wandelknooppunten heeft dit knooppunt een verbinding?",
|
"nl": "Met hoeveel andere wandelknooppunten heeft dit knooppunt een verbinding?",
|
||||||
"de": "Mit wie vielen anderen Wanderknoten ist dieser Knoten verbunden?",
|
"de": "Mit wie vielen anderen Wanderknoten ist dieser Knoten verbunden?",
|
||||||
"cs": "S kolika dalšími pěšími uzly je tento uzel propojen?"
|
"cs": "S kolika dalšími pěšími uzly je tento uzel propojen?",
|
||||||
|
"es": "¿A cuántos otros nodos de senderismo conecta este nodo?"
|
||||||
},
|
},
|
||||||
"render": {
|
"render": {
|
||||||
"en": "This node links to {expected_rwn_route_relations} other walking nodes.",
|
"en": "This node links to {expected_rwn_route_relations} other walking nodes.",
|
||||||
"nl": "Dit knooppunt verbindt met {expected_rwn_route_relations} andere wandelknooppunten.",
|
"nl": "Dit knooppunt verbindt met {expected_rwn_route_relations} andere wandelknooppunten.",
|
||||||
"de": "Dieser Knoten ist mit {expected_rwn_route_relations} anderen Wanderknoten verbunden."
|
"de": "Dieser Knoten ist mit {expected_rwn_route_relations} anderen Wanderknoten verbunden.",
|
||||||
|
"es": "Este nodo se vincula a {expected_rwn_route_relations} otros nodos de senderismo."
|
||||||
},
|
},
|
||||||
"freeform": {
|
"freeform": {
|
||||||
"key": "expected_rwn_route_relations",
|
"key": "expected_rwn_route_relations",
|
||||||
|
@ -249,7 +261,8 @@
|
||||||
"en": "e.g. 3",
|
"en": "e.g. 3",
|
||||||
"nl": "bijv. 3",
|
"nl": "bijv. 3",
|
||||||
"de": "z.B. 3",
|
"de": "z.B. 3",
|
||||||
"cs": "e.g. 3"
|
"cs": "e.g. 3",
|
||||||
|
"es": "Por ejemplo, 3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"id": "node-expected_rwn_route_relations"
|
"id": "node-expected_rwn_route_relations"
|
||||||
|
@ -265,7 +278,8 @@
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a walking node",
|
"en": "a walking node",
|
||||||
"nl": "een wandelknooppunt",
|
"nl": "een wandelknooppunt",
|
||||||
"de": "ein Wanderknoten"
|
"de": "ein Wanderknoten",
|
||||||
|
"es": "un nodo de senderismo"
|
||||||
},
|
},
|
||||||
"snapToLayer": [
|
"snapToLayer": [
|
||||||
"cycleways_and_roads"
|
"cycleways_and_roads"
|
||||||
|
@ -298,12 +312,14 @@
|
||||||
],
|
],
|
||||||
"name": {
|
"name": {
|
||||||
"en": "Hiking guideposts",
|
"en": "Hiking guideposts",
|
||||||
"de": "Wanderwegweiser"
|
"de": "Wanderwegweiser",
|
||||||
|
"es": "Postes guías de senderismo"
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"render": {
|
"render": {
|
||||||
"en": "Hiking guidepost",
|
"en": "Hiking guidepost",
|
||||||
"de": "Wanderwegweiser"
|
"de": "Wanderwegweiser",
|
||||||
|
"es": "Poste guía de senderismo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -334,7 +350,8 @@
|
||||||
],
|
],
|
||||||
"title": {
|
"title": {
|
||||||
"en": "a route marker for a node to node link",
|
"en": "a route marker for a node to node link",
|
||||||
"de": "Eine Routenmarkierung für eine Verbindung von Knoten zu Knoten"
|
"de": "Eine Routenmarkierung für eine Verbindung von Knoten zu Knoten",
|
||||||
|
"es": "un marcador de ruta para un enlace de nodo a nodo"
|
||||||
},
|
},
|
||||||
"=exampleImages": [
|
"=exampleImages": [
|
||||||
"./assets/layers/route_marker/walking_route_marker.jpg"
|
"./assets/layers/route_marker/walking_route_marker.jpg"
|
||||||
|
|
|
@ -8422,6 +8422,23 @@
|
||||||
"render": "Arbre"
|
"render": "Arbre"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "S'accepten monedes de 50 cèntims"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "S'accepten monedes de 1 euro"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "S'accepten monedes de 2 euros"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"0": {
|
"0": {
|
||||||
|
|
|
@ -8711,6 +8711,23 @@
|
||||||
"render": "Strom"
|
"render": "Strom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Jsou přijímány mince v hodnotě 50 centů"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Jsou přijímány mince v hodnotě 1 eura"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Jsou přijímány mince v hodnotě 2 euro"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"0": {
|
"0": {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -258,6 +258,17 @@
|
||||||
"question": "How many people fit a single carriage?",
|
"question": "How many people fit a single carriage?",
|
||||||
"render": "{aerialway:occupancy} people fit a single carriage"
|
"render": "{aerialway:occupancy} people fit a single carriage"
|
||||||
},
|
},
|
||||||
|
"oneway": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "This aerialway can only be taken to the top"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "This aerialway can be taken in both directions"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "In what direction can this aerialway be taken?"
|
||||||
|
},
|
||||||
"type": {
|
"type": {
|
||||||
"mappings": {
|
"mappings": {
|
||||||
"0": {
|
"0": {
|
||||||
|
@ -5101,6 +5112,11 @@
|
||||||
"ghost_bike-start_date": {
|
"ghost_bike-start_date": {
|
||||||
"question": "When was this Ghost bike installed?",
|
"question": "When was this Ghost bike installed?",
|
||||||
"render": "Placed on {start_date}"
|
"render": "Placed on {start_date}"
|
||||||
|
},
|
||||||
|
"wikidata": {
|
||||||
|
"render": {
|
||||||
|
"before": "<h3>Wikipedia page about the deceased person</h3>"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
|
@ -6108,6 +6124,18 @@
|
||||||
"render": "Memorial plaque"
|
"render": "Memorial plaque"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"mountain_rescue": {
|
||||||
|
"description": "A building where first aid responders store material and might be on watch",
|
||||||
|
"name": "Mountain rescue stations",
|
||||||
|
"presets": {
|
||||||
|
"0": {
|
||||||
|
"title": "a mountain rescue station"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"render": "Mountain rescue station"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nature_reserve": {
|
"nature_reserve": {
|
||||||
"description": "A nature reserve is an area where nature can take its course",
|
"description": "A nature reserve is an area where nature can take its course",
|
||||||
"filter": {
|
"filter": {
|
||||||
|
@ -6685,6 +6713,9 @@
|
||||||
"mappings": {
|
"mappings": {
|
||||||
"0": {
|
"0": {
|
||||||
"then": "Disabled Parking Space"
|
"then": "Disabled Parking Space"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Electric Vehicle Charging Parking Space"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"render": "Parking Space"
|
"render": "Parking Space"
|
||||||
|
@ -9327,6 +9358,48 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tagRenderings": {
|
"tagRenderings": {
|
||||||
|
"gender_segregated": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "There is a separate, signposted area for men and women"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "There is no separate, signposted area for men and women"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Are these toilets gender-segregated?",
|
||||||
|
"questionHint": "Are there separate stalls or separate areas for men and women and are they signposted as such?"
|
||||||
|
},
|
||||||
|
"menstrual_products": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Free menstrual products are available to all visitors of these toilets"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Free menstrual products are available to some visitors of these toilets"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "No free menstrual products are available here"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Are free, menstrual products distributed here?",
|
||||||
|
"questionHint": "This is only about menstrual products that are free of charge. If e.g. a vending machine is available which charges for menstrual products, ignore it for this question."
|
||||||
|
},
|
||||||
|
"menstrual_products_location": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "The free, menstrual products are located in the toilet for women"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "The free, menstrual products are located in the toilet for men"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "The free, menstrual products are located in the toilet for wheelchair users"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Where are the free menstrual products located?",
|
||||||
|
"render": "The menstrual products are located in {toilets:menstrual_products:location}"
|
||||||
|
},
|
||||||
"opening_hours_24_7": {
|
"opening_hours_24_7": {
|
||||||
"override": {
|
"override": {
|
||||||
"question": "When are these toilets opened?"
|
"question": "When are these toilets opened?"
|
||||||
|
@ -9924,6 +9997,78 @@
|
||||||
"render": "Tree"
|
"render": "Tree"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"description": "Find trolley bays for shopping trolleys.",
|
||||||
|
"name": "Trolley Bays",
|
||||||
|
"presets": {
|
||||||
|
"0": {
|
||||||
|
"description": "A trolley bay for parking shopping carts.",
|
||||||
|
"title": "a trolley bay"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tagRenderings": {
|
||||||
|
"cart_types": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Trolleys with a magnifier are available"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Trolleys for wheelchair users are available"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Trolleys for children are available"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"then": "Trolleys with seats for children are available"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"then": "Trolleys with a flatbed are available"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"then": "Vertical trolleys for sheet-like goods are available"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "What kind of special trolleys are available?"
|
||||||
|
},
|
||||||
|
"covered": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "This trolley bay is covered"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "This trolley bay is not covered"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Is this trolley bay covered?"
|
||||||
|
},
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "50 cent coins are accepted"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "1 euro coins are accepted"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "2 euro coins are accepted"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "What coins are accepted for the deposit?"
|
||||||
|
},
|
||||||
|
"deposit": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "A deposit is required for the trolleys"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "No deposit is required for the trolleys"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Is a deposit (e.g. a coin) required for the trolleys?"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Trolley Bay"
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"description": "Library layer with all common units. Units can _only_ be imported from this file.",
|
"description": "Library layer with all common units. Units can _only_ be imported from this file.",
|
||||||
"units": {
|
"units": {
|
||||||
|
|
|
@ -35,16 +35,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"title": "un mupi"
|
"title": "un mupi"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"description": "Se utiliza para carteles publicitarios, letreros de neón, logotipos y carteles en entradas institucionales",
|
|
||||||
"title": "un señal"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"title": "una escultura"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"title": "una pared pintada"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"title": "un mupi sobre la pared"
|
"title": "un mupi sobre la pared"
|
||||||
},
|
},
|
||||||
|
@ -71,6 +61,16 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"title": "un tótem"
|
"title": "un tótem"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"description": "Se utiliza para carteles publicitarios, letreros de neón, logotipos y carteles en entradas institucionales",
|
||||||
|
"title": "un señal"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"title": "una escultura"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"title": "una pared pintada"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tagRenderings": {
|
"tagRenderings": {
|
||||||
|
@ -165,9 +165,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Esto es un tablón de anuncios"
|
"then": "Esto es un tablón de anuncios"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Esto es una pared pintada"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Esto es una columna"
|
"then": "Esto es una columna"
|
||||||
},
|
},
|
||||||
|
@ -191,6 +188,9 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Esto es un tótem"
|
"then": "Esto es un tótem"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Esto es una pared pintada"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿Qué tipo de elemento publicitario es?",
|
"question": "¿Qué tipo de elemento publicitario es?",
|
||||||
|
@ -205,9 +205,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Tablon de anuncios"
|
"then": "Tablon de anuncios"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Pared Pintada"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Mupi"
|
"then": "Mupi"
|
||||||
},
|
},
|
||||||
|
@ -231,6 +228,9 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Tótem"
|
"then": "Tótem"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Pared Pintada"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -353,15 +353,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Mural"
|
"then": "Mural"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Azulejo (Baldosas decorativas Españolas y Portuguesas)"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"then": "Cerámica"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"then": "Tallado en madera"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Pintura"
|
"then": "Pintura"
|
||||||
},
|
},
|
||||||
|
@ -385,6 +376,15 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Relieve"
|
"then": "Relieve"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Azulejo (Baldosas decorativas Españolas y Portuguesas)"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"then": "Cerámica"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"then": "Tallado en madera"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿Qué tipo de obra es esta pieza?",
|
"question": "¿Qué tipo de obra es esta pieza?",
|
||||||
|
@ -1952,12 +1952,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Este carril bici está pavimentado"
|
"then": "Este carril bici está pavimentado"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Este carril bici está hecho de gravilla"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"then": "Este carril bici está hecho de tierra natural"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Este carril bici está hecho de asfalto"
|
"then": "Este carril bici está hecho de asfalto"
|
||||||
},
|
},
|
||||||
|
@ -1972,6 +1966,12 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Este carril bici está hecho de grava"
|
"then": "Este carril bici está hecho de grava"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Este carril bici está hecho de gravilla"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"then": "Este carril bici está hecho de tierra natural"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿De qué superficie está hecho este carril bici?",
|
"question": "¿De qué superficie está hecho este carril bici?",
|
||||||
|
@ -2017,9 +2017,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Este carril bici está pavimentado"
|
"then": "Este carril bici está pavimentado"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Este carril bici está hecho de gravilla"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Este carril bici está hecho de asfalto"
|
"then": "Este carril bici está hecho de asfalto"
|
||||||
},
|
},
|
||||||
|
@ -2031,6 +2028,9 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Este carril bici está hecho de grava"
|
"then": "Este carril bici está hecho de grava"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Este carril bici está hecho de gravilla"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿De qué esta hecha la superficie de esta calle?",
|
"question": "¿De qué esta hecha la superficie de esta calle?",
|
||||||
|
@ -2672,18 +2672,6 @@
|
||||||
"0": {
|
"0": {
|
||||||
"then": "Esto es una pizzería"
|
"then": "Esto es una pizzería"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Aquí se sirven platos Chinos"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"then": "Aquí se sirven platos Griegos"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"then": "Aquí se sirven platos Indios"
|
|
||||||
},
|
|
||||||
"13": {
|
|
||||||
"then": "Aquí se sirven platos Turcos"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Principalmente sirve pasta"
|
"then": "Principalmente sirve pasta"
|
||||||
},
|
},
|
||||||
|
@ -2704,6 +2692,18 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Aquí se sirven platos Franceses"
|
"then": "Aquí se sirven platos Franceses"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Aquí se sirven platos Chinos"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"then": "Aquí se sirven platos Griegos"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"then": "Aquí se sirven platos Indios"
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"then": "Aquí se sirven platos Turcos"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿Qué tipo de comida sirven aquí?",
|
"question": "¿Qué tipo de comida sirven aquí?",
|
||||||
|
@ -3095,19 +3095,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"options": {
|
|
||||||
"0": {
|
|
||||||
"question": "Todas las notas"
|
|
||||||
},
|
|
||||||
"1": {
|
|
||||||
"question": "Ocultar las notas de importación"
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"question": "Solo mostrar las notas de importación"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"options": {
|
"options": {
|
||||||
"0": {
|
"0": {
|
||||||
|
@ -3163,6 +3150,19 @@
|
||||||
"question": "Solo mostrar las notas abiertas"
|
"question": "Solo mostrar las notas abiertas"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"options": {
|
||||||
|
"0": {
|
||||||
|
"question": "Todas las notas"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"question": "Ocultar las notas de importación"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"question": "Solo mostrar las notas de importación"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"name": "Notas de OpenStreetMap",
|
"name": "Notas de OpenStreetMap",
|
||||||
|
@ -3772,6 +3772,24 @@
|
||||||
"1": {
|
"1": {
|
||||||
"question": "Reciclaje de baterías"
|
"question": "Reciclaje de baterías"
|
||||||
},
|
},
|
||||||
|
"3": {
|
||||||
|
"question": "Reciclaje de latas"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"question": "Reciclaje de ropa"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"question": "Reciclaje de aceite de cocina"
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"question": "Reciclaje de aceite de motor"
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"question": "Reciclaje de residuos orgánicos"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"question": "Reciclaje de botellas de cristal"
|
||||||
|
},
|
||||||
"10": {
|
"10": {
|
||||||
"question": "Reciclaje de cristal"
|
"question": "Reciclaje de cristal"
|
||||||
},
|
},
|
||||||
|
@ -3798,24 +3816,6 @@
|
||||||
},
|
},
|
||||||
"18": {
|
"18": {
|
||||||
"question": "Reciclaje de pequeños electrodomésticos"
|
"question": "Reciclaje de pequeños electrodomésticos"
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"question": "Reciclaje de latas"
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"question": "Reciclaje de ropa"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"question": "Reciclaje de aceite de cocina"
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"question": "Reciclaje de aceite de motor"
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"question": "Reciclaje de residuos orgánicos"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"question": "Reciclaje de botellas de cristal"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3858,6 +3858,27 @@
|
||||||
"0": {
|
"0": {
|
||||||
"then": "Aquí se pueden reciclar baterías"
|
"then": "Aquí se pueden reciclar baterías"
|
||||||
},
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Aquí se pueden reciclar latas"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"then": "Aquí se puede reciclar ropa"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"then": "Aquí se puede reciclar aceite de cocina"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"then": "Aquí se puede reciclar aceite de motor"
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"then": "Los residuos orgánicos pueden reciclarse aquí"
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"then": "Aquí se pueden reciclar residuos orgánicos"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"then": "Aquí se pueden reciclar botellas de cristal"
|
||||||
|
},
|
||||||
"10": {
|
"10": {
|
||||||
"then": "Aquí se puede reciclar cristal"
|
"then": "Aquí se puede reciclar cristal"
|
||||||
},
|
},
|
||||||
|
@ -3884,27 +3905,6 @@
|
||||||
},
|
},
|
||||||
"19": {
|
"19": {
|
||||||
"then": "El calzado se puede reciclar aquí"
|
"then": "El calzado se puede reciclar aquí"
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"then": "Aquí se pueden reciclar latas"
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"then": "Aquí se puede reciclar ropa"
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"then": "Aquí se puede reciclar aceite de cocina"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"then": "Aquí se puede reciclar aceite de motor"
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"then": "Los residuos orgánicos pueden reciclarse aquí"
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"then": "Aquí se pueden reciclar residuos orgánicos"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"then": "Aquí se pueden reciclar botellas de cristal"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿Qué se puede reciclar aquí?"
|
"question": "¿Qué se puede reciclar aquí?"
|
||||||
|
@ -4225,12 +4225,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Esta lámpara utiliza LEDs"
|
"then": "Esta lámpara utiliza LEDs"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Esta lámpara utiliza lámparas de sodio de alta presión (naranja con blanco)"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"then": "Esta lampara se ilumina con gas"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Esta lámpara utiliza iluminación incandescente"
|
"then": "Esta lámpara utiliza iluminación incandescente"
|
||||||
},
|
},
|
||||||
|
@ -4251,6 +4245,12 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Esta lámpara utiliza lámparas de sodio de baja presión (naranja monocromo)"
|
"then": "Esta lámpara utiliza lámparas de sodio de baja presión (naranja monocromo)"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Esta lámpara utiliza lámparas de sodio de alta presión (naranja con blanco)"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"then": "Esta lampara se ilumina con gas"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "¿Qué tipo de iluminación utiliza esta lámpara?"
|
"question": "¿Qué tipo de iluminación utiliza esta lámpara?"
|
||||||
|
@ -4712,6 +4712,23 @@
|
||||||
"render": "Árbol"
|
"render": "Árbol"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Se aceptan monedas de 50 céntimos"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Se aceptan monedas de 1 euro"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Se aceptan monedas de 2 euros"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"3": {
|
"3": {
|
||||||
|
|
|
@ -6278,6 +6278,23 @@
|
||||||
"render": "Arbre"
|
"render": "Arbre"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Les pièces de 50 cents sont acceptées"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Les pièces de 1 euro sont acceptées"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Les pièces de 2 euros sont acceptées"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"0": {
|
"0": {
|
||||||
|
|
|
@ -54,9 +54,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Mural"
|
"then": "Mural"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Azulejo (ubin dekoratif Spanyol)"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Lukisan"
|
"then": "Lukisan"
|
||||||
},
|
},
|
||||||
|
@ -74,6 +71,9 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Relief"
|
"then": "Relief"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Azulejo (ubin dekoratif Spanyol)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "Apa jenis karya seni ini?",
|
"question": "Apa jenis karya seni ini?",
|
||||||
|
@ -191,15 +191,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Jalur sepeda ini diaspal"
|
"then": "Jalur sepeda ini diaspal"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Jalur sepeda ini terbuat dari kerikil halus"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"then": "Jalur sepeda ini terbuat dari batu kerikil"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"then": "Jalur sepeda ini terbuat dari tanah alami"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Jalur sepeda ini terbuat dari aspal"
|
"then": "Jalur sepeda ini terbuat dari aspal"
|
||||||
},
|
},
|
||||||
|
@ -220,6 +211,15 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Jalur sepeda ini terbuat dari kerikil"
|
"then": "Jalur sepeda ini terbuat dari kerikil"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Jalur sepeda ini terbuat dari kerikil halus"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"then": "Jalur sepeda ini terbuat dari batu kerikil"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"then": "Jalur sepeda ini terbuat dari tanah alami"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "Permukaan jalannya terbuat dari apa?",
|
"question": "Permukaan jalannya terbuat dari apa?",
|
||||||
|
@ -733,6 +733,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Koin 50 sen diterima"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"0": {
|
"0": {
|
||||||
|
|
|
@ -35,16 +35,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"title": "un cartellone pubblicitario fissato a terra"
|
"title": "un cartellone pubblicitario fissato a terra"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"description": "Utilizzato per insegna pubblicitaria, un'insegna al neon, i loghi o le indicazioni d'entrata",
|
|
||||||
"title": "un'insegna"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"title": "una scultura"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"title": "un murales"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"title": "un cartellone pubblicitario fissato al muro"
|
"title": "un cartellone pubblicitario fissato al muro"
|
||||||
},
|
},
|
||||||
|
@ -71,6 +61,16 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"title": "un totem"
|
"title": "un totem"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"description": "Utilizzato per insegna pubblicitaria, un'insegna al neon, i loghi o le indicazioni d'entrata",
|
||||||
|
"title": "un'insegna"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"title": "una scultura"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"title": "un murales"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tagRenderings": {
|
"tagRenderings": {
|
||||||
|
@ -153,15 +153,6 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Murale"
|
"then": "Murale"
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"then": "Azulejo (ornamento decorativo piastrellato spagnolo)"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"then": "Mosaico di piastrelle"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"then": "Scultura in legno"
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"then": "Dipinto"
|
"then": "Dipinto"
|
||||||
},
|
},
|
||||||
|
@ -185,6 +176,15 @@
|
||||||
},
|
},
|
||||||
"9": {
|
"9": {
|
||||||
"then": "Rilievo"
|
"then": "Rilievo"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"then": "Azulejo (ornamento decorativo piastrellato spagnolo)"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"then": "Mosaico di piastrelle"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"then": "Scultura in legno"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "Che tipo di opera d’arte è questo?",
|
"question": "Che tipo di opera d’arte è questo?",
|
||||||
|
@ -2129,6 +2129,27 @@
|
||||||
"1": {
|
"1": {
|
||||||
"question": "Riciclo di batterie"
|
"question": "Riciclo di batterie"
|
||||||
},
|
},
|
||||||
|
"2": {
|
||||||
|
"question": "Riciclo di confezioni per bevande"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"question": "Riciclo di lattine"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"question": "Riciclo di abiti"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"question": "Riciclo di olio da cucina"
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"question": "Riciclo di olio da motore"
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"question": "Riciclo di umido"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"question": "Riciclo di bottiglie di vetro"
|
||||||
|
},
|
||||||
"10": {
|
"10": {
|
||||||
"question": "Riciclo di vetro"
|
"question": "Riciclo di vetro"
|
||||||
},
|
},
|
||||||
|
@ -2156,29 +2177,8 @@
|
||||||
"19": {
|
"19": {
|
||||||
"question": "Riciclo di secco"
|
"question": "Riciclo di secco"
|
||||||
},
|
},
|
||||||
"2": {
|
|
||||||
"question": "Riciclo di confezioni per bevande"
|
|
||||||
},
|
|
||||||
"20": {
|
"20": {
|
||||||
"question": "Riciclo di secco"
|
"question": "Riciclo di secco"
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"question": "Riciclo di lattine"
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"question": "Riciclo di abiti"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"question": "Riciclo di olio da cucina"
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"question": "Riciclo di olio da motore"
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"question": "Riciclo di umido"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"question": "Riciclo di bottiglie di vetro"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2231,6 +2231,27 @@
|
||||||
"1": {
|
"1": {
|
||||||
"then": "Cartoni per bevande"
|
"then": "Cartoni per bevande"
|
||||||
},
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Lattine"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"then": "Abiti"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"then": "Olio da cucina"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"then": "Olio di motore"
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"then": "Verde"
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"then": "Umido"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"then": "Bottiglie di vetro"
|
||||||
|
},
|
||||||
"10": {
|
"10": {
|
||||||
"then": "Vetro"
|
"then": "Vetro"
|
||||||
},
|
},
|
||||||
|
@ -2255,9 +2276,6 @@
|
||||||
"19": {
|
"19": {
|
||||||
"then": "Scarpe"
|
"then": "Scarpe"
|
||||||
},
|
},
|
||||||
"2": {
|
|
||||||
"then": "Lattine"
|
|
||||||
},
|
|
||||||
"20": {
|
"20": {
|
||||||
"then": "Piccoli elettrodomestici"
|
"then": "Piccoli elettrodomestici"
|
||||||
},
|
},
|
||||||
|
@ -2269,24 +2287,6 @@
|
||||||
},
|
},
|
||||||
"23": {
|
"23": {
|
||||||
"then": "Secco"
|
"then": "Secco"
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"then": "Abiti"
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"then": "Olio da cucina"
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"then": "Olio di motore"
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"then": "Verde"
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"then": "Umido"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"then": "Bottiglie di vetro"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"question": "Cosa si può riciclare qui?"
|
"question": "Cosa si può riciclare qui?"
|
||||||
|
|
|
@ -802,6 +802,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "50-cent mynter aksepteres"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "1-euro mynter aksepteres"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "2-euro mynter aksepteres"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"0": {
|
"0": {
|
||||||
|
|
|
@ -5770,6 +5770,9 @@
|
||||||
"mappings": {
|
"mappings": {
|
||||||
"0": {
|
"0": {
|
||||||
"then": "Parkeerplek voor gehandicapten"
|
"then": "Parkeerplek voor gehandicapten"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Parkeerplek voor opladen van elektrische voertuigen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"render": "Parkeerplek"
|
"render": "Parkeerplek"
|
||||||
|
@ -7954,6 +7957,48 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tagRenderings": {
|
"tagRenderings": {
|
||||||
|
"gender_segregated": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Er zijn aparte ruimtes of toiletten voor mannen en vrouwen"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Mannen en vrouwen gebruiken dezelfde ruimtes en toiletten"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Zijn deze toiletten gescheiden op basis van geslacht?",
|
||||||
|
"questionHint": "Is er een aparte ruimte voor mannen en vrouwen en zijn deze ruimtes ook expliciet aangegeven?"
|
||||||
|
},
|
||||||
|
"menstrual_products": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Er zijn gratis menstruatieprocten beschikbaar voor alle bezoekers van deze toiletten"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "De gratis menstruatieproducten zijn enkel beschikbaar in een deel van de toiletten"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Er zijn geen gratis menstruatieproducten beschikbaar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Zijn er gratis menstruatieproducten beschikbaar?",
|
||||||
|
"questionHint": "Dit gaat enkel over menstruatieproducten die gratis geschikbaar zijn. Indien er bv. een verkoopautomaat met menstruatieproducten is, negeer deze dan"
|
||||||
|
},
|
||||||
|
"menstrual_products_location": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "De gratis menstruatieproducten bevinden zich in het vrouwentoilet"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "De gratis menstruatieproducten bevinden zich in het mannentoilet"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "De gratis menstruatieproducten bevinden zich in het rolstoeltoegankelijke toilet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"question": "Waar bevinden de gratis menstruatieproducten zich?",
|
||||||
|
"render": "De menstruatieproducten bevinden zich in {toilets:menstrual_products:location}"
|
||||||
|
},
|
||||||
"opening_hours_24_7": {
|
"opening_hours_24_7": {
|
||||||
"override": {
|
"override": {
|
||||||
"question": "Wanneer zijn deze toiletten open?"
|
"question": "Wanneer zijn deze toiletten open?"
|
||||||
|
@ -8499,6 +8544,23 @@
|
||||||
"render": "Boom"
|
"render": "Boom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Munten van 50 cent worden geaccepteerd"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Munten van 1 euro worden geaccepteerd"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Munten van 2 euro worden geaccepteerd"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"0": {
|
"0": {
|
||||||
|
|
|
@ -2633,6 +2633,23 @@
|
||||||
"render": "Szkoła <i>{name}</i>"
|
"render": "Szkoła <i>{name}</i>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trolley_bay": {
|
||||||
|
"tagRenderings": {
|
||||||
|
"denominations": {
|
||||||
|
"mappings": {
|
||||||
|
"0": {
|
||||||
|
"then": "Akceptowane są monety 50-centowe"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"then": "Akceptowane są monety 1 euro"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"then": "Akceptowane są monety 2 euro"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"units": {
|
"units": {
|
||||||
"3": {
|
"3": {
|
||||||
|
|
|
@ -922,13 +922,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"options": {
|
|
||||||
"0": {
|
|
||||||
"question": "Etymologie-Thema ausschließen"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"options": {
|
"options": {
|
||||||
"0": {
|
"0": {
|
||||||
|
@ -984,6 +977,13 @@
|
||||||
"question": "GRB-Thema ausschließen"
|
"question": "GRB-Thema ausschließen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"options": {
|
||||||
|
"0": {
|
||||||
|
"question": "Etymologie-Thema ausschließen"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"name": "Zentrum der Änderungssätze",
|
"name": "Zentrum der Änderungssätze",
|
||||||
|
@ -1060,33 +1060,6 @@
|
||||||
"onwheels": {
|
"onwheels": {
|
||||||
"description": "Auf dieser Karte können Sie öffentlich zugängliche Orte für Rollstuhlfahrer ansehen, bearbeiten oder hinzufügen",
|
"description": "Auf dieser Karte können Sie öffentlich zugängliche Orte für Rollstuhlfahrer ansehen, bearbeiten oder hinzufügen",
|
||||||
"layers": {
|
"layers": {
|
||||||
"19": {
|
|
||||||
"override": {
|
|
||||||
"=title": {
|
|
||||||
"render": "Statistik"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"20": {
|
|
||||||
"override": {
|
|
||||||
"+tagRenderings": {
|
|
||||||
"0": {
|
|
||||||
"render": {
|
|
||||||
"special": {
|
|
||||||
"text": "Import"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"1": {
|
|
||||||
"render": {
|
|
||||||
"special": {
|
|
||||||
"message": "Alle vorgeschlagenen Tags hinzufügen"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"4": {
|
"4": {
|
||||||
"override": {
|
"override": {
|
||||||
"filter": {
|
"filter": {
|
||||||
|
@ -1129,6 +1102,33 @@
|
||||||
"override": {
|
"override": {
|
||||||
"name": "Barrierefreie Parkplätze"
|
"name": "Barrierefreie Parkplätze"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"override": {
|
||||||
|
"=title": {
|
||||||
|
"render": "Statistik"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"override": {
|
||||||
|
"+tagRenderings": {
|
||||||
|
"0": {
|
||||||
|
"render": {
|
||||||
|
"special": {
|
||||||
|
"text": "Import"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"render": {
|
||||||
|
"special": {
|
||||||
|
"message": "Alle vorgeschlagenen Tags hinzufügen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Auf Rädern"
|
"title": "Auf Rädern"
|
||||||
|
@ -1344,6 +1344,10 @@
|
||||||
"stations": {
|
"stations": {
|
||||||
"description": "Bahnhofsdetails ansehen, bearbeiten und hinzufügen",
|
"description": "Bahnhofsdetails ansehen, bearbeiten und hinzufügen",
|
||||||
"layers": {
|
"layers": {
|
||||||
|
"3": {
|
||||||
|
"description": "Ebene mit Bahnhöfen",
|
||||||
|
"name": "Bahnhöfe"
|
||||||
|
},
|
||||||
"16": {
|
"16": {
|
||||||
"description": "Anzeigen der Züge, die von diesem Bahnhof abfahren",
|
"description": "Anzeigen der Züge, die von diesem Bahnhof abfahren",
|
||||||
"name": "Abfahrtstafeln",
|
"name": "Abfahrtstafeln",
|
||||||
|
@ -1375,10 +1379,6 @@
|
||||||
"title": {
|
"title": {
|
||||||
"render": "Abfahrtstafel"
|
"render": "Abfahrtstafel"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"description": "Ebene mit Bahnhöfen",
|
|
||||||
"name": "Bahnhöfe"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Bahnhöfe"
|
"title": "Bahnhöfe"
|
||||||
|
|
|
@ -922,13 +922,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"10": {
|
|
||||||
"options": {
|
|
||||||
"0": {
|
|
||||||
"question": "Excluir el tema de la etimología"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2": {
|
"2": {
|
||||||
"options": {
|
"options": {
|
||||||
"0": {
|
"0": {
|
||||||
|
@ -984,6 +977,13 @@
|
||||||
"question": "Excluir el tema del GRB"
|
"question": "Excluir el tema del GRB"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"options": {
|
||||||
|
"0": {
|
||||||
|
"question": "Excluir el tema de la etimología"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"name": "Centro del conjunto de cambios",
|
"name": "Centro del conjunto de cambios",
|
||||||
|
@ -1060,33 +1060,6 @@
|
||||||
"onwheels": {
|
"onwheels": {
|
||||||
"description": "En este mapa se muestran los lugares accesibles al público en silla de ruedas, que pueden añadirse fácilmente",
|
"description": "En este mapa se muestran los lugares accesibles al público en silla de ruedas, que pueden añadirse fácilmente",
|
||||||
"layers": {
|
"layers": {
|
||||||
"19": {
|
|
||||||
"override": {
|
|
||||||
"=title": {
|
|
||||||
"render": "Estadísticas"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"20": {
|
|
||||||
"override": {
|
|
||||||
"+tagRenderings": {
|
|
||||||
"0": {
|
|
||||||
"render": {
|
|
||||||
"special": {
|
|
||||||
"text": "Importar"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"1": {
|
|
||||||
"render": {
|
|
||||||
"special": {
|
|
||||||
"message": "Añadir todas las etiquetas sugeridas"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"4": {
|
"4": {
|
||||||
"override": {
|
"override": {
|
||||||
"filter": {
|
"filter": {
|
||||||
|
@ -1129,6 +1102,33 @@
|
||||||
"override": {
|
"override": {
|
||||||
"name": "Plazas de aparcamiento para discapacitados"
|
"name": "Plazas de aparcamiento para discapacitados"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"override": {
|
||||||
|
"=title": {
|
||||||
|
"render": "Estadísticas"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"override": {
|
||||||
|
"+tagRenderings": {
|
||||||
|
"0": {
|
||||||
|
"render": {
|
||||||
|
"special": {
|
||||||
|
"text": "Importar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"render": {
|
||||||
|
"special": {
|
||||||
|
"message": "Añadir todas las etiquetas sugeridas"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Sobre ruedas"
|
"title": "Sobre ruedas"
|
||||||
|
@ -1344,6 +1344,10 @@
|
||||||
"stations": {
|
"stations": {
|
||||||
"description": "Ver, editar y añadir detalles a una estación de tren",
|
"description": "Ver, editar y añadir detalles a una estación de tren",
|
||||||
"layers": {
|
"layers": {
|
||||||
|
"3": {
|
||||||
|
"description": "Capa que muestra las estaciones de tren",
|
||||||
|
"name": "Estación de Tren"
|
||||||
|
},
|
||||||
"16": {
|
"16": {
|
||||||
"description": "Pantallas que muestran los trenes que saldrán de esta estación",
|
"description": "Pantallas que muestran los trenes que saldrán de esta estación",
|
||||||
"name": "Tableros de salidas",
|
"name": "Tableros de salidas",
|
||||||
|
@ -1375,10 +1379,6 @@
|
||||||
"title": {
|
"title": {
|
||||||
"render": "Tablero de salidas"
|
"render": "Tablero de salidas"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"description": "Capa que muestra las estaciones de tren",
|
|
||||||
"name": "Estación de Tren"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Estaciones de tren"
|
"title": "Estaciones de tren"
|
||||||
|
|
16
package-lock.json
generated
16
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "mapcomplete",
|
"name": "mapcomplete",
|
||||||
"version": "0.37.0",
|
"version": "0.38.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "mapcomplete",
|
"name": "mapcomplete",
|
||||||
"version": "0.37.0",
|
"version": "0.38.0",
|
||||||
"license": "GPL-3.0-or-later",
|
"license": "GPL-3.0-or-later",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rgossiaux/svelte-headlessui": "^1.0.2",
|
"@rgossiaux/svelte-headlessui": "^1.0.2",
|
||||||
|
@ -5343,9 +5343,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001579",
|
"version": "1.0.30001588",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz",
|
||||||
"integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
|
"integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -17656,9 +17656,9 @@
|
||||||
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
|
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001579",
|
"version": "1.0.30001588",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz",
|
||||||
"integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
|
"integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"canvg": {
|
"canvg": {
|
||||||
|
|
|
@ -205,7 +205,7 @@ function extractHintsFrom(
|
||||||
layers: AllSharedLayers.sharedLayers,
|
layers: AllSharedLayers.sharedLayers,
|
||||||
themes: AllKnownLayouts.allKnownLayouts,
|
themes: AllKnownLayouts.allKnownLayouts,
|
||||||
validators: Validators,
|
validators: Validators,
|
||||||
Constants: Constants
|
Constants: Constants,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return hints
|
return hints
|
||||||
|
|
|
@ -289,7 +289,13 @@ async function generateCsp(
|
||||||
apiUrls.push(...(sv.needsUrls ?? []))
|
apiUrls.push(...(sv.needsUrls ?? []))
|
||||||
})
|
})
|
||||||
|
|
||||||
const usedSpecialVisualisations = [].concat(...layoutJson.layers.map(l => ValidationUtils.getAllSpecialVisualisations(<QuestionableTagRenderingConfigJson[]> (<LayerConfigJson>l).tagRenderings ?? [])))
|
const usedSpecialVisualisations = [].concat(
|
||||||
|
...layoutJson.layers.map((l) =>
|
||||||
|
ValidationUtils.getAllSpecialVisualisations(
|
||||||
|
<QuestionableTagRenderingConfigJson[]>(<LayerConfigJson>l).tagRenderings ?? []
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
for (const usedSpecialVisualisation of usedSpecialVisualisations) {
|
for (const usedSpecialVisualisation of usedSpecialVisualisations) {
|
||||||
if (typeof usedSpecialVisualisation === "string") {
|
if (typeof usedSpecialVisualisation === "string") {
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -5,16 +5,30 @@ import { GeoOperations } from "../../src/Logic/GeoOperations"
|
||||||
import * as os from "os"
|
import * as os from "os"
|
||||||
// vite-node scripts/velopark/compare.ts -- scripts/velopark/velopark_all_2024-02-14T12\:18\:41.772Z.geojson ~/Projecten/OSM/Fietsberaad/2024-02-02\ Fietsenstallingen_OSM_met_velopark_ref.geojson
|
// vite-node scripts/velopark/compare.ts -- scripts/velopark/velopark_all_2024-02-14T12\:18\:41.772Z.geojson ~/Projecten/OSM/Fietsberaad/2024-02-02\ Fietsenstallingen_OSM_met_velopark_ref.geojson
|
||||||
class Compare extends Script {
|
class Compare extends Script {
|
||||||
|
compare(
|
||||||
compare(veloId: string, osmParking: Feature, veloParking: Feature): {distance: number, ref: string, osmid: string, diffs: {
|
veloId: string,
|
||||||
osm: string, velopark: string, key: string
|
osmParking: Feature,
|
||||||
}[] }{
|
veloParking: Feature
|
||||||
|
): {
|
||||||
|
distance: number
|
||||||
|
ref: string
|
||||||
|
osmid: string
|
||||||
|
diffs: {
|
||||||
|
osm: string
|
||||||
|
velopark: string
|
||||||
|
key: string
|
||||||
|
}[]
|
||||||
|
} {
|
||||||
const osmCenterpoint = GeoOperations.centerpointCoordinates(osmParking)
|
const osmCenterpoint = GeoOperations.centerpointCoordinates(osmParking)
|
||||||
const veloparkCenterpoint = GeoOperations.centerpointCoordinates(veloParking)
|
const veloparkCenterpoint = GeoOperations.centerpointCoordinates(veloParking)
|
||||||
const distance = Math.round(GeoOperations.distanceBetween(osmCenterpoint, veloparkCenterpoint))
|
const distance = Math.round(
|
||||||
const diffs: { osm: string, velopark: string, key: string}[] = []
|
GeoOperations.distanceBetween(osmCenterpoint, veloparkCenterpoint)
|
||||||
|
)
|
||||||
|
const diffs: { osm: string; velopark: string; key: string }[] = []
|
||||||
|
|
||||||
const allKeys = new Set<string>(Object.keys(osmParking.properties).concat(Object.keys(veloParking.properties)))
|
const allKeys = new Set<string>(
|
||||||
|
Object.keys(osmParking.properties).concat(Object.keys(veloParking.properties))
|
||||||
|
)
|
||||||
for (const key of allKeys) {
|
for (const key of allKeys) {
|
||||||
if (osmParking.properties[key] === veloParking.properties[key]) {
|
if (osmParking.properties[key] === veloParking.properties[key]) {
|
||||||
continue
|
continue
|
||||||
|
@ -28,13 +42,14 @@ class Compare extends Script {
|
||||||
diffs.push({
|
diffs.push({
|
||||||
key,
|
key,
|
||||||
osm: osmParking.properties[key],
|
osm: osmParking.properties[key],
|
||||||
velopark: veloParking.properties[key]
|
velopark: veloParking.properties[key],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
ref: veloId,
|
ref: veloId,
|
||||||
osmid: osmParking.properties["@id"],
|
osmid: osmParking.properties["@id"],
|
||||||
distance, diffs
|
distance,
|
||||||
|
diffs,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async main(args: string[]): Promise<void> {
|
async main(args: string[]): Promise<void> {
|
||||||
|
@ -60,13 +75,12 @@ class Compare extends Script {
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.writeFileSync("report_diff.json", JSON.stringify(diffs))
|
fs.writeFileSync("report_diff.json", JSON.stringify(diffs))
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
constructor() {
|
constructor() {
|
||||||
super("Compares a velopark geojson with OSM geojson. Usage: `compare velopark.geojson osm.geojson [key-to-compare-on]`. If key-to-compare-on is not given, `ref:velopark` will be used")
|
super(
|
||||||
|
"Compares a velopark geojson with OSM geojson. Usage: `compare velopark.geojson osm.geojson [key-to-compare-on]`. If key-to-compare-on is not given, `ref:velopark` will be used"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
new Compare().run()
|
new Compare().run()
|
||||||
|
|
|
@ -45,12 +45,7 @@ export default class LayoutSource extends FeatureSourceMerger {
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
const overpassSource = LayoutSource.setupOverpass(
|
const overpassSource = LayoutSource.setupOverpass(osmLayers, bounds, zoom, featureSwitches)
|
||||||
osmLayers,
|
|
||||||
bounds,
|
|
||||||
zoom,
|
|
||||||
featureSwitches
|
|
||||||
)
|
|
||||||
|
|
||||||
const osmApiSource = LayoutSource.setupOsmApiSource(
|
const osmApiSource = LayoutSource.setupOsmApiSource(
|
||||||
osmLayers,
|
osmLayers,
|
||||||
|
|
|
@ -156,7 +156,7 @@ export class GeoOperations {
|
||||||
const intersection = GeoOperations.calculateIntersection(
|
const intersection = GeoOperations.calculateIntersection(
|
||||||
feature,
|
feature,
|
||||||
otherFeature,
|
otherFeature,
|
||||||
featureBBox,
|
featureBBox
|
||||||
)
|
)
|
||||||
if (intersection === null) {
|
if (intersection === null) {
|
||||||
continue
|
continue
|
||||||
|
@ -195,7 +195,7 @@ export class GeoOperations {
|
||||||
console.error(
|
console.error(
|
||||||
"Could not correctly calculate the overlap of ",
|
"Could not correctly calculate the overlap of ",
|
||||||
feature,
|
feature,
|
||||||
": unsupported type",
|
": unsupported type"
|
||||||
)
|
)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ export class GeoOperations {
|
||||||
*/
|
*/
|
||||||
public static inside(
|
public static inside(
|
||||||
pointCoordinate: [number, number] | Feature<Point>,
|
pointCoordinate: [number, number] | Feature<Point>,
|
||||||
feature: Feature,
|
feature: Feature
|
||||||
): boolean {
|
): boolean {
|
||||||
// ray-casting algorithm based on
|
// ray-casting algorithm based on
|
||||||
// http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
|
// http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
|
||||||
|
@ -302,7 +302,7 @@ export class GeoOperations {
|
||||||
*/
|
*/
|
||||||
public static nearestPoint(
|
public static nearestPoint(
|
||||||
way: Feature<LineString>,
|
way: Feature<LineString>,
|
||||||
point: [number, number],
|
point: [number, number]
|
||||||
): Feature<
|
): Feature<
|
||||||
Point,
|
Point,
|
||||||
{
|
{
|
||||||
|
@ -324,11 +324,11 @@ export class GeoOperations {
|
||||||
public static forceLineString(way: Feature<LineString | Polygon>): Feature<LineString>
|
public static forceLineString(way: Feature<LineString | Polygon>): Feature<LineString>
|
||||||
|
|
||||||
public static forceLineString(
|
public static forceLineString(
|
||||||
way: Feature<MultiLineString | MultiPolygon>,
|
way: Feature<MultiLineString | MultiPolygon>
|
||||||
): Feature<MultiLineString>
|
): Feature<MultiLineString>
|
||||||
|
|
||||||
public static forceLineString(
|
public static forceLineString(
|
||||||
way: Feature<LineString | MultiLineString | Polygon | MultiPolygon>,
|
way: Feature<LineString | MultiLineString | Polygon | MultiPolygon>
|
||||||
): Feature<LineString | MultiLineString> {
|
): Feature<LineString | MultiLineString> {
|
||||||
if (way.geometry.type === "Polygon") {
|
if (way.geometry.type === "Polygon") {
|
||||||
way = { ...way }
|
way = { ...way }
|
||||||
|
@ -345,9 +345,12 @@ export class GeoOperations {
|
||||||
return <any>way
|
return <any>way
|
||||||
}
|
}
|
||||||
|
|
||||||
public static toCSV(features: Feature[] | FeatureCollection, options?: {
|
public static toCSV(
|
||||||
|
features: Feature[] | FeatureCollection,
|
||||||
|
options?: {
|
||||||
ignoreTags?: RegExp
|
ignoreTags?: RegExp
|
||||||
}): string {
|
}
|
||||||
|
): string {
|
||||||
const headerValuesSeen = new Set<string>()
|
const headerValuesSeen = new Set<string>()
|
||||||
const headerValuesOrdered: string[] = []
|
const headerValuesOrdered: string[] = []
|
||||||
|
|
||||||
|
@ -455,7 +458,7 @@ export class GeoOperations {
|
||||||
*/
|
*/
|
||||||
public static LineIntersections(
|
public static LineIntersections(
|
||||||
feature: Feature<LineString | MultiLineString | Polygon | MultiPolygon>,
|
feature: Feature<LineString | MultiLineString | Polygon | MultiPolygon>,
|
||||||
otherFeature: Feature<LineString | MultiLineString | Polygon | MultiPolygon>,
|
otherFeature: Feature<LineString | MultiLineString | Polygon | MultiPolygon>
|
||||||
): [number, number][] {
|
): [number, number][] {
|
||||||
return turf
|
return turf
|
||||||
.lineIntersect(feature, otherFeature)
|
.lineIntersect(feature, otherFeature)
|
||||||
|
@ -492,7 +495,7 @@ export class GeoOperations {
|
||||||
locations:
|
locations:
|
||||||
| Feature<LineString>
|
| Feature<LineString>
|
||||||
| Feature<Point, { date?: string; altitude?: number | string }>[],
|
| Feature<Point, { date?: string; altitude?: number | string }>[],
|
||||||
title?: string,
|
title?: string
|
||||||
) {
|
) {
|
||||||
title = title?.trim()
|
title = title?.trim()
|
||||||
if (title === undefined || title === "") {
|
if (title === undefined || title === "") {
|
||||||
|
@ -513,7 +516,7 @@ export class GeoOperations {
|
||||||
type: "Point",
|
type: "Point",
|
||||||
coordinates: p,
|
coordinates: p,
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
for (const l of locationsWithMeta) {
|
for (const l of locationsWithMeta) {
|
||||||
|
@ -528,7 +531,7 @@ export class GeoOperations {
|
||||||
trackPoints.push(trkpt)
|
trackPoints.push(trkpt)
|
||||||
}
|
}
|
||||||
const header =
|
const header =
|
||||||
"<gpx version=\"1.1\" creator=\"mapcomplete.org\" xmlns=\"http://www.topografix.com/GPX/1/1\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">"
|
'<gpx version="1.1" creator="mapcomplete.org" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">'
|
||||||
return (
|
return (
|
||||||
header +
|
header +
|
||||||
"\n<name>" +
|
"\n<name>" +
|
||||||
|
@ -546,7 +549,7 @@ export class GeoOperations {
|
||||||
*/
|
*/
|
||||||
public static toGpxPoints(
|
public static toGpxPoints(
|
||||||
locations: Feature<Point, { date?: string; altitude?: number | string }>[],
|
locations: Feature<Point, { date?: string; altitude?: number | string }>[],
|
||||||
title?: string,
|
title?: string
|
||||||
) {
|
) {
|
||||||
title = title?.trim()
|
title = title?.trim()
|
||||||
if (title === undefined || title === "") {
|
if (title === undefined || title === "") {
|
||||||
|
@ -567,7 +570,7 @@ export class GeoOperations {
|
||||||
trackPoints.push(trkpt)
|
trackPoints.push(trkpt)
|
||||||
}
|
}
|
||||||
const header =
|
const header =
|
||||||
"<gpx version=\"1.1\" creator=\"mapcomplete.org\" xmlns=\"http://www.topografix.com/GPX/1/1\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">"
|
'<gpx version="1.1" creator="mapcomplete.org" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">'
|
||||||
return (
|
return (
|
||||||
header +
|
header +
|
||||||
"\n<name>" +
|
"\n<name>" +
|
||||||
|
@ -655,7 +658,7 @@ export class GeoOperations {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
distanceMeter,
|
distanceMeter,
|
||||||
{ units: "meters" },
|
{ units: "meters" }
|
||||||
).geometry.coordinates
|
).geometry.coordinates
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,7 +693,7 @@ export class GeoOperations {
|
||||||
*/
|
*/
|
||||||
static completelyWithin(
|
static completelyWithin(
|
||||||
feature: Feature<Geometry, any>,
|
feature: Feature<Geometry, any>,
|
||||||
possiblyEnclosingFeature: Feature<Polygon | MultiPolygon, any>,
|
possiblyEnclosingFeature: Feature<Polygon | MultiPolygon, any>
|
||||||
): boolean {
|
): boolean {
|
||||||
return booleanWithin(feature, possiblyEnclosingFeature)
|
return booleanWithin(feature, possiblyEnclosingFeature)
|
||||||
}
|
}
|
||||||
|
@ -746,7 +749,14 @@ export class GeoOperations {
|
||||||
*/
|
*/
|
||||||
public static featureToCoordinateWithRenderingType(
|
public static featureToCoordinateWithRenderingType(
|
||||||
feature: Feature,
|
feature: Feature,
|
||||||
location: "point" | "centroid" | "start" | "end" | "projected_centerpoint" | "polygon_centerpoint" | string,
|
location:
|
||||||
|
| "point"
|
||||||
|
| "centroid"
|
||||||
|
| "start"
|
||||||
|
| "end"
|
||||||
|
| "projected_centerpoint"
|
||||||
|
| "polygon_centerpoint"
|
||||||
|
| string
|
||||||
): [number, number] | undefined {
|
): [number, number] | undefined {
|
||||||
switch (location) {
|
switch (location) {
|
||||||
case "point":
|
case "point":
|
||||||
|
@ -772,7 +782,7 @@ export class GeoOperations {
|
||||||
const centerpoint = GeoOperations.centerpointCoordinates(feature)
|
const centerpoint = GeoOperations.centerpointCoordinates(feature)
|
||||||
const projected = GeoOperations.nearestPoint(
|
const projected = GeoOperations.nearestPoint(
|
||||||
<Feature<LineString>>feature,
|
<Feature<LineString>>feature,
|
||||||
centerpoint,
|
centerpoint
|
||||||
)
|
)
|
||||||
return <[number, number]>projected.geometry.coordinates
|
return <[number, number]>projected.geometry.coordinates
|
||||||
}
|
}
|
||||||
|
@ -949,7 +959,7 @@ export class GeoOperations {
|
||||||
* GeoOperations.bearingToHuman(46) // => "NE"
|
* GeoOperations.bearingToHuman(46) // => "NE"
|
||||||
*/
|
*/
|
||||||
public static bearingToHuman(
|
public static bearingToHuman(
|
||||||
bearing: number,
|
bearing: number
|
||||||
): "N" | "NE" | "E" | "SE" | "S" | "SW" | "W" | "NW" {
|
): "N" | "NE" | "E" | "SE" | "S" | "SW" | "W" | "NW" {
|
||||||
while (bearing < 0) {
|
while (bearing < 0) {
|
||||||
bearing += 360
|
bearing += 360
|
||||||
|
@ -975,7 +985,7 @@ export class GeoOperations {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static bearingToHumanRelative(
|
public static bearingToHumanRelative(
|
||||||
bearing: number,
|
bearing: number
|
||||||
):
|
):
|
||||||
| "straight"
|
| "straight"
|
||||||
| "slight_right"
|
| "slight_right"
|
||||||
|
@ -1000,12 +1010,12 @@ export class GeoOperations {
|
||||||
private static pointInPolygonCoordinates(
|
private static pointInPolygonCoordinates(
|
||||||
x: number,
|
x: number,
|
||||||
y: number,
|
y: number,
|
||||||
coordinates: [number, number][][],
|
coordinates: [number, number][][]
|
||||||
): boolean {
|
): boolean {
|
||||||
const inside = GeoOperations.pointWithinRing(
|
const inside = GeoOperations.pointWithinRing(
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
/*This is the outer ring of the polygon */ coordinates[0],
|
/*This is the outer ring of the polygon */ coordinates[0]
|
||||||
)
|
)
|
||||||
if (!inside) {
|
if (!inside) {
|
||||||
return false
|
return false
|
||||||
|
@ -1014,7 +1024,7 @@ export class GeoOperations {
|
||||||
const inHole = GeoOperations.pointWithinRing(
|
const inHole = GeoOperations.pointWithinRing(
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
coordinates[i], /* These are inner rings, aka holes*/
|
coordinates[i] /* These are inner rings, aka holes*/
|
||||||
)
|
)
|
||||||
if (inHole) {
|
if (inHole) {
|
||||||
return false
|
return false
|
||||||
|
@ -1052,7 +1062,7 @@ export class GeoOperations {
|
||||||
feature,
|
feature,
|
||||||
otherFeature,
|
otherFeature,
|
||||||
featureBBox: BBox,
|
featureBBox: BBox,
|
||||||
otherFeatureBBox?: BBox,
|
otherFeatureBBox?: BBox
|
||||||
): number {
|
): number {
|
||||||
if (feature.geometry.type === "LineString") {
|
if (feature.geometry.type === "LineString") {
|
||||||
otherFeatureBBox = otherFeatureBBox ?? BBox.get(otherFeature)
|
otherFeatureBBox = otherFeatureBBox ?? BBox.get(otherFeature)
|
||||||
|
@ -1101,7 +1111,7 @@ export class GeoOperations {
|
||||||
let intersection = turf.lineSlice(
|
let intersection = turf.lineSlice(
|
||||||
turf.point(intersectionPointsArray[0]),
|
turf.point(intersectionPointsArray[0]),
|
||||||
turf.point(intersectionPointsArray[1]),
|
turf.point(intersectionPointsArray[1]),
|
||||||
feature,
|
feature
|
||||||
)
|
)
|
||||||
|
|
||||||
if (intersection == null) {
|
if (intersection == null) {
|
||||||
|
@ -1122,7 +1132,7 @@ export class GeoOperations {
|
||||||
otherFeature,
|
otherFeature,
|
||||||
feature,
|
feature,
|
||||||
otherFeatureBBox,
|
otherFeatureBBox,
|
||||||
featureBBox,
|
featureBBox
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1142,7 +1152,7 @@ export class GeoOperations {
|
||||||
console.log("Applying fallback intersection...")
|
console.log("Applying fallback intersection...")
|
||||||
const intersection = turf.intersect(
|
const intersection = turf.intersect(
|
||||||
turf.truncate(feature),
|
turf.truncate(feature),
|
||||||
turf.truncate(otherFeature),
|
turf.truncate(otherFeature)
|
||||||
)
|
)
|
||||||
if (intersection == null) {
|
if (intersection == null) {
|
||||||
return null
|
return null
|
||||||
|
|
|
@ -364,7 +364,7 @@ export default class UserRelatedState {
|
||||||
[translationMode]
|
[translationMode]
|
||||||
)
|
)
|
||||||
|
|
||||||
this.mangroveIdentity.getKeyId().addCallbackAndRun(kid => {
|
this.mangroveIdentity.getKeyId().addCallbackAndRun((kid) => {
|
||||||
amendedPrefs.data["mangrove_kid"] = kid
|
amendedPrefs.data["mangrove_kid"] = kid
|
||||||
amendedPrefs.ping()
|
amendedPrefs.ping()
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,11 +4,39 @@ export class ThemeMetaTagging {
|
||||||
public static readonly themeName = "usersettings"
|
public static readonly themeName = "usersettings"
|
||||||
|
|
||||||
public metaTaggging_for_usersettings(feat: { properties: Record<string, string> }) {
|
public metaTaggging_for_usersettings(feat: { properties: Record<string, string> }) {
|
||||||
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_md', () => feat.properties._description.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)?.at(1) )
|
Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_md", () =>
|
||||||
Utils.AddLazyProperty(feat.properties, '_d', () => feat.properties._description?.replace(/</g,'<')?.replace(/>/g,'>') ?? '' )
|
feat.properties._description
|
||||||
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_a', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.href.match(/mastodon|en.osm.town/) !== null)[0]?.href }) (feat) )
|
.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)
|
||||||
Utils.AddLazyProperty(feat.properties, '_mastodon_link', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.getAttribute("rel")?.indexOf('me') >= 0)[0]?.href})(feat) )
|
?.at(1)
|
||||||
Utils.AddLazyProperty(feat.properties, '_mastodon_candidate', () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a )
|
)
|
||||||
feat.properties['__current_backgroun'] = 'initial_value'
|
Utils.AddLazyProperty(
|
||||||
|
feat.properties,
|
||||||
|
"_d",
|
||||||
|
() => feat.properties._description?.replace(/</g, "<")?.replace(/>/g, ">") ?? ""
|
||||||
|
)
|
||||||
|
Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_a", () =>
|
||||||
|
((feat) => {
|
||||||
|
const e = document.createElement("div")
|
||||||
|
e.innerHTML = feat.properties._d
|
||||||
|
return Array.from(e.getElementsByTagName("a")).filter(
|
||||||
|
(a) => a.href.match(/mastodon|en.osm.town/) !== null
|
||||||
|
)[0]?.href
|
||||||
|
})(feat)
|
||||||
|
)
|
||||||
|
Utils.AddLazyProperty(feat.properties, "_mastodon_link", () =>
|
||||||
|
((feat) => {
|
||||||
|
const e = document.createElement("div")
|
||||||
|
e.innerHTML = feat.properties._d
|
||||||
|
return Array.from(e.getElementsByTagName("a")).filter(
|
||||||
|
(a) => a.getAttribute("rel")?.indexOf("me") >= 0
|
||||||
|
)[0]?.href
|
||||||
|
})(feat)
|
||||||
|
)
|
||||||
|
Utils.AddLazyProperty(
|
||||||
|
feat.properties,
|
||||||
|
"_mastodon_candidate",
|
||||||
|
() => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a
|
||||||
|
)
|
||||||
|
feat.properties["__current_backgroun"] = "initial_value"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -432,6 +432,6 @@ export class And extends TagsFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
asMapboxExpression(): ExpressionSpecification {
|
asMapboxExpression(): ExpressionSpecification {
|
||||||
return ["all", ...this.and.map(t => t.asMapboxExpression())]
|
return ["all", ...this.and.map((t) => t.asMapboxExpression())]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ export default class ComparingTag implements TagsFilter {
|
||||||
key: string,
|
key: string,
|
||||||
predicate: (value: string | undefined) => boolean,
|
predicate: (value: string | undefined) => boolean,
|
||||||
representation: "<" | ">" | "<=" | ">=",
|
representation: "<" | ">" | "<=" | ">=",
|
||||||
boundary: string,
|
boundary: string
|
||||||
) {
|
) {
|
||||||
this._key = key
|
this._key = key
|
||||||
this._predicate = predicate
|
this._predicate = predicate
|
||||||
|
|
|
@ -291,6 +291,6 @@ export class Or extends TagsFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
asMapboxExpression(): ExpressionSpecification {
|
asMapboxExpression(): ExpressionSpecification {
|
||||||
return ["any", ...this.or.map(t => t.asMapboxExpression())]
|
return ["any", ...this.or.map((t) => t.asMapboxExpression())]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ export class Tag extends TagsFilter {
|
||||||
asOverpass(): string[] {
|
asOverpass(): string[] {
|
||||||
if (this.value === "") {
|
if (this.value === "") {
|
||||||
// NOT having this key
|
// NOT having this key
|
||||||
return ["[!\"" + this.key + "\"]"]
|
return ['[!"' + this.key + '"]']
|
||||||
}
|
}
|
||||||
return [`["${this.key}"="${this.value}"]`]
|
return [`["${this.key}"="${this.value}"]`]
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ export class Tag extends TagsFilter {
|
||||||
asHumanString(
|
asHumanString(
|
||||||
linkToWiki?: boolean,
|
linkToWiki?: boolean,
|
||||||
shorten?: boolean,
|
shorten?: boolean,
|
||||||
currentProperties?: Record<string, string>,
|
currentProperties?: Record<string, string>
|
||||||
) {
|
) {
|
||||||
let v = this.value
|
let v = this.value
|
||||||
if (typeof v !== "string") {
|
if (typeof v !== "string") {
|
||||||
|
@ -170,12 +170,7 @@ export class Tag extends TagsFilter {
|
||||||
|
|
||||||
asMapboxExpression(): ExpressionSpecification {
|
asMapboxExpression(): ExpressionSpecification {
|
||||||
if (this.value === "") {
|
if (this.value === "") {
|
||||||
return [
|
return ["any", ["!", ["has", this.key]], ["==", ["get", this.key], ""]]
|
||||||
"any",
|
|
||||||
["!", ["has", this.key]],
|
|
||||||
["==", ["get", this.key], ""],
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return ["==", ["get", this.key], this.value]
|
return ["==", ["get", this.key], this.value]
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,6 @@ export class MangroveIdentity {
|
||||||
const pem = await MangroveReviews.publicToPem(keypair.publicKey)
|
const pem = await MangroveReviews.publicToPem(keypair.publicKey)
|
||||||
key_id.setData(pem)
|
key_id.setData(pem)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -66,33 +64,36 @@ export class MangroveIdentity {
|
||||||
return this.key_id
|
return this.key_id
|
||||||
}
|
}
|
||||||
|
|
||||||
private allReviewsById : UIEventSource<(Review & {kid: string, signature: string})[]>= undefined
|
private allReviewsById: UIEventSource<(Review & { kid: string; signature: string })[]> =
|
||||||
|
undefined
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all reviews that are made for the current identity.
|
* Gets all reviews that are made for the current identity.
|
||||||
*/
|
*/
|
||||||
public getAllReviews(): Store<(Review & {kid: string, signature: string})[]>{
|
public getAllReviews(): Store<(Review & { kid: string; signature: string })[]> {
|
||||||
if (this.allReviewsById !== undefined) {
|
if (this.allReviewsById !== undefined) {
|
||||||
return this.allReviewsById
|
return this.allReviewsById
|
||||||
}
|
}
|
||||||
this.allReviewsById = new UIEventSource([])
|
this.allReviewsById = new UIEventSource([])
|
||||||
this.key_id.map(pem => {
|
this.key_id.map((pem) => {
|
||||||
if (pem === undefined) {
|
if (pem === undefined) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
MangroveReviews.getReviews({
|
MangroveReviews.getReviews({
|
||||||
kid: pem
|
kid: pem,
|
||||||
}).then(allReviews => {
|
}).then((allReviews) => {
|
||||||
this.allReviewsById.setData(allReviews.reviews.map(r => ({
|
this.allReviewsById.setData(
|
||||||
...r, ...r.payload
|
allReviews.reviews.map((r) => ({
|
||||||
})))
|
...r,
|
||||||
|
...r.payload,
|
||||||
|
}))
|
||||||
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
return this.allReviewsById
|
return this.allReviewsById
|
||||||
}
|
}
|
||||||
|
|
||||||
addReview(review: Review & {kid, signature}) {
|
addReview(review: Review & { kid; signature }) {
|
||||||
this.allReviewsById?.setData(this.allReviewsById?.data?.concat([review]))
|
this.allReviewsById?.setData(this.allReviewsById?.data?.concat([review]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -225,8 +226,15 @@ export default class FeatureReviews {
|
||||||
* The given review is uploaded to mangrove.reviews and added to the list of known reviews
|
* The given review is uploaded to mangrove.reviews and added to the list of known reviews
|
||||||
*/
|
*/
|
||||||
public async createReview(review: Omit<Review, "sub">): Promise<void> {
|
public async createReview(review: Omit<Review, "sub">): Promise<void> {
|
||||||
if(review.opinion !== undefined && review.opinion.length > FeatureReviews .REVIEW_OPINION_MAX_LENGTH){
|
if (
|
||||||
throw "Opinion too long, should be at most "+FeatureReviews.REVIEW_OPINION_MAX_LENGTH+" characters long"
|
review.opinion !== undefined &&
|
||||||
|
review.opinion.length > FeatureReviews.REVIEW_OPINION_MAX_LENGTH
|
||||||
|
) {
|
||||||
|
throw (
|
||||||
|
"Opinion too long, should be at most " +
|
||||||
|
FeatureReviews.REVIEW_OPINION_MAX_LENGTH +
|
||||||
|
" characters long"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
const r: Review = {
|
const r: Review = {
|
||||||
sub: this.subjectUri.data,
|
sub: this.subjectUri.data,
|
||||||
|
@ -247,8 +255,6 @@ export default class FeatureReviews {
|
||||||
this._identity.addReview(reviewWithKid)
|
this._identity.addReview(reviewWithKid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds given reviews to the 'reviews'-UI-eventsource
|
* Adds given reviews to the 'reviews'-UI-eventsource
|
||||||
* @param reviews
|
* @param reviews
|
||||||
|
|
|
@ -52,7 +52,9 @@ export class AvailableRasterLayers {
|
||||||
type: "Feature",
|
type: "Feature",
|
||||||
properties: {
|
properties: {
|
||||||
name: "MapTiler",
|
name: "MapTiler",
|
||||||
url: "https://api.maptiler.com/maps/15cc8f61-0353-4be6-b8da-13daea5f7432/style.json?key="+Constants.maptilerApiKey,
|
url:
|
||||||
|
"https://api.maptiler.com/maps/15cc8f61-0353-4be6-b8da-13daea5f7432/style.json?key=" +
|
||||||
|
Constants.maptilerApiKey,
|
||||||
category: "osmbasedmap",
|
category: "osmbasedmap",
|
||||||
id: "maptiler",
|
id: "maptiler",
|
||||||
type: "vector",
|
type: "vector",
|
||||||
|
|
|
@ -574,16 +574,30 @@ class PostvalidateTheme extends DesugaringStep<LayoutConfigJson> {
|
||||||
if (layer["name"] === null) {
|
if (layer["name"] === null) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
const sameBasedOn = <LayerConfigJson[]> json.layers.filter(l => l["_basedOn"] === layer["_basedOn"] && l["id"] !== layer.id)
|
const sameBasedOn = <LayerConfigJson[]>(
|
||||||
const minZoomAll = Math.min(...sameBasedOn.map(sbo => sbo.minzoom))
|
json.layers.filter(
|
||||||
|
(l) => l["_basedOn"] === layer["_basedOn"] && l["id"] !== layer.id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
const minZoomAll = Math.min(...sameBasedOn.map((sbo) => sbo.minzoom))
|
||||||
|
|
||||||
const sameNameDetected = sameBasedOn.some( same => JSON.stringify(layer["name"]) === JSON.stringify(same["name"]))
|
const sameNameDetected = sameBasedOn.some(
|
||||||
|
(same) => JSON.stringify(layer["name"]) === JSON.stringify(same["name"])
|
||||||
|
)
|
||||||
if (!sameNameDetected) {
|
if (!sameNameDetected) {
|
||||||
// The name is unique, so it'll won't be confusing
|
// The name is unique, so it'll won't be confusing
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (minZoomAll < layer.minzoom) {
|
if (minZoomAll < layer.minzoom) {
|
||||||
context.err("There are multiple layers based on "+basedOn+". The layer with id "+layer.id+" has a minzoom of "+layer.minzoom+", and has a name set. Another similar layer has a lower minzoom. As such, the layer selection might show 'zoom in to see features' even though some of the features are already visible. Set `\"name\": null` for this layer and eventually remove the 'name':null for the other layer.")
|
context.err(
|
||||||
|
"There are multiple layers based on " +
|
||||||
|
basedOn +
|
||||||
|
". The layer with id " +
|
||||||
|
layer.id +
|
||||||
|
" has a minzoom of " +
|
||||||
|
layer.minzoom +
|
||||||
|
", and has a name set. Another similar layer has a lower minzoom. As such, the layer selection might show 'zoom in to see features' even though some of the features are already visible. Set `\"name\": null` for this layer and eventually remove the 'name':null for the other layer."
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -908,7 +908,11 @@ class MiscTagRenderingChecks extends DesugaringStep<TagRenderingConfigJson> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (json.icon?.["size"]) {
|
if (json.icon?.["size"]) {
|
||||||
context.enters("icon","size").err("size is not a valid attribute. Did you mean 'class'? Class can be one of `small`, `medium` or `large`")
|
context
|
||||||
|
.enters("icon", "size")
|
||||||
|
.err(
|
||||||
|
"size is not a valid attribute. Did you mean 'class'? Class can be one of `small`, `medium` or `large`"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (json.freeform) {
|
if (json.freeform) {
|
||||||
|
|
|
@ -82,5 +82,5 @@ export default interface LineRenderingConfigJson {
|
||||||
* suggestions: [{if: "./assets/png/oneway.png", then: "Show a oneway error"}]
|
* suggestions: [{if: "./assets/png/oneway.png", then: "Show a oneway error"}]
|
||||||
* type: image
|
* type: image
|
||||||
*/
|
*/
|
||||||
imageAlongWay?: {if: TagConfigJson, then: string}[] | string
|
imageAlongWay?: { if: TagConfigJson; then: string }[] | string
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,15 @@ export default interface PointRenderingConfigJson {
|
||||||
* multianswer: true
|
* 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. Does not show an item on polygons"}, ,{if: "value=polygon_centroid",then: "Show an icon at a polygon centroid (but not if it is a way)"}]
|
* 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. Does not show an item on polygons"}, ,{if: "value=polygon_centroid",then: "Show an icon at a polygon centroid (but not if it is a way)"}]
|
||||||
*/
|
*/
|
||||||
location: ("point" | "centroid" | "start" | "end" | "projected_centerpoint" | "polygon_centroid" | string)[]
|
location: (
|
||||||
|
| "point"
|
||||||
|
| "centroid"
|
||||||
|
| "start"
|
||||||
|
| "end"
|
||||||
|
| "projected_centerpoint"
|
||||||
|
| "polygon_centroid"
|
||||||
|
| string
|
||||||
|
)[]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The marker for an element.
|
* The marker for an element.
|
||||||
|
|
|
@ -13,7 +13,7 @@ export default class LineRenderingConfig extends WithContextLoader {
|
||||||
public readonly fill: TagRenderingConfig
|
public readonly fill: TagRenderingConfig
|
||||||
public readonly fillColor: TagRenderingConfig
|
public readonly fillColor: TagRenderingConfig
|
||||||
public readonly leftRightSensitive: boolean
|
public readonly leftRightSensitive: boolean
|
||||||
public readonly imageAlongWay: { if?: TagsFilter, then: string }[]
|
public readonly imageAlongWay: { if?: TagsFilter; then: string }[]
|
||||||
|
|
||||||
constructor(json: LineRenderingConfigJson, context: string) {
|
constructor(json: LineRenderingConfigJson, context: string) {
|
||||||
super(json, context)
|
super(json, context)
|
||||||
|
@ -36,12 +36,10 @@ export default class LineRenderingConfig extends WithContextLoader {
|
||||||
if (!imgAlong.then.endsWith(".png")) {
|
if (!imgAlong.then.endsWith(".png")) {
|
||||||
throw "An imageAlongWay should always be a PNG image"
|
throw "An imageAlongWay should always be a PNG image"
|
||||||
}
|
}
|
||||||
this.imageAlongWay.push(
|
this.imageAlongWay.push({
|
||||||
{
|
|
||||||
if: TagUtils.Tag(imgAlong.if, ctx),
|
if: TagUtils.Tag(imgAlong.if, ctx),
|
||||||
then: imgAlong.then,
|
then: imgAlong.then,
|
||||||
},
|
})
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,10 +38,16 @@ export default class PointRenderingConfig extends WithContextLoader {
|
||||||
"start",
|
"start",
|
||||||
"end",
|
"end",
|
||||||
"projected_centerpoint",
|
"projected_centerpoint",
|
||||||
"polygon_centroid"
|
"polygon_centroid",
|
||||||
])
|
])
|
||||||
public readonly location: Set<
|
public readonly location: Set<
|
||||||
"point" | "centroid" | "start" | "end" | "projected_centerpoint" | "polygon_centroid" | string
|
| "point"
|
||||||
|
| "centroid"
|
||||||
|
| "start"
|
||||||
|
| "end"
|
||||||
|
| "projected_centerpoint"
|
||||||
|
| "polygon_centroid"
|
||||||
|
| string
|
||||||
>
|
>
|
||||||
|
|
||||||
public readonly marker: IconConfig[]
|
public readonly marker: IconConfig[]
|
||||||
|
|
|
@ -56,7 +56,11 @@
|
||||||
.filter((key) => key.startsWith(prefix))
|
.filter((key) => key.startsWith(prefix))
|
||||||
.map((key) => key.substring(prefix.length, key.length - "-enabled".length))
|
.map((key) => key.substring(prefix.length, key.length - "-enabled".length))
|
||||||
)
|
)
|
||||||
return hiddenThemes.filter((theme) => knownIds.has(theme.id) || state.osmConnection.userDetails.data.name === "Pieter Vander Vennet")
|
return hiddenThemes.filter(
|
||||||
|
(theme) =>
|
||||||
|
knownIds.has(theme.id) ||
|
||||||
|
state.osmConnection.userDetails.data.name === "Pieter Vander Vennet"
|
||||||
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -132,7 +132,10 @@
|
||||||
so we use a 'div' and add on:click manually
|
so we use a 'div' and add on:click manually
|
||||||
-->
|
-->
|
||||||
<div
|
<div
|
||||||
class={twMerge("soft relative flex justify-center items-center border border-black rounded-full cursor-pointer p-1", size)}
|
class={twMerge(
|
||||||
|
"soft relative flex cursor-pointer items-center justify-center rounded-full border border-black p-1",
|
||||||
|
size
|
||||||
|
)}
|
||||||
on:click={() => focusMap()}
|
on:click={() => focusMap()}
|
||||||
use:ariaLabelStore={label}
|
use:ariaLabelStore={label}
|
||||||
>
|
>
|
||||||
|
@ -140,13 +143,13 @@
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<div
|
<div
|
||||||
class={twMerge("soft relative rounded-full border-black border", size)}
|
class={twMerge("soft relative rounded-full border border-black", size)}
|
||||||
on:click={() => focusMap()}
|
on:click={() => focusMap()}
|
||||||
use:ariaLabelStore={label}
|
use:ariaLabelStore={label}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class={twMerge(
|
class={twMerge(
|
||||||
"absolute top-0 left-0 flex items-center justify-center break-words text-xs cursor-pointer",
|
"absolute top-0 left-0 flex cursor-pointer items-center justify-center break-words text-xs",
|
||||||
size
|
size
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
|
|
|
@ -16,7 +16,10 @@
|
||||||
if (e.target["id"] == id) {
|
if (e.target["id"] == id) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if(formElement.contains(e.target) || document.getElementsByClassName("selected-element-view")[0]?.contains(e.target)){
|
if (
|
||||||
|
formElement.contains(e.target) ||
|
||||||
|
document.getElementsByClassName("selected-element-view")[0]?.contains(e.target)
|
||||||
|
) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
|
|
||||||
if (e.type === "drop") {
|
if (e.type === "drop") {
|
||||||
|
@ -50,7 +53,6 @@
|
||||||
window.removeEventListener("dragover", handleDragEvent)
|
window.removeEventListener("dragover", handleDragEvent)
|
||||||
window.removeEventListener("drop", handleDragEvent)
|
window.removeEventListener("drop", handleDragEvent)
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<form
|
<form
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
style="z-index: 21"
|
style="z-index: 21"
|
||||||
use:trapFocus
|
use:trapFocus
|
||||||
>
|
>
|
||||||
<div class="h-full content normal-background" on:click|stopPropagation={() => {}}>
|
<div class="content normal-background h-full" on:click|stopPropagation={() => {}}>
|
||||||
<div class="h-full rounded-xl">
|
<div class="h-full rounded-xl">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<button class={clss} on:click={() => osmConnection.AttemptLogin()} style="margin-left: 0">
|
<button class={clss} on:click={() => osmConnection.AttemptLogin()} style="margin-left: 0">
|
||||||
<Login class="w-12 m-1" />
|
<Login class="m-1 w-12" />
|
||||||
<slot>
|
<slot>
|
||||||
<Tr t={Translations.t.general.loginWithOpenStreetMap} />
|
<Tr t={Translations.t.general.loginWithOpenStreetMap} />
|
||||||
</slot>
|
</slot>
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<h5>{t.noMatchingThemes.toString()}</h5>
|
<h5>{t.noMatchingThemes.toString()}</h5>
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<button on:click={() => search.setData("")}>
|
<button on:click={() => search.setData("")}>
|
||||||
<Search_disable class="w-6 mr-2" />
|
<Search_disable class="mr-2 w-6" />
|
||||||
<Tr t={t.noSearch} />
|
<Tr t={t.noSearch} />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
let result = await Geocoding.reverse(
|
let result = await Geocoding.reverse(
|
||||||
mapProperties.location.data,
|
mapProperties.location.data,
|
||||||
mapProperties.zoom.data,
|
mapProperties.zoom.data,
|
||||||
Locale.language.data,
|
Locale.language.data
|
||||||
)
|
)
|
||||||
let properties = result.features[0].properties
|
let properties = result.features[0].properties
|
||||||
currentLocation = properties.display_name
|
currentLocation = properties.display_name
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
() => {
|
() => {
|
||||||
displayLocation()
|
displayLocation()
|
||||||
},
|
},
|
||||||
[Translations.t.hotkeyDocumentation.shakePhone],
|
[Translations.t.hotkeyDocumentation.shakePhone]
|
||||||
)
|
)
|
||||||
|
|
||||||
Motion.singleton.startListening()
|
Motion.singleton.startListening()
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
export let layer: LayerConfig
|
export let layer: LayerConfig
|
||||||
export let selectedElement: Feature
|
export let selectedElement: Feature
|
||||||
let tags: UIEventSource<Record<string, string>> = state.featureProperties.getStore(
|
let tags: UIEventSource<Record<string, string>> = state.featureProperties.getStore(
|
||||||
selectedElement.properties.id,
|
selectedElement.properties.id
|
||||||
)
|
)
|
||||||
$: {
|
$: {
|
||||||
tags = state.featureProperties.getStore(selectedElement.properties.id)
|
tags = state.featureProperties.getStore(selectedElement.properties.id)
|
||||||
|
@ -25,9 +25,9 @@
|
||||||
{#if $tags._deleted === "yes"}
|
{#if $tags._deleted === "yes"}
|
||||||
<Tr t={Translations.t.delete.isDeleted} />
|
<Tr t={Translations.t.delete.isDeleted} />
|
||||||
{:else}
|
{:else}
|
||||||
<div class="low-interaction border-b-2 border-black px-3 drop-shadow-md flex">
|
<div class="low-interaction flex border-b-2 border-black px-3 drop-shadow-md">
|
||||||
<div class="h-fit overflow-auto w-full sm:p-2" style="max-height: 20vh;">
|
<div class="h-fit w-full overflow-auto sm:p-2" style="max-height: 20vh;">
|
||||||
<div class="flex flex-col flex-grow w-full h-full ">
|
<div class="flex h-full w-full flex-grow flex-col">
|
||||||
<!-- Title element and title icons-->
|
<!-- Title element and title icons-->
|
||||||
<h3 class="m-0">
|
<h3 class="m-0">
|
||||||
<a href={`#${$tags.id}`}>
|
<a href={`#${$tags.id}`}>
|
||||||
|
@ -59,12 +59,11 @@
|
||||||
<button
|
<button
|
||||||
on:click={() => state.selectedElement.setData(undefined)}
|
on:click={() => state.selectedElement.setData(undefined)}
|
||||||
use:ariaLabel={Translations.t.general.backToMap}
|
use:ariaLabel={Translations.t.general.backToMap}
|
||||||
class="rounded-full border-none p-0 shrink-0 h-fit mt-2"
|
class="mt-2 h-fit shrink-0 rounded-full border-none p-0"
|
||||||
style="border: 0 !important; padding: 0 !important;"
|
style="border: 0 !important; padding: 0 !important;"
|
||||||
>
|
>
|
||||||
<XCircleIcon aria-hidden={true} class="h-8 w-8" />
|
<XCircleIcon aria-hidden={true} class="h-8 w-8" />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,10 @@
|
||||||
<Tr t={Translations.t.general.returnToTheMap} />
|
<Tr t={Translations.t.general.returnToTheMap} />
|
||||||
</button>
|
</button>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex h-full flex-col gap-y-2 overflow-y-auto p-1 px-4 w-full selected-element-view" tabindex="-1">
|
<div
|
||||||
|
class="selected-element-view flex h-full w-full flex-col gap-y-2 overflow-y-auto p-1 px-4"
|
||||||
|
tabindex="-1"
|
||||||
|
>
|
||||||
{#each $knownTagRenderings as config (config.id)}
|
{#each $knownTagRenderings as config (config.id)}
|
||||||
<TagRenderingEditable
|
<TagRenderingEditable
|
||||||
{tags}
|
{tags}
|
||||||
|
|
|
@ -25,9 +25,10 @@
|
||||||
whenUploaded?: () => void | Promise<void>
|
whenUploaded?: () => void | Promise<void>
|
||||||
} = undefined
|
} = undefined
|
||||||
|
|
||||||
|
|
||||||
let t = Translations.t.general.uploadGpx
|
let t = Translations.t.general.uploadGpx
|
||||||
let currentStep = new UIEventSource<"init" | "please_confirm" | "uploading" | "done" | "error">("init")
|
let currentStep = new UIEventSource<"init" | "please_confirm" | "uploading" | "done" | "error">(
|
||||||
|
"init"
|
||||||
|
)
|
||||||
|
|
||||||
let traceVisibilities: {
|
let traceVisibilities: {
|
||||||
key: "private" | "public"
|
key: "private" | "public"
|
||||||
|
@ -44,8 +45,9 @@
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
let gpxServerIsOnline: Store<boolean> = state.osmConnection.gpxServiceIsOnline.map((serviceState) => serviceState === "online")
|
let gpxServerIsOnline: Store<boolean> = state.osmConnection.gpxServiceIsOnline.map(
|
||||||
|
(serviceState) => serviceState === "online"
|
||||||
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* More or less the same as the coalescing-operator '??', except that it checks for empty strings too
|
* More or less the same as the coalescing-operator '??', except that it checks for empty strings too
|
||||||
|
@ -63,18 +65,17 @@
|
||||||
let title: string = undefined
|
let title: string = undefined
|
||||||
let description: string = undefined
|
let description: string = undefined
|
||||||
|
|
||||||
let visibility = <UIEventSource<"public" | "private">>state?.osmConnection?.GetPreference("gps.trace.visibility") ?? new UIEventSource<"public" | "private">("private")
|
let visibility =
|
||||||
|
<UIEventSource<"public" | "private">>(
|
||||||
|
state?.osmConnection?.GetPreference("gps.trace.visibility")
|
||||||
|
) ?? new UIEventSource<"public" | "private">("private")
|
||||||
async function uploadTrace() {
|
async function uploadTrace() {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
currentStep.setData("uploading")
|
currentStep.setData("uploading")
|
||||||
const titleStr = createDefault(
|
const titleStr = createDefault(title, "Track with mapcomplete")
|
||||||
title,
|
|
||||||
"Track with mapcomplete",
|
|
||||||
)
|
|
||||||
const descriptionStr = createDefault(
|
const descriptionStr = createDefault(
|
||||||
description,
|
description,
|
||||||
"Track created with MapComplete with theme " + state?.layout?.id,
|
"Track created with MapComplete with theme " + state?.layout?.id
|
||||||
)
|
)
|
||||||
await state?.osmConnection?.uploadGpxTrack(trace(titleStr), {
|
await state?.osmConnection?.uploadGpxTrack(trace(titleStr), {
|
||||||
visibility: visibility.data ?? "private",
|
visibility: visibility.data ?? "private",
|
||||||
|
@ -95,47 +96,58 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<LoginToggle {state}>
|
<LoginToggle {state}>
|
||||||
|
|
||||||
{#if !$gpxServerIsOnline}
|
{#if !$gpxServerIsOnline}
|
||||||
<div class="flex border alert items-center">
|
<div class="alert flex items-center border">
|
||||||
<Invalid class="w-8 h-8 m-2" />
|
<Invalid class="m-2 h-8 w-8" />
|
||||||
<Tr t={t.gpxServiceOffline} cls="p-2" />
|
<Tr t={t.gpxServiceOffline} cls="p-2" />
|
||||||
</div>
|
</div>
|
||||||
{:else if $currentStep === "error"}
|
{:else if $currentStep === "error"}
|
||||||
<div class="alert flex w-full gap-x-2">
|
<div class="alert flex w-full gap-x-2">
|
||||||
<Invalid class="w-8 h-8"/>
|
<Invalid class="h-8 w-8" />
|
||||||
<Tr t={Translations.t.general.error} />
|
<Tr t={Translations.t.general.error} />
|
||||||
</div>
|
</div>
|
||||||
{:else if $currentStep === "init"}
|
{:else if $currentStep === "init"}
|
||||||
<button class="flex w-full m-0" on:click={() => {currentStep.setData("please_confirm")}}>
|
<button
|
||||||
<Upload class="w-12 h-12" />
|
class="m-0 flex w-full"
|
||||||
|
on:click={() => {
|
||||||
|
currentStep.setData("please_confirm")
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Upload class="h-12 w-12" />
|
||||||
<Tr t={t.title} />
|
<Tr t={t.title} />
|
||||||
</button>
|
</button>
|
||||||
{:else if $currentStep === "please_confirm"}
|
{:else if $currentStep === "please_confirm"}
|
||||||
<form on:submit|preventDefault={() => uploadTrace()}
|
<form
|
||||||
class="flex flex-col border-interactive interactive px-2 gap-y-1">
|
on:submit|preventDefault={() => uploadTrace()}
|
||||||
|
class="border-interactive interactive flex flex-col gap-y-1 px-2"
|
||||||
|
>
|
||||||
<h2>
|
<h2>
|
||||||
<Tr t={t.title} />
|
<Tr t={t.title} />
|
||||||
</h2>
|
</h2>
|
||||||
<Tr t={t.intro0} />
|
<Tr t={t.intro0} />
|
||||||
<Tr t={t.intro1} />
|
<Tr t={t.intro1} />
|
||||||
|
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
<Tr t={t.meta.title} />
|
<Tr t={t.meta.title} />
|
||||||
</h3>
|
</h3>
|
||||||
<Tr t={t.meta.intro} />
|
<Tr t={t.meta.intro} />
|
||||||
<input type="text" use:ariaLabel={t.meta.titlePlaceholder} use:placeholder={t.meta.titlePlaceholder}
|
<input
|
||||||
bind:value={title} />
|
type="text"
|
||||||
|
use:ariaLabel={t.meta.titlePlaceholder}
|
||||||
|
use:placeholder={t.meta.titlePlaceholder}
|
||||||
|
bind:value={title}
|
||||||
|
/>
|
||||||
<Tr t={t.meta.descriptionIntro} />
|
<Tr t={t.meta.descriptionIntro} />
|
||||||
|
|
||||||
<textarea use:ariaLabel={t.meta.descriptionPlaceHolder} use:placeholder={t.meta.descriptionPlaceHolder}
|
<textarea
|
||||||
bind:value={description} />
|
use:ariaLabel={t.meta.descriptionPlaceHolder}
|
||||||
|
use:placeholder={t.meta.descriptionPlaceHolder}
|
||||||
|
bind:value={description}
|
||||||
|
/>
|
||||||
|
|
||||||
<Tr t={t.choosePermission} />
|
<Tr t={t.choosePermission} />
|
||||||
|
|
||||||
{#each traceVisibilities as option}
|
{#each traceVisibilities as option}
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
<input
|
<input
|
||||||
type="radio"
|
type="radio"
|
||||||
|
@ -151,30 +163,25 @@
|
||||||
</label>
|
</label>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
||||||
|
<div class="flex flex-wrap-reverse items-stretch justify-between">
|
||||||
<div class="flex flex-wrap-reverse justify-between items-stretch">
|
<button class="flex w-1/2 flex-grow gap-x-2" on:click={() => currentStep.setData("init")}>
|
||||||
<button class="flex gap-x-2 w-1/2 flex-grow" on:click={() => currentStep.setData("init")}>
|
<Close class="h-8 w-8" />
|
||||||
<Close class="w-8 h-8" />
|
|
||||||
<Tr t={Translations.t.general.cancel} />
|
<Tr t={Translations.t.general.cancel} />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="flex gap-x-2 primary flex-grow" on:click={() => uploadTrace()}>
|
<button class="primary flex flex-grow gap-x-2" on:click={() => uploadTrace()}>
|
||||||
<Upload class="w-8 h-8" />
|
<Upload class="h-8 w-8" />
|
||||||
<Tr t={t.confirm} />
|
<Tr t={t.confirm} />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
{:else if $currentStep === "uploading"}
|
{:else if $currentStep === "uploading"}
|
||||||
<Loading>
|
<Loading>
|
||||||
<Tr t={t.uploading} />
|
<Tr t={t.uploading} />
|
||||||
</Loading>
|
</Loading>
|
||||||
|
|
||||||
|
|
||||||
{:else if $currentStep === "done"}
|
{:else if $currentStep === "done"}
|
||||||
<div class="flex p-2 rounded-xl border-2 subtle-border items-center">
|
<div class="subtle-border flex items-center rounded-xl border-2 p-2">
|
||||||
<Confirm class="w-12 h-12 mr-2" />
|
<Confirm class="mr-2 h-12 w-12" />
|
||||||
<Tr t={t.uploadFinished} />
|
<Tr t={t.uploadFinished} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -33,7 +33,8 @@
|
||||||
{
|
{
|
||||||
theme: state.layout.id,
|
theme: state.layout.id,
|
||||||
changeType: "import",
|
changeType: "import",
|
||||||
})
|
}
|
||||||
|
)
|
||||||
await state.changes.applyChanges(await change.CreateChangeDescriptions())
|
await state.changes.applyChanges(await change.CreateChangeDescriptions())
|
||||||
currentStep = "done"
|
currentStep = "done"
|
||||||
}
|
}
|
||||||
|
@ -54,9 +55,7 @@
|
||||||
{#if !readonly}
|
{#if !readonly}
|
||||||
<td>
|
<td>
|
||||||
{#if currentStep === "init"}
|
{#if currentStep === "init"}
|
||||||
<button class="small" on:click={() => apply(key)}>
|
<button class="small" on:click={() => apply(key)}>Apply</button>
|
||||||
Apply
|
|
||||||
</button>
|
|
||||||
{:else if currentStep === "applying"}
|
{:else if currentStep === "applying"}
|
||||||
<Loading />
|
<Loading />
|
||||||
{:else if currentStep === "done"}
|
{:else if currentStep === "done"}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|
||||||
import LinkableImage from "../Image/LinkableImage.svelte"
|
import LinkableImage from "../Image/LinkableImage.svelte"
|
||||||
import { UIEventSource } from "../../Logic/UIEventSource"
|
import { UIEventSource } from "../../Logic/UIEventSource"
|
||||||
import type { OsmTags } from "../../Models/OsmFeature"
|
import type { OsmTags } from "../../Models/OsmFeature"
|
||||||
|
@ -24,40 +23,40 @@
|
||||||
|
|
||||||
export let readonly = false
|
export let readonly = false
|
||||||
|
|
||||||
let externalKeys: string[] = (Object.keys(externalProperties))
|
let externalKeys: string[] = Object.keys(externalProperties).sort()
|
||||||
.sort()
|
|
||||||
|
|
||||||
const imageKeyRegex = /image|image:[0-9]+/
|
const imageKeyRegex = /image|image:[0-9]+/
|
||||||
console.log("Calculating knwon images")
|
console.log("Calculating knwon images")
|
||||||
let knownImages = new Set(Object.keys(osmProperties).filter(k => k.match(imageKeyRegex))
|
let knownImages = new Set(
|
||||||
.map(k => osmProperties[k]))
|
Object.keys(osmProperties)
|
||||||
|
.filter((k) => k.match(imageKeyRegex))
|
||||||
|
.map((k) => osmProperties[k])
|
||||||
|
)
|
||||||
console.log("Known images are:", knownImages)
|
console.log("Known images are:", knownImages)
|
||||||
let unknownImages = externalKeys.filter(k => k.match(imageKeyRegex))
|
let unknownImages = externalKeys
|
||||||
.map(k => externalProperties[k])
|
.filter((k) => k.match(imageKeyRegex))
|
||||||
.filter(i => !knownImages.has(i))
|
.map((k) => externalProperties[k])
|
||||||
|
.filter((i) => !knownImages.has(i))
|
||||||
|
|
||||||
let propertyKeysExternal = externalKeys.filter(k => k.match(imageKeyRegex) === null)
|
let propertyKeysExternal = externalKeys.filter((k) => k.match(imageKeyRegex) === null)
|
||||||
let missing = propertyKeysExternal.filter(k => osmProperties[k] === undefined)
|
let missing = propertyKeysExternal.filter((k) => osmProperties[k] === undefined)
|
||||||
let same = propertyKeysExternal.filter(key => osmProperties[key] === externalProperties[key])
|
let same = propertyKeysExternal.filter((key) => osmProperties[key] === externalProperties[key])
|
||||||
let different = propertyKeysExternal.filter(key => osmProperties[key] !== undefined && osmProperties[key] !== externalProperties[key])
|
let different = propertyKeysExternal.filter(
|
||||||
|
(key) => osmProperties[key] !== undefined && osmProperties[key] !== externalProperties[key]
|
||||||
|
)
|
||||||
|
|
||||||
let currentStep: "init" | "applying_all" | "all_applied" = "init"
|
let currentStep: "init" | "applying_all" | "all_applied" = "init"
|
||||||
|
|
||||||
async function applyAllMissing() {
|
async function applyAllMissing() {
|
||||||
currentStep = "applying_all"
|
currentStep = "applying_all"
|
||||||
const tagsToApply = missing.map(k => new Tag(k, externalProperties[k]))
|
const tagsToApply = missing.map((k) => new Tag(k, externalProperties[k]))
|
||||||
const change = new ChangeTagAction(
|
const change = new ChangeTagAction(tags.data.id, new And(tagsToApply), tags.data, {
|
||||||
tags.data.id,
|
|
||||||
new And(tagsToApply),
|
|
||||||
tags.data,
|
|
||||||
{
|
|
||||||
theme: state.layout.id,
|
theme: state.layout.id,
|
||||||
changeType: "import",
|
changeType: "import",
|
||||||
})
|
})
|
||||||
await state.changes.applyChanges(await change.CreateChangeDescriptions())
|
await state.changes.applyChanges(await change.CreateChangeDescriptions())
|
||||||
currentStep = "all_applied"
|
currentStep = "all_applied"
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if different.length > 0}
|
{#if different.length > 0}
|
||||||
|
@ -89,7 +88,6 @@
|
||||||
{#each missing as key}
|
{#each missing as key}
|
||||||
<ComparisonAction {key} {state} {tags} {externalProperties} {layer} {feature} {readonly} />
|
<ComparisonAction {key} {state} {tags} {externalProperties} {layer} {feature} {readonly} />
|
||||||
{/each}
|
{/each}
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
{#if !readonly}
|
{#if !readonly}
|
||||||
<button on:click={() => applyAllMissing()}>Apply all missing values</button>
|
<button on:click={() => applyAllMissing()}>Apply all missing values</button>
|
||||||
|
@ -97,16 +95,13 @@
|
||||||
{:else if currentStep === "applying_all"}
|
{:else if currentStep === "applying_all"}
|
||||||
<Loading>Applying all missing values</Loading>
|
<Loading>Applying all missing values</Loading>
|
||||||
{:else if currentStep === "all_applied"}
|
{:else if currentStep === "all_applied"}
|
||||||
<div class="thanks">
|
<div class="thanks">All values are applied</div>
|
||||||
All values are applied
|
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
||||||
{#if unknownImages.length === 0 && missing.length === 0 && different.length === 0}
|
{#if unknownImages.length === 0 && missing.length === 0 && different.length === 0}
|
||||||
<div class="thanks flex items-center gap-x-2 px-2 m-0">
|
<div class="thanks m-0 flex items-center gap-x-2 px-2">
|
||||||
<Party class="w-8 h-8" />
|
<Party class="h-8 w-8" />
|
||||||
All data from Velopark is also included into OpenStreetMap
|
All data from Velopark is also included into OpenStreetMap
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -114,16 +109,18 @@
|
||||||
{#if unknownImages.length > 0}
|
{#if unknownImages.length > 0}
|
||||||
{#if readonly}
|
{#if readonly}
|
||||||
<div class="w-full overflow-x-auto">
|
<div class="w-full overflow-x-auto">
|
||||||
|
<div class="flex h-32 w-max gap-x-2">
|
||||||
<div class="flex w-max gap-x-2 h-32">
|
|
||||||
{#each unknownImages as image}
|
{#each unknownImages as image}
|
||||||
<AttributedImage imgClass="h-32 w-max shrink-0" image={{url:image}} previewedImage={state.previewedImage}/>
|
<AttributedImage
|
||||||
|
imgClass="h-32 w-max shrink-0"
|
||||||
|
image={{ url: image }}
|
||||||
|
previewedImage={state.previewedImage}
|
||||||
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
{#each unknownImages as image}
|
{#each unknownImages as image}
|
||||||
|
|
||||||
<LinkableImage
|
<LinkableImage
|
||||||
{tags}
|
{tags}
|
||||||
{state}
|
{state}
|
||||||
|
@ -133,12 +130,11 @@
|
||||||
thumbUrl: image,
|
thumbUrl: image,
|
||||||
details: undefined,
|
details: undefined,
|
||||||
coordinates: undefined,
|
coordinates: undefined,
|
||||||
osmTags : {image}
|
osmTags: { image },
|
||||||
}}
|
}}
|
||||||
{feature}
|
{feature}
|
||||||
{layer} />
|
{layer}
|
||||||
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<script lang="ts">/**
|
<script lang="ts">
|
||||||
|
/**
|
||||||
* The comparison tool loads json-data from a speficied URL, eventually post-processes it
|
* The comparison tool loads json-data from a speficied URL, eventually post-processes it
|
||||||
* and compares it with the current object
|
* and compares it with the current object
|
||||||
*/
|
*/
|
||||||
|
@ -46,10 +47,8 @@ onMount(async () => {
|
||||||
error = "" + e
|
error = "" + e
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
{#if error !== undefined}
|
{#if error !== undefined}
|
||||||
<div class="alert">
|
<div class="alert">
|
||||||
Something went wrong: {error}
|
Something went wrong: {error}
|
||||||
|
@ -59,5 +58,13 @@ onMount(async () => {
|
||||||
Loading {$tags[url]}
|
Loading {$tags[url]}
|
||||||
</Loading>
|
</Loading>
|
||||||
{:else if data.properties !== undefined}
|
{:else if data.properties !== undefined}
|
||||||
<ComparisonTable externalProperties={data.properties} osmProperties={$tags} {state} {feature} {layer} {tags} {readonly} />
|
<ComparisonTable
|
||||||
|
externalProperties={data.properties}
|
||||||
|
osmProperties={$tags}
|
||||||
|
{state}
|
||||||
|
{feature}
|
||||||
|
{layer}
|
||||||
|
{tags}
|
||||||
|
{readonly}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"mapcomplete-favourites-" + new Date().toISOString() + ".geojson",
|
"mapcomplete-favourites-" + new Date().toISOString() + ".geojson",
|
||||||
{
|
{
|
||||||
mimetype: "application/vnd.geo+json",
|
mimetype: "application/vnd.geo+json",
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
"mapcomplete-favourites-" + new Date().toISOString() + ".gpx",
|
"mapcomplete-favourites-" + new Date().toISOString() + ".gpx",
|
||||||
{
|
{
|
||||||
mimetype: "{gpx=application/gpx+xml}",
|
mimetype: "{gpx=application/gpx+xml}",
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isLinked.addCallback(isLinked => applyLink(isLinked))
|
isLinked.addCallback((isLinked) => applyLink(isLinked))
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex w-fit shrink-0 flex-col">
|
<div class="flex w-fit shrink-0 flex-col">
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue