chore: automated housekeeping...

This commit is contained in:
Pieter Vander Vennet 2024-11-28 12:00:23 +01:00
parent 8ef7af613f
commit 00151afdea
114 changed files with 2857 additions and 2135 deletions

View file

@ -644,6 +644,10 @@
- ticket_machine - ticket_machine
- vending_machine - vending_machine
### wheelchair
- pharmacy
### {preset_type_select()} ### {preset_type_select()}
- police - police

View file

@ -538,7 +538,8 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| CBJ_Aerial_20230516 | CBJ Aerial Imagery (May 2023) | photo | ⭐ | City and Borough of Juneau | | CBJ_Aerial_20230516 | CBJ Aerial Imagery (May 2023) | photo | ⭐ | City and Borough of Juneau |
| CBJ_Aerial_20230618 | CBJ Aerial Imagery (June 2023) | photo | | City and Borough of Juneau | | CBJ_Aerial_20230618 | CBJ Aerial Imagery (June 2023) | photo | | City and Borough of Juneau |
| FNSB_Aerial_2023 | FNSB Aerial Imagery (2023) | photo | ⭐ | Fairbanks North Star Borough | | FNSB_Aerial_2023 | FNSB Aerial Imagery (2023) | photo | ⭐ | Fairbanks North Star Borough |
| MOA_Aerial_2021 | MOA Aerial Imagery (2021) | photo | | Municipality of Anchorage GIS | | MOA_Aerial_2021 | MOA Aerial Imagery (2021) | historicphoto | | Municipality of Anchorage GIS |
| MOA_Aerial_2024 | MOA Aerial Imagery (2024) | photo | ⭐ | Municipality of Anchorage GIS |
| MSB_Aerial_2019 | MSB Aerial Imagery - Area 1(2019) | historicphoto | | Matanuska-Susitna Borough GIS Division | | MSB_Aerial_2019 | MSB Aerial Imagery - Area 1(2019) | historicphoto | | Matanuska-Susitna Borough GIS Division |
| MSB_Aerial_2020 | MSB Aerial Imagery - Area 2 (2020) | historicphoto | | Matanuska-Susitna Borough GIS Division | | MSB_Aerial_2020 | MSB Aerial Imagery - Area 2 (2020) | historicphoto | | Matanuska-Susitna Borough GIS Division |
| MSB_Aerial_2021 | MSB Aerial Imagery - Area 3 (2021) | historicphoto | | Matanuska-Susitna Borough GIS Division | | MSB_Aerial_2021 | MSB Aerial Imagery - Area 3 (2021) | historicphoto | | Matanuska-Susitna Borough GIS Division |
@ -558,20 +559,27 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| LA_County_Basemap | LA County Basemap | map | | Los Angeles County | | LA_County_Basemap | LA County Basemap | map | | Los Angeles County |
| Manhattan_Beach_CA_2023 | City of Manhattan Beach Orthoimagery (2023) | photo | | City of Manhattan Beach | | Manhattan_Beach_CA_2023 | City of Manhattan Beach Orthoimagery (2023) | photo | | City of Manhattan Beach |
| Manteca_CA_2022 | City of Manteca Orthoimagery (2022) | photo | | City of Manteca | | Manteca_CA_2022 | City of Manteca Orthoimagery (2022) | photo | | City of Manteca |
| Modesto_CA_2023 | City of Modesto Orthoimagery (2023) | photo | | City of Modesto | | Modesto_CA_2023 | City of Modesto Orthoimagery (2023) | historicphoto | | City of Modesto |
| Modesto_CA_2024 | City of Modesto Orthoimagery (2024) | photo | | City of Modesto |
| Orange_CA_2022 | Orange County Orthoimagery (2022) | photo | | Orange County | | Orange_CA_2022 | Orange County Orthoimagery (2022) | photo | | Orange County |
| Roseville_CA_2023 | City of Roseville Orthoimagery (2023) | historicphoto | | City of Roseville | | Roseville_CA_2023 | City of Roseville Orthoimagery (2023) | historicphoto | | City of Roseville |
| Roseville_CA_2024 | City of Roseville Orthoimagery (2024) | photo | | City of Roseville | | Roseville_CA_2024 | City of Roseville Orthoimagery (2024) | photo | | City of Roseville |
| Sacramento_CA_2022 | Sacramento County Orthoimagery (2022) | photo | | Sacramento County | | Sacramento_CA_2022 | Sacramento County Orthoimagery (2022) | photo | | Sacramento County |
| San_Bernardino_CA_2023 | San Bernardino County Orthoimagery (2023) | photo | | San Bernardino County | | San_Bernardino_CA_2023 | San Bernardino County Orthoimagery (2023) | historicphoto | | San Bernardino County |
| San_Francisco_CA_2022 | San Francisco Orthoimagery (2022) | historicphoto | | City and County of San Francisco | | San_Bernardino_CA_2024 | San Bernardino County Orthoimagery (2024) | photo | | San Bernardino County |
| San_Francisco_CA_2022_CIR | San Francisco Orthoimagery CIR (2022) | historicphoto | | City and County of San Francisco | | San_Francisco_2022 | San Francisco Orthoimagery (2022) | historicphoto | | City and County of San Francisco |
| San_Francisco_Ortho_2023 | San Francisco Orthoimagery (2023) | photo | | City and County of San Francisco | | San_Francisco_2022_CIR | San Francisco Orthoimagery CIR (2022) | historicphoto | | City and County of San Francisco |
| San_Francisco_2023 | San Francisco Orthoimagery (2023) | historicphoto | | City and County of San Francisco |
| San_Francisco_2023_CIR | San Francisco Orthoimagery CIR (2023) | historicphoto | | City and County of San Francisco |
| San_Francisco_2024 | San Francisco Orthoimagery (2024) | photo | | City and County of San Francisco |
| San_Francisco_2024_CIR | San Francisco Orthoimagery CIR (2024) | photo | | City and County of San Francisco |
| San_Mateo_CA_2022 | San Mateo County Orthoimagery (2022) | photo | | San Mateo County | | San_Mateo_CA_2022 | San Mateo County Orthoimagery (2022) | photo | | San Mateo County |
| Santa_Clara_CA_2022 | Santa Clara County Orthoimagery (2022) | photo | | County of Santa Clara | | Santa_Clara_CA_2022 | Santa Clara County Orthoimagery (2022) | photo | | County of Santa Clara |
| Santa_Clara_CA_2023 | Santa Clara County Orthoimagery (2023) | photo | | County of Santa Clara | | Santa_Clara_CA_2023 | Santa Clara County Orthoimagery (2023) | photo | | County of Santa Clara |
| Santa_Rosa_CA_2022 | City of Santa Rosa Orthoimagery (2022) | photo | | City of Santa Rosa | | Santa_Rosa_CA_2022 | City of Santa Rosa Orthoimagery (2022) | photo | | City of Santa Rosa |
| Solano_CA_2022 | Solano County Orthoimagery (2022) | photo | | Solano County | | Solano_CA_2022 | Solano County Orthoimagery (2022) | historicphoto | | Solano County |
| Solano_CA_2023 | Solano County Orthoimagery (2023) | historicphoto | | Solano County |
| Solano_CA_2024 | Solano County Orthoimagery (2024) | photo | | Solano County |
| Stockton_CA_2023 | City of Stockton Orthoimagery (2023) | photo | | City of Stockton | | Stockton_CA_2023 | City of Stockton Orthoimagery (2023) | photo | | City of Stockton |
| Arapahoe-County-Aerials-Latest | Arapahoe County Aerials Latest | photo | | Arapahoe County GIS | | Arapahoe-County-Aerials-Latest | Arapahoe County Aerials Latest | photo | | Arapahoe County GIS |
| MCGIS-County-NAIP-Imagery-2015 | Mesa County GIS NAIP 2015 | historicphoto | | Mesa County GIS | | MCGIS-County-NAIP-Imagery-2015 | Mesa County GIS NAIP 2015 | historicphoto | | Mesa County GIS |
@ -579,7 +587,8 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| MCGIS-County-Valleywide-Imagery-2020 | Mesa County GIS Valleywide 2020 | historicphoto | | Mesa County GIS | | MCGIS-County-Valleywide-Imagery-2020 | Mesa County GIS Valleywide 2020 | historicphoto | | Mesa County GIS |
| MCGIS-County-Valleywide-Imagery-2022 | Mesa County GIS Valleywide 2022 | photo | | Mesa County GIS | | MCGIS-County-Valleywide-Imagery-2022 | Mesa County GIS Valleywide 2022 | photo | | Mesa County GIS |
| MCGIS-County-Valleywide-Imagery-2024 | Mesa County GIS Valleywide 2024 | photo | | Mesa County GIS | | MCGIS-County-Valleywide-Imagery-2024 | Mesa County GIS Valleywide 2024 | photo | | Mesa County GIS |
| CT_ECO_Ortho_2019_RGB | CT ECO Orthoimagery (2019) | photo | | Connecticut Environmental Conditions Online | | CT_ECO_Ortho_2019_RGB | CT ECO Orthoimagery (2019) | historicphoto | | Connecticut Environmental Conditions Online |
| CT_ECO_Ortho_2023_RGB | CT ECO Orthoimagery (2023) | photo | | Connecticut Environmental Conditions Online |
| CT_ECO_Shaded_relief_2016 | CT ECO Shaded Relief | elevation | | Connecticut Environmental Conditions Online | | CT_ECO_Shaded_relief_2016 | CT ECO Shaded Relief | elevation | | Connecticut Environmental Conditions Online |
| MetroCOG_Ortho_2020 | MetroCOG Orthoimagery (2020) | photo | | Connecticut Metropolitan Council of Governments | | MetroCOG_Ortho_2020 | MetroCOG Orthoimagery (2020) | photo | | Connecticut Metropolitan Council of Governments |
| DC_From_Above_Ortho_2019 | DC From Above Orthophoto 2019 | historicphoto | | OCTO, DCGIS | | DC_From_Above_Ortho_2019 | DC From Above Orthophoto 2019 | historicphoto | | OCTO, DCGIS |
@ -588,7 +597,7 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| Delaware2012Orthophotography | Delaware 2012 Orthophotography | historicphoto | | Digital Aerial Solutions, LLC, FirstMap | | Delaware2012Orthophotography | Delaware 2012 Orthophotography | historicphoto | | Digital Aerial Solutions, LLC, FirstMap |
| DE_Orthophotography_2017_NC | Delaware 2017 Orthophotography (Natural Color) | historicphoto | | Surdex Corp, FirstMap | | DE_Orthophotography_2017_NC | Delaware 2017 Orthophotography (Natural Color) | historicphoto | | Surdex Corp, FirstMap |
| Delaware_FirstMap_2021 | Delaware FirstMap 2021 | historicphoto | | Hexagon, FirstMap | | Delaware_FirstMap_2021 | Delaware FirstMap 2021 | historicphoto | | Hexagon, FirstMap |
| Delaware_FirstMap_2022 | Delaware FirstMap 2022 | photo | | Sanborn Map Company, FirstMap | | Delaware_FirstMap_2022 | Delaware FirstMap 2022 | photo | | Sanborn Map Company, FirstMap |
| Delaware_Parks_2022 | Delaware Parks 2022 | photo | | Sanborn Map Company, FirstMap | | Delaware_Parks_2022 | Delaware Parks 2022 | photo | | Sanborn Map Company, FirstMap |
| Alachua_Ortho_2020 | Alachua County Orthoimagery (2020) | historicphoto | | Alachua County Property Appraisers Office | | Alachua_Ortho_2020 | Alachua County Orthoimagery (2020) | historicphoto | | Alachua County Property Appraisers Office |
| Alachua_Ortho_2023 | Alachua County Orthoimagery (2023) | photo | | Alachua County Property Appraisers Office | | Alachua_Ortho_2023 | Alachua County Orthoimagery (2023) | photo | | Alachua County Property Appraisers Office |
@ -818,7 +827,8 @@ This table gives a summary of ids, names and other metainformation. [See the onl
| Suan_Juan_WA_2023 | Suan Juan County Aerials (2023) | photo | ⭐ | San Juan County GIS | | Suan_Juan_WA_2023 | Suan Juan County Aerials (2023) | photo | ⭐ | San Juan County GIS |
| Suan_Juan_WA_Basemap | Suan Juan County Basemap | map | | San Juan County GIS | | Suan_Juan_WA_Basemap | Suan Juan County Basemap | map | | San Juan County GIS |
| Snohomish_WA_2020 | Snohomish County Orthoimagery (2020) | historicphoto | | Snohomish County GIS | | Snohomish_WA_2020 | Snohomish County Orthoimagery (2020) | historicphoto | | Snohomish County GIS |
| Snohomish_WA_2022 | Snohomish County Orthoimagery (2022) | photo | | Snohomish County GIS | | Snohomish_WA_2022 | Snohomish County Orthoimagery (2022) | historicphoto | | Snohomish County GIS |
| Snohomish_WA_2024 | Snohomish County Orthoimagery (2024) | photo | | Snohomish County GIS |
| WISC_DNR_Ortho_Composite | Wisconsin Leaf-Off Orthophotography (DNR) | photo | | Wisconsin Regional Orthoimagery Consortium, Southeastern Wisconsin Regional Planning Commission, Wisconsin Department of Natural Resources | | WISC_DNR_Ortho_Composite | Wisconsin Leaf-Off Orthophotography (DNR) | photo | | Wisconsin Regional Orthoimagery Consortium, Southeastern Wisconsin Regional Planning Commission, Wisconsin Department of Natural Resources |
| Monongalia_WV_2022 | Monongalia County 2022 Aerial Imagery | historicphoto | | Monongalia Morgantown Area Geospatial Information Consortium | | Monongalia_WV_2022 | Monongalia County 2022 Aerial Imagery | historicphoto | | Monongalia Morgantown Area Geospatial Information Consortium |
| Monongalia_WV_2023 | Monongalia County 2023 Aerial Imagery | photo | ⭐ | Monongalia Morgantown Area Geospatial Information Consortium | | Monongalia_WV_2023 | Monongalia County 2023 Aerial Imagery | photo | ⭐ | Monongalia Morgantown Area Geospatial Information Consortium |

View file

@ -4,7 +4,7 @@
We will complete data from advertising features with reference, operator and lit We will complete data from advertising features with reference, operator and lit
- This layer is shown at zoomlevel **15** and higher - This layer is shown at zoomlevel **13** and higher
- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: preset `a billboard mounted to a wall` snaps to this layer (advertising.presets[1]) - This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: preset `a billboard mounted to a wall` snaps to this layer (advertising.presets[1])
- This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: preset `a poster box mounted on a wall` snaps to this layer (advertising.presets[3]) - This layer will automatically load [walls_and_buildings](./walls_and_buildings.md) into the layout as it depends on it: preset `a poster box mounted on a wall` snaps to this layer (advertising.presets[3])
- This layer will automatically load [shelter](./shelter.md) into the layout as it depends on it: preset `a poster box part of a public transport shelter` snaps to this layer (advertising.presets[4]) - This layer will automatically load [shelter](./shelter.md) into the layout as it depends on it: preset `a poster box part of a public transport shelter` snaps to this layer (advertising.presets[4])

View file

@ -362,6 +362,25 @@ This tagrendering has labels
| artwork-artwork_type.12 | Tilework | artwork_type=tilework | | artwork-artwork_type.12 | Tilework | artwork_type=tilework |
| artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving | | artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving |
| id | question | osmTags |
-----|-----|----- |
| memorial-type.0 | *What type of memorial is this?* (default) | |
| memorial-type.1 | This is a statue | memorial=statue |
| memorial-type.2 | This is a plaque | memorial=plaque |
| memorial-type.3 | This is a commemorative bench | memorial=bench |
| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike |
| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein |
| memorial-type.6 | This is a stele | memorial=stele |
| memorial-type.7 | This is a memorial stone | memorial=stone |
| memorial-type.8 | This is a bust | memorial=bust |
| memorial-type.9 | This is a sculpture | memorial=sculpture |
| memorial-type.10 | This is an obelisk | memorial=obelisk |
| memorial-type.11 | This is a cross | memorial=cross |
| memorial-type.12 | This is a blue plaque | memorial=blue_plaque |
| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank |
| memorial-type.14 | This is a memorial tree | memorial=tree |
| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb |
This document is autogenerated from [assets/layers/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/artwork/artwork.json) This document is autogenerated from [assets/layers/artwork/artwork.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/layers/artwork/artwork.json)

View file

@ -365,6 +365,25 @@ This tagrendering has labels
| artwork-artwork_type.12 | Tilework | artwork_type=tilework | | artwork-artwork_type.12 | Tilework | artwork_type=tilework |
| artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving | | artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving |
| id | question | osmTags |
-----|-----|----- |
| memorial-type.0 | *What type of memorial is this?* (default) | |
| memorial-type.1 | This is a statue | memorial=statue |
| memorial-type.2 | This is a plaque | memorial=plaque |
| memorial-type.3 | This is a commemorative bench | memorial=bench |
| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike |
| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein |
| memorial-type.6 | This is a stele | memorial=stele |
| memorial-type.7 | This is a memorial stone | memorial=stone |
| memorial-type.8 | This is a bust | memorial=bust |
| memorial-type.9 | This is a sculpture | memorial=sculpture |
| memorial-type.10 | This is an obelisk | memorial=obelisk |
| memorial-type.11 | This is a cross | memorial=cross |
| memorial-type.12 | This is a blue plaque | memorial=blue_plaque |
| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank |
| memorial-type.14 | This is a memorial tree | memorial=tree |
| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb |
This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json) This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json)

View file

@ -434,7 +434,7 @@ The question is `Does this shop sell bikes?`
- *This shop sells new bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a> - *This shop sells new bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a>
- *This shop doesn't sell new bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dno' target='_blank'>no</a> - *This shop doesn't sell new bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dno' target='_blank'>no</a>
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddiy' target='_blank'>diy</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddoityourself' target='_blank'>doityourself</a> | service:bicycle:retail~.+ This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports' target='_blank'>sports</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddiy' target='_blank'>diy</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Ddoityourself' target='_blank'>doityourself</a> | service:bicycle:retail~.+
### bike_second_hand ### bike_second_hand
@ -455,7 +455,7 @@ The question is `Does this shop repair bikes?`
- *This shop only repairs bikes bought here* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair' target='_blank'>service:bicycle:repair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Donly_sold' target='_blank'>only_sold</a> - *This shop only repairs bikes bought here* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair' target='_blank'>service:bicycle:repair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Donly_sold' target='_blank'>only_sold</a>
- *This shop only repairs bikes of a certain brand* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair' target='_blank'>service:bicycle:repair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Dbrand' target='_blank'>brand</a> - *This shop only repairs bikes of a certain brand* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:repair' target='_blank'>service:bicycle:repair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:repair%3Dbrand' target='_blank'>brand</a>
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Donly' target='_blank'>only</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | service:bicycle:repair~.+ This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:retail' target='_blank'>service:bicycle:retail</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:retail%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:second_hand' target='_blank'>service:bicycle:second_hand</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:second_hand%3Donly' target='_blank'>only</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports' target='_blank'>sports</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | service:bicycle:repair~.+
### bicycle_rental ### bicycle_rental
@ -464,7 +464,7 @@ The question is `Does this shop rent out bikes?`
- *This shop rents out bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental' target='_blank'>service:bicycle:rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dyes' target='_blank'>yes</a> - *This shop rents out bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental' target='_blank'>service:bicycle:rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dyes' target='_blank'>yes</a>
- *This shop doesn't rent out bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental' target='_blank'>service:bicycle:rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dno' target='_blank'>no</a> - *This shop doesn't rent out bikes* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:rental' target='_blank'>service:bicycle:rental</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:rental%3Dno' target='_blank'>no</a>
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle_repair' target='_blank'>bicycle_repair</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Drental' target='_blank'>rental</a> | service:bicycle:rental~.+ This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle' target='_blank'>bicycle</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsport' target='_blank'>sport</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dsports' target='_blank'>sports</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Dbicycle_repair' target='_blank'>bicycle_repair</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Doutdoor' target='_blank'>outdoor</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:shop' target='_blank'>shop</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:shop%3Drental' target='_blank'>rental</a> | service:bicycle:rental~.+
### bicycle-types ### bicycle-types
@ -586,7 +586,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -578,7 +578,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -587,7 +587,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -59,7 +59,6 @@ Elements must match the expression **<a href='https://wiki.openstreetmap.org/wik
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/phone#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/phone/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | | | <a target="_blank" href='https://taginfo.openstreetmap.org/keys/phone#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/phone/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | |
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/email#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/email/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | | | <a target="_blank" href='https://taginfo.openstreetmap.org/keys/email#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/email/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | |
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/website#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/website/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | | | <a target="_blank" href='https://taginfo.openstreetmap.org/keys/website#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/website/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | |
| <a target="_blank" href='https://taginfo.openstreetmap.org/keys/wheelchair#values'><img src='https://mapcomplete.org/assets/svg/search.svg' height='18px'></a> <a target="_blank" href='https://taghistory.raifer.tech/?#***/wheelchair/'><img src='https://mapcomplete.org/assets/svg/statistics.svg' height='18px'></a> [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) [limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) |
### images ### images
This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images
@ -124,11 +123,8 @@ The question is `Which methods of payment are accepted here?`
### wheelchair ### wheelchair
The question is `Is this pharmacy easy to access on a wheelchair?` _This tagrendering has no question and is thus read-only_
*wheelchair*
- *This pharmacy is easy to access on a wheelchair* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes' target='_blank'>yes</a>
- *This pharmacy is hard to access on a wheelchair* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno' target='_blank'>no</a>
- *This pharmacy has limited access for wheelchair users* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:wheelchair' target='_blank'>wheelchair</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited' target='_blank'>limited</a>
### leftover-questions ### leftover-questions

View file

@ -595,7 +595,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -592,7 +592,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -592,7 +592,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -578,7 +578,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -587,7 +587,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -582,7 +582,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

File diff suppressed because one or more lines are too long

View file

@ -20,7 +20,7 @@ This layer shows surveillance cameras and allows a contributor to update informa
- [camera_direction](#camera_direction) - [camera_direction](#camera_direction)
- [Operator](#operator) - [Operator](#operator)
- [Surveillance type: public, outdoor, indoor](#surveillance-type-public,-outdoor,-indoor) - [Surveillance type: public, outdoor, indoor](#surveillance-type-public,-outdoor,-indoor)
- [is_indoor](#is_indoor) - [camera_is_indoor](#camera_is_indoor)
- [Level](#level) - [Level](#level)
- [Surveillance:zone](#surveillancezone) - [Surveillance:zone](#surveillancezone)
- [camera:mount](#cameramount) - [camera:mount](#cameramount)
@ -109,22 +109,20 @@ The question is `What kind of surveillance is this camera?`
- *An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, …)* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Doutdoor' target='_blank'>outdoor</a> - *An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, …)* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Doutdoor' target='_blank'>outdoor</a>
- *A private indoor area is surveilled, e.g. a shop, a private underground parking, …* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor' target='_blank'>indoor</a> - *A private indoor area is surveilled, e.g. a shop, a private underground parking, …* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor' target='_blank'>indoor</a>
### is_indoor ### camera_is_indoor
The question is `Is the public space surveilled by this camera an indoor or outdoor space?` The question is `Is this camera located inside or outside?`
- *This camera is located indoors* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a> - *This camera is located indoors* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a>
- *This camera is located outdoors* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dno' target='_blank'>no</a> - *This camera is located outdoors* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dno' target='_blank'>no</a>
- *This camera is probably located outdoors* is shown if with indoor=. _This option cannot be chosen as answer_ - *This camera is probably located outdoors* is shown if with indoor=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dpublic' target='_blank'>public</a>
### Level ### Level
The question is `On which level is this camera located?` The question is `On which level is this camera located?`
*Located on level {level}* is shown if `level` is set *Located on level {level}* is shown if `level` is set
This tagrendering is only visible in the popup if the following condition is met: <a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dye' target='_blank'>ye</a> This tagrendering is only visible in the popup if the following condition is met: (<a href='https://wiki.openstreetmap.org/wiki/Key:indoor' target='_blank'>indoor</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:indoor%3Dyes' target='_blank'>yes</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance' target='_blank'>surveillance</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance%3Dindoor' target='_blank'>indoor</a>) & (<a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dalpr' target='_blank'>alpr</a> | <a href='https://wiki.openstreetmap.org/wiki/Key:surveillance:type' target='_blank'>surveillance:type</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:surveillance:type%3Dcamera' target='_blank'>camera</a>) & camera:type!=doorbell
### Surveillance:zone ### Surveillance:zone

View file

@ -27,6 +27,7 @@ Layer showing tactile maps, which can be used by visually impaired people to nav
## Themes using this layer ## Themes using this layer
- [blind_osm](https://mapcomplete.org/blind_osm) - [blind_osm](https://mapcomplete.org/blind_osm)
- [maps](https://mapcomplete.org/maps)
- [personal](https://mapcomplete.org/personal) - [personal](https://mapcomplete.org/personal)
## Presets ## Presets

View file

@ -28,6 +28,7 @@ Layer showing tactile models, three-dimensional models of the surrounding area.
## Themes using this layer ## Themes using this layer
- [blind_osm](https://mapcomplete.org/blind_osm) - [blind_osm](https://mapcomplete.org/blind_osm)
- [maps](https://mapcomplete.org/maps)
- [personal](https://mapcomplete.org/personal) - [personal](https://mapcomplete.org/personal)
## Presets ## Presets

View file

@ -1051,7 +1051,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"location": { "location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}]", "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1428,7 +1428,14 @@
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1676,7 +1683,14 @@
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -1039,7 +1039,7 @@ export default {
"type": "object", "type": "object",
"properties": { "properties": {
"location": { "location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}]", "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1414,7 +1414,14 @@ export default {
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1661,7 +1668,14 @@ export default {
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -3,7 +3,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"location": { "location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}]", "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -3,7 +3,7 @@ export default {
"type": "object", "type": "object",
"properties": { "properties": {
"location": { "location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}]", "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -114,7 +114,14 @@
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -114,7 +114,14 @@ export default {
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -931,7 +931,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"location": { "location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}]", "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1308,7 +1308,14 @@
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1556,7 +1563,14 @@
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -919,7 +919,7 @@ export default {
"type": "object", "type": "object",
"properties": { "properties": {
"location": { "location": {
"description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}]", "description": "question: At what location should this icon be shown?\nmultianswer: true\nsuggestions: return [{if: \"value=point\",then: \"Show an icon for point (node) objects\"},{if: \"value=centroid\",then: \"Show an icon for line or polygon (way) objects at their centroid location\"}, {if: \"value=start\",then: \"Show an icon for line (way) objects at the start\"},{if: \"value=end\",then: \"Show an icon for line (way) object at the end\"},{if: \"value=projected_centerpoint\",then: \"Show an icon for line (way) object near the centroid location, but moved onto the line. 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)\"}, {if: \"value=waypoints\", then: \"Show an icon on every intermediate point of a way\"}]",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1294,7 +1294,14 @@ export default {
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
@ -1541,7 +1548,14 @@ export default {
] ]
}, },
"labels": { "labels": {
"description": "What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search", "description": "question: What labels should be applied on this tagRendering?\n\nA list of labels. These are strings that are used for various purposes, e.g. to only include a subset of the tagRenderings when reusing a layer\n\nSpecial values:\n- \"hidden\": do not show this tagRendering. Useful in it is used by e.g. an accordion\n- \"description\": this label is a description used in the search",
"type": "array",
"items": {
"type": "string"
}
},
"onSoftDelete": {
"description": "question: What tags should be applied when the object is soft-deleted?",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"

View file

@ -1154,6 +1154,14 @@ Clears all user preferences
<code>`{clear_all()}`</code> <code>`{clear_all()}`</code>
### disabled_questions
Shows which questions are disabled for every layer. Used in 'settings'
#### Example usage of disabled_questions
<code>`{disabled_questions()}`</code>
### 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:

View file

@ -1917,21 +1917,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Second hand shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Second hand shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Second hand shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Circular economy') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -1926,21 +1926,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Climbing gyms, clubs and spots') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -1321,12 +1321,12 @@
}, },
{ {
"key": "service:bicycle:retail", "key": "service:bicycle:retail",
"description": "Layer 'Bike repair/shop' shows service:bicycle:retail=yes with a fixed text, namely 'This shop sells new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=diy | shop=doityourself)", "description": "Layer 'Bike repair/shop' shows service:bicycle:retail=yes with a fixed text, namely 'This shop sells new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:retail", "key": "service:bicycle:retail",
"description": "Layer 'Bike repair/shop' shows service:bicycle:retail=no with a fixed text, namely 'This shop doesn't sell new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=diy | shop=doityourself)", "description": "Layer 'Bike repair/shop' shows service:bicycle:retail=no with a fixed text, namely 'This shop doesn't sell new bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:retail~.+ | shop=outdoor | shop=sport | shop=sports | shop=diy | shop=doityourself)",
"value": "no" "value": "no"
}, },
{ {
@ -1346,32 +1346,32 @@
}, },
{ {
"key": "service:bicycle:repair", "key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=yes with a fixed text, namely 'This shop repairs bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=yes with a fixed text, namely 'This shop repairs bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:repair", "key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=no with a fixed text, namely 'This shop doesn't repair bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=no with a fixed text, namely 'This shop doesn't repair bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:repair", "key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=only_sold with a fixed text, namely 'This shop only repairs bikes bought here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=only_sold with a fixed text, namely 'This shop only repairs bikes bought here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "only_sold" "value": "only_sold"
}, },
{ {
"key": "service:bicycle:repair", "key": "service:bicycle:repair",
"description": "Layer 'Bike repair/shop' shows service:bicycle:repair=brand with a fixed text, namely 'This shop only repairs bikes of a certain brand' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)", "description": "Layer 'Bike repair/shop' shows service:bicycle:repair=brand with a fixed text, namely 'This shop only repairs bikes of a certain brand' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:repair~.+ | shop=sport | shop=sports | shop=outdoor | shop=bicycle | service:bicycle:retail=yes | service:bicycle:second_hand=yes | service:bicycle:second_hand=only)",
"value": "brand" "value": "brand"
}, },
{ {
"key": "service:bicycle:rental", "key": "service:bicycle:rental",
"description": "Layer 'Bike repair/shop' shows service:bicycle:rental=yes with a fixed text, namely 'This shop rents out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental)", "description": "Layer 'Bike repair/shop' shows service:bicycle:rental=yes with a fixed text, namely 'This shop rents out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:rental", "key": "service:bicycle:rental",
"description": "Layer 'Bike repair/shop' shows service:bicycle:rental=no with a fixed text, namely 'This shop doesn't rent out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=bicycle_repair | shop=outdoor | shop=rental)", "description": "Layer 'Bike repair/shop' shows service:bicycle:rental=no with a fixed text, namely 'This shop doesn't rent out bikes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if service:bicycle:rental~.+ | shop=bicycle | shop=sport | shop=sports | shop=bicycle_repair | shop=outdoor | shop=rental)",
"value": "no" "value": "no"
}, },
{ {
@ -1498,21 +1498,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Bike repair/shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Bike repair/shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Cyclofix - a map for cyclists') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -929,21 +929,6 @@
"key": "payment:qr_code", "key": "payment:qr_code",
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')", "description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "yes" "value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Disaster response and emergency services')",
"value": "limited"
} }
] ]
} }

View file

@ -2108,21 +2108,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Glutenfree') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -407,21 +407,6 @@
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')", "description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "yes" "value": "yes"
}, },
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare')",
"value": "limited"
},
{ {
"key": "shop", "key": "shop",
"description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag" "description": "The MapComplete theme Healthcare has a layer Shop showing features with this tag"
@ -1642,21 +1627,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Healthcare') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -2108,21 +2108,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Lactose free shops and restaurants') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -127,6 +127,132 @@
"key": "map_source:attribution", "key": "map_source:attribution",
"description": "Layer 'Maps' shows map_source:attribution=no with a fixed text, namely 'There is no attribution at all' (in the mapcomplete.org theme 'A map of maps') (This is only shown if map_source~^((O|)pen(S|s)treet(M|m)ap)$ | map_source=osm | map_source=OSM)", "description": "Layer 'Maps' shows map_source:attribution=no with a fixed text, namely 'There is no attribution at all' (in the mapcomplete.org theme 'A map of maps') (This is only shown if map_source~^((O|)pen(S|s)treet(M|m)ap)$ | map_source=osm | map_source=OSM)",
"value": "no" "value": "no"
},
{
"key": "information",
"description": "The MapComplete theme A map of maps has a layer Tactile Maps showing features with this tag",
"value": "tactile_map"
},
{
"key": "id",
"description": "Layer 'Tactile Maps' 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 'A map of maps') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
},
{
"key": "image",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "panoramax",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Tactile Maps allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "blind:description:en",
"description": "Layer 'Tactile Maps' shows and asks freeform values for key 'blind:description:en' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "braille",
"description": "Layer 'Tactile Maps' shows braille=yes with a fixed text, namely 'This tactile map has braille text.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "braille",
"description": "Layer 'Tactile Maps' shows braille=no with a fixed text, namely 'This tactile map does not have braille text.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Maps' shows embossed_letters=yes with a fixed text, namely 'This tactile map has embossed letters.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Maps' shows embossed_letters=no with a fixed text, namely 'This tactile map does not have embossed letters.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "website",
"description": "Layer 'Tactile Maps' shows and asks freeform values for key 'website' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "contact:website",
"description": "Layer 'Tactile Maps' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' rel='nofollow noopener noreferrer' target='_blank'>{contact:website}</a>' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "information",
"description": "The MapComplete theme A map of maps has a layer Tactile Models showing features with this tag",
"value": "tactile_model"
},
{
"key": "id",
"description": "Layer 'Tactile Models' 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 'A map of maps') (This is only shown if _backend~.+ & _last_edit:passed_time<300 & (_version_number= | _version_number=1))"
},
{
"key": "image",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "panoramax",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "mapillary",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikidata",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "wikipedia",
"description": "The layer 'Tactile Models allows to upload images and adds them under the 'panoramax'-tag (and panoramax:0, panoramax:1, ... for multiple images). Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary"
},
{
"key": "blind:description:en",
"description": "Layer 'Tactile Models' shows and asks freeform values for key 'blind:description:en' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "braille",
"description": "Layer 'Tactile Models' shows braille=yes with a fixed text, namely 'There is a braille description.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "braille",
"description": "Layer 'Tactile Models' shows braille=no with a fixed text, namely 'There is no braille description.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Models' shows embossed_letters=yes with a fixed text, namely 'There are embossed letters describing the model.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "yes"
},
{
"key": "embossed_letters",
"description": "Layer 'Tactile Models' shows embossed_letters=no with a fixed text, namely 'There are no embossed letters describing the model.' and allows to pick this as a default answer (in the mapcomplete.org theme 'A map of maps')",
"value": "no"
},
{
"key": "scale",
"description": "Layer 'Tactile Models' shows and asks freeform values for key 'scale' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "website",
"description": "Layer 'Tactile Models' shows and asks freeform values for key 'website' (in the mapcomplete.org theme 'A map of maps')"
},
{
"key": "contact:website",
"description": "Layer 'Tactile Models' shows contact:website~.+ with a fixed text, namely '<a href='{contact:website}' rel='nofollow noopener noreferrer' target='_blank'>{contact:website}</a>' (in the mapcomplete.org theme 'A map of maps')"
} }
] ]
} }

View file

@ -2666,21 +2666,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'OnWheels') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {
@ -3192,21 +3192,6 @@
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')", "description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "yes" "value": "yes"
}, },
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'OnWheels')",
"value": "limited"
},
{ {
"key": "amenity", "key": "amenity",
"description": "The MapComplete theme OnWheels has a layer Doctors showing features with this tag", "description": "The MapComplete theme OnWheels has a layer Doctors showing features with this tag",

View file

@ -1996,21 +1996,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Dog-friendly shops' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Dog-friendly shops' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Veterinarians, dog parks and other pet-amenities') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -1557,21 +1557,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Postbox and Post Office Map') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -1215,21 +1215,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Shops') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {
@ -1450,21 +1450,6 @@
"description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')", "description": "Layer 'Pharmacies' shows payment:qr_code=yes with a fixed text, namely 'Payment by QR-code is possible here' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "yes" "value": "yes"
}, },
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=yes with a fixed text, namely 'This pharmacy is easy to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "yes"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=no with a fixed text, namely 'This pharmacy is hard to access on a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "no"
},
{
"key": "wheelchair",
"description": "Layer 'Pharmacies' shows wheelchair=limited with a fixed text, namely 'This pharmacy has limited access for wheelchair users' and allows to pick this as a default answer (in the mapcomplete.org theme 'Shops')",
"value": "limited"
},
{ {
"key": "amenity", "key": "amenity",
"description": "The MapComplete theme Shops has a layer Ice cream parlors showing features with this tag", "description": "The MapComplete theme Shops has a layer Ice cream parlors showing features with this tag",

View file

@ -594,6 +594,650 @@
"description": "Layer 'Sports centres' shows wheelchair=no with a fixed text, namely 'This place is not reachable with a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')", "description": "Layer 'Sports centres' shows wheelchair=no with a fixed text, namely 'This place is not reachable with a wheelchair' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "no" "value": "no"
}, },
{
"key": "sport",
"description": "Layer 'Sports centres' shows and asks freeform values for key 'sport' (in the mapcomplete.org theme 'Sports')"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=9pin with a fixed text, namely 'Nine-pin bowling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "9pin"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=10pin with a fixed text, namely 'Ten-pin bowling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "10pin"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=aerobics with a fixed text, namely 'Aerobics' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "aerobics"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=american_football with a fixed text, namely 'American football' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "american_football"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=aikido with a fixed text, namely 'Aikido' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "aikido"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=archery with a fixed text, namely 'Archery' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "archery"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=athletics with a fixed text, namely 'Athletics' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "athletics"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=australian_football with a fixed text, namely 'Australian rules football' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "australian_football"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=badminton with a fixed text, namely 'Badminton' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "badminton"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bandy with a fixed text, namely 'Bandy' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bandy"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=base with a fixed text, namely 'BASE jumping' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "base"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=baseball with a fixed text, namely 'Baseball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "baseball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=basketball with a fixed text, namely 'Basketball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "basketball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=beachvolleyball with a fixed text, namely 'Beachvolleyball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "beachvolleyball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=biathlon with a fixed text, namely 'Biathlon' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "biathlon"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=billiards with a fixed text, namely 'Cue sports' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "billiards"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bmx with a fixed text, namely 'BMX' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bmx"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bobsleigh with a fixed text, namely 'Bobsleigh' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bobsleigh"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=boules with a fixed text, namely 'Boules' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "boules"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bowls with a fixed text, namely 'Bowls' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bowls"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=boxing with a fixed text, namely 'Boxing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "boxing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=bullfighting with a fixed text, namely 'Bullfighting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "bullfighting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=canadian_football with a fixed text, namely 'Canadian football' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "canadian_football"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=canoe with a fixed text, namely 'Canoe' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "canoe"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=chess with a fixed text, namely 'Chess' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "chess"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cliff_diving with a fixed text, namely 'Non-competitive diving' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cliff_diving"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=climbing with a fixed text, namely 'Rock climbing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "climbing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=climbing_adventure with a fixed text, namely 'Climbing Adventure' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "climbing_adventure"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cockfighting with a fixed text, namely 'Cockfighting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cockfighting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cricket with a fixed text, namely 'Cricket' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cricket"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=crossfit with a fixed text, namely 'CrossFit' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "crossfit"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=croquet with a fixed text, namely 'Croquet' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "croquet"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=curling with a fixed text, namely 'Curling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "curling"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cycle_polo with a fixed text, namely 'Cycle Polo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cycle_polo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=cycling with a fixed text, namely 'Cycling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "cycling"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dance with a fixed text, namely 'Dance' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dance"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=darts with a fixed text, namely 'Darts' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "darts"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dog_agility with a fixed text, namely 'Dog agility' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dog_agility"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dog_racing with a fixed text, namely 'Greyhound racing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dog_racing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=dragon_boat with a fixed text, namely 'Dragon Boat' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "dragon_boat"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=equestrian with a fixed text, namely 'Equestrianism' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "equestrian"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=fencing with a fixed text, namely 'Fencing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "fencing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=field_hockey with a fixed text, namely 'Field hockey' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "field_hockey"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=fitness with a fixed text, namely 'Fitness' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "fitness"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=five-a-side with a fixed text, namely '5 person soccer' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "five-a-side"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=floorball with a fixed text, namely 'Floorball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "floorball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=four_square with a fixed text, namely 'Four square' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "four_square"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=free_flying with a fixed text, namely 'Paragliding' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "free_flying"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=futsal with a fixed text, namely 'Futsal' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "futsal"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=gaelic_games with a fixed text, namely 'Gaelic games' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "gaelic_games"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=gaga with a fixed text, namely 'Gaga ball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "gaga"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=golf with a fixed text, namely 'Golf' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "golf"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=gymnastics with a fixed text, namely 'Gymnastics' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "gymnastics"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=handball with a fixed text, namely 'Handball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "handball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=hapkido with a fixed text, namely 'Hapkido' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "hapkido"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=hiking with a fixed text, namely 'Hiking' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "hiking"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=horseshoes with a fixed text, namely 'Horseshoes' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "horseshoes"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=horse_racing with a fixed text, namely 'Horse racing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "horse_racing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ice_hockey with a fixed text, namely 'Ice Hockey' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ice_hockey"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ice_skating with a fixed text, namely 'Ice skating' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ice_skating"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ice_stock with a fixed text, namely 'Ice stock sport' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ice_stock"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=judo with a fixed text, namely 'Judo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "judo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=karate with a fixed text, namely 'Karate' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "karate"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=karting with a fixed text, namely 'Kart racing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "karting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=kickboxing with a fixed text, namely 'Kickboxing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "kickboxing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=kitesurfing with a fixed text, namely 'Kitesurfing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "kitesurfing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=korfball with a fixed text, namely 'Korfball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "korfball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=krachtball with a fixed text, namely 'Krachtball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "krachtball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=lacrosse with a fixed text, namely 'Lacrosse' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "lacrosse"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=laser_tag with a fixed text, namely 'Laser tag' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "laser_tag"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=martial_arts with a fixed text, namely 'Martial arts' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "martial_arts"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=miniature_golf with a fixed text, namely 'Miniature golf' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "miniature_golf"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=model_aerodrome with a fixed text, namely 'Radio-controlled aircraft' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "model_aerodrome"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=motocross with a fixed text, namely 'Motocross' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "motocross"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=motor with a fixed text, namely 'Motorsport' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "motor"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=multi with a fixed text, namely 'Multiple kind of sports' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "multi"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=netball with a fixed text, namely 'Netball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "netball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=obstacle_course with a fixed text, namely 'Obstacle course' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "obstacle_course"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=orienteering with a fixed text, namely 'Orienteering' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "orienteering"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=paddle_tennis with a fixed text, namely 'Paddle tennis' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "paddle_tennis"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=padel with a fixed text, namely 'Padel' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "padel"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=paintball with a fixed text, namely 'Paintball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "paintball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=parachuting with a fixed text, namely 'Parachuting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "parachuting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=parkour with a fixed text, namely 'Parkour' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "parkour"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pelota with a fixed text, namely 'Palota' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pelota"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pesäpallo with a fixed text, namely 'Pesäpallo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pesäpallo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pickleball with a fixed text, namely 'Pickleball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pickleball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pilates with a fixed text, namely 'Pilates' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pilates"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=pole_dance with a fixed text, namely 'Pole dance' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "pole_dance"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=racquet with a fixed text, namely 'Racquetball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "racquet"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rc_car with a fixed text, namely 'Radio-controlled car' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rc_car"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=roller_skating with a fixed text, namely 'Roller skating' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "roller_skating"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rowing with a fixed text, namely 'Rowing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rowing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rugby_league with a fixed text, namely 'Rugby league' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rugby_league"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=rugby_union with a fixed text, namely 'Rugby union' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "rugby_union"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=running with a fixed text, namely 'Running' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "running"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=sailing with a fixed text, namely 'Sailing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "sailing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=scuba_diving with a fixed text, namely 'Scuba diving' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "scuba_diving"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=shooting with a fixed text, namely 'Shooting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "shooting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=shot-put with a fixed text, namely 'Shot-put' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "shot-put"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=skateboard with a fixed text, namely 'Skateboard' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "skateboard"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ski_jumping with a fixed text, namely 'Ski jumping' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ski_jumping"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=snooker with a fixed text, namely 'Snooker' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "snooker"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=soccer with a fixed text, namely 'Soccer' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "soccer"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=softball with a fixed text, namely 'Softball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "softball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=speedway with a fixed text, namely 'Motorcycle speedway' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "speedway"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=squash with a fixed text, namely 'Squash' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "squash"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=sumo with a fixed text, namely 'Sumo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "sumo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=surfing with a fixed text, namely 'Surfing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "surfing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=swimming with a fixed text, namely 'Swimming' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "swimming"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=table_tennis with a fixed text, namely 'Table tennis' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "table_tennis"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=table_soccer with a fixed text, namely 'Table soccer' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "table_soccer"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=taekwondo with a fixed text, namely 'Taekwondo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "taekwondo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=tennis with a fixed text, namely 'Tennis' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "tennis"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=teqball with a fixed text, namely 'Teqball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "teqball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=toboggan with a fixed text, namely 'Toboggan' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "toboggan"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=trampoline with a fixed text, namely 'Trampoline' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "trampoline"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ultimate with a fixed text, namely 'Ultimate frisbee' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ultimate"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=ultralight_aviation with a fixed text, namely 'Ultralight aviation' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "ultralight_aviation"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=volleyball with a fixed text, namely 'Volleyball' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "volleyball"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=wakeboarding with a fixed text, namely 'Wakeboarding' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "wakeboarding"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=water_polo with a fixed text, namely 'Water polo' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "water_polo"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=water_ski with a fixed text, namely 'Waterskiing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "water_ski"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=weightlifting with a fixed text, namely 'Olympic weightlifting' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "weightlifting"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=windsurfing with a fixed text, namely 'Windsurfing' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "windsurfing"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=wrestling with a fixed text, namely 'Wrestling' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "wrestling"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=yoga with a fixed text, namely 'Yoga' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "yoga"
},
{
"key": "sport",
"description": "Layer 'Sports centres' shows sport=zurkhaneh_sport with a fixed text, namely 'Zurkhaneh sport' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports')",
"value": "zurkhaneh_sport"
},
{ {
"key": "shop", "key": "shop",
"description": "The MapComplete theme Sports has a layer Shop showing features with this tag", "description": "The MapComplete theme Sports has a layer Shop showing features with this tag",
@ -1790,21 +2434,21 @@
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)" "description": "Layer 'Shop' shows and asks freeform values for key 'service:bicycle:cleaning:charge' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=no with a fixed text, namely 'The cleaning service is free to use' and allows to pick this as a default answer (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "no" "value": "no"
}, },
{ {
"key": "service:bicycle:cleaning:fee", "key": "service:bicycle:cleaning:fee",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "service:bicycle:cleaning:charge", "key": "service:bicycle:cleaning:charge",
"description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)", "description": "Layer 'Shop' shows service:bicycle:cleaning:fee=yes & service:bicycle:cleaning:charge= with a fixed text, namely 'Free to use' (in the mapcomplete.org theme 'Sports') Picking this answer will delete the key service:bicycle:cleaning:charge. (This is only shown if amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+)",
"value": "" "value": ""
}, },
{ {

View file

@ -118,22 +118,22 @@
}, },
{ {
"key": "indoor", "key": "indoor",
"description": "Layer 'Surveillance camera's' shows indoor=yes with a fixed text, namely 'This camera is located indoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance:type=public)", "description": "Layer 'Surveillance camera's' shows indoor=yes with a fixed text, namely 'This camera is located indoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance!=outdoor & surveillance!=indoor)",
"value": "yes" "value": "yes"
}, },
{ {
"key": "indoor", "key": "indoor",
"description": "Layer 'Surveillance camera's' shows indoor=no with a fixed text, namely 'This camera is located outdoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance:type=public)", "description": "Layer 'Surveillance camera's' shows indoor=no with a fixed text, namely 'This camera is located outdoors' and allows to pick this as a default answer (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if surveillance!=outdoor & surveillance!=indoor)",
"value": "no" "value": "no"
}, },
{ {
"key": "indoor", "key": "indoor",
"description": "Layer 'Surveillance camera's' shows indoor= with a fixed text, namely 'This camera is probably located outdoors' (in the mapcomplete.org theme 'Surveillance under Surveillance') Picking this answer will delete the key indoor. (This is only shown if surveillance:type=public)", "description": "Layer 'Surveillance camera's' shows indoor= with a fixed text, namely 'This camera is probably located outdoors' (in the mapcomplete.org theme 'Surveillance under Surveillance') Picking this answer will delete the key indoor. (This is only shown if surveillance!=outdoor & surveillance!=indoor)",
"value": "" "value": ""
}, },
{ {
"key": "level", "key": "level",
"description": "Layer 'Surveillance camera's' shows and asks freeform values for key 'level' (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if indoor=yes | surveillance:type=ye)" "description": "Layer 'Surveillance camera's' shows and asks freeform values for key 'level' (in the mapcomplete.org theme 'Surveillance under Surveillance') (This is only shown if camera:type!=doorbell & (indoor=yes | surveillance=indoor) & (surveillance:type=alpr | surveillance:type=camera))"
}, },
{ {
"key": "surveillance:zone", "key": "surveillance:zone",

View file

@ -27,6 +27,7 @@ Available languages:
- hu - hu
- pl - pl
- nl - nl
- fr
# Table of contents # Table of contents
@ -608,7 +609,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -627,7 +627,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -22,6 +22,7 @@ Available languages:
- pl - pl
- hu - hu
- uk - uk
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -20,6 +20,7 @@ Available languages:
- cs - cs
- hu - hu
- uk - uk
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -20,6 +20,7 @@ Available languages:
- es - es
- cs - cs
- uk - uk
- nl
# Table of contents # Table of contents
@ -543,6 +544,25 @@ This tagrendering has labels
| artwork-artwork_type.12 | Tilework | artwork_type=tilework | | artwork-artwork_type.12 | Tilework | artwork_type=tilework |
| artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving | | artwork-artwork_type.13 | Woodcarving | artwork_type=woodcarving |
| id | question | osmTags |
-----|-----|----- |
| memorial-type.0 | *What type of memorial is this?* (default) | |
| memorial-type.1 | This is a statue | memorial=statue |
| memorial-type.2 | This is a plaque | memorial=plaque |
| memorial-type.3 | This is a commemorative bench | memorial=bench |
| memorial-type.4 | This is a ghost bike - a bicycle painted white to remember a cyclist whom deceased because of a car crash | memorial=ghost_bike |
| memorial-type.5 | This is a stolperstein (stumbing stone) | memorial=stolperstein |
| memorial-type.6 | This is a stele | memorial=stele |
| memorial-type.7 | This is a memorial stone | memorial=stone |
| memorial-type.8 | This is a bust | memorial=bust |
| memorial-type.9 | This is a sculpture | memorial=sculpture |
| memorial-type.10 | This is an obelisk | memorial=obelisk |
| memorial-type.11 | This is a cross | memorial=cross |
| memorial-type.12 | This is a blue plaque | memorial=blue_plaque |
| memorial-type.13 | This is a historic tank, permanently placed in public space as memorial | memorial=tank |
| memorial-type.14 | This is a memorial tree | memorial=tree |
| memorial-type.15 | This is a gravestone; the person is buried here | historic=tomb |
This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json) This document is autogenerated from [assets/themes/ghostsigns/ghostsigns.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/ghostsigns/ghostsigns.json)

View file

@ -26,6 +26,8 @@ Available languages:
- ru - ru
- hu - hu
- uk - uk
- fr
- nl
# Table of contents # Table of contents
@ -1405,7 +1407,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -20,6 +20,7 @@ Available languages:
- ca - ca
- ru - ru
- uk - uk
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -625,7 +625,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -22,6 +22,8 @@ Available languages:
- ru - ru
- hu - hu
- uk - uk
- fr
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -17,6 +17,7 @@ Available languages:
- es - es
- cs - cs
- hu - hu
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -24,6 +24,7 @@ Available languages:
- cs - cs
- hu - hu
- uk - uk
- nl
# Table of contents # Table of contents
@ -1403,7 +1404,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -21,6 +21,8 @@ Available languages:
- cs - cs
- hu - hu
- uk - uk
- fr
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -17,6 +17,8 @@ Available languages:
- de - de
- cs - cs
- es - es
- fr
- nl
# Table of contents # Table of contents

View file

@ -9,6 +9,8 @@ The theme introduction reads:
This theme contains the following layers: This theme contains the following layers:
- [map](../Layers/map.md) - [map](../Layers/map.md)
- [tactile_map](../Layers/tactile_map.md)
- [tactile_model](../Layers/tactile_model.md)
Available languages: Available languages:

View file

@ -26,6 +26,8 @@ Available languages:
- es - es
- cs - cs
- hu - hu
- fr
- nl
# Table of contents # Table of contents
@ -659,7 +661,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -1177,7 +1177,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -30,6 +30,7 @@ Available languages:
- cs - cs
- hu - hu
- uk - uk
- nl
# Layers defined in this theme configuration file # Layers defined in this theme configuration file
These layers can not be reused in different themes. These layers can not be reused in different themes.

View file

@ -616,7 +616,7 @@ The question is `How much does it cost to use the cleaning service?`
- *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a> - *The cleaning service is free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dno' target='_blank'>no</a>
- *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_ - *Free to use* is shown if with <a href='https://wiki.openstreetmap.org/wiki/Key:service:bicycle:cleaning:fee' target='_blank'>service:bicycle:cleaning:fee</a>=<a href='https://wiki.openstreetmap.org/wiki/Tag:service:bicycle:cleaning:fee%3Dyes' target='_blank'>yes</a> & service:bicycle:cleaning:charge=. _This option cannot be chosen as answer_
This tagrendering is only visible in the popup if the following condition is met: amenity!=bike_wash & amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+ This tagrendering is only visible in the popup if the following condition is met: amenity!=bicycle_wash & service:bicycle:cleaning!=no & service:bicycle:cleaning~.+
### internet ### internet

View file

@ -412,7 +412,7 @@ The default value is _0_
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#L436) This documentation is defined in the source code at [generateDocs.ts](ervdvn/git/MapComplete/scripts/generateDocs.ts#L436)
The default value is _map_ The default value is _map_

View file

@ -211,7 +211,7 @@
{{service_item {{service_item
|name= [https://mapcomplete.org/bicycle_parkings bicycle_parkings] |name= [https://mapcomplete.org/bicycle_parkings bicycle_parkings]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:it|en}}, {{#language:fil|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}, {{#language:nl|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:zh_Hans|en}}, {{#language:it|en}}, {{#language:fil|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:pl|en}}, {{#language:nl|en}}, {{#language:fr|en}}
|descr= A MapComplete theme: A map showing all types of bicycle parkings |descr= A MapComplete theme: A map showing all types of bicycle parkings
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -310,7 +310,7 @@
{{service_item {{service_item
|name= [https://mapcomplete.org/elongated_coin elongated_coin] |name= [https://mapcomplete.org/elongated_coin elongated_coin]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:pl|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Find penny presses to create your own elongated coins |descr= A MapComplete theme: Find penny presses to create your own elongated coins
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -328,7 +328,7 @@
{{service_item {{service_item
|name= [https://mapcomplete.org/fireplace fireplace] |name= [https://mapcomplete.org/fireplace fireplace]
|region= Worldwide |region= Worldwide
|lang= {{#language:de|en}}, {{#language:en|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}} |lang= {{#language:de|en}}, {{#language:en|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}, {{#language:fr|en}}
|descr= A MapComplete theme: Outdoor place to make a fire or a fixed barbecue in an official place |descr= A MapComplete theme: Outdoor place to make a fire or a fixed barbecue in an official place
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -355,7 +355,7 @@
{{service_item {{service_item
|name= [https://mapcomplete.org/ghostsigns ghostsigns] |name= [https://mapcomplete.org/ghostsigns ghostsigns]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:fr|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A map showing disused signs on buildings |descr= A MapComplete theme: A map showing disused signs on buildings
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -364,7 +364,7 @@
{{service_item {{service_item
|name= [https://mapcomplete.org/glutenfree glutenfree] |name= [https://mapcomplete.org/glutenfree glutenfree]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A crowdsourced map with glutenfree items |descr= A MapComplete theme: A crowdsourced map with glutenfree items
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -373,7 +373,7 @@
{{service_item {{service_item
|name= [https://mapcomplete.org/guideposts guideposts] |name= [https://mapcomplete.org/guideposts guideposts]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:cs|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:pl|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:cs|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:pl|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Guideposts (also known as fingerposts or finger posts) are often found along official hiking, cycling, skiing or horseback riding routes to indicate the directions to different destinations |descr= A MapComplete theme: Guideposts (also known as fingerposts or finger posts) are often found along official hiking, cycling, skiing or horseback riding routes to indicate the directions to different destinations
The position of a signpost can be used by a hiker/biker/rider/s… The position of a signpost can be used by a hiker/biker/rider/s…
@ -411,7 +411,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item {{service_item
|name= [https://mapcomplete.org/icecream icecream] |name= [https://mapcomplete.org/icecream icecream]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:it|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:cs|en}}, {{#language:ca|en}}, {{#language:es|en}}, {{#language:it|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A map showing ice cream parlors and ice cream vending machines |descr= A MapComplete theme: A map showing ice cream parlors and ice cream vending machines
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -438,7 +438,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item {{service_item
|name= [https://mapcomplete.org/lactosefree lactosefree] |name= [https://mapcomplete.org/lactosefree lactosefree]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:ca|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: A crowdsourced map with lactose free shops and restaurants |descr= A MapComplete theme: A crowdsourced map with lactose free shops and restaurants
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -447,7 +447,7 @@ The position of a signpost can be used by a hiker/biker/rider/s…
{{service_item {{service_item
|name= [https://mapcomplete.org/lighthouses lighthouses] |name= [https://mapcomplete.org/lighthouses lighthouses]
|region= Worldwide |region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:it|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:fr|en}}, {{#language:nl|en}}
|descr= A MapComplete theme: Lighthouses are tall buildings with a light on top to guide marine traffic |descr= A MapComplete theme: Lighthouses are tall buildings with a light on top to guide marine traffic
|material= {{yes|[https://mapcomplete.org/ Yes]}} |material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png |image= MapComplete_Screenshot.png
@ -573,7 +573,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}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}} |lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}, {{#language:cs|en}}, {{#language:uk|en}}, {{#language:fr|en}}, {{#language:nl|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

View file

@ -240,7 +240,7 @@
"en": "Totem", "en": "Totem",
"de": "Totem", "de": "Totem",
"cs": "Totem", "cs": "Totem",
"nl": "Aanplakzuil", "nl": "Reclamezuil",
"fr": "Totem", "fr": "Totem",
"eu": "Totem", "eu": "Totem",
"pl": "Totem", "pl": "Totem",
@ -797,7 +797,7 @@
"zh_Hans": "图腾", "zh_Hans": "图腾",
"it": "un totem", "it": "un totem",
"uk": "тотем", "uk": "тотем",
"nl": "een totem" "nl": "eem reclamezuil"
}, },
"exampleImages": [ "exampleImages": [
"./assets/themes/advertising/AdvertisingTotem_004.jpg", "./assets/themes/advertising/AdvertisingTotem_004.jpg",
@ -1139,7 +1139,8 @@
"pl": "To jest totem", "pl": "To jest totem",
"pt_BR": "Isso é um totem", "pt_BR": "Isso é um totem",
"zh_Hans": "这是一个图腾", "zh_Hans": "这是一个图腾",
"pt": "Isto é um totem" "pt": "Isto é um totem",
"nl": "Dit is een reclamezuil"
}, },
"icon": { "icon": {
"path": "./assets/themes/advertising/totem.svg", "path": "./assets/themes/advertising/totem.svg",

View file

@ -18,10 +18,12 @@
"icon": "circle", "icon": "circle",
"color": { "color": {
"render": "white", "render": "white",
"mappings": [{ "mappings": [
{
"if": "reuse=yes", "if": "reuse=yes",
"then": "#cccccc" "then": "#cccccc"
}] }
]
} }
}, },
{ {

View file

@ -35,7 +35,8 @@
] ]
} }
], ],
"lineRendering": [ { "lineRendering": [
{
"width": "13", "width": "13",
"color": "black" "color": "black"
}, },
@ -43,7 +44,6 @@
"width": "8", "width": "8",
"color": "white" "color": "white"
} }
], ],
"allowMove": false "allowMove": false
} }

View file

@ -5805,20 +5805,6 @@
}, },
"question": "Quin és el nom de la farmàcia?", "question": "Quin és el nom de la farmàcia?",
"render": "Aquesta farmàcia es diu {name}" "render": "Aquesta farmàcia es diu {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Aquesta farmàcia és fàcil d'accedir en una cadira de rodes"
},
"1": {
"then": "Aquesta farmàcia es difícil d'accedir amb una cadira de rodes"
},
"2": {
"then": "Aquesta farmàcia té un accés limitat per a usuaris amb cadira de rodes"
}
},
"question": "És fàcil accedir a aquesta farmàcia amb una cadira de rodes?"
} }
}, },
"title": { "title": {

View file

@ -6378,20 +6378,6 @@
}, },
"question": "Jak se lékárna jmenuje?", "question": "Jak se lékárna jmenuje?",
"render": "Tato lékárna se jmenuje {name}" "render": "Tato lékárna se jmenuje {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Tato lékárna je snadno přístupná na invalidním vozíku"
},
"1": {
"then": "Tato lékárna je těžko přístupná na invalidním vozíku"
},
"2": {
"then": "Tato lékárna má omezený přístup pro vozíčkáře"
}
},
"question": "Je tato lékárna snadno přístupná na invalidním vozíku?"
} }
}, },
"title": { "title": {

View file

@ -7659,20 +7659,6 @@
}, },
"question": "Wie lautet der Name der Apotheke?", "question": "Wie lautet der Name der Apotheke?",
"render": "Der Name der Apotheke lautet {name}" "render": "Der Name der Apotheke lautet {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Die Apotheke ist für Rollstuhlfahrer leicht zugänglich"
},
"1": {
"then": "Die Apotheke ist für Rollstuhlfahrer nur schwer zugänglich"
},
"2": {
"then": "Die Apotheke ist für Rollstuhlfahrer nur eingeschränkt zugänglich"
}
},
"question": "Ist die Apotheke für Rollstuhlfahrer leicht zugänglich?"
} }
}, },
"title": { "title": {

View file

@ -7659,20 +7659,6 @@
}, },
"question": "What is the name of the pharmacy?", "question": "What is the name of the pharmacy?",
"render": "This pharmacy is called {name}" "render": "This pharmacy is called {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "This pharmacy is easy to access on a wheelchair"
},
"1": {
"then": "This pharmacy is hard to access on a wheelchair"
},
"2": {
"then": "This pharmacy has limited access for wheelchair users"
}
},
"question": "Is this pharmacy easy to access on a wheelchair?"
} }
}, },
"title": { "title": {

View file

@ -7645,20 +7645,6 @@
}, },
"question": "¿Cuál es el nombre de la farmacia?", "question": "¿Cuál es el nombre de la farmacia?",
"render": "Esta farmacia se llama {name}" "render": "Esta farmacia se llama {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Esta farmacia es de fácil acceso en silla de ruedas"
},
"1": {
"then": "Esta farmacia es de difícil acceso en silla de ruedas"
},
"2": {
"then": "Esta farmacia tiene acceso limitado para usuarios de silla de ruedas"
}
},
"question": "¿Es esta farmacia de fácil acceso en silla de ruedas?"
} }
}, },
"title": { "title": {

View file

@ -4744,20 +4744,6 @@
}, },
"question": "Quel est le nom de cette pharmacie ?", "question": "Quel est le nom de cette pharmacie ?",
"render": "Cette pharmacie s'appelle {name}" "render": "Cette pharmacie s'appelle {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Cette pharmacie est facile d'accès en chaise roulante"
},
"1": {
"then": "Cette pharmacie est difficilement accessible en chaise roulante"
},
"2": {
"then": "L'accès à cette pharmacie est limité en chaise roulante"
}
},
"question": "Cette pharmacie est-elle facilement accessible en chaise roulante ?"
} }
}, },
"title": { "title": {

View file

@ -6288,20 +6288,6 @@
}, },
"question": "Wat is de naam van deze apotheek?", "question": "Wat is de naam van deze apotheek?",
"render": "Deze apotheek heet {name}" "render": "Deze apotheek heet {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Deze apotheek is makkelijk te bereiken met een rolstoel"
},
"1": {
"then": "Deze apotheek is moeilijk te bereiken met een rolstoel"
},
"2": {
"then": "Deze apotheek is bereikbaar met een rolstoel, maar het is niet makkelijk"
}
},
"question": "Is het mogelijk om deze apotheek te bereiken met een rolstoel?"
} }
}, },
"title": { "title": {

View file

@ -2963,13 +2963,6 @@
"name": { "name": {
"question": "Jak nazywa się ta apteka?", "question": "Jak nazywa się ta apteka?",
"render": "Nazwa tej apteki to {name}" "render": "Nazwa tej apteki to {name}"
},
"wheelchair": {
"mappings": {
"0": {
"then": "Ta apteka jest łatwo dostępna na wózku"
}
}
} }
}, },
"title": { "title": {

View file

@ -304,10 +304,11 @@
"loginToStart": "Meld je aan om deze vraag te beantwoorden", "loginToStart": "Meld je aan om deze vraag te beantwoorden",
"loginWithOpenStreetMap": "Aanmelden met OpenStreetMap", "loginWithOpenStreetMap": "Aanmelden met OpenStreetMap",
"logout": "Afmelden", "logout": "Afmelden",
"mappingsAreHidden": "Sommige opties zijn verborgen. Gebruik zoeken om meer opties te tonen.",
"menu": { "menu": {
"aboutCurrentThemeTitle": "Over deze kaart",
"aboutMapComplete": "Over MapComplete", "aboutMapComplete": "Over MapComplete",
"filter": "Filter data", "filter": "Filter data",
"aboutCurrentThemeTitle": "Over deze kaart",
"moreUtilsTitle": "Ontdek meer", "moreUtilsTitle": "Ontdek meer",
"openHereDifferentApp": "Open de huidige locatie in andere toepassingen", "openHereDifferentApp": "Open de huidige locatie in andere toepassingen",
"showIntroduction": "Toon introductie", "showIntroduction": "Toon introductie",
@ -372,6 +373,7 @@
"versionInfo": "v{version} - gemaakt op {date}" "versionInfo": "v{version} - gemaakt op {date}"
}, },
"pickLanguage": "Kies je taal", "pickLanguage": "Kies je taal",
"poweredByMapComplete": "Powered by MapComplete - crowdsourced, thematische kaarten met OpenStreetMap",
"poweredByOsm": "Gebouwd met OpenStreetMap", "poweredByOsm": "Gebouwd met OpenStreetMap",
"questionBox": { "questionBox": {
"answeredMultiple": "Je beantwoordde {answered} vragen", "answeredMultiple": "Je beantwoordde {answered} vragen",
@ -387,6 +389,7 @@
}, },
"readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe objecten toe te voegen.", "readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe objecten toe te voegen.",
"removeLocationHistory": "Verwijder de geschiedenis aan locaties", "removeLocationHistory": "Verwijder de geschiedenis aan locaties",
"retry": "Opnieuw proberen",
"returnToTheMap": "Ga terug naar de kaart", "returnToTheMap": "Ga terug naar de kaart",
"save": "Opslaan", "save": "Opslaan",
"screenToSmall": "Open {theme} in een nieuw venster", "screenToSmall": "Open {theme} in een nieuw venster",
@ -400,37 +403,40 @@
"error": "Niet gelukt…", "error": "Niet gelukt…",
"instructions": "Gebruik de zoekbalk om locaties, filters of om andere kaarten te zoeken", "instructions": "Gebruik de zoekbalk om locaties, filters of om andere kaarten te zoeken",
"locations": "Plaatsen", "locations": "Plaatsen",
"nMoreFilters": "{n} meer",
"nothing": "Niets gevonden…", "nothing": "Niets gevonden…",
"nothingFor": "Geen resultaten gevonden voor {term}",
"otherMaps": "Andere kaarten", "otherMaps": "Andere kaarten",
"pickFilter": "Kies een filter", "pickFilter": "Kies een filter",
"recentThemes": "Recent bezochte kaarten", "recentThemes": "Recent bezochte kaarten",
"recents": "Recent bekeken plaatsen", "recents": "Recent bekeken plaatsen",
"search": "Zoek naar een locatie, filter of kaart", "search": "Zoek naar een locatie, filter of kaart",
"searchShort": "Zoek…", "searchShort": "Zoek…",
"searching": "Aan het zoeken…", "searching": "Aan het zoeken…"
"nMoreFilters": "{n} meer",
"nothingFor": "Geen resultaten gevonden voor {term}"
}, },
"searchAnswer": "Zoek een optie…",
"seeIndex": "Zie het overzich van alle thematische kaarten",
"share": "Deel deze locatie", "share": "Deel deze locatie",
"sharescreen": { "sharescreen": {
"copiedToClipboard": "Link gekopieerd naar klembord", "copiedToClipboard": "Link gekopieerd naar klembord",
"documentation": "Voor meer informatie over beschikbare URL-parameters, <a href='https://github.com/pietervdvn/MapComplete/blob/develop/Docs/URL_Parameters.md' target='_blank'>raadpleeg de documentatie</a>",
"embedIntro": "<h3>Plaats dit op je website</h3>Voeg dit kaartje toe op je eigen website.<br/>We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.<br/> Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller", "embedIntro": "<h3>Plaats dit op je website</h3>Voeg dit kaartje toe op je eigen website.<br/>We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.<br/> Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller",
"fsUserbadge": "Activeer de login-knop en dus de mogelijkheid om data aan te passen",
"fsWelcomeMessage": "Toon het welkomstbericht en de bijhorende tabbladen",
"intro": "Kopieer onderstaande link om deze kaart naar vrienden en familie door te sturen:",
"thanksForSharing": "Bedankt om te delen!",
"title": "Deel deze kaart",
"fsBackground": "Wisselende achtergronden inschakelen", "fsBackground": "Wisselende achtergronden inschakelen",
"fsFilter": "De mogelijkheid inschakelen om te wisselen tussen lagen en filters", "fsFilter": "De mogelijkheid inschakelen om te wisselen tussen lagen en filters",
"fsGeolocation": "Geolocatie inschakelen", "fsGeolocation": "Geolocatie inschakelen",
"fsUserbadge": "Activeer de login-knop en dus de mogelijkheid om data aan te passen",
"fsWelcomeMessage": "Toon het welkomstbericht en de bijhorende tabbladen",
"intro": "Kopieer onderstaande link om deze kaart naar vrienden en familie door te sturen:",
"openInOtherApplications": "De huidige locatie openen met een andere kaarttoepassing", "openInOtherApplications": "De huidige locatie openen met een andere kaarttoepassing",
"openLayers": "Open het menu met lagen en filters", "openLayers": "Open het menu met lagen en filters",
"options": "Opties voor delen", "options": "Opties voor delen",
"stateIsIncluded": "De huidige status van de lagen en filters is opgenomen in de gedeelde link en iframe.", "stateIsIncluded": "De huidige status van de lagen en filters is opgenomen in de gedeelde link en iframe.",
"documentation": "Voor meer informatie over beschikbare URL-parameters, <a href='https://github.com/pietervdvn/MapComplete/blob/develop/Docs/URL_Parameters.md' target='_blank'>raadpleeg de documentatie</a>" "thanksForSharing": "Bedankt om te delen!",
"title": "Deel deze kaart"
}, },
"skip": "Sla deze vraag over", "skip": "Sla deze vraag over",
"testing": "Testmode - wijzigingen worden niet opgeslaan", "testing": "Testmode - wijzigingen worden niet opgeslaan",
"uploadError": "Fout tijdens het uploaden van wijzigingen: {error}",
"uploadGpx": { "uploadGpx": {
"choosePermission": "Kies hieronder of je traject gedeeld moet worden:", "choosePermission": "Kies hieronder of je traject gedeeld moet worden:",
"confirm": "Bevestig upload", "confirm": "Bevestig upload",
@ -458,6 +464,9 @@
"uploadFinished": "Je traject is geupload!", "uploadFinished": "Je traject is geupload!",
"uploading": "Traject uploaden…" "uploading": "Traject uploaden…"
}, },
"uploadPending": "{count} wijzigingen in behandeling",
"uploadPendingSingle": "Eén wijziging in behandeling",
"uploadingChanges": "Wijzigingen aan het uploaden…",
"useSearch": "Gebruik de zoekfunctie hierboven om meer opties te zien", "useSearch": "Gebruik de zoekfunctie hierboven om meer opties te zien",
"visualFeedback": { "visualFeedback": {
"closestFeaturesAre": "{n} objecten in beeld.", "closestFeaturesAre": "{n} objecten in beeld.",
@ -482,6 +491,8 @@
"straight": "vooruit" "straight": "vooruit"
}, },
"east": "Naar het oosten", "east": "Naar het oosten",
"fromGps": "{distance} {direction} van uw locatie",
"fromMapCenter": "{distance} {direction} van het midden van de kaart",
"in": "Aan het inzoomen naar zoomlevel {z}", "in": "Aan het inzoomen naar zoomlevel {z}",
"islocked": "Bewegen vergrendeld rond je huidige locatie. Duw op de geolocatie-knop om te ontgrendelen.", "islocked": "Bewegen vergrendeld rond je huidige locatie. Duw op de geolocatie-knop om te ontgrendelen.",
"locked": "Bewegen vergrendeld rond jouw huidige locatie.", "locked": "Bewegen vergrendeld rond jouw huidige locatie.",
@ -494,10 +505,9 @@
"unlocked": "Bewegen ontgrendeld", "unlocked": "Bewegen ontgrendeld",
"viewportCenterCloseToGps": "De kaart is gecentreerd op je huidige GPS-locatie.", "viewportCenterCloseToGps": "De kaart is gecentreerd op je huidige GPS-locatie.",
"viewportCenterDetails": "Het kaartbeeldcentrum is {distance} {bearing} vanaf je huidige locatie.", "viewportCenterDetails": "Het kaartbeeldcentrum is {distance} {bearing} vanaf je huidige locatie.",
"west": "Naar het westen", "west": "Naar het westen"
"fromGps": "{distance} {direction} van uw locatie",
"fromMapCenter": "{distance} {direction} van het midden van de kaart"
}, },
"waitingForGeopermission": "Aan het wachten op toestemming om geolocatie te gebruiken…",
"waitingForLocation": "Je locatie wordt gezocht…", "waitingForLocation": "Je locatie wordt gezocht…",
"weekdays": { "weekdays": {
"abbreviations": { "abbreviations": {
@ -539,17 +549,7 @@
"searchToShort": "Je zoekopdracht is te kort, vul een langere tekst in", "searchToShort": "Je zoekopdracht is te kort, vul een langere tekst in",
"searchWikidata": "Zoek op Wikidata", "searchWikidata": "Zoek op Wikidata",
"wikipediaboxTitle": "Wikipedia" "wikipediaboxTitle": "Wikipedia"
}, }
"retry": "Opnieuw proberen",
"searchAnswer": "Zoek een optie…",
"seeIndex": "Zie het overzich van alle thematische kaarten",
"uploadError": "Fout tijdens het uploaden van wijzigingen: {error}",
"mappingsAreHidden": "Sommige opties zijn verborgen. Gebruik zoeken om meer opties te tonen.",
"poweredByMapComplete": "Powered by MapComplete - crowdsourced, thematische kaarten met OpenStreetMap",
"uploadPending": "{count} wijzigingen in behandeling",
"uploadPendingSingle": "Eén wijziging in behandeling",
"uploadingChanges": "Wijzigingen aan het uploaden…",
"waitingForGeopermission": "Aan het wachten op toestemming om geolocatie te gebruiken…"
}, },
"hotkeyDocumentation": { "hotkeyDocumentation": {
"action": "Actie", "action": "Actie",
@ -557,21 +557,21 @@
"geolocate": "Centreer de map op je huidige positie of zoom verder in naar de huidige positie. Vraagt geolocatie-toegang", "geolocate": "Centreer de map op je huidige positie of zoom verder in naar de huidige positie. Vraagt geolocatie-toegang",
"intro": "MapComplete ondersteunt de volgende sneltoetsen:", "intro": "MapComplete ondersteunt de volgende sneltoetsen:",
"key": "Toets-combinatie", "key": "Toets-combinatie",
"openFilterPanel": "Opent het POI-lagen- en filterpaneel",
"openLayersPanel": "Open het paneel met lagen en filters", "openLayersPanel": "Open het paneel met lagen en filters",
"queryCurrentLocation": "Toon het adres dichtst bij het midden van de kaart",
"selectAerial": "Verander de achtergrondlaag naar luchtfoto's of satelietfoto's. Wisselt tussen de twee beste, beschikbare lagen", "selectAerial": "Verander de achtergrondlaag naar luchtfoto's of satelietfoto's. Wisselt tussen de twee beste, beschikbare lagen",
"selectFavourites": "Open de pagina met favorieten",
"selectItem": "Selecteer het POI het dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectItem2": "Selecteer het POI het op één na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectItem3": "Selecteer het POI het op twee na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectMap": "Gebruik een niet-OpenStreetMap-gebaseerde kaart als achtergrond. Wisselt tussen de twee beste, beschikbare lagen", "selectMap": "Gebruik een niet-OpenStreetMap-gebaseerde kaart als achtergrond. Wisselt tussen de twee beste, beschikbare lagen",
"selectMapnik": "Gebruik OpenStreetMap-carto als achtergrondlaag", "selectMapnik": "Gebruik OpenStreetMap-carto als achtergrondlaag",
"selectOsmbasedmap": "Gebruik een OpenStreetMap-gebaseerde achtergrondkaart (of schakel de achtergrond-rasterlaag uit)", "selectOsmbasedmap": "Gebruik een OpenStreetMap-gebaseerde achtergrondkaart (of schakel de achtergrond-rasterlaag uit)",
"selectSearch": "Selecteer de zoekbalk om locaties te zoeken", "selectSearch": "Selecteer de zoekbalk om locaties te zoeken",
"title": "Sneltoetsen",
"queryCurrentLocation": "Toon het adres dichtst bij het midden van de kaart",
"selectFavourites": "Open de pagina met favorieten",
"selectItem2": "Selecteer het POI het op één na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"shakePhone": "Schudden met je telefoon", "shakePhone": "Schudden met je telefoon",
"translationMode": "Vertaalmodus in- of uitschakelen", "title": "Sneltoetsen",
"openFilterPanel": "Opent het POI-lagen- en filterpaneel", "translationMode": "Vertaalmodus in- of uitschakelen"
"selectItem": "Selecteer het POI het dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt",
"selectItem3": "Selecteer het POI het op twee na dichtst bij het midden van de kaart (crosshair). Alleen wanneer toetsenbordnavigatie wordt gebruikt"
}, },
"image": { "image": {
"addPicture": "Voeg foto toe", "addPicture": "Voeg foto toe",
@ -580,48 +580,48 @@
"dontDelete": "Annuleren", "dontDelete": "Annuleren",
"isDeleted": "Verwijderd", "isDeleted": "Verwijderd",
"nearby": { "nearby": {
"link": "Deze afbeelding toont het object",
"seeNearby": "Bekijk foto's in de buurt",
"title": "Straatafbeeldingen uit de buurt",
"failed": "Afbeeldingen ophalen van {service} mislukt",
"close": "Paneel met nabije afbeeldingen samenvouwen", "close": "Paneel met nabije afbeeldingen samenvouwen",
"noNearbyImages": "Geen afbeeldingen in de buurt gevonden" "failed": "Afbeeldingen ophalen van {service} mislukt",
"link": "Deze afbeelding toont het object",
"noNearbyImages": "Geen afbeeldingen in de buurt gevonden",
"seeNearby": "Bekijk foto's in de buurt",
"title": "Straatafbeeldingen uit de buurt"
}, },
"pleaseLogin": "Gelieve je aan te melden om een foto toe te voegen",
"respectPrivacy": "Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.",
"toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken",
"uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!",
"uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.",
"uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!",
"uploadingMultiple": "Bezig met {count} foto's te uploaden…",
"uploadingPicture": "Bezig met een foto te uploaden…",
"panoramax": { "panoramax": {
"deletionRequested": "Het rapport is verzonden. Een moderator zal er binnenkort naar kijken", "deletionRequested": "Het rapport is verzonden. Een moderator zal er binnenkort naar kijken",
"freeform": "Is er andere relevante informatie?", "freeform": "Is er andere relevante informatie?",
"otherFreeform": "Waarom moet deze afbeelding worden verwijderd:", "otherFreeform": "Waarom moet deze afbeelding worden verwijderd:",
"placeholder": "Leg uit waarom de foto verwijderd moet worden",
"report": { "report": {
"blur_missing": "Op deze foto is een gezicht of nummerplaat niet geblurd",
"blur_excess": "Er is te geblurd, waardoor de foto onbruikbaar is", "blur_excess": "Er is te geblurd, waardoor de foto onbruikbaar is",
"blur_missing": "Op deze foto is een gezicht of nummerplaat niet geblurd",
"copyright": "De foto bevat auteursrechtelijk beschermde inhoud", "copyright": "De foto bevat auteursrechtelijk beschermde inhoud",
"inappropriate": "Deze foto is ongepast (bevat naakt, roept op tot haat of is geen straatbeeld)",
"mislocated": "De foto is van een andere locatie", "mislocated": "De foto is van een andere locatie",
"other": "Een andere reden, specificeer", "other": "Een andere reden, specificeer",
"picture_low_quality": "De foto is van lage kwaliteit", "picture_low_quality": "De foto is van lage kwaliteit",
"privacy": "De foto toont een privé-eigendom", "privacy": "De foto toont een privé-eigendom"
"inappropriate": "Deze foto is ongepast (bevat naakt, roept op tot haat of is geen straatbeeld)"
}, },
"requestDeletion": "Verwijdering van foto aanvragen", "requestDeletion": "Verwijdering van foto aanvragen",
"title": "Waarom zou dit beeld permanent verwijderd moeten worden?", "title": "Waarom zou dit beeld permanent verwijderd moeten worden?"
"placeholder": "Leg uit waarom de foto verwijderd moet worden"
}, },
"pleaseLogin": "Gelieve je aan te melden om een foto toe te voegen",
"processing": "De server is je beeld aan het verwerken", "processing": "De server is je beeld aan het verwerken",
"respectPrivacy": "Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.",
"toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken",
"unlink": { "unlink": {
"button": "Link naar foto verwijderen", "button": "Link naar foto verwijderen",
"title": "Link naar deze afbeelding verwijderen?", "explanation": "Door de link naar deze afbeelding te verwijderen, wordt deze niet meer getoond bij dit object. De afbeelding zal nog steeds verschijnen bij nabije afbeeldingen en mogelijk ook andere objecten.",
"explanation": "Door de link naar deze afbeelding te verwijderen, wordt deze niet meer getoond bij dit object. De afbeelding zal nog steeds verschijnen bij nabije afbeeldingen en mogelijk ook andere objecten." "title": "Link naar deze afbeelding verwijderen?"
}, },
"upload": { "upload": {
"failReasons": "Mogelijk heb je geen verbinding meer met het internet" "failReasons": "Mogelijk heb je geen verbinding meer met het internet"
} },
"uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!",
"uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.",
"uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!",
"uploadingMultiple": "Bezig met {count} foto's te uploaden…",
"uploadingPicture": "Bezig met een foto te uploaden…"
}, },
"importInspector": { "importInspector": {
"title": "Inspecteer en beheer importeer-notas" "title": "Inspecteer en beheer importeer-notas"

12
package-lock.json generated
View file

@ -8020,9 +8020,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001680", "version": "1.0.30001684",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -26969,9 +26969,9 @@
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001680", "version": "1.0.30001684",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
"dev": true "dev": true
}, },
"canonicalize": { "canonicalize": {

View file

@ -42,7 +42,7 @@ export class ImgurToPanoramax extends Script {
test: "7f34cf53-27ff-46c9-ac22-78511fa8457a", test: "7f34cf53-27ff-46c9-ac22-78511fa8457a",
cc0: "e9bcb8c0-8ade-4ac9-bc9f-cfa464221fd6", // "1de6f4a1-73ac-4c75-ab7f-2a2aabddf50a", // "f0d6f78a-ff95-4db1-8494-6eb44a17bb37", cc0: "e9bcb8c0-8ade-4ac9-bc9f-cfa464221fd6", // "1de6f4a1-73ac-4c75-ab7f-2a2aabddf50a", // "f0d6f78a-ff95-4db1-8494-6eb44a17bb37",
ccby: "288a8052-b475-422c-811a-4f6f1a00015e", ccby: "288a8052-b475-422c-811a-4f6f1a00015e",
ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a" ccbysa: "f3d02893-b4c1-4cd6-8b27-e27ab57eb59a",
} as const } as const
constructor() { constructor() {
@ -146,7 +146,7 @@ export class ImgurToPanoramax extends Script {
console.log("Already uploaded", panohash) console.log("Already uploaded", panohash)
return new And([ return new And([
new Tag(key.replace("image", "panoramax"), panohash), new Tag(key.replace("image", "panoramax"), panohash),
new Tag(key, "") new Tag(key, ""),
]) ])
} }
} }
@ -230,7 +230,7 @@ export class ImgurToPanoramax extends Script {
const license = await this.getRawInfo("https://i.imgur.com/" + imgurkey + ".jpg") const license = await this.getRawInfo("https://i.imgur.com/" + imgurkey + ".jpg")
const date = new Date(license.datetime * 1000) const date = new Date(license.datetime * 1000)
const panolicense = await this.panoramax.panoramax.search({ const panolicense = await this.panoramax.panoramax.search({
ids: [panokey] ids: [panokey],
}) })
const panodata = panolicense[0] const panodata = panolicense[0]
const collection: string = panodata.collection const collection: string = panodata.collection
@ -241,13 +241,13 @@ export class ImgurToPanoramax extends Script {
method: "PATCH", method: "PATCH",
headers: { "content-type": "application/json" }, headers: { "content-type": "application/json" },
body: JSON.stringify({ body: JSON.stringify({
ts: date.getTime() ts: date.getTime(),
}) }),
}) })
console.log( console.log(
"Patched date of ", "Patched date of ",
p.createViewLink({ p.createViewLink({
imageId: panokey imageId: panokey,
}), }),
url, url,
"result is", "result is",
@ -268,14 +268,8 @@ export class ImgurToPanoramax extends Script {
}*/ }*/
const bounds = new BBox([ const bounds = new BBox([
[ [-180, -90],
-180, [180, 90],
-90
],
[
180,
90
]
]) ])
const maxcount = 10000 const maxcount = 10000
const overpassfilters: RegexTag[] = [] const overpassfilters: RegexTag[] = []
@ -331,7 +325,7 @@ export class ImgurToPanoramax extends Script {
f.properties, f.properties,
{ {
theme: "image-mover", theme: "image-mover",
changeType: "link-image" changeType: "link-image",
} }
) )
changes.push(...(await action.CreateChangeDescriptions())) changes.push(...(await action.CreateChangeDescriptions()))

View file

@ -61,7 +61,7 @@ export default class FilteringFeatureSource implements FeatureSource {
selectedElement?.addCallback(() => this.update()) selectedElement?.addCallback(() => this.update())
zoomlevel?.mapD(z => Math.floor(z)).addCallback(() => this.update()) zoomlevel?.mapD((z) => Math.floor(z)).addCallback(() => this.update())
this.update() this.update()
} }

View file

@ -17,7 +17,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
private static defaultPanoramax = new AuthorizedPanoramax( private static defaultPanoramax = new AuthorizedPanoramax(
Constants.panoramax.url, Constants.panoramax.url,
Constants.panoramax.token, Constants.panoramax.token,
3000, 3000
) )
public defaultKeyPrefixes: string[] = ["panoramax"] public defaultKeyPrefixes: string[] = ["panoramax"]
@ -30,7 +30,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
location?: { location?: {
lon: number lon: number
lat: number lat: number
}, }
): BaseUIElement { ): BaseUIElement {
const p = new Panoramax(img.host) const p = new Panoramax(img.host)
return new Link( return new Link(
@ -39,7 +39,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
imageId: img?.id, imageId: img?.id,
location, location,
}), }),
true, true
) )
} }
@ -141,7 +141,7 @@ export default class PanoramaxImageProvider extends ImageProvider {
img?.status !== undefined && img?.status !== undefined &&
img?.status !== "ready" && img?.status !== "ready" &&
img?.status !== "broken" && img?.status !== "broken" &&
img?.status !== "hidden", img?.status !== "hidden"
) )
} }
@ -200,7 +200,7 @@ export class PanoramaxUploader implements ImageUploader {
author: string, author: string,
noblur: boolean = false, noblur: boolean = false,
sequenceId?: string, sequenceId?: string,
datetime?: string, datetime?: string
): Promise<{ ): Promise<{
key: string key: string
value: string value: string
@ -221,8 +221,13 @@ export class PanoramaxUploader implements ImageUploader {
const exifLat = latD + latM / 60 + latS / (3600 * latSDenom) const exifLat = latD + latM / 60 + latS / (3600 * latSDenom)
const exifLon = lonD + lonM / 60 + lonS / (3600 * lonSDenom) const exifLon = lonD + lonM / 60 + lonS / (3600 * lonSDenom)
if (typeof exifLat === "number" && !isNaN(exifLat) && typeof exifLon === "number" && !isNaN(exifLon) if (
&& !(exifLat === 0 && exifLon === 0)) { typeof exifLat === "number" &&
!isNaN(exifLat) &&
typeof exifLon === "number" &&
!isNaN(exifLon) &&
!(exifLat === 0 && exifLon === 0)
) {
lat = exifLat lat = exifLat
lon = exifLon lon = exifLon
} }
@ -231,7 +236,11 @@ export class PanoramaxUploader implements ImageUploader {
if (exifDatetime.getFullYear() === 1970) { if (exifDatetime.getFullYear() === 1970) {
// The data probably got reset to the epoch // The data probably got reset to the epoch
// we don't use the value // we don't use the value
console.log("Datetime from picture is probably invalid:", exifDatetime, "using 'now' instead") console.log(
"Datetime from picture is probably invalid:",
exifDatetime,
"using 'now' instead"
)
} else { } else {
datetime = exifDatetime.toISOString() datetime = exifDatetime.toISOString()
} }

View file

@ -563,13 +563,14 @@ export default class UserRelatedState {
return amendedPrefs return amendedPrefs
} }
/** /**
* The disabled questions for this theme and layer * The disabled questions for this theme and layer
*/ */
public getThemeDisabled(themeId: string, layerId: string): UIEventSource<string[]> { public getThemeDisabled(themeId: string, layerId: string): UIEventSource<string[]> {
const flatSource = this.osmConnection.getPreference("disabled-questions-" + themeId + "-" + layerId, "[]") const flatSource = this.osmConnection.getPreference(
"disabled-questions-" + themeId + "-" + layerId,
"[]"
)
return UIEventSource.asObject<string[]>(flatSource, []) return UIEventSource.asObject<string[]>(flatSource, [])
} }
} }

View file

@ -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(/&lt;/g,'<')?.replace(/&gt;/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(/&lt;/g, "<")?.replace(/&gt;/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"
} }
} }

View file

@ -504,14 +504,8 @@ export class TagUtils {
* regex.matchesProperties({maxspeed: "50 mph"}) // => true * regex.matchesProperties({maxspeed: "50 mph"}) // => true
*/ */
public static Tag( public static Tag(json: string, context?: string | ConversionContext): FlatTag
json: string, public static Tag(json: TagConfigJson, context?: string | ConversionContext): TagsFilterClosed
context?: string | ConversionContext
): FlatTag;
public static Tag(
json: TagConfigJson,
context?: string | ConversionContext
): TagsFilterClosed;
public static Tag( public static Tag(
json: TagConfigJson, json: TagConfigJson,
context: string | ConversionContext = "" context: string | ConversionContext = ""

View file

@ -210,7 +210,11 @@ export default class FilteredLayer {
* - the specified 'global filters' * - the specified 'global filters'
* - the 'isShown'-filter set by the layer * - the 'isShown'-filter set by the layer
*/ */
public isShown(properties: Record<string, string>, globalFilters?: GlobalFilter[], zoomlevel?: number): boolean { public isShown(
properties: Record<string, string>,
globalFilters?: GlobalFilter[],
zoomlevel?: number
): boolean {
if (properties._deleted === "yes") { if (properties._deleted === "yes") {
return false return false
} }
@ -241,7 +245,10 @@ export default class FilteredLayer {
} }
} }
if(zoomlevel !== undefined && (this.layerDef.minzoom > zoomlevel || this.layerDef.minzoomVisible < zoomlevel)){ if (
zoomlevel !== undefined &&
(this.layerDef.minzoom > zoomlevel || this.layerDef.minzoomVisible < zoomlevel)
) {
return false return false
} }

View file

@ -20,10 +20,14 @@ export interface MapProperties {
readonly allowRotating: UIEventSource<true | boolean> readonly allowRotating: UIEventSource<true | boolean>
readonly rotation: UIEventSource<number> readonly rotation: UIEventSource<number>
readonly pitch: UIEventSource<number> readonly pitch: UIEventSource<number>
readonly lastClickLocation: Store<{ lon: number; lat: number ; /** readonly lastClickLocation: Store<{
lon: number
lat: number
/**
* The nearest feature from a MapComplete layer * The nearest feature from a MapComplete layer
*/ */
nearestFeature?: Feature}> nearestFeature?: Feature
}>
readonly allowZooming: UIEventSource<true | boolean> readonly allowZooming: UIEventSource<true | boolean>
readonly useTerrain: Store<boolean> readonly useTerrain: Store<boolean>
readonly showScale: UIEventSource<boolean> readonly showScale: UIEventSource<boolean>

View file

@ -41,7 +41,7 @@ export default class PointRenderingConfig extends WithContextLoader {
"end", "end",
"projected_centerpoint", "projected_centerpoint",
"polygon_centroid", "polygon_centroid",
"waypoints" "waypoints",
]) ])
public readonly location: Set< public readonly location: Set<
| "point" | "point"

View file

@ -88,7 +88,7 @@ export default class TagRenderingConfig {
| string | string
| TagRenderingConfigJson | TagRenderingConfigJson
| (QuestionableTagRenderingConfigJson & { questionHintIsMd?: boolean }), | (QuestionableTagRenderingConfigJson & { questionHintIsMd?: boolean }),
context?: string, context?: string
) { ) {
let json = <string | QuestionableTagRenderingConfigJson>config let json = <string | QuestionableTagRenderingConfigJson>config
if (json === undefined) { if (json === undefined) {
@ -148,7 +148,7 @@ export default class TagRenderingConfig {
if (json.onSoftDelete && !Array.isArray(json.onSoftDelete)) { if (json.onSoftDelete && !Array.isArray(json.onSoftDelete)) {
throw context + ".onSoftDelete Not an array: " + typeof json.onSoftDelete throw context + ".onSoftDelete Not an array: " + typeof json.onSoftDelete
} }
this.onSoftDelete = json.onSoftDelete?.map(t => { this.onSoftDelete = json.onSoftDelete?.map((t) => {
const tag = TagUtils.Tag(t, context) const tag = TagUtils.Tag(t, context)
if (tag instanceof RegexTag) { if (tag instanceof RegexTag) {
throw context + ".onSoftDelete Invalid onSoftDelete: cannot upload tag " + t throw context + ".onSoftDelete Invalid onSoftDelete: cannot upload tag " + t
@ -160,7 +160,7 @@ export default class TagRenderingConfig {
}) })
this.editButtonAriaLabel = Translations.T( this.editButtonAriaLabel = Translations.T(
json.editButtonAriaLabel, json.editButtonAriaLabel,
translationKey + ".editButtonAriaLabel", translationKey + ".editButtonAriaLabel"
) )
this.condition = TagUtils.Tag(json.condition ?? { and: [] }, `${context}.condition`) this.condition = TagUtils.Tag(json.condition ?? { and: [] }, `${context}.condition`)
@ -176,7 +176,7 @@ export default class TagRenderingConfig {
} }
this.metacondition = TagUtils.Tag( this.metacondition = TagUtils.Tag(
json.metacondition ?? { and: [] }, json.metacondition ?? { and: [] },
`${context}.metacondition`, `${context}.metacondition`
) )
if (json.freeform) { if (json.freeform) {
if ( if (
@ -194,7 +194,7 @@ export default class TagRenderingConfig {
}, perhaps you meant ${Utils.sortedByLevenshteinDistance( }, perhaps you meant ${Utils.sortedByLevenshteinDistance(
json.freeform.key, json.freeform.key,
<any>Validators.availableTypes, <any>Validators.availableTypes,
(s) => <any>s, (s) => <any>s
)}` )}`
} }
const type: ValidatorType = <any>json.freeform.type ?? "string" const type: ValidatorType = <any>json.freeform.type ?? "string"
@ -216,7 +216,7 @@ export default class TagRenderingConfig {
placeholder, placeholder,
addExtraTags: addExtraTags:
json.freeform.addExtraTags?.map((tg, i) => json.freeform.addExtraTags?.map((tg, i) =>
TagUtils.ParseUploadableTag(tg, `${context}.extratag[${i}]`), TagUtils.ParseUploadableTag(tg, `${context}.extratag[${i}]`)
) ?? [], ) ?? [],
inline: json.freeform.inline ?? false, inline: json.freeform.inline ?? false,
default: json.freeform.default, default: json.freeform.default,
@ -282,8 +282,8 @@ export default class TagRenderingConfig {
context, context,
this.multiAnswer, this.multiAnswer,
this.question !== undefined, this.question !== undefined,
commonIconSize, commonIconSize
), )
) )
} else { } else {
this.mappings = [] this.mappings = []
@ -309,7 +309,7 @@ export default class TagRenderingConfig {
for (const expectedKey of keys) { for (const expectedKey of keys) {
if (usedKeys.indexOf(expectedKey) < 0) { if (usedKeys.indexOf(expectedKey) < 0) {
const msg = `${context}.mappings[${i}]: This mapping only defines values for ${usedKeys.join( const msg = `${context}.mappings[${i}]: This mapping only defines values for ${usedKeys.join(
", ", ", "
)}, but it should also give a value for ${expectedKey}` )}, but it should also give a value for ${expectedKey}`
this.configuration_warnings.push(msg) this.configuration_warnings.push(msg)
} }
@ -356,7 +356,7 @@ export default class TagRenderingConfig {
context: string, context: string,
multiAnswer?: boolean, multiAnswer?: boolean,
isQuestionable?: boolean, isQuestionable?: boolean,
commonSize: string = "small", commonSize: string = "small"
): Mapping { ): Mapping {
const ctx = `${translationKey}.mappings.${i}` const ctx = `${translationKey}.mappings.${i}`
if (mapping.if === undefined) { if (mapping.if === undefined) {
@ -365,7 +365,7 @@ export default class TagRenderingConfig {
if (mapping.then === undefined) { if (mapping.then === undefined) {
if (mapping["render"] !== undefined) { if (mapping["render"] !== undefined) {
throw `${ctx}: Invalid mapping: no 'then'-clause found. You might have typed 'render' instead of 'then', change it in ${JSON.stringify( throw `${ctx}: Invalid mapping: no 'then'-clause found. You might have typed 'render' instead of 'then', change it in ${JSON.stringify(
mapping, mapping
)}` )}`
} }
throw `${ctx}: Invalid mapping: no 'then'-clause found in ${JSON.stringify(mapping)}` throw `${ctx}: Invalid mapping: no 'then'-clause found in ${JSON.stringify(mapping)}`
@ -376,7 +376,7 @@ export default class TagRenderingConfig {
if (mapping["render"] !== undefined) { if (mapping["render"] !== undefined) {
throw `${ctx}: Invalid mapping: a 'render'-key is present, this is probably a bug: ${JSON.stringify( throw `${ctx}: Invalid mapping: a 'render'-key is present, this is probably a bug: ${JSON.stringify(
mapping, mapping
)}` )}`
} }
if (typeof mapping.if !== "string" && mapping.if["length"] !== undefined) { if (typeof mapping.if !== "string" && mapping.if["length"] !== undefined) {
@ -387,8 +387,14 @@ export default class TagRenderingConfig {
throw `${ctx}.addExtraTags: expected a list, but got a ${typeof mapping.addExtraTags}` throw `${ctx}.addExtraTags: expected a list, but got a ${typeof mapping.addExtraTags}`
} }
if (mapping.addExtraTags !== undefined && multiAnswer) { if (mapping.addExtraTags !== undefined && multiAnswer) {
const usedKeys = mapping.addExtraTags?.flatMap((et) => TagUtils.Tag(et, context).usedKeys()) const usedKeys = mapping.addExtraTags?.flatMap((et) =>
if (usedKeys.some((key) => TagUtils.Tag(mapping.if, context).usedKeys().indexOf(key) > 0)) { TagUtils.Tag(et, context).usedKeys()
)
if (
usedKeys.some(
(key) => TagUtils.Tag(mapping.if, context).usedKeys().indexOf(key) > 0
)
) {
throw `${ctx}: Invalid mapping: got a multi-Answer with addExtraTags which also modifies one of the keys; this is not allowed` throw `${ctx}: Invalid mapping: got a multi-Answer with addExtraTags which also modifies one of the keys; this is not allowed`
} }
} }
@ -399,11 +405,11 @@ export default class TagRenderingConfig {
} else if (mapping.hideInAnswer !== undefined) { } else if (mapping.hideInAnswer !== undefined) {
hideInAnswer = TagUtils.Tag( hideInAnswer = TagUtils.Tag(
mapping.hideInAnswer, mapping.hideInAnswer,
`${context}.mapping[${i}].hideInAnswer`, `${context}.mapping[${i}].hideInAnswer`
) )
} }
const addExtraTags = (mapping.addExtraTags ?? []).map((str, j) => const addExtraTags = (mapping.addExtraTags ?? []).map((str, j) =>
TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`), TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`)
) )
if (hideInAnswer === true && addExtraTags.length > 0) { if (hideInAnswer === true && addExtraTags.length > 0) {
throw `${ctx}: Invalid mapping: 'hideInAnswer' is set to 'true', but 'addExtraTags' is enabled as well. This means that extra tags will be applied if this mapping is chosen as answer, but it cannot be chosen as answer. This either indicates a thought error or obsolete code that must be removed.` throw `${ctx}: Invalid mapping: 'hideInAnswer' is set to 'true', but 'addExtraTags' is enabled as well. This means that extra tags will be applied if this mapping is chosen as answer, but it cannot be chosen as answer. This either indicates a thought error or obsolete code that must be removed.`
@ -499,7 +505,7 @@ export default class TagRenderingConfig {
* @constructor * @constructor
*/ */
public GetRenderValues( public GetRenderValues(
tags: Record<string, string>, tags: Record<string, string>
): { then: Translation; icon?: string; iconClass?: string }[] { ): { then: Translation; icon?: string; iconClass?: string }[] {
if (!this.multiAnswer) { if (!this.multiAnswer) {
return [this.GetRenderValueWithImage(tags)] return [this.GetRenderValueWithImage(tags)]
@ -522,7 +528,7 @@ export default class TagRenderingConfig {
return mapping return mapping
} }
return undefined return undefined
}), })
) )
if (freeformKeyDefined && tags[this.freeform.key] !== undefined) { if (freeformKeyDefined && tags[this.freeform.key] !== undefined) {
@ -530,7 +536,7 @@ export default class TagRenderingConfig {
applicableMappings applicableMappings
?.flatMap((m) => m.if?.usedTags() ?? []) ?.flatMap((m) => m.if?.usedTags() ?? [])
?.filter((kv) => kv.key === this.freeform.key) ?.filter((kv) => kv.key === this.freeform.key)
?.map((kv) => kv.value), ?.map((kv) => kv.value)
) )
const freeformValues = tags[this.freeform.key].split(";") const freeformValues = tags[this.freeform.key].split(";")
@ -539,7 +545,7 @@ export default class TagRenderingConfig {
applicableMappings.push({ applicableMappings.push({
then: new TypedTranslation<object>( then: new TypedTranslation<object>(
this.render.replace("{" + this.freeform.key + "}", leftover).translations, this.render.replace("{" + this.freeform.key + "}", leftover).translations,
this.render.context, this.render.context
), ),
}) })
} }
@ -557,7 +563,7 @@ export default class TagRenderingConfig {
* @constructor * @constructor
*/ */
public GetRenderValueWithImage( public GetRenderValueWithImage(
tags: Record<string, string>, tags: Record<string, string>
): { then: TypedTranslation<any>; icon?: string; iconClass?: string } | undefined { ): { then: TypedTranslation<any>; icon?: string; iconClass?: string } | undefined {
if (this.condition !== undefined) { if (this.condition !== undefined) {
if (!this.condition.matchesProperties(tags)) { if (!this.condition.matchesProperties(tags)) {
@ -626,7 +632,7 @@ export default class TagRenderingConfig {
const answerMappings = this.mappings?.filter((m) => m.hideInAnswer !== true) const answerMappings = this.mappings?.filter((m) => m.hideInAnswer !== true)
if (key === undefined) { if (key === undefined) {
const values: { k: string; v: string }[][] = Utils.NoNull( const values: { k: string; v: string }[][] = Utils.NoNull(
answerMappings?.map((m) => m.if.asChange({})) ?? [], answerMappings?.map((m) => m.if.asChange({})) ?? []
) )
if (values.length === 0) { if (values.length === 0) {
return return
@ -644,15 +650,15 @@ export default class TagRenderingConfig {
return { return {
key: commonKey, key: commonKey,
values: Utils.NoNull( values: Utils.NoNull(
values.map((arr) => arr.filter((item) => item.k === commonKey)[0]?.v), values.map((arr) => arr.filter((item) => item.k === commonKey)[0]?.v)
), ),
} }
} }
let values = Utils.NoNull( let values = Utils.NoNull(
answerMappings?.map( answerMappings?.map(
(m) => m.if.asChange({}).filter((item) => item.k === key)[0]?.v, (m) => m.if.asChange({}).filter((item) => item.k === key)[0]?.v
) ?? [], ) ?? []
) )
if (values.length === undefined) { if (values.length === undefined) {
values = undefined values = undefined
@ -716,7 +722,7 @@ export default class TagRenderingConfig {
freeformValue: string | undefined, freeformValue: string | undefined,
singleSelectedMapping: number, singleSelectedMapping: number,
multiSelectedMapping: boolean[] | undefined, multiSelectedMapping: boolean[] | undefined,
currentProperties: Record<string, string>, currentProperties: Record<string, string>
): UploadableTag { ): UploadableTag {
if (typeof freeformValue === "string") { if (typeof freeformValue === "string") {
freeformValue = freeformValue?.trim() freeformValue = freeformValue?.trim()
@ -791,7 +797,7 @@ export default class TagRenderingConfig {
new And([ new And([
new Tag(this.freeform.key, freeformValue), new Tag(this.freeform.key, freeformValue),
...(this.freeform.addExtraTags ?? []), ...(this.freeform.addExtraTags ?? []),
]), ])
) )
} }
const and = TagUtils.FlattenMultiAnswer([...selectedMappings, ...unselectedMappings]) const and = TagUtils.FlattenMultiAnswer([...selectedMappings, ...unselectedMappings])
@ -874,11 +880,11 @@ export default class TagRenderingConfig {
if (m.ifnot !== undefined) { if (m.ifnot !== undefined) {
msgs.push( msgs.push(
"Unselecting this answer will add " + "Unselecting this answer will add " +
m.ifnot.asHumanString(true, false, {}), m.ifnot.asHumanString(true, false, {})
) )
} }
return msgs.join(". ") return msgs.join(". ")
}), })
) )
} }
@ -887,7 +893,7 @@ export default class TagRenderingConfig {
const conditionAsLink = (<TagsFilter>this.condition.optimize()).asHumanString( const conditionAsLink = (<TagsFilter>this.condition.optimize()).asHumanString(
true, true,
false, false,
{}, {}
) )
condition = condition =
"This tagrendering is only visible in the popup if the following condition is met: " + "This tagrendering is only visible in the popup if the following condition is met: " +
@ -921,7 +927,7 @@ export default class TagRenderingConfig {
this.metacondition, this.metacondition,
this.condition, this.condition,
this.freeform?.key ? new RegexTag(this.freeform?.key, /.*/) : undefined, this.freeform?.key ? new RegexTag(this.freeform?.key, /.*/) : undefined,
this.invalidValues, this.invalidValues
) )
for (const m of this.mappings ?? []) { for (const m of this.mappings ?? []) {
tags.push(m.if) tags.push(m.if)
@ -943,7 +949,7 @@ export default class TagRenderingConfig {
*/ */
public removeToSetUnknown( public removeToSetUnknown(
partOfLayer: LayerConfig, partOfLayer: LayerConfig,
currentTags: Record<string, string>, currentTags: Record<string, string>
): string[] | undefined { ): string[] | undefined {
if (!partOfLayer?.source || !currentTags) { if (!partOfLayer?.source || !currentTags) {
return return
@ -991,7 +997,7 @@ export class TagRenderingConfigUtils {
public static withNameSuggestionIndex( public static withNameSuggestionIndex(
config: TagRenderingConfig, config: TagRenderingConfig,
tags: UIEventSource<Record<string, string>>, tags: UIEventSource<Record<string, string>>,
feature?: Feature, feature?: Feature
): Store<TagRenderingConfig> { ): Store<TagRenderingConfig> {
const isNSI = NameSuggestionIndex.supportedTypes().indexOf(config.freeform?.key) >= 0 const isNSI = NameSuggestionIndex.supportedTypes().indexOf(config.freeform?.key) >= 0
if (!isNSI) { if (!isNSI) {
@ -1009,8 +1015,8 @@ export class TagRenderingConfigUtils {
tags, tags,
country.split(";"), country.split(";"),
center, center,
{ sortByFrequency: true }, { sortByFrequency: true }
), )
) )
}) })
return extraMappings.map((extraMappings) => { return extraMappings.map((extraMappings) => {

View file

@ -559,7 +559,10 @@ export default class ThemeViewState implements SpecialVisualizationState {
private setSelectedElement(feature: Feature) { private setSelectedElement(feature: Feature) {
const current = this.selectedElement.data const current = this.selectedElement.data
if(current?.properties?.id !== undefined && current.properties.id === feature.properties.id ){ if (
current?.properties?.id !== undefined &&
current.properties.id === feature.properties.id
) {
console.log("Not setting selected, same id", current, feature) console.log("Not setting selected, same id", current, feature)
return // already set return // already set
} }
@ -1002,13 +1005,12 @@ export default class ThemeViewState implements SpecialVisualizationState {
this.userRelatedState.recentlyVisitedSearch.add(r) this.userRelatedState.recentlyVisitedSearch.add(r)
}) })
this.mapProperties.lastClickLocation.addCallbackD(lastClick => { this.mapProperties.lastClickLocation.addCallbackD((lastClick) => {
if (lastClick.mode !== "left" || !lastClick.nearestFeature) { if (lastClick.mode !== "left" || !lastClick.nearestFeature) {
return return
} }
const f = lastClick.nearestFeature const f = lastClick.nearestFeature
this.setSelectedElement(f) this.setSelectedElement(f)
}) })
this.userRelatedState.showScale.addCallbackAndRun((showScale) => { this.userRelatedState.showScale.addCallbackAndRun((showScale) => {

View file

@ -65,7 +65,10 @@
{#if $value.length > 0} {#if $value.length > 0}
<Backspace <Backspace
on:click={(e) =>{ value.set("") ; e.preventDefault()}} on:click={(e) => {
value.set("")
e.preventDefault()
}}
color="var(--button-background)" color="var(--button-background)"
class="mr-3 h-6 w-6 cursor-pointer" class="mr-3 h-6 w-6 cursor-pointer"
/> />

View file

@ -65,7 +65,7 @@
export let onlyLink: boolean export let onlyLink: boolean
const t = Translations.t.general.menu const t = Translations.t.general.menu
let shown = new UIEventSource(state.guistate.pageStates.menu.data || !onlyLink) let shown = new UIEventSource(state.guistate.pageStates.menu.data || !onlyLink)
state.guistate.pageStates.menu.addCallback(isShown => { state.guistate.pageStates.menu.addCallback((isShown) => {
if (!onlyLink) { if (!onlyLink) {
return true return true
} }
@ -77,10 +77,12 @@
}) })
} }
}) })
</script> </script>
<div class="low-interaction flex h-screen flex-col gap-y-2 overflow-y-auto p-2 sm:gap-y-3 sm:p-3" class:hidden={!$shown}> <div
class="low-interaction flex h-screen flex-col gap-y-2 overflow-y-auto p-2 sm:gap-y-3 sm:p-3"
class:hidden={!$shown}
>
<div class="flex justify-between"> <div class="flex justify-between">
<h2> <h2>
<Tr t={t.title} /> <Tr t={t.title} />

View file

@ -101,7 +101,8 @@
}) })
let id = 0 let id = 0
adaptor.lastClickLocation.addCallbackD(({ lon, lat }) => { adaptor.lastClickLocation.addCallbackD(({ lon, lat }) => {
let projected: Feature<Point, {index:number, id?: number, reuse?: string}> = GeoOperations.nearestPoint(wayGeojson, [lon, lat]) let projected: Feature<Point, { index: number; id?: number; reuse?: string }> =
GeoOperations.nearestPoint(wayGeojson, [lon, lat])
console.log("Added splitpoint", projected, id) console.log("Added splitpoint", projected, id)
@ -121,12 +122,12 @@
type: "Feature", type: "Feature",
geometry: { geometry: {
type: "Point", type: "Point",
coordinates: nextPoint coordinates: nextPoint,
}, },
properties: { properties: {
index: i + 1, index: i + 1,
reuse: "yes" reuse: "yes",
} },
} }
} }
if (previousDistance <= snapTolerance && previousDistance < nextDistance) { if (previousDistance <= snapTolerance && previousDistance < nextDistance) {
@ -134,12 +135,12 @@
type: "Feature", type: "Feature",
geometry: { geometry: {
type: "Point", type: "Point",
coordinates: previousPoint coordinates: previousPoint,
}, },
properties: { properties: {
index: i, index: i,
reuse: "yes" reuse: "yes",
} },
} }
} }

View file

@ -102,7 +102,11 @@
capture="environment" capture="environment"
cls="button border-2 flex flex-col" cls="button border-2 flex flex-col"
multiple={true} multiple={true}
on:submit={(e) =>{ handleFiles(e.detail) ; e.preventDefault(); e.stopPropagation()}} on:submit={(e) => {
handleFiles(e.detail)
e.preventDefault()
e.stopPropagation()
}}
> >
<div class="flex w-full items-center justify-center text-2xl"> <div class="flex w-full items-center justify-center text-2xl">
{#if image !== undefined} {#if image !== undefined}
@ -128,7 +132,11 @@
accept=".jpg, .jpeg" accept=".jpg, .jpeg"
cls="flex justify-center md:hidden button" cls="flex justify-center md:hidden button"
multiple={true} multiple={true}
on:submit={(e) =>{ return handleFiles(e.detail, true) ; e.preventDefault(); e.stopPropagation()}} on:submit={(e) => {
return handleFiles(e.detail, true)
e.preventDefault()
e.stopPropagation()
}}
> >
<Tr t={t.selectFile} /> <Tr t={t.selectFile} />
</FileSelector> </FileSelector>

View file

@ -1,5 +1,10 @@
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource" import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
import maplibregl, { Map as MLMap, Map as MlMap, ScaleControl, SourceSpecification } from "maplibre-gl" import maplibregl, {
Map as MLMap,
Map as MlMap,
ScaleControl,
SourceSpecification,
} from "maplibre-gl"
import { RasterLayerPolygon } from "../../Models/RasterLayers" import { RasterLayerPolygon } from "../../Models/RasterLayers"
import { Utils } from "../../Utils" import { Utils } from "../../Utils"
import { BBox } from "../../Logic/BBox" import { BBox } from "../../Logic/BBox"
@ -43,10 +48,16 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
readonly allowRotating: UIEventSource<true | boolean | undefined> readonly allowRotating: UIEventSource<true | boolean | undefined>
readonly allowZooming: UIEventSource<true | boolean | undefined> readonly allowZooming: UIEventSource<true | boolean | undefined>
readonly lastClickLocation: Store< readonly lastClickLocation: Store<
undefined | { lon: number; lat: number; mode: "left" | "right" | "middle" , /** | undefined
| {
lon: number
lat: number
mode: "left" | "right" | "middle"
/**
* The nearest feature from a MapComplete layer * The nearest feature from a MapComplete layer
*/ */
nearestFeature?: Feature } nearestFeature?: Feature
}
> >
readonly minzoom: UIEventSource<number> readonly minzoom: UIEventSource<number>
readonly maxzoom: UIEventSource<number> readonly maxzoom: UIEventSource<number>
@ -64,9 +75,13 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
private readonly _maplibreMap: Store<MLMap> private readonly _maplibreMap: Store<MLMap>
constructor(maplibreMap: Store<MLMap>, state?: Partial<MapProperties>, options?:{ constructor(
maplibreMap: Store<MLMap>,
state?: Partial<MapProperties>,
options?: {
correctClick?: number correctClick?: number
}) { }
) {
if (!MapLibreAdaptor.pmtilesInited) { if (!MapLibreAdaptor.pmtilesInited) {
maplibregl.addProtocol("pmtiles", new Protocol().tile) maplibregl.addProtocol("pmtiles", new Protocol().tile)
MapLibreAdaptor.pmtilesInited = true MapLibreAdaptor.pmtilesInited = true
@ -106,7 +121,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
const lastClickLocation = new UIEventSource<{ const lastClickLocation = new UIEventSource<{
lat: number lat: number
lon: number lon: number
mode: "left" | "right" | "middle", mode: "left" | "right" | "middle"
nearestFeature?: Feature nearestFeature?: Feature
}>(undefined) }>(undefined)
this.lastClickLocation = lastClickLocation this.lastClickLocation = lastClickLocation
@ -130,10 +145,12 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
const map = maplibreMap.data const map = maplibreMap.data
const point = e.point const point = e.point
const buffer = options?.correctClick const buffer = options?.correctClick
const features = map.queryRenderedFeatures([ const features = map
.queryRenderedFeatures([
[point.x - buffer, point.y - buffer], [point.x - buffer, point.y - buffer],
[point.x + buffer, point.y + buffer] [point.x + buffer, point.y + buffer],
]).filter(f => f.source.startsWith("mapcomplete_")) ])
.filter((f) => f.source.startsWith("mapcomplete_"))
if (features.length === 1) { if (features.length === 1) {
nearestFeature = features[0] nearestFeature = features[0]
} else { } else {
@ -158,7 +175,6 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
} }
} }
lastClickLocation.setData({ lon, lat, mode, nearestFeature }) lastClickLocation.setData({ lon, lat, mode, nearestFeature })
} }
maplibreMap.addCallbackAndRunD((map) => { maplibreMap.addCallbackAndRunD((map) => {

View file

@ -39,7 +39,7 @@ class PointRenderingLayer {
visibility?: Store<boolean>, visibility?: Store<boolean>,
fetchStore?: (id: string) => Store<Record<string, string>>, fetchStore?: (id: string) => Store<Record<string, string>>,
onClick?: (feature: Feature) => void, onClick?: (feature: Feature) => void,
selectedElement?: Store<{ properties: { id?: string } }>, selectedElement?: Store<{ properties: { id?: string } }>
) { ) {
this._visibility = visibility this._visibility = visibility
this._config = config this._config = config
@ -98,7 +98,7 @@ class PointRenderingLayer {
" while rendering", " while rendering",
location, location,
"of", "of",
this._config, this._config
) )
} }
const id = feature.properties.id + "-" + location const id = feature.properties.id + "-" + location
@ -110,7 +110,10 @@ class PointRenderingLayer {
this.addPoint(feature, <[number, number]>loc) this.addPoint(feature, <[number, number]>loc)
} }
} }
if (feature.geometry.type === "MultiLineString" || feature.geometry.type === "Polygon") { if (
feature.geometry.type === "MultiLineString" ||
feature.geometry.type === "Polygon"
) {
for (const coors of feature.geometry.coordinates) { for (const coors of feature.geometry.coordinates) {
for (const loc of coors) { for (const loc of coors) {
this.addPoint(feature, <[number, number]>loc) this.addPoint(feature, <[number, number]>loc)
@ -122,7 +125,7 @@ class PointRenderingLayer {
const loc = GeoOperations.featureToCoordinateWithRenderingType( const loc = GeoOperations.featureToCoordinateWithRenderingType(
<any>feature, <any>feature,
location, location
) )
if (loc === undefined) { if (loc === undefined) {
continue continue
@ -251,7 +254,7 @@ class LineRenderingLayer {
config: LineRenderingConfig, config: LineRenderingConfig,
visibility?: Store<boolean>, visibility?: Store<boolean>,
fetchStore?: (id: string) => Store<Record<string, string>>, fetchStore?: (id: string) => Store<Record<string, string>>,
onClick?: (feature: Feature) => void, onClick?: (feature: Feature) => void
) { ) {
this._layername = layername this._layername = layername
this._map = map this._map = map
@ -271,7 +274,7 @@ class LineRenderingLayer {
private async addSymbolLayer( private async addSymbolLayer(
sourceId: string, sourceId: string,
imageAlongWay: { if?: TagsFilter; then: string }[], imageAlongWay: { if?: TagsFilter; then: string }[]
) { ) {
const map = this._map const map = this._map
await Promise.allSettled( await Promise.allSettled(
@ -301,7 +304,7 @@ class LineRenderingLayer {
spec.filter = filter spec.filter = filter
} }
map.addLayer(spec) map.addLayer(spec)
}), })
) )
} }
@ -311,7 +314,7 @@ class LineRenderingLayer {
* @private * @private
*/ */
private calculatePropsFor( private calculatePropsFor(
properties: Record<string, string>, properties: Record<string, string>
): Partial<Record<(typeof LineRenderingLayer.lineConfigKeys)[number], string>> { ): Partial<Record<(typeof LineRenderingLayer.lineConfigKeys)[number], string>> {
const config = this._config const config = this._config
@ -393,7 +396,7 @@ class LineRenderingLayer {
} catch (e) { } catch (e) {
console.error( console.error(
`Invalid dasharray in layer ${this._layername}:`, `Invalid dasharray in layer ${this._layername}:`,
this._config.dashArray, this._config.dashArray
) )
} }
} }
@ -410,7 +413,7 @@ class LineRenderingLayer {
} }
map.setFeatureState( map.setFeatureState(
{ source: this._layername, id: feature.properties.id }, { source: this._layername, id: feature.properties.id },
this.calculatePropsFor(feature.properties), this.calculatePropsFor(feature.properties)
) )
} }
@ -455,7 +458,7 @@ class LineRenderingLayer {
"Error while setting visibility of layers ", "Error while setting visibility of layers ",
linelayer, linelayer,
polylayer, polylayer,
e, e
) )
} }
}) })
@ -476,7 +479,7 @@ class LineRenderingLayer {
console.trace( console.trace(
"Got a feature without ID; this causes rendering bugs:", "Got a feature without ID; this causes rendering bugs:",
feature, feature,
"from", "from"
) )
LineRenderingLayer.missingIdTriggered = true LineRenderingLayer.missingIdTriggered = true
} }
@ -488,7 +491,7 @@ class LineRenderingLayer {
if (this._fetchStore === undefined) { if (this._fetchStore === undefined) {
map.setFeatureState( map.setFeatureState(
{ source: this._layername, id }, { source: this._layername, id },
this.calculatePropsFor(feature.properties), this.calculatePropsFor(feature.properties)
) )
} else { } else {
const tags = this._fetchStore(id) const tags = this._fetchStore(id)
@ -505,7 +508,7 @@ class LineRenderingLayer {
} }
map.setFeatureState( map.setFeatureState(
{ source: this._layername, id }, { source: this._layername, id },
this.calculatePropsFor(properties), this.calculatePropsFor(properties)
) )
}) })
} }
@ -529,7 +532,7 @@ export default class ShowDataLayer {
layer: LayerConfig layer: LayerConfig
drawMarkers?: true | boolean drawMarkers?: true | boolean
drawLines?: true | boolean drawLines?: true | boolean
}, }
) { ) {
this._options = options this._options = options
this.onDestroy.push(map.addCallbackAndRunD((map) => this.initDrawFeatures(map))) this.onDestroy.push(map.addCallbackAndRunD((map) => this.initDrawFeatures(map)))
@ -539,7 +542,7 @@ export default class ShowDataLayer {
mlmap: UIEventSource<MlMap>, mlmap: UIEventSource<MlMap>,
features: FeatureSource, features: FeatureSource,
layers: LayerConfig[], layers: LayerConfig[],
options?: Partial<ShowDataLayerOptions>, options?: Partial<ShowDataLayerOptions>
) { ) {
const perLayer: PerLayerFeatureSourceSplitter<FeatureSourceForLayer> = const perLayer: PerLayerFeatureSourceSplitter<FeatureSourceForLayer> =
new PerLayerFeatureSourceSplitter( new PerLayerFeatureSourceSplitter(
@ -547,7 +550,7 @@ export default class ShowDataLayer {
features, features,
{ {
constructStore: (features, layer) => new SimpleFeatureSource(layer, features), constructStore: (features, layer) => new SimpleFeatureSource(layer, features),
}, }
) )
if (options?.zoomToFeatures) { if (options?.zoomToFeatures) {
options.zoomToFeatures = false options.zoomToFeatures = false
@ -571,7 +574,7 @@ export default class ShowDataLayer {
public static showRange( public static showRange(
map: Store<MlMap>, map: Store<MlMap>,
features: FeatureSource, features: FeatureSource,
doShowLayer?: Store<boolean>, doShowLayer?: Store<boolean>
): ShowDataLayer { ): ShowDataLayer {
return new ShowDataLayer(map, { return new ShowDataLayer(map, {
layer: ShowDataLayer.rangeLayer, layer: ShowDataLayer.rangeLayer,
@ -580,8 +583,7 @@ export default class ShowDataLayer {
}) })
} }
public destruct() { public destruct() {}
}
private static zoomToCurrentFeatures(map: MlMap, features: Feature[]) { private static zoomToCurrentFeatures(map: MlMap, features: Feature[]) {
if (!features || !map || features.length == 0) { if (!features || !map || features.length == 0) {
@ -618,7 +620,7 @@ export default class ShowDataLayer {
lineRenderingConfig, lineRenderingConfig,
doShowLayer, doShowLayer,
fetchStore, fetchStore,
onClick, onClick
) )
this.onDestroy.push(l.destruct) this.onDestroy.push(l.destruct)
} }
@ -634,13 +636,13 @@ export default class ShowDataLayer {
doShowLayer, doShowLayer,
fetchStore, fetchStore,
onClick, onClick,
selectedElement, selectedElement
) )
} }
} }
if (this._options.zoomToFeatures) { if (this._options.zoomToFeatures) {
features.features.addCallbackAndRunD((features) => features.features.addCallbackAndRunD((features) =>
ShowDataLayer.zoomToCurrentFeatures(map, features), ShowDataLayer.zoomToCurrentFeatures(map, features)
) )
} }
} }

View file

@ -61,11 +61,11 @@
const changedProperties = TagUtils.changeAsProperties(selectedTags.asChange(tags?.data ?? {})) const changedProperties = TagUtils.changeAsProperties(selectedTags.asChange(tags?.data ?? {}))
const deleteReason = changedProperties[DeleteConfig.deleteReasonKey] const deleteReason = changedProperties[DeleteConfig.deleteReasonKey]
if (deleteReason) { if (deleteReason) {
let softDeletionTags: UploadableTag let softDeletionTags: UploadableTag
if (hasSoftDeletion) { if (hasSoftDeletion) {
softDeletionTags = new And([deleteConfig.softDeletionTags, softDeletionTags = new And([
...layer.tagRenderings.flatMap(tr => tr.onSoftDelete ?? []), deleteConfig.softDeletionTags,
...layer.tagRenderings.flatMap((tr) => tr.onSoftDelete ?? []),
]) ])
} }

View file

@ -8,9 +8,11 @@
* Shows _all_ disabled questions * Shows _all_ disabled questions
*/ */
export let state export let state
let layers = state.layout.layers.filter(l => l.isNormal()) let layers = state.layout.layers.filter((l) => l.isNormal())
let allDisabled = Stores.concat<string>(layers.map(l => state.userRelatedState.getThemeDisabled(state.layout.id, l.id))).map(l => [].concat(...l)) let allDisabled = Stores.concat<string>(
layers.map((l) => state.userRelatedState.getThemeDisabled(state.layout.id, l.id))
).map((l) => [].concat(...l))
const t = Translations.t.general.questions const t = Translations.t.general.questions
</script> </script>

View file

@ -1,4 +1,5 @@
<script lang="ts">/** <script lang="ts">
/**
* Gives an overview of questions which are disabled for the given theme * Gives an overview of questions which are disabled for the given theme
*/ */
import UserRelatedState from "../../Logic/State/UserRelatedState" import UserRelatedState from "../../Logic/State/UserRelatedState"
@ -15,19 +16,18 @@ export let state: ThemeViewState
let disabledQuestions = state.userRelatedState.getThemeDisabled(state.layout.id, layer.id) let disabledQuestions = state.userRelatedState.getThemeDisabled(state.layout.id, layer.id)
function getQuestion(id: string): Translation { function getQuestion(id: string): Translation {
return layer.tagRenderings.find(q => q.id === id).question.Subs({}) return layer.tagRenderings.find((q) => q.id === id).question.Subs({})
} }
function enable(idToEnable: string) { function enable(idToEnable: string) {
const newList = disabledQuestions.data.filter(id => id !== idToEnable) const newList = disabledQuestions.data.filter((id) => id !== idToEnable)
disabledQuestions.set(newList) disabledQuestions.set(newList)
} }
</script> </script>
{#if $disabledQuestions.length > 0} {#if $disabledQuestions.length > 0}
<div class="low-interaction p-2"> <div class="low-interaction p-2">
<h4 class="my-2 flex">
<h4 class="flex my-2">
<div class="no-image-background block h-6 w-6"> <div class="no-image-background block h-6 w-6">
<ToSvelte construct={() => layer.defaultIcon()} /> <ToSvelte construct={() => layer.defaultIcon()} />
</div> </div>
@ -37,7 +37,7 @@ function enable(idToEnable: string) {
{#each $disabledQuestions as id} {#each $disabledQuestions as id}
<button class="badge button-unstyled" on:click={() => enable(id)}> <button class="badge button-unstyled" on:click={() => enable(id)}>
<Tr cls="ml-2" t={getQuestion(id)} /> <Tr cls="ml-2" t={getQuestion(id)} />
<XMarkIcon class="w-4 h-4 mr-2" /> <XMarkIcon class="mr-2 h-4 w-4" />
</button> </button>
{/each} {/each}
</div> </div>

View file

@ -88,7 +88,13 @@
{:else if step === "splitting"} {:else if step === "splitting"}
<div class="interactive border-interactive flex flex-col p-2"> <div class="interactive border-interactive flex flex-col p-2">
<div class="h-80 w-full"> <div class="h-80 w-full">
<WaySplitMap {state} {splitPoints} {osmWay} {snapTolerance} mapProperties={{rasterLayer: state.mapProperties.rasterLayer}}/> <WaySplitMap
{state}
{splitPoints}
{osmWay}
{snapTolerance}
mapProperties={{ rasterLayer: state.mapProperties.rasterLayer }}
/>
</div> </div>
<div class="flex w-full flex-wrap-reverse md:flex-nowrap"> <div class="flex w-full flex-wrap-reverse md:flex-nowrap">
<BackButton <BackButton

View file

@ -45,16 +45,15 @@
} }
const baseQuestions = (layer?.tagRenderings ?? [])?.filter( const baseQuestions = (layer?.tagRenderings ?? [])?.filter(
(tr) => allowed(tr.labels) && tr.question !== undefined, (tr) => allowed(tr.labels) && tr.question !== undefined
) )
/** /**
* Ids of skipped questions * Ids of skipped questions
*/ */
let skippedQuestions = new UIEventSource<Set<string>>(new Set<string>()) let skippedQuestions = new UIEventSource<Set<string>>(new Set<string>())
let layerDisabledForTheme = state.userRelatedState.getThemeDisabled(state.theme.id, layer.id) let layerDisabledForTheme = state.userRelatedState.getThemeDisabled(state.theme.id, layer.id)
layerDisabledForTheme.addCallbackAndRunD(disabled => { layerDisabledForTheme.addCallbackAndRunD((disabled) => {
skippedQuestions.set(new Set(disabled.concat(Array.from(skippedQuestions.data)))) skippedQuestions.set(new Set(disabled.concat(Array.from(skippedQuestions.data))))
}) })
let questionboxElem: HTMLDivElement let questionboxElem: HTMLDivElement
@ -78,10 +77,10 @@
} }
return questionsToAsk return questionsToAsk
}, },
[skippedQuestions], [skippedQuestions]
) )
let firstQuestion: UIEventSource<TagRenderingConfig> = new UIEventSource<TagRenderingConfig>( let firstQuestion: UIEventSource<TagRenderingConfig> = new UIEventSource<TagRenderingConfig>(
undefined, undefined
) )
let allQuestionsToAsk: UIEventSource<TagRenderingConfig[]> = new UIEventSource< let allQuestionsToAsk: UIEventSource<TagRenderingConfig[]> = new UIEventSource<
TagRenderingConfig[] TagRenderingConfig[]
@ -106,7 +105,6 @@
let loginEnabled = state.featureSwitches.featureSwitchEnableLogin let loginEnabled = state.featureSwitches.featureSwitchEnableLogin
let debug = state.featureSwitches.featureSwitchIsDebugging let debug = state.featureSwitches.featureSwitchIsDebugging
function skip(question: { id: string }, didAnswer: boolean = false) { function skip(question: { id: string }, didAnswer: boolean = false) {
skippedQuestions.data.add(question.id) // Must use ID, the config object might be a copy of the original skippedQuestions.data.add(question.id) // Must use ID, the config object might be a copy of the original
skippedQuestions.ping() skippedQuestions.ping()
@ -131,13 +129,7 @@
{#if $showAllQuestionsAtOnce} {#if $showAllQuestionsAtOnce}
<div class="flex flex-col gap-y-1"> <div class="flex flex-col gap-y-1">
{#each $allQuestionsToAsk as question (question.id)} {#each $allQuestionsToAsk as question (question.id)}
<TagRenderingQuestionDynamic <TagRenderingQuestionDynamic config={question} {tags} {selectedElement} {state} {layer} />
config={question}
{tags}
{selectedElement}
{state}
{layer}
/>
{/each} {/each}
</div> </div>
{:else if $firstQuestion !== undefined} {:else if $firstQuestion !== undefined}
@ -170,7 +162,6 @@
{/if} {/if}
<div class="mt-4 mb-8"> <div class="mt-4 mb-8">
{#if skipped + answered > 0} {#if skipped + answered > 0}
<div class="flex justify-center"> <div class="flex justify-center">
{#if answered === 0} {#if answered === 0}
@ -215,7 +206,6 @@
> >
<Tr t={Translations.t.general.questionBox.reactivate} /> <Tr t={Translations.t.general.questionBox.reactivate} />
</button> </button>
{/if} {/if}
{/if} {/if}
@ -229,7 +219,6 @@
> >
Show the disabled questions for this object Show the disabled questions for this object
</button> </button>
{/if} {/if}
{#if $debug} {#if $debug}
Skipped questions are {Array.from($skippedQuestions).join(", ")} Skipped questions are {Array.from($skippedQuestions).join(", ")}

View file

@ -93,7 +93,7 @@
return !m.hideInAnswer.matchesProperties(tgs) return !m.hideInAnswer.matchesProperties(tgs)
}) })
selectedMapping = mappings?.findIndex( selectedMapping = mappings?.findIndex(
(mapping) => mapping.if.matchesProperties(tgs) || mapping.alsoShowIf?.matchesProperties(tgs), (mapping) => mapping.if.matchesProperties(tgs) || mapping.alsoShowIf?.matchesProperties(tgs)
) )
if (selectedMapping < 0) { if (selectedMapping < 0) {
selectedMapping = undefined selectedMapping = undefined
@ -201,7 +201,7 @@
if (freeformValue?.length > 0) { if (freeformValue?.length > 0) {
selectedMapping = config.mappings.length selectedMapping = config.mappings.length
} }
}), })
) )
$: { $: {
@ -219,7 +219,7 @@
$freeformInput, $freeformInput,
selectedMapping, selectedMapping,
checkedMappings, checkedMappings,
tags.data, tags.data
) )
if (featureSwitchIsDebugging?.data) { if (featureSwitchIsDebugging?.data) {
console.log( console.log(
@ -231,7 +231,7 @@
currentTags: tags.data, currentTags: tags.data,
}, },
" --> ", " --> ",
selectedTags, selectedTags
) )
} }
} catch (e) { } catch (e) {
@ -253,7 +253,7 @@
selectedTags = new And([...selectedTags.and, ...extraTagsArray]) selectedTags = new And([...selectedTags.and, ...extraTagsArray])
} else { } else {
console.error( console.error(
"selectedTags is not of type Tag or And, it is a " + JSON.stringify(selectedTags), "selectedTags is not of type Tag or And, it is a " + JSON.stringify(selectedTags)
) )
} }
} }
@ -322,7 +322,7 @@
onDestroy( onDestroy(
state.osmConnection?.userDetails?.addCallbackAndRun((ud) => { state.osmConnection?.userDetails?.addCallbackAndRun((ud) => {
numberOfCs = ud.csCount numberOfCs = ud.csCount
}), })
) )
} }
@ -351,7 +351,7 @@
} }
function enableQuestion() { function enableQuestion() {
const newList = disabledInTheme.data?.filter(id => id !== config.id) const newList = disabledInTheme.data?.filter((id) => id !== config.id)
disabledInTheme.set(newList) disabledInTheme.set(newList)
menuIsOpened.set(false) menuIsOpened.set(false)
} }
@ -359,7 +359,6 @@
{#if question !== undefined} {#if question !== undefined}
<div class={clss}> <div class={clss}>
{#if layer.isNormal()} {#if layer.isNormal()}
<LoginToggle {state}> <LoginToggle {state}>
<DotMenu hideBackground={true} open={menuIsOpened}> <DotMenu hideBackground={true} open={menuIsOpened}>

View file

@ -2116,7 +2116,6 @@ export default class SpecialVisualizations {
constr(state) { constr(state) {
return new SvelteUIElement(DisabledQuestions, { state }) return new SvelteUIElement(DisabledQuestions, { state })
}, },
}, },
] ]

View file

@ -18,7 +18,6 @@
import { DownloadIcon } from "@rgossiaux/svelte-heroicons/solid" import { DownloadIcon } from "@rgossiaux/svelte-heroicons/solid"
import { GeoOperations } from "../../Logic/GeoOperations" import { GeoOperations } from "../../Logic/GeoOperations"
export let paths: string[] export let paths: string[]
let downloaded = 0 let downloaded = 0
@ -26,36 +25,38 @@
const filteredLayer = new FilteredLayer(layer) const filteredLayer = new FilteredLayer(layer)
let allData = <UIEventSource<(ChangeSetData & OsmFeature)[]>>UIEventSource.FromPromise( let allData = <UIEventSource<(ChangeSetData & OsmFeature)[]>>UIEventSource.FromPromise(
Promise.all(paths.map(async p => { Promise.all(
paths.map(async (p) => {
const r = await Utils.downloadJson<FeatureCollection>(p) const r = await Utils.downloadJson<FeatureCollection>(p)
downloaded++ downloaded++
return r return r
})) })
).mapD(list => [].concat(...list.map(f => f.features)))
let overview = allData.mapD(data =>
ChangesetsOverview.fromDirtyData(data)
.filter((cs) => filteredLayer.isShown(<any>cs.properties)), [filteredLayer.currentFilter])
const trs = layer.tagRenderings.filter(
(tr) => tr.mappings?.length > 0 || tr.freeform?.key !== undefined
).filter(tr => tr.question !== undefined)
let diffInDays = overview.mapD(overview => {
const dateStrings = Utils.NoNull(
overview._meta.map((cs) => cs.properties.date)
) )
).mapD((list) => [].concat(...list.map((f) => f.features)))
let overview = allData.mapD(
(data) =>
ChangesetsOverview.fromDirtyData(data).filter((cs) =>
filteredLayer.isShown(<any>cs.properties)
),
[filteredLayer.currentFilter]
)
const trs = layer.tagRenderings
.filter((tr) => tr.mappings?.length > 0 || tr.freeform?.key !== undefined)
.filter((tr) => tr.question !== undefined)
let diffInDays = overview.mapD((overview) => {
const dateStrings = Utils.NoNull(overview._meta.map((cs) => cs.properties.date))
const dates: number[] = dateStrings.map((d) => new Date(d).getTime()) const dates: number[] = dateStrings.map((d) => new Date(d).getTime())
const mindate = Math.min(...dates) const mindate = Math.min(...dates)
const maxdate = Math.max(...dates) const maxdate = Math.max(...dates)
return (maxdate - mindate) / (1000 * 60 * 60 * 24) return (maxdate - mindate) / (1000 * 60 * 60 * 24)
}) })
function offerAsDownload() { function offerAsDownload() {
const data = GeoOperations.toCSV($overview._meta, { const data = GeoOperations.toCSV($overview._meta, {
ignoreTags: ignoreTags: /^((deletion:node)|(import:node)|(move:node)|(soft-delete:))/,
/^((deletion:node)|(import:node)|(move:node)|(soft-delete:))/,
}) })
Utils.offerContentsAsDownloadableFile(data, "statistics.csv", { Utils.offerContentsAsDownloadableFile(data, "statistics.csv", {
mimetype: "text/csv", mimetype: "text/csv",
@ -81,7 +82,7 @@
{/each} {/each}
</Accordion> </Accordion>
<button on:click={() => offerAsDownload()}> <button on:click={() => offerAsDownload()}>
<DownloadIcon class="w-6 h-6" /> <DownloadIcon class="h-6 w-6" />
Download as CSV Download as CSV
</button> </button>
{/if} {/if}

Some files were not shown because too many files have changed in this diff Show more